2017年10月11日 星期三

資料完整性的實施形式

資料完整性的實施形式
Microsoft® SQL Server™ 中,資料完整性有兩種形式來實施:
1.      宣告式資料完整性(Declarative Data Integrity)
係將資料所需符合的條件融入至物件定義中,如此可確保資料皆符合事先制定的條件。其特點如下:
(1)   藉著直接針對資料表與欄位定義宣告的條件約束,可使宣告式資料完整性成為資料庫定義的一部分。
(2)   係使用條件約束、預設值、與規則等,來實施宣告式資料完整性。
2.      程序化資料完整性(Procedural Data Integrity)
如果資料所需符合的條件以及此條件的實施皆透過您所撰寫的程式碼來完成,則稱之為程序化資料完整性。其特點如下:
(1)   可透過相關的程式語言及工具實施於前端或伺服器端。
(2)   SQL Server可使用預存程序與觸發程序來實施程序化資料完整性。


SQL Server實施資料完整性的具體手法有下列各項:
1.      條件約束(Constraint)
2.      預設值(Default)
3.      規則(Rule)
4.      預存程序(Stored Procedure)
5.      觸發程序(Trigger)


※善用條件約束
「條件約束」(Constraints)最主要的功能,是確保存入至欄位中的資料值符合我們的要求,並使得資料表間的關聯性連結可確實被維護。由此可知,條件約束是以欄位為其處理對象。
如果條件約束的處理對象是某一個欄位,則稱「欄位層次的條件約束」(Column-Level Constraint);如果處理的對象涉及到好幾個欄位,則稱「資料表層次的條件約束」(Table-Level Constraints)

Microsoft® SQL Server™ 擁有CHECKPRIMARY KEYUNIQUE、與FOREIGN KEY等四種條件約束:

CHECK條件約束
使用CHECK條件約束,可以設定只有符合特定條件與格式的資料才能被存入欄位中。CHECK條件約束係使用一個會傳回TRUEFALSE的布林運算式(亦即邏輯運算式)來檢查欲存入欄位的值是否符合指定的條件,如果傳回TRUE則資料值被寫入欄位中;反之則否。例如,假設只有030,000的數值才能被存放於欄位OrderID中,則可以採用邏輯運算式如下:
OrderID >= 0  AND  OrderID <= 30000
關於CHECK條件約束,必須了解下列特性:
1.      可將多個CHECK條件約束套用至同一個欄位,其被評量的次序將依照它們被建立的次序。
2.      如果CHECK條件約束涉及到多個欄位(欄位間有關聯性)時,就應採用資料表層次的CHECK條件約束。
3.      每當執行INSERTUPDATE命令時,CHECK條件約束便會進行評量。
4.      CHECK條件約束不能套用於自動編號欄位、timestampuniqueidentifier資料型態欄位。
5.      CHECK條件約束的邏輯運算式不能包含子查詢(subquery)


沒有留言:

用頭腦去思考,不要人云亦云才好, 宗教信徒就是依賴與自私心態(求東求西)的人, 光是這點就很容易暴露弱點了, 難怪seafood吃飽飽,哈哈。 續上, 除了依賴與自私心態(兩者都是人性)之外。 另外也有很大一部份的人,是人云亦云的思考邏輯, 所以宗教才能譁眾取寵。