資源描述:
《數(shù)據(jù)庫系統(tǒng)概論 第五章 數(shù)據(jù)庫完整性》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在行業(yè)資料-天天文庫。
1、數(shù)據(jù)庫系統(tǒng)概論AnIntroductiontoDatabaseSystem第五章數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性數(shù)據(jù)庫的完整性數(shù)據(jù)的正確性和相容性數(shù)據(jù)的完整性和安全性是兩個不同概念數(shù)據(jù)的完整性防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),也就是防止數(shù)據(jù)庫中存在不正確的數(shù)據(jù)防范對象:不合語義的、不正確的數(shù)據(jù)數(shù)據(jù)的安全性保護數(shù)據(jù)庫防止惡意的破壞和非法的存取防范對象:非法用戶和非法操作數(shù)據(jù)庫完整性(續(xù))為維護數(shù)據(jù)庫的完整性,DBMS必須:1.提供定義完整性約束條件的機制2.提供完整性檢查的方法3.違約處理第五章數(shù)據(jù)庫完整性5.1實體完整性5.2參照完整性5.3用戶定義的完整性
2、5.4完整性約束命名字句*5.5域中的完整性限制5.6觸發(fā)器5.7小結5.1實體完整性5.1.1實體完整性定義5.1.2實體完整性檢查和違約處理5.1.1實體完整性定義關系模型的實體完整性CREATETABLE中用PRIMARYKEY定義單屬性構成的碼有兩種說明方法定義為列級約束條件定義為表級約束條件對多個屬性構成的碼只有一種說明方法定義為表級約束條件實體完整性定義(續(xù))[例1]將Student表中的Sno屬性定義為碼(1)在列級定義主碼CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(20)NOTN
3、ULL,SsexCHAR(2),SageSMALLINT,SdeptCHAR(20));實體完整性定義(續(xù))(2)在表級定義主碼CREATETABLEStudent(SnoCHAR(9),SnameCHAR(20)NOTNULL,SsexCHAR(2),SageSMALLINT,SdeptCHAR(20),PRIMARYKEY(Sno));實體完整性定義(續(xù))[例2]將SC表中的Sno,Cno屬性組定義為碼CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKE
4、Y(Sno,Cno)/*只能在表級定義主碼*/);5.1實體完整性5.1.1實體完整性定義5.1.2實體完整性檢查和違約處理5.1.2實體完整性檢查和違約處理插入或?qū)χ鞔a列進行更新操作時,RDBMS按照實體完整性規(guī)則自動進行檢查。包括:1.檢查主碼值是否唯一,如果不唯一則拒絕插入或修改2.檢查主碼的各個屬性是否為空,只要有一個為空就拒絕插入或修改實體完整性檢查和違約處理(續(xù))檢查記錄中主碼值是否唯一的一種方法是進行全表掃描實體完整性檢查和違約處理(續(xù))索引第五章數(shù)據(jù)庫完整性5.1實體完整性5.2參照完整性5.3用戶定義的完整性5.4完整性約束命名字句
5、*5.5域中的完整性限制5.6觸發(fā)器5.7小結5.2參照完整性5.2.1參照完整性定義5.2.2參照完整性檢查和違約處理5.2.1參照完整性定義關系模型的參照完整性定義在CREATETABLE中用FOREIGNKEY短語定義哪些列為外碼用REFERENCES短語指明這些外碼參照哪些表的主碼參照完整性定義(續(xù))例如,關系SC中一個元組表示一個學生選修的某門課程的成績,(Sno,Cno)是主碼。Sno,Cno分別參照引用Student表的主碼和Course表的主碼[例3]定義SC中的參照完整性CREATETABLESC(SnoCHAR(9)NOTNULL
6、,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno),/*在表級定義實體完整性*/FOREIGNKEY(Sno)REFERENCESStudent(Sno),/*在表級定義參照完整性*/FOREIGNKEY(Cno)REFERENCESCourse(Cno)/*在表級定義參照完整性*/);5.2參照完整性5.2.1參照完整性定義5.2.2參照完整性檢查和違約處理參照完整性檢查和違約處理可能破壞參照完整性的情況及違約處理被參照表(例如Student)參照表(例如SC)違約處理可能破壞參照完整性插入元組
7、拒絕可能破壞參照完整性修改外碼值拒絕刪除元組可能破壞參照完整性拒絕/級連刪除/設置為空值修改主碼值可能破壞參照完整性拒絕/級連修改/設置為空值違約處理參照完整性違約處理1.拒絕(NOACTION)執(zhí)行默認策略2.級聯(lián)(CASCADE)操作3.設置為空值(SET-NULL)對于參照完整性,除了應該定義外碼,還應定義外碼列是否允許空值違約處理(續(xù))[例4]顯式說明參照完整性的違約處理示例CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno),F(xiàn)
8、OREIGNKEY(Sno)REFERENCESStudent(Sno)ONDELETECASCADE/*級