資源描述:
《數(shù)據(jù)庫完整性課件.ppt》由會員上傳分享,免費在線閱讀,更多相關內(nèi)容在教育資源-天天文庫。
1、第五章數(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ù)庫的完整性,DBMS必須:1.提供定義完整性約束條件的機制完整性約束條件也稱為完整性規(guī)則,是數(shù)據(jù)庫中的數(shù)據(jù)必須滿足的語義約束條件。包括關系模型的三種完整性,由SQL的DDL實現(xiàn)。2.提供完整性檢查的方法DBMS中檢查數(shù)據(jù)是否滿足完整性約束條件的機制稱為完整性檢查。一般在更新后或事務處理時檢查
2、。3.違約處理DBMS發(fā)現(xiàn)用戶的操作違背了完整性約束條件就進行違約處理以保證數(shù)據(jù)的完整性。第五章數(shù)據(jù)庫完整性5.1實體完整性5.2參照完整性5.3用戶定義的完整性5.4完整性約束命名子句*5.5域中的完整性限制5.6觸發(fā)器5.7小結5.1實體完整性5.1.1實體完整性定義5.1.2實體完整性檢查和違約處理5.1.1實體完整性定義實體完整性規(guī)則:若屬性(指一個或一組屬性)A是基本關系R的主屬性,則A不能取空值或重復值。關系模型的實體完整性CREATETABLE中用PRIMARYKEY定義單屬性構成的碼有兩種說明方法定義為列級約束條件定義為表級約束條件對多個屬性構成的碼只有一種說明方法定
3、義為表級約束條件[例1]將Student表中的Sno屬性定義為碼(1)在列級定義主碼CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,SnameCHAR(20)NOTNULL,SsexCHAR(2),SageSMALLINT,SdeptCHAR(20));(2)在表級定義主碼CREATETABLEStudent(SnoCHAR(9),SnameCHAR(20)NOTNULL,SsexCHAR(2),SageSMALLINT,SdeptCHAR(20),PRIMARYKEY(Sno));[例2]將SC表中的Sno,Cno屬性組定義為碼CREATETABLE
4、SC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno)/*只能在表級定義主碼*/);[思考]定義SC表后添加(Sno,Cno)屬性組為碼CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,);ALTERTABLESCADDPRIMARYKEY(Sno,Cno)/*只能在表級定義主碼*/另外:增加外鍵呢?5.1.2實體完整性檢查和違約處理插入或?qū)χ鞔a列進行更新操作時,RDBMS按照實體完整性規(guī)則自動進行檢查。包括:檢查主碼
5、值是否唯一,如果不唯一則拒絕插入或修改檢查主碼的各個屬性是否為空,只要有一個為空就拒絕插入或修改檢查記錄中主碼值是否唯一的一種方法是進行全表掃描索引5.2參照完整性參照完整性規(guī)則:若屬性(或?qū)傩越M)F是基本關系R的外碼,它與基本關系S的主碼Ks相對應,則對于R中每個元組在F上的值必須為:?或者取空值(F的每個屬性值均為空值)?或者S中某個元組的主碼值5.2.1參照完整性定義關系模型的參照完整性定義在CREATETABLE中用FOREIGNKEY短語定義那些列為外碼用REFERENCES短語指明這些外碼參照那些表的主碼例如,關系SC中一個元組表示一個學生選修的某門課程的成績,(Sno,
6、Cno)是主碼。Sno,Cno分別參照引用Student表的主碼和Course表的主碼[例3]定義SC中的參照完整性CREATETABLESC(SnoCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,PRIMARYKEY(Sno,Cno),/*在表級定義實體完整性*/FOREIGNKEY(Sno)REFERENCESStudent(Sno),/*在表級定義參照完整性*/FOREIGNKEY(Cno)REFERENCESCourse(Cno)/*在表級定義參照完整性*/);參照完整性檢查和違約處理可能破壞參照完整性的情況及違約處理被參照表(例
7、如Student)參照表(例如SC)違約處理可能破壞參照完整性插入元組拒絕可能破壞參照完整性修改外碼值拒絕刪除元組可能破壞參照完整性拒絕/級連刪除/設置為空值修改主碼值可能破壞參照完整性拒絕/級連修改/設置為空值違約處理參照完整性違約處理拒絕(NOACTION)執(zhí)行默認策略級聯(lián)(CASCADE)操作當刪除或修改被參照表(student)的一個元組時造成了與參照表(SC)的不一致,則刪除或修改參照表中的所有造成不一致的元組。違約處理設置為空值(SET-NUL