資源描述:
《數(shù)據(jù)庫(kù)系統(tǒng)概論第五章》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、數(shù)據(jù)庫(kù)系統(tǒng)概論AnIntroductiontoDatabaseSystem第五章數(shù)據(jù)庫(kù)完整性AnIntroductiontoDatabaseSystem數(shù)據(jù)庫(kù)完整性數(shù)據(jù)庫(kù)的完整性數(shù)據(jù)的正確性和相容性數(shù)據(jù)的完整性和安全性是兩個(gè)不同概念數(shù)據(jù)的完整性防止數(shù)據(jù)庫(kù)中存在不符合語(yǔ)義的數(shù)據(jù),也就是防止數(shù)據(jù)庫(kù)中存在不正確的數(shù)據(jù)防范對(duì)象:不合語(yǔ)義的、不正確的數(shù)據(jù)數(shù)據(jù)的安全性保護(hù)數(shù)據(jù)庫(kù)防止惡意的破壞和非法的存取防范對(duì)象:非法用戶和非法操作數(shù)據(jù)庫(kù)完整性(續(xù))為維護(hù)數(shù)據(jù)庫(kù)的完整性,DBMS必須:1.提供定義完整性約束條件的機(jī)制2.提供完整性
2、檢查的方法3.違約處理第五章數(shù)據(jù)庫(kù)完整性5.1實(shí)體完整性5.2參照完整性5.3用戶定義的完整性5.4完整性約束命名字句*5.5域中的完整性限制5.6觸發(fā)器5.7小結(jié)5.1實(shí)體完整性5.1.1實(shí)體完整性定義5.1.2實(shí)體完整性檢查和違約處理插入或?qū)χ鞔a列進(jìn)行更新操作時(shí),RDBMS按照實(shí)體完整性規(guī)則自動(dòng)進(jìn)行檢查。包括:1.檢查主碼值是否唯一,如果不唯一則拒絕插入或修改2.檢查主碼的各個(gè)屬性是否為空,只要有一個(gè)為空就拒絕插入或修改檢查記錄中主碼值是否唯一的一種方法是進(jìn)行全表掃描索引第五章數(shù)據(jù)庫(kù)完整性5.1實(shí)體完整性5.2參
3、照完整性5.3用戶定義的完整性5.4完整性約束命名字句*5.5域中的完整性限制5.6觸發(fā)器5.7小結(jié)5.2參照完整性5.2.1參照完整性定義5.2.2參照完整性檢查和違約處理5.2.1參照完整性定義關(guān)系模型的參照完整性定義在CREATETABLE中用FOREIGNKEY短語(yǔ)定義哪些列為外碼用REFERENCES短語(yǔ)指明這些外碼參照哪些表的主碼參照完整性定義(續(xù))例如,關(guān)系SC中一個(gè)元組表示一個(gè)學(xué)生選修的某門(mén)課程的成績(jī),(Sno,Cno)是主碼。Sno,Cno分別參照引用Student表的主碼和Course表的主碼[例
4、3]定義SC中的參照完整性CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno),*在表級(jí)定義實(shí)體完整性*/FOREIGNKEY(Sno)REFERENCESStudent(Sno),/*在表級(jí)定義參照完整性*/FOREIGNKEY(Cno)REFERENCESCourse(Cno)/*在表級(jí)定義參照完整性*/);5.2參照完整性5.2.1參照完整性定義5.2.2參照完整性檢查和違約處理被參照表(例如Stu
5、dent)參照表(例如SC)違約處理可能破壞參照完整性插入元組拒絕可能破壞參照完整性修改外碼值拒絕刪除元組可能破壞參照完整性拒絕/級(jí)連刪除/設(shè)置為空值修改主碼值可能破壞參照完整性拒絕/級(jí)連修改/設(shè)置為空值參照完整性檢查和違約處理可能破壞參照完整性的情況及違約處理被參照表(例如Student)參照表(例如SC)違約處理可能破壞參照完整性插入元組拒絕可能破壞參照完整性修改外碼值拒絕刪除元組可能破壞參照完整性拒絕/級(jí)連刪除/設(shè)置為空值修改主碼值可能破壞參照完整性拒絕/級(jí)連修改/設(shè)置為空值第五章數(shù)據(jù)庫(kù)完整性5.1實(shí)體完整性5
6、.2參照完整性5.3用戶定義的完整性5.4完整性約束命名字句*5.5域中的完整性限制5.6觸發(fā)器5.7小結(jié)5.3用戶定義的完整性用戶定義的完整性就是針對(duì)某一具體應(yīng)用的數(shù)據(jù)必須滿足的語(yǔ)義要求RDBMS提供,而不必由應(yīng)用程序承擔(dān)5.3用戶定義的完整性5.3.1屬性上的約束條件的定義5.3.2屬性上的約束條件檢查和違約處理5.3.3元組上的約束條件的定義5.3.4元組上的約束條件檢查和違約處理5.3.1屬性上的約束條件的定義CREATETABLE時(shí)定義列值非空(NOTNULL)列值唯一(UNIQUE)檢查列值是否滿足一個(gè)布
7、爾表達(dá)式(CHECK)屬性上的約束條件的定義(續(xù))1.不允許取空值[例5]在定義SC表時(shí),說(shuō)明Sno、Cno、Grade屬性不允許取空值。CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINTNOTNULL,PRIMARYKEY(Sno,Cno),/*如果在表級(jí)定義實(shí)體完整性,隱含了Sno,Cno不允許取空值,則在列級(jí)不允許取空值的定義就不必寫(xiě)了*/);屬性上的約束條件的定義(續(xù))2.列值唯一[例6]建立部門(mén)表DEPT,要求部門(mén)名稱(chēng)Dname列取
8、值唯一,部門(mén)編號(hào)Deptno列為主碼CREATETABLEDEPT(DeptnoNUMERIC(2),DnameCHAR(9)UNIQUE,/*要求Dname列值唯一*/LocationCHAR(10),PRIMARYKEY(Deptno));屬性上的約束條件的定義(續(xù))3.用CHECK短語(yǔ)指定列值應(yīng)該滿足的條件[例7]Student表的Sse