何勰緋
在對數據庫進行設計的過程中,保證數據的完整性是尤為重要的,而觸發器是有效解決復雜數據完整性的一種科學、合理方法。通過大量實踐,本論文主要研究了四類觸發器的典型應用,包括:不同數據庫系統之間的轉換(即系統集成)、對數據進行有效拆分、對數據進行有效合并、及數據級聯更新,并科學設計出對應的模型。
一、前言
隨著數據的日益復雜及計算機被廣泛應用,相應的大型數據庫也受到了更加深入、更加廣泛的應用。而對于大型數據庫來講,采取何種措施來保障數據的完整性、安全性等則是數據庫設計的一個特別重要的內容。尤其是處理復雜程度很高并且要求較強數據完整性,這便是現階段數據庫設計的一個難點。本論文的作者通過大量工作實踐,明確發現觸發器能夠有效解決上述問題。
二、觸發器的定義
在數據庫(即SQL)中,觸發器是一種特殊類型的存儲過程。它能有效利用事件來觸發并被準確、合理執行,在存儲過程中能憑借相應的存儲名字而被直接調用。倘若對某表執行如下操作(即:DELETE、UPDATE等)的時候,SQL Server會自動準確、嚴格執行觸發器定義的相關SQL語句,以便更好的保證對數據的處理是滿足SQL語句定義的規則。
三、觸發器的典型應用
(一)不同數據庫系統之間的轉換
隨著企業規模的擴展及業務的不斷發展,其對信息化的需求也在不斷發生著改變,要么是增加新的業務,要么是對企業內部的業務流程進行優化再造,要么是對數據的處理方式在發生著改變等,這些都需求企業增加新的業務模塊或者是對現有系統進行優化設計或者是設計新的業務系統。盡管企業原有信息管理系統也考慮到將來的可擴展性,也相應的為系統預留了接口或字段,但其很可能出現不能最大化的滿足新的業務需求。在這樣的情況下,要把企業原有的信息管理系統全盤推翻也是不太現實的,更不可能快速新建一個統一的信息管理系統。針對此種情況,通常采取數據耦合。
而觸發器的出現便為科學、合理解決上述問題提供了有效的方法,具體如下圖1所示的系統集成模型示意圖。從圖中可以明顯的看出,轉換表不但可以建立在新的系統里面,也可以在原有系統里面進行建立。此外,有關轉換表的設計是嚴格按照新系統的要求、格式等來進行設計的,是完全符合新系統設計格式,與此同時,轉換表里面的數據也是來自原有數據庫系統之中。
(二)數據的拆分
通常來講,手機處理過程(如手機信息查詢、手機掛失、登入等)都具備如下要求,若用戶發送相應的短信,其就會借助移動網關自動準確無誤的增加到數據庫的表里面,而對編輯的短信內容也規定有格式要求。其中,手機查詢格式為(LSGS#手機串號#手機型號#手機品牌#手機機主的姓名#機主聯系地址);登入格式為(LSGA#手機串號#手機型號#手機品牌#手機機主姓名#機主聯系地址);手機掛失的格式(LSGD#手機串號#手機型號#手機品牌#手機機主姓名#機主聯系地址)。一旦出現新的記錄,就會嚴格把手機短信的內容根據“#”的格式來恰當、準確統計,之后,再把相關的內容分別存儲到其它數據庫里面。倘若是LSGS,就把相應的內容存儲到C表里;倘若是LSGA,就把相應的內容存儲到A表里;倘若是LSGD,就把相應的內容存儲到B表里。
倘若借助存儲過程來對相關的程序進行編寫,存在的不足之處就是數據不具備實時性。為了更好解決上述問題,可以借助觸發器來對數據進行有效拆分,通過觸發器來判定新寫入的數據是存到A表、還是B表或C表。圖2為數據拆分的模型示意圖。
(三)數據的合并
在實際業務開發實踐過程中,在對數據進行維護的過程中通常會遇到如下一些需求:某單位由若干個部門來有效組成,其期望每一個部門都能夠單獨維護各自部門的數據信息,同時,其又期望能夠得到本單位的所有匯總數據信息(即把單位不同部門的數據進行集中匯總)。比如:某工廠擁有多個生產車間,但工廠上級領導希望看到的是各車間的產量匯總;某單位擁有若干個銷售部門,但是,公司上層期望得到的數據是各銷售部門的銷量匯總數據;某公司擁有多個財務人員,其都具備輸入財務數據的權限,但公司領導期望看到的是全部財務數據信息等。此時,若公司為每一個部門都建立相應的表,而某些數據庫對instead of觸發器是不支持的,這樣的情況也很難得到部門間集中起來的匯總數據;另外,若公司全部部門都共享同一張數據表,盡管這樣能夠得到公司所需求的匯總數據信息,但由于公司每一個部門對表都擁有修改權限,也需要各自部門去維護自己的數據信息等,所以,很難有效控制數據的安全性、可靠性等。
通過合理應用觸發器,便能有效解決上述問題。通過對公司的每一個部門設置結構相同的數據表,并且,各自部門僅擁有對自己部門數據表進行修改的權限;此外,再針對公司匯總數據也相應建立一個表,并準確在公司每一個部門的數據表上搭建觸發器,這樣,只要某部門的數據出現修改或更新,而匯總表里面對應的數據也會做出相應的修改或更新。涉及到的數據合并模型示意圖如圖3所示。
(四)數據的級聯更新
在對數據庫進行設計的過程中,一旦設置外鍵也就相應的搭建了不同表間的主從關系。而在實際業務執行過程中,若主表的外鍵出現記錄刪除或被修改的情況,那么,從表也務必對相應的數據進行更改。由于大型數據庫存儲的數據復雜且被許多人所共享,它是不能夠像單機數據庫系統采用設置級聯來自動完成的。在這樣的情況下,若要實現上述功能,就需借助觸發器來有效、合理完成。具體實現過程如圖4所示的數據級聯更新模型示意圖。通過觸發器來進行科學判定,倘若要刪除相關的記錄,那么,就直接對從表里面的記錄進行刪除;倘若是更改記錄,需先判定是否對外鍵進行更改,若是需對外鍵進行更改,那么,從表里面相應的記錄進行更改就行。
四、結束語
通過上述四個觸發器的典型應用案例可以明顯看出,面對大型數據庫及對數據庫不同表之間的復雜邏輯關系進行處理的時候,恰當的使用觸發器能使數據庫的設計變得更加簡潔,而對于復雜的表與表之間的處理也將變得更高效。此外,通過觸發器的機制能夠明顯看出,一旦操作建立有觸發器的數據表,便會相應對數據庫里面對應的程序進行觸發。對于用戶經?;蛘吒哳l率使用的表來講,若使用過長的觸發器或者使用過多的觸發器,這對提升數據庫的效率是顯得不利的。因此,要結合實際需求來恰當、科學使用觸發器,與此同時,還需進一步更多采用其它存儲過程。