2016.8.10
關(guān)系完整性是為保證數(shù)據(jù)庫中數(shù)據(jù)的正確性和相容性,對關(guān)系模型提出的某種約束條件或規(guī)則姨夹。
完整性通常包括域完整性冷离,實體完整性纺蛆、參照完整性和用戶定義完整性,
其中域完整性涝登,實體完整性和參照完整性,是關(guān)系模型必須滿足的完整性約束條件。
域完整性約束(Domain Integrity constrains)
域完整性是保證數(shù)據(jù)庫字段取值的合理性晰骑。
屬性值應(yīng)是域中的值,這是關(guān)系模式規(guī)定了的绊序。除此之外硕舆,一個屬性能否為NULL,這是由語義決定的骤公,也是域完整性約束的主要內(nèi)容抚官。
域完整性約束是最簡單、最基本的約束阶捆。
在當(dāng)今的關(guān)系DBMS中凌节,一般都有域完整性約束檢查功能钦听。
包括檢查(CHECK)、默認(rèn)值(DEFAULT)倍奢、不為空(NOT NULL)朴上、外鍵(FOREIGN KEY)等約束。
實體完整性約束(Entity integrity)
是指關(guān)系的主關(guān)鍵字不能重復(fù)也不能取空值娱挨。
參照完整性約束(Referential Iintigrity)
是定義建立關(guān)系之間聯(lián)系的主關(guān)鍵字與外部關(guān)鍵字引用的約束條件余指。
關(guān)系數(shù)據(jù)庫中通常都包含多個存在相互聯(lián)系的關(guān)系,關(guān)系與關(guān)系之間的聯(lián)系是通過公共屬性來實現(xiàn)的跷坝。
所謂公共屬性酵镜,它是一個關(guān)系R(稱為被參照關(guān)系或目標(biāo)關(guān)系)的主關(guān)鍵字,同時又是另一關(guān)系K(稱為參照關(guān)系)的外部關(guān)鍵字柴钻。
如果參照關(guān)系K的外部關(guān)鍵字不是其主關(guān)鍵字淮韭,要么與被參照關(guān)系R中某元組主關(guān)鍵字的值相同,要么取空值贴届。
如果參照關(guān)系K的外部關(guān)鍵字也是其主關(guān)鍵字靠粪,根據(jù)實體完整性要求,主關(guān)鍵字不得取空值毫蚓,因此占键,參照關(guān)系K外部關(guān)鍵字的取值實際上只能取相應(yīng)被參照關(guān)系R中已經(jīng)存在的主關(guān)鍵字值。
就是說一張表A的主鍵被另一張表B引用時元潘,
若這個鍵在表B中不是主鍵畔乙,則可以取空值,或取表A中這個鍵已經(jīng)存在的某值翩概;
若這個鍵在表B中是主鍵牲距,則不可以取空值,只能取表A中這個鍵已經(jīng)存在的某值钥庇。
自定義完整性約束(user defined integrity)
是根據(jù)應(yīng)用環(huán)境的要求和實際的需要牍鞠,對某一具體應(yīng)用所涉及的數(shù)據(jù)提出約束性條件。
主要包括字段有效性約束和記錄有效性评姨。
就是自己定義的一些約束难述。