版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、第7章 數(shù)據(jù)庫完整性第7章 數(shù)據(jù)庫完整性什么是數(shù)據(jù)庫的完整性 數(shù)據(jù)的正確性和相容性,防止不合語義的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫。例: 學(xué)生的年齡必須是整數(shù),取值范圍為14-29; 學(xué)生的性別只能是男或女; 學(xué)生的學(xué)號(hào)一定是唯一的; 學(xué)生所在的系必須是學(xué)校開設(shè)的系; 完整性:否真實(shí)地反映現(xiàn)實(shí)世界 第7章 數(shù)據(jù)庫完整性第7章 數(shù)據(jù)庫完整性為維護(hù)數(shù)據(jù)庫的完整性,DBMS必須:1.提供定義完整性約束條件的機(jī)制2.提供完整性檢查的方法3.違約處理 第7章 數(shù)據(jù)庫完整性7.1 實(shí)體完整性7.2 參照完整性7.3 用戶自定義完整性7.4 完整性約束命名子句7.5 觸發(fā)器7.6 小結(jié)7.1 實(shí)體完整性7.1.1 實(shí)體完整性
2、定義7.1.2 實(shí)體完整性檢查和違約處理實(shí)體完整性的定義實(shí)體完整性的定義實(shí)體完整性的定義實(shí)體完整性的定義(2)在表級定義主碼 CREATE TABLE S (Sno CHAR(9), Sname CHAR(20) NOT NULL, Ssex CHAR(2) , Sage SMALLINT, Sdept CHAR(20), PRIMARY KEY (Sno) ); 實(shí)體完整性的定義7.1 實(shí)體完整性7.1.1 實(shí)體完整性定義7.1.2 實(shí)體完整性檢查和違約處理7.1.2 實(shí)體完整性檢查和違約處理7.1.2 實(shí)體完整性檢查和違約處理7.1.2 實(shí)體完整性檢查和違約處理 參照完整性7.2 參照完整
3、性7.2.1 參照完整性定義7.2.2 參照完整性檢查和違約處理7.2.1 參照完整性定義7.2.1 參照完整性定義例如,關(guān)系SC中(Sno,Cno)是主碼。Sno,Cno分別參照引用S表的主碼和C表的主碼 例3 定義SC中的參照完整性 CREATE TABLE SC (Sno CHAR(9) , Cno CHAR(4) , Grade SMALLINT, PRIMARY KEY (Sno, Cno), /*在表級定義實(shí)體完整性*/ FOREIGN KEY (Sno) REFERENCES S (Sno), /*在表級定義參照完整性*/ FOREIGN KEY (Cno) REFERENCES
4、 C (Cno) /*在表級定義參照完整性*/ );7.2 參照完整性7.2.1 參照完整性定義7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理3. 在參照關(guān)系中,修改外碼的問題 S(Sno,Sname,Sage,) SC(Sno,Cno,Grade) 95001,張三,20, 9500
5、1,DB,90 95002,李四,19, 95001,OS,85 95002,DB,867.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理7.2.2 參照完整性檢查和違約處理顯式說明參照完整性的違約處理示例 CREATE TABLE SC (Sno CHAR(9) , Cno CHAR(4) , Grade SMALLINT, PRIMARY KEY(Sno,Cno), FOREIGN KEY
6、(Sno) REFERENCES S (Sno) ON DELETE CASCADE /*當(dāng)刪除s表中的元組時(shí)級聯(lián)刪除SC表中相應(yīng)的元組*/ ON UPDATE CASCADE, /*當(dāng)更新s表中的元組時(shí),級聯(lián)更新SC表中相應(yīng)的元組*/ FOREIGN KEY (Cno) REFERENCES C (Cno) ON DELETE NO ACTION /*當(dāng)刪除c 表中的元組造成了與SC表不一致時(shí)拒絕刪除*/ ON UPDATE CASCADE /*當(dāng)更新c表中的元組時(shí),級聯(lián)更新SC表中相應(yīng)的元組*/ );7.3 用戶自定義完整性7.3 用戶定義的完整性7.3.1 屬性上的約束條件的定義7.3.
7、2 屬性上的約束條件檢查和違約處理 7.3.3 元組上的約束條件的定義 元組上的約束條件檢查和違約處理 7.3.1 屬性上的約束條件的定義7.3.1 屬性上的約束條件的定義7.3.1 屬性上的約束條件的定義7.3 用戶自定義完整性7.3 用戶定義的完整性7.3.1 屬性上的約束條件的定義7.3.2 屬性上的約束條件檢查和違約處理 7.3.3 元組上的約束條件的定義 元組上的約束條件檢查和違約處理 7.3.2 屬性上的約束條件檢查和違約處理 插入元組或修改屬性的值時(shí),RDBMS檢查屬性上的約束條件是否被滿足 如果不滿足則操作被拒絕執(zhí)行 7.3 用戶定義的完整性7.3.1 屬性上的約束條件的定義7
8、.3.2 屬性上的約束條件檢查和違約處理 7.3.3 元組上的約束條件的定義 元組上的約束條件檢查和違約處理 7.3.3 元組上的約束條件的定義7.3.3 元組上的約束條件的定義7.3 用戶定義的完整性7.3.1 屬性上的約束條件的定義7.3.2 屬性上的約束條件檢查和違約處理 7.3.3 元組上的約束條件的定義 元組上的約束條件檢查和違約處理 元組上的約束條件檢查和違約處理7.4 完整性約束命名子句7.4 完整性約束命名子句例10 建立學(xué)生登記表Student,要求學(xué)號(hào)在9000099999之間,姓名不能取空值,年齡小于30,性別只能是“男”或“女”。 CREATE TABLE Studen
9、t (Sno INT(6) CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999), Sname CHAR(20) CONSTRAINT C2 NOT NULL, Sage SMALLINT(3) CONSTRAINT C3 CHECK (Sage < 30), Ssex CHAR(2) CONSTRAINT C4 CHECK (Ssex IN ( '男','女'), CONSTRAINT StudentKey PRIMARY KEY(Sno) );在Student表上建立了5個(gè)約束條件,包括主碼約束(命名為St
10、udentKey)以及C1、C2、C3、C4四個(gè)列級約束。7.4 完整性約束命名子句7.4 完整性約束命名子句例13 修改表Student中的約束條件,要求學(xué)號(hào)改為在900000999999之間,年齡由小于30改為小于40可以先刪除原來的約束條件,再增加新的約束條件 ALTER TABLE Student DROP CONSTRAINT C1; ALTER TABLE Student ADD CONSTRAINT C1 CHECK (Sno BETWEEN 900000 AND 999999), ALTER TABLE Student DROP CONSTRAINT C3; ALTER TAB
11、LE Student ADD CONSTRAINT C3 CHECK (Sage < 40);7.5 觸發(fā)器7.5 觸發(fā)器7.5.1 定義觸發(fā)器 7.5.2 激活觸發(fā)器 7.5.3 刪除觸發(fā)器 7.5.1 定義觸發(fā)器7.5.1 定義觸發(fā)器7.5.1 定義觸發(fā)器7.5.1 定義觸發(fā)器(6) 觸發(fā)條件 WHEN<觸發(fā)條件>:指定觸發(fā)器的觸發(fā)條件。當(dāng)滿足觸發(fā)條件時(shí),DBMS才激發(fā)觸發(fā)器。如果省略,則觸發(fā)動(dòng)作體在觸發(fā)器激活后立即執(zhí)行。(7) 觸發(fā)動(dòng)作體 觸發(fā)動(dòng)作體可以是一個(gè)匿名PL/SQL過程塊 也可以是對已創(chuàng)建存儲(chǔ)過程的調(diào)用7.5.1 定義觸發(fā)器例2 定義一個(gè)BEFORE行級觸發(fā)器
12、,為教師表Teacher定義完整性規(guī)則“教授的工資不得低于4000元,如果低于4000元,自動(dòng)改為4000元”。 CREATE TRIGGER Insert_Or_Update_Sal BEFORE INSERT OR UPDATE ON Teacher /*觸發(fā)事件是插入或更新操作*/ FOR EACH ROW /*行級觸發(fā)器*/ AS BEGIN /*定義觸發(fā)動(dòng)作體,是PL/SQL過程塊*/ IF (new.Job='教授') AND (new.Sal < 4000) THEN new.Sal :=4000; END IF; END; 例3定義AFTER行級觸發(fā)器,當(dāng)
13、教師表Teacher的工資發(fā)生變化后就自動(dòng)在工資變化表Sal_log中增加一條相應(yīng)記錄 首先建立工資變化表Sal_log CREATE TABLE Sal_log (Tno char(5) references Teacher(Tno), Sal numeric(7,2), Username char(10), Date datatime );例3(續(xù))CREATE TRIGGER Insert_Sal AFTER INSERT ON Teacher /*觸發(fā)事件是INSERT*/ FOR EACH ROW AS BEGIN INSERT INTO Sal_log VALUES(,CURREN
14、T_USER,CURRENT_TIMESTAMP); END;例3(續(xù))CREATE TRIGGER Update_Sal AFTER UPDATE ON Teacher /*觸發(fā)事件是UPDATE */ FOR EACH ROW AS BEGIN IF (new.Sal <> old.Sal) THEN INSERT INTO Sal_log VALUES( ,CURRENT_USER,CURRENT_TIMESTAMP); END IF; END;7.5 觸發(fā)器7.5.1 定義觸發(fā)器 7.5.2 激活觸發(fā)器 7.5.3 刪除觸發(fā)器 7.5.2 激活觸發(fā)器觸發(fā)器的執(zhí)行,是由觸發(fā)事
15、件激活的,并由數(shù)據(jù)庫服務(wù)器自動(dòng)執(zhí)行一個(gè)數(shù)據(jù)表上可能定義了多個(gè)觸發(fā)器同一個(gè)表上的多個(gè)觸發(fā)器激活時(shí)遵循如下的執(zhí)行順序: (1 ) 執(zhí)行該表上的BEFORE 觸發(fā)器; (2 ) 激活觸發(fā)器的SQL 語句; (3 ) 執(zhí)行該表上的AFTER 觸發(fā)器。 例4執(zhí)行修改某個(gè)教師工資的SQL語句,激活上述定義的觸發(fā)器。 UPDATE Teacher SET Sal=800 WHERE Ename='陳平' 執(zhí)行順序是:Ø 執(zhí)行觸發(fā)器Insert_Or_Update_SalØ 執(zhí)行SQL語句“UPDATE Teacher SET Sal=800 WHERE Ename='陳平'”Ø 執(zhí)行觸發(fā)器Insert_Sal;Ø 執(zhí)行觸發(fā)器Update_Sal 7.5 觸發(fā)器7.5.1 定義觸發(fā)器 7.5.2 激活觸發(fā)器 7.5.3 刪除觸發(fā)器 7.5.3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國伏格列波糖數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025-2030年(全新版)中國纖維食品市場未來發(fā)展趨勢及前景調(diào)研分析報(bào)告
- 2025-2030年中國順酐市場運(yùn)行動(dòng)態(tài)分析與營銷策略研究報(bào)告
- 2025-2030年中國防水建材市場運(yùn)行現(xiàn)狀及發(fā)展前景預(yù)測報(bào)告
- 2025-2030年中國輪轂電機(jī)驅(qū)動(dòng)電動(dòng)汽車行業(yè)未來發(fā)展趨勢及前景調(diào)研分析報(bào)告
- 塑料在通訊設(shè)備材料的應(yīng)用考核試卷
- 園林金屬工具企業(yè)文化建設(shè)考核試卷
- 傳動(dòng)軸的扭轉(zhuǎn)振動(dòng)分析與控制考核試卷
- 2025年度文化創(chuàng)意產(chǎn)業(yè)園區(qū)運(yùn)營勞務(wù)合同
- 供應(yīng)鏈案例分析模板考核試卷
- 幼兒園大班數(shù)學(xué)練習(xí)題100道及答案解析
- 對講機(jī)外殼注射模設(shè)計(jì) 模具設(shè)計(jì)及制作專業(yè)
- 2024年四川省德陽市中考道德與法治試卷(含答案逐題解析)
- 施工現(xiàn)場水電費(fèi)協(xié)議
- SH/T 3046-2024 石油化工立式圓筒形鋼制焊接儲(chǔ)罐設(shè)計(jì)規(guī)范(正式版)
- 六年級數(shù)學(xué)質(zhì)量分析及改進(jìn)措施
- 一年級下冊數(shù)學(xué)口算題卡打印
- 真人cs基于信號(hào)發(fā)射的激光武器設(shè)計(jì)
- 【閱讀提升】部編版語文五年級下冊第三單元閱讀要素解析 類文閱讀課外閱讀過關(guān)(含答案)
- 四年級上冊遞等式計(jì)算練習(xí)200題及答案
- 法院后勤部門述職報(bào)告
評論
0/150
提交評論