2017年10月11日 星期三

實施資料完整性的方法有...


1.      實體完整性(Entity Integrity)
要求資料表中的每一筆資料記錄都是一個唯一的個體,亦即每一筆資料記錄必須擁有一個獨一識別碼。
   也就是說,實體完整性要求所有資料記錄,至少必須有一個欄位的內容絕對不能發生重複的情況,所以可以使用自動編號欄位,或替欄位加上PRIMARY KEYUNIQUE條件約束。
2.      值域完整性(Domain Integrity)
要求存入欄位中的資料值必須符合特定的條件,以及決定欄位是否允許接受Null值。
   例如,要求薪資欄位中的金額必需介於15,000100,000且不允許接受Null值便是。方法包括:要求欄位中之資料格式(使用FOREIGN KEY條件約束)CHECK條件約束、DEFAULT定義、規則、與設定欄位是否接受Null值以確保特定範圍內的資料能夠存入欄位中。
3.      參考完整性(Referential Integrity)
指當新增、修改、刪除資料記錄時,資料表間的關聯性不可被破壞。
   其參考完整性是植基於主索引鍵(Primary Key)與外部索引鍵(Foreign Key)、或獨一索引鍵(Unique Key)與外部索引鍵之間的關聯性連結。
   例如,「父資料表」是客戶資料表Customer,「子資料表」是訂單資料表Orders,則這兩個資料表係透過共同欄位(客戶編號欄位)來建立各別的主索引鍵與外部索引鍵來達成關聯性連結。而每一位客戶可能會有一筆以上訂單資料(一對多關係),因此必須防止:
(1)   父資料表之客戶編號刪除(更改),而所對應的子資料表之多筆訂單資料未刪除(更改),造成沒有對應的客戶資料。
(2)   訂單資料表Order中新增了一筆沒有客戶資料表Customer與其對應的訂單資料。
4.      使用者自定完整性(User-Defined Integrity)
舉凡(實體完整性、值域完整性、參考完整性)皆是正規的資料庫觀念,惟使用者自定完整性(User-Defined Integrity)則泛指其他所有不屬於這三種完整性的商業規則。
例如,要求欄位B中的數值一定要大於欄位A中的數值,像此一商業規則便無法用前面三種資料完整性來達成,而必須自行使用SQL Server的規則、預存程序、或觸發程序來進行檢驗,亦或是由前端應用程式以程式碼來進行控制。



沒有留言:

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