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