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