摘要:視頻教程在線輔導(dǎo)面授招生考試大綱指定教材報名時間8.2.3關(guān)系的完整性關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件?關(guān)系模型中可以有3類完整性約束:實體完整性、參照完整性和用戶定義的完整性。其中,實體完整性和參照完整性是關(guān)系模型第8章數(shù)據(jù)庫基礎(chǔ)1261必須滿足的完整性約束條件,被稱做是關(guān)系的兩個不變性,應(yīng)該由
8.2.3 關(guān)系的完整性
關(guān)系模型的完整性規(guī)則是對關(guān)系的某種約束條件?關(guān)系模型中可以有3類完整性約束:實體完整性、參照完整性和用戶定義的完整性。其中,實體完整性和參照完整性是關(guān)系模型第8章數(shù)據(jù)庫基礎(chǔ)1261必須滿足的完整性約束條件,被稱做是關(guān)系的兩個不變性,應(yīng)該由關(guān)系系統(tǒng)自動支持。
1.實體完整性(EntityIntegrity)
規(guī)則8.1實體完整性規(guī)則:若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值。
例如在關(guān)系“SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)”中,“研究生姓名”POSTGRADUATE屬性為主碼(假設(shè)研究生不會重名),則“研究生姓名”不能取空值。
實體完整性規(guī)則規(guī)定基本關(guān)系的所有主屬性都不能取空值,而不僅是主碼整體不能取空值。
例如,學(xué)生選課關(guān)系“選修(學(xué)號,課程號,成績)”中,“學(xué)號、課程號”為主碼,則“學(xué)號”和“課程號”兩個屬性都不能取空值。
2.參照完整性(Referentiallntegrity)
現(xiàn)實世界中的實體之間往往存在某種聯(lián)系,在關(guān)系模型中實體及實體間的聯(lián)系都是用關(guān)系來描述的。這樣就自然存在著關(guān)系與關(guān)系間的引用。
【例8.1】學(xué)生實體和專業(yè)實體可以用下面的關(guān)系表示,其中主碼用下劃線標(biāo)識:
學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年齡)
專業(yè)(專業(yè)號,專業(yè)名)
這兩個關(guān)系之間存在著屬性的引用,即學(xué)生關(guān)系引用了專業(yè)關(guān)系的主碼“專業(yè)號”。顯然,學(xué)生關(guān)系中的“專業(yè)號”值必須是確實存在的專業(yè)的專業(yè)號,即專業(yè)關(guān)系中有該專業(yè)的記錄。
也就是說,學(xué)生關(guān)系中的某個屬性的取值需要參照專業(yè)關(guān)系的屬性取值。
【例8.2】學(xué)生、課程、學(xué)生與課程之間的多對多聯(lián)系可以如下3個關(guān)系表示:
學(xué)生(學(xué)號,姓名,性別,專業(yè)號,年鈐)
課程(課程號,課程名,學(xué)分)
選修(學(xué)號,課程號,成繢)
這3個關(guān)系之間也存在著屬性的引用,即選修關(guān)系引用了學(xué)生關(guān)系的主碼“學(xué)號”和課程關(guān)系的主碼“課程號”。同樣,選修關(guān)系中的“學(xué)號”值必須是確實存在的學(xué)生的學(xué)號,即學(xué)生關(guān)系中有該學(xué)生的記錄:選修關(guān)系中的“課程號”值也必須是確實存在的課程的課程號,
即課程關(guān)系中有該課程的記錄。換句話說,選修關(guān)系中某些屬性的取值需要參照其他關(guān)系的屬性取值。
不僅兩個或兩個以上的關(guān)系間可以存在引用關(guān)系,同一關(guān)系內(nèi)部屬性間也可能存在引用關(guān)系。
【例8.3】在關(guān)系學(xué)生2(學(xué)號,姓名,性別,專業(yè)號,年齡,班長)中,“學(xué)號”屬性是主碼,“班長”屬性表示該學(xué)生所在班級的班長的學(xué)號,它引用了本關(guān)系“學(xué)號”厲性,即“班長”必須是確實存在的學(xué)生的學(xué)號。
定義8.S設(shè)F是基本關(guān)系R的一個或一組屬性,但不是關(guān)系R的碼。如果F與基本關(guān)系S的主碼Ks相對應(yīng),則稱F是基本關(guān)系R的外碼(ForeignKey),并稱基本關(guān)系R為參照關(guān)系(ReferencingRelation),基本關(guān)系S為被參照關(guān)系(ReferencedRelation)或目標(biāo)關(guān)系(TargetRelation)。關(guān)系R和S不一定是不同的關(guān)系。
顯然,目標(biāo)關(guān)系S的主碼和參照關(guān)系的外碼F必須定義在同一個(或一組)域上。在例8.1中,學(xué)生關(guān)系的“專業(yè)號”屬性與專業(yè)關(guān)系的主碼“專業(yè)號”相對應(yīng),因此“專業(yè)號”屬性是學(xué)生關(guān)系的外碼。這里專業(yè)關(guān)系是被參照關(guān)系,學(xué)生關(guān)系為參照關(guān)系。
在例8.2中,選修關(guān)系的“學(xué)號”屬性與學(xué)生關(guān)系的主碼“學(xué)號”相對應(yīng),“課程號”屬性與課程關(guān)系的主碼“課程號”相對應(yīng),因此“學(xué)號”和“課程號”屬性是選修關(guān)系的外碼。這里學(xué)生關(guān)系和課程關(guān)系均為被參照關(guān)系,選修關(guān)系為參照關(guān)系。
在例8.3中,“班長”屬性與本身的主碼“學(xué)號”屬性相對應(yīng),因此“班長”是外碼。這里學(xué)生2關(guān)系既是參照關(guān)系也是被參照關(guān)系。
規(guī)則8.2參照完整性規(guī)則:設(shè)屬性組A是關(guān)系R的外碼且A與關(guān)系S的主碼對應(yīng),則對于R中的每一個元組在屬性A上的值必須為空值(對應(yīng)于A中每個屬性值都為空值)或者等于S中某一元組的主碼值。
需要指出的是,外碼并不一定要與相應(yīng)的主碼同名(如例3)。不過,在實際應(yīng)用當(dāng)中,為了便于識別,當(dāng)外碼與相應(yīng)的主碼屬于不同關(guān)系時,往往給它們?nèi)∠嗤拿睢?/p>
參照完整性規(guī)則就是定義外碼與主碼之間的引用規(guī)則。
實體完整性和參照完整性是關(guān)系模型必須滿足的完整性約束條件,它由關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)自動支持。
3.用戶自定義的完整性(User-definedIntegrity)
這是針對某一具體數(shù)據(jù)的約束條件,由應(yīng)用環(huán)境決定。用戶定義的完整性具體應(yīng)用涉及數(shù)據(jù)必須滿足的語義要求。系統(tǒng)提供定義和檢驗這類完整性的統(tǒng)一處理方法,不再由應(yīng)用程序承擔(dān)這項工作。例如,我們可以寫一條規(guī)則,把學(xué)生每門課程的學(xué)習(xí)成績限制在0-100分?,F(xiàn)在的商品化RDBMS都提供了定義和檢査這類完整性約束的機(jī)制。
返回目錄:通信工程師互聯(lián)網(wǎng)技術(shù)數(shù)據(jù)庫基礎(chǔ)教程匯總
編輯相關(guān)推薦:
互聯(lián)網(wǎng)技術(shù)考試局域網(wǎng)和城域網(wǎng)匯總
通信工程師考試培訓(xùn)互聯(lián)網(wǎng)技術(shù)重點匯總
通信工程師備考資料免費領(lǐng)取
去領(lǐng)取