版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第五章數(shù)據(jù)庫完整性第五章數(shù)據(jù)庫完整性學(xué)習(xí)要點:了解數(shù)據(jù)庫完整性概念了解關(guān)系數(shù)據(jù)庫完整性掌握關(guān)系數(shù)據(jù)庫完整定義、檢查和處理方法了解約束子句、域完整性定義及觸發(fā)器概念5.1-5.3節(jié)(重點)5.4節(jié)第五章數(shù)據(jù)庫完整性5.1實體完整性5.2參照完整性5.3用戶定義的完整性5.4完整性的約束命名子句5.5*域中的完整性限制5.6觸發(fā)器第五章數(shù)據(jù)庫完整性1.問題的提出一個數(shù)據(jù)庫的服務(wù)質(zhì)量首先應(yīng)當(dāng)是其所提供的數(shù)據(jù)質(zhì)量不能“垃圾進,垃圾出”(Garbagein,Garbageout)。防止不合語義的數(shù)據(jù)進入數(shù)據(jù)庫。完整性:是否真實地反映現(xiàn)實世界第五章數(shù)據(jù)庫完整性2.數(shù)據(jù)庫完整性定義數(shù)據(jù)庫完整性的基本含義是指數(shù)據(jù)庫的正確性、有效性和相容性。正確性:指數(shù)據(jù)的合法性。有效性:指數(shù)據(jù)是否屬于所定義域的有效范圍。相容性:指表示同一事實的兩個數(shù)據(jù)應(yīng)當(dāng)一致。第五章數(shù)據(jù)庫完整性3.DBMS為維護數(shù)據(jù)庫完整性必須提供以下三種功能:定義功能:提供定義完整性約束條件的機制。檢查功能:檢查用戶發(fā)出的操作請求是否違背了完整性約束條件。違約處理功能:如果發(fā)現(xiàn)用戶的操作請求使數(shù)據(jù)違背了完整性約束條件,則采取一定的動作(如拒絕等)來保證數(shù)據(jù)的完整性。
第五章數(shù)據(jù)庫完整性4.一條完整性規(guī)則可以用一個五元組(D,O,A,C,P)來表示:D(Data):約束作用的數(shù)據(jù)對象O(Operation):觸發(fā)完整性檢查的數(shù)據(jù)庫操作A(Assertion):數(shù)據(jù)對象必須滿足的斷言或語義約束C(Condition):選擇A作用的數(shù)據(jù)對象值的條件P(Procedure):違反完整性規(guī)則時觸發(fā)的過程第五章數(shù)據(jù)庫完整性4.一條完整性規(guī)則可以用一個五元組(D,O,A,C,P)來表示:例1:“學(xué)號不能為空”的約束D:作用對象為Sno屬性O(shè):插入或修改Student元組時A:Sno不能為空C:無(A可作用于所有記錄的Sno屬性)P:拒絕執(zhí)行該操作第五章數(shù)據(jù)庫完整性4.一條完整性規(guī)則可以用一個五元組(D,O,A,C,P)來表示:例2:“教授工資不能低于4000元”的約束
D:作用對象為工資Sal屬性
O:插入或修改職工元組時
A:Sal不能小于4000C:職稱=“教授”
P:拒絕執(zhí)行該操作第五章數(shù)據(jù)庫完整性5.關(guān)系系統(tǒng)三類完整性的實現(xiàn)關(guān)系數(shù)據(jù)庫系統(tǒng)都提供了定義和檢查實體完整性、參照完整性和用戶定義的完整性的功能違反實體完整性規(guī)則和用戶定義的完整性規(guī)則的操作:一般是拒絕執(zhí)行違反參照完整性的操作:拒絕執(zhí)行接受這個操作,同時執(zhí)行一些附加操作,以保證數(shù)據(jù)庫的狀態(tài)正確學(xué)生-課程數(shù)據(jù)庫學(xué)生表Student(Sno,Sname,Sgender,Sage,Sdept)課程表
Course(Cno,Cname,Cpno,Ccredit)學(xué)生選課表
SC(Sno,Cno,Grade)第五章數(shù)據(jù)庫完整性5.1實體完整性5.2參照完整性5.3用戶定義的完整性5.4完整性的約束命名子句5.5域中的完整性限制5.6觸發(fā)器5.1實體完整性回顧實體完整性規(guī)則:若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值。主屬性非空,主碼取值惟一。CREATE
TABLE
<表名>
(<列名><數(shù)據(jù)類型>[<列級完整性約束條件>]
[,<列名><數(shù)據(jù)類型>[<列級完整性約束條件>]
]…
[,<表級完整性約束條件>]);5.1實體完整性5.1.1實體完整性定義在CREATETABLE中用PRIMARYKEY定義單屬性構(gòu)成的碼可以定義為列級約束條件或表級約束條件多屬性構(gòu)成的碼只能定義為表級約束條件5.1實體完整性5.1.1實體完整性定義例3:將Student表中的Sno屬性定義為碼。CREATETABLEStudent(Sno
CHAR(5)PRIMARYKEY,
Sname
CHAR(20)UNIQUE,
SgenderCHAR(1),Sage
INT,
Sdept
CHAR(15));5.1實體完整性5.1.1實體完整性定義例4:將SC表中的Sno,Cno屬性組定義為碼CREATETABLESC
(Sno
CHAR(5),Cno
CHAR(3),GradeINT,constraintscpk
PrimaryKey(Sno,Cno));5.1實體完整性5.1.2實體完整性檢查和違約處理
當(dāng)用戶對基本表插入一條記錄或?qū)χ鞔a進行修改操作時,RDBMS將進行如下自動檢查:檢查主碼是否唯一,如果不唯一則拒絕插入或修改。檢查主碼的各個屬性是否為空,只要有一個為空就拒絕插入或修改。5.1實體完整性5.1.2實體完整性檢查和違約處理例5:對學(xué)生-課程數(shù)據(jù)庫(P82),分析下列哪些操作將被拒絕執(zhí)行,原因是什么?(1)插入{'200215121','張三','男','IS'}學(xué)生記錄(2)插入{'200215123','2'}選課記錄(3)插入{'200215122'}選課記錄(4)修改學(xué)生'張立'的學(xué)號為'200215122'第五章數(shù)據(jù)庫完整性5.1實體完整性5.2參照完整性5.3用戶定義的完整性5.4完整性的約束命名子句5.5域中的完整性限制5.6觸發(fā)器5.2參照完整性
回顧參照完整性規(guī)則若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對于R中每個元組在F上的值必須為:或者取空值(F的每個屬性值均為空值)或者等于S中某個元組的主碼值(非空值)5.2參照完整性
5.2.1參照完整性定義關(guān)系模型中在CREATETABLE中用FOREIGNKEY短語定義哪些屬性為外碼,用REFERENCES短語指明這些外碼參照哪些表的主碼取值。除了定義外碼,還應(yīng)該定義外碼列是否允許取空值。說明在表級約束條件中。5.2參照完整性
5.2.1參照完整性定義例6:定義SC表的參照完整性。CREATE
TABLE
SC(SnoCHAR(5)NOTNULL,
CnoCHAR(3)NOTNULL,GradeINT,PrimaryKey(Sno,Cno),ForeignKey(Sno)Refrences
Student(Sno),ForeignKey(Cno)ReferencesCourse(Cno));5.2參照完整性
5.2.2參照完整性檢查和違約處理被參照表參照表違約處理可能破壞參照完整性插入元組拒絕可能破壞參照完整性修改外碼值拒絕刪除元組可能破壞參照完整性拒絕/級連刪除/設(shè)置為空值修改主碼值可能破壞參照完整性拒絕/級連修改/設(shè)置為空值5.2參照完整性
5.2.2參照完整性檢查和違約處理拒絕(noaction):不允許執(zhí)行該操作。常為默認策略。級連(cascade)操作:當(dāng)刪除或修改被參照表元組造成了與參照表不一致,則刪除或修改參照表中的所有不一致的元組。設(shè)置為空值(setnull):當(dāng)刪除或修改被參照表元組造成了與參照表不一致,則將參照表中的所有不一致的元組的對應(yīng)屬性設(shè)置為空值(不破壞實體完整性的情況下)。5.2參照完整性
5.2.2參照完整性檢查和違約處理例7:針對學(xué)生-課程數(shù)據(jù)庫,下列哪些操作可能會違反參照完整性規(guī)則:(1)刪除學(xué)號為'200215125'學(xué)生的信息(2)刪除1號課程信息(3)修改學(xué)號為'200215121'學(xué)生的基本信息(4)修改學(xué)號為'200215121'學(xué)生選修課程的信息(5)向課程表中插入新課程信息(6)向選修表中插入新的選課情況信息5.2參照完整性
5.2.2參照完整性檢查和違約處理例8:顯式說明參照完整性的違約處理。CREATETABLESC(SnoCHAR(5),
CnoCHAR(1),GradeINT,PrimaryKey(Sno,Cno),
ForeignKey(Sno)ReferencesStudent(Sno)
ondeletecascadeonupdatecascade,
ForeignKey(Cno)ReferencesCourse(Cno)
ondeletenoactiononupdatecascade);5.2參照完整性
5.2.2參照完整性檢查和違約處理例9:顯式說明參照完整性的違約處理。CREATETABLECourse(CnoCHAR(1)
PrimaryKey,
CnameCHAR(10),
CpnoCHAR(1),
Ccredit
int,
ForeignKey(Cpno)ReferencesCourse(Cno)ondeletesetnullonupdatesetnull);第五章數(shù)據(jù)庫完整性5.1實體完整性5.2參照完整性5.3用戶定義的完整性5.4完整性的約束命名子句5.5域中的完整性限制5.6觸發(fā)器5.3用戶定義的完整性用戶定義的完整性是針對某一具體關(guān)系數(shù)據(jù)庫的約束條件,反映某一具體應(yīng)用所涉及的數(shù)據(jù)必須滿足的語義要求。SQLServer中定義用戶完整性的方法用CREATETABLE語句在建表時定義用戶完整性約束用ALTERTABLE語句在修改表時定義用戶完整性約束通過觸發(fā)器來定義用戶的完整性規(guī)則5.3用戶定義的完整性5.3.1屬性上的約束條件的定義在CREATETABLE中定義屬性的同時可以根據(jù)應(yīng)用要求,定義屬性上的約束條件,即屬性值限制:列值非空:NOTNULL列值唯一:UNIQUE列值缺省值:DEFAULT<缺省值>檢查列值是否滿足一個布爾表達式:
CHECK()5.3用戶定義的完整性5.3.1屬性上的約束條件的定義例10:在定義SC表時,說明Grade屬性不允許取空值,缺省值0。CREATETABLESC(SnoCHAR(5),
CnoCHAR(3),
GradeINTNOTNULLDEFAULT0,PrimaryKey(Sno,Cno));5.3用戶定義的完整性5.3.1屬性上的約束條件的定義例11:Student表的Sgender只許取“男”或“女”。CREATETABLEStudent(Sno
CHAR(9)PrimaryKey,
Sname
CHAR(8)NOTNULL,SgenderCHAR(2)
CHECK(SgenderIN('男','女')),
SageSMALLINT,
SdeptCHAR(20));5.3用戶定義的完整性5.3.2屬性上的約束條件檢查和違約處理當(dāng)往表中插入元組或修改屬性的值時,RDBMS就檢查是否滿足屬性上的約束條件,如果不滿足則拒絕執(zhí)行該操作。5.3用戶定義的完整性5.3.3元組上的約束條件定義用CHECK短語定義元組上的約束條件,即元組級的限制,可以設(shè)置不同屬性之間的取值的相互約束條件。例12:男學(xué)生的名字不能以Ms.開頭。ALTERTABLEStudentADDCHECK(Sgender='女'ORSnameNOTLIKE'Ms.%');思考:教授工資不能低于4000元5.3用戶定義的完整性5.3.4元組上的約束條件的檢查和違約處理當(dāng)往表中插入元組或修改屬性的值時,RDBMS就檢查是否滿足屬性上的約束條件,如果不滿足則拒絕執(zhí)行該操作。第五章數(shù)據(jù)庫完整性5.1實體完整性5.2參照完整性5.3用戶定義的完整性5.4完整性的約束命名子句5.5域中的完整性限制5.6觸發(fā)器5.4完整性的約束命名子句5.4.1完整性約束命名子句CONSTRAINT<完整性約束條件名>
[PRIMARYKEY短語|FOREIGNKEY短語|CHECK短語|NOTNULL|UNIQUE|DEFAULT]用于對完整性約束條件命名,從而可以靈活地增加、刪除一個完整性約束條件。在createtable時所有約束都能增加,但在altertable時只能增加[PRIMARYKEY、FOREIGNKEY和CHECK約束5.4完整性的約束命名子句5.4.1完整性約束命名子句例13:建立Student表,學(xué)號在9000~9999之間,姓名不能取空,年齡小于30,性別只能取男或女CREATETABLEStudent(SnoNUMERIC(5)CONSTRAINTC1CHECK(SnoBETWEEN9000AND9999),
SnameCHAR(20)CONSTRAINTC2notnull,SgenderCHAR(2)CONSTRAINTC3CHECK(SgenderIN('男','女')),SageSMALLINTCONSTRAINTC4CHECK(Sage<30));5.4完整性的約束命名子句5.4.2修改表中的完整性限制例14:去掉對Student表中性別取值的限制ALTERTABLEStudentDROPCONSTRAINTC3;思考:恢復(fù)對Student表中性別取值的限制?altertablestudentaddconstraintc3
CHECK(SgenderIN('男','女'));注意:增加約束時可以不命名,但只有命名的約束可以刪除。5.4完整性的約束命名子句5.4.2修改表中的完整性限制例15:修改Student表中的約束條件,要求年齡大于17。ALTERTABLEStudent
DROP
CONSTRAINTC4;ALTERTABLEStudent
ADD
CONSTRAINTC4CHECK(Sage>17andSage<30);作業(yè)P164習(xí)題6第五章數(shù)據(jù)庫完整性5.1實體完整性5.2參照完整性5.3用戶定義的完整性5.4完整性的約束命名子句5.5域中的完整性限制(自學(xué))5.6觸發(fā)器5.5域中的完整性限制SQL中可以用CREATEDOMAIN語句建立一個域以及該域應(yīng)該滿足的完整性約束條件。例16:建立一個性別域,并聲明性別域的取值范圍。CREATEDOMAINGenderDomainCHAR(2)CONSTRAINTGDCHECK(VALUESIN('男','女'));例17:將student表中的性別屬性說明為取自性別域。ALTERTABLEStudent
ALTERCOLUMN
Sgender
GenderDomain;第五章數(shù)據(jù)庫完整性5.1實體完整性5.2參照完整性5.3用戶定義的完整性5.4完整性的約束命名子句5.5域中的完整性限制5.6觸發(fā)器(自學(xué))5.6觸發(fā)器觸發(fā)器概念觸發(fā)器(trigger)是特殊的存儲過程,它的執(zhí)行不是由程序調(diào)用,也不是手工啟動,而是由事件來觸發(fā)(激活),比如當(dāng)對一個表進行操作(insert,delete,update)時就會激活它執(zhí)行。觸發(fā)器經(jīng)常用于加強數(shù)據(jù)的完整性約束和業(yè)務(wù)規(guī)則等。DML觸發(fā)器:響應(yīng)INSERT,UPDATE,DELETE操作DDL觸發(fā)器:響應(yīng)CREATE,ALTER,DROP事件5.6觸發(fā)器5.6.1定義觸發(fā)器CREATETRIGGER
<觸發(fā)器名>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 《GB-Z 28820.3-2012聚合物長期輻射老化 第3部分:低壓電纜材料在役監(jiān)測程序》專題研究報告
- 《GBT 32789-2016 輪胎噪聲測試方法 轉(zhuǎn)鼓法》專題研究報告
- 《GB-T 25800-2010紡織染整助劑命名原則》專題研究報告
- 《MySQL數(shù)據(jù)庫技術(shù)與應(yīng)用》課件-7.3.1左外連接查詢
- 2026年云南工程職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫及答案詳解一套
- 《幼兒文學(xué)》課件-2.2兒歌特點
- 冷鏈物流路徑優(yōu)化信息咨詢合同
- 中藥材行業(yè)中藥炮制師崗位招聘考試試卷及答案
- 2026年度全年各類安全工作計劃
- 2025年低溫原油高效破乳劑項目合作計劃書
- 急救護理:基礎(chǔ)技能與操作
- 購車背戶協(xié)議合同
- 一件代發(fā)協(xié)議合同
- 2025年商洛市中心醫(yī)院招聘(35人)參考筆試試題及答案解析
- 《煤礦安全規(guī)程(2025)》防治水部分解讀課件
- 2026年無人機物流配送應(yīng)急預(yù)案制定與風(fēng)險防控
- 山東開放大學(xué)《勞動合同法(本科)》形考作業(yè)1-3終考答案
- 廣西投資引導(dǎo)基金有限責(zé)任公司招聘考試真題2024
- 醫(yī)療器械培訓(xùn)試題帶答案
- 2025-2026學(xué)年人教版八年級上冊地理知識點
- 基于單片機的輸液報警器設(shè)計
評論
0/150
提交評論