菜鳥總結(jié)之——數(shù)據(jù)完整性 轉(zhuǎn)數(shù)據(jù)庫是我們存放數(shù)據(jù)的倉庫,而需要我們保存的數(shù)據(jù)肯定都是精確而且可靠的,當(dāng)我們對(duì)這些數(shù)據(jù)做一些增刪改查時(shí),保護(hù)數(shù)據(jù)的完整和一致是我們必須做到的。所以我們下面來說說數(shù)據(jù)的完整性。 我們先來看這張圖: 一:概念與作用的聯(lián)系。 在SQLServer聯(lián)機(jī)叢書中,將數(shù)據(jù)完整性解釋如下:“存儲(chǔ)在數(shù)據(jù)庫中的所有數(shù)據(jù)值均正確的狀態(tài)。如果數(shù)據(jù)庫中存儲(chǔ)有不正確的數(shù)據(jù)值,則該數(shù)據(jù)庫稱為已喪失數(shù)據(jù)完整性。”也就是說數(shù)據(jù)完整性就是指數(shù)據(jù)的精確性和可靠性。概念與作用是一體的,它就是為了達(dá)到保護(hù)數(shù)據(jù)精確性和可靠性而提出的一個(gè)概念。 二:分類和方式的對(duì)應(yīng)。 從圖中可以看出: 1.Primary Key(主鍵約束)是實(shí)體完整性的體現(xiàn)。 2. 域完整性則是對(duì)表中的字段做了要求,它對(duì)應(yīng)的是方式中的數(shù)據(jù)類型、Not Null約束、Check束、Foreign Key約束、Default約束和默認(rèn)值。 3.參照完整性:指兩個(gè)表的主鍵和外鍵的數(shù)據(jù)應(yīng)對(duì)應(yīng)一致。 它的作用有: (1)禁止在從表中插入包含主表中不存在的關(guān)鍵字的數(shù)據(jù)行。 (2)禁止會(huì)導(dǎo)致從表中相應(yīng)值孤立的主表中的外鍵值的改變。 (3)禁止刪除在從表中有對(duì)應(yīng)記錄的主表的記錄。 三:check約束與規(guī)則。
四:默認(rèn)值與Default約束的區(qū)別 兩者的作用相同,只是默認(rèn)值更類似與規(guī)則,它獨(dú)立于表,可以通過定義一次,多次應(yīng)用的任意表任意列,還可以用到用戶定義的數(shù)據(jù)類型上。 五:如何選擇方法。 在這些方法中,觸發(fā)器功能強(qiáng)大,即可以維護(hù)基礎(chǔ)的數(shù)據(jù)完整性邏輯,又可以維護(hù)復(fù)雜的完整性邏輯,如多表的級(jí)聯(lián)操作,但是開銷較高;約束的功能比觸發(fā)器弱,但開銷底;默認(rèn)和規(guī)則功能更弱,開銷也更低;數(shù)據(jù)類型提供最低級(jí)別的數(shù)據(jù)完整性功能,開銷也是最底的。 在選擇完整性方案時(shí),應(yīng)該遵循在完成同樣任務(wù)的條件下,選擇開銷底的方案解決。也就是說,能使用約束完成的就不用觸發(fā)器;能用數(shù)據(jù)類型完成的功能,就不用規(guī)則來完成。 附一張圖是三種類型數(shù)據(jù)完整性實(shí)施方法的比較: |
|