南京郵電大學(xué)數(shù)據(jù)庫系統(tǒng)概論最新cha10數(shù)據(jù)庫完整性_第1頁
南京郵電大學(xué)數(shù)據(jù)庫系統(tǒng)概論最新cha10數(shù)據(jù)庫完整性_第2頁
南京郵電大學(xué)數(shù)據(jù)庫系統(tǒng)概論最新cha10數(shù)據(jù)庫完整性_第3頁
南京郵電大學(xué)數(shù)據(jù)庫系統(tǒng)概論最新cha10數(shù)據(jù)庫完整性_第4頁
南京郵電大學(xué)數(shù)據(jù)庫系統(tǒng)概論最新cha10數(shù)據(jù)庫完整性_第5頁
已閱讀5頁,還剩37頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、Cha10數(shù)據(jù)庫完整性本章內(nèi)容 對DBMS的要求 完整性約束條件完整性和安全性 完整性 數(shù)據(jù)正確、相容 安全性 防止惡意破壞、非法存取對DBMS的要求 提供定義完整性約束條件的機制 提供完整性檢查的方法 違約處理實體完整性 使用primary key定義 單屬性的碼 列級約束 表級約束 多屬性的碼 表級約束碼的定義1Create table student(sno char(9) primary key,Sname char(20) not null,Ssex char(2),Sage smallint,Sdept char(20);Create table student(sno char(

2、9),Sname char(20) not null,Ssex char(2),Sage smallint,Sdept char(20),primary key (sno);碼的定義2Create table sc(sno char(9) not null,cno char(20) not null,Grade smallint,Primary key (sno,cno);實體完整性的檢查 檢查主碼值是否唯一 全表掃描或使用索引 檢查主碼各屬性是否為空5112 3066 783 715 20 2530 4151 54 6568 69 71 7679 84 9325參照完整性的定義Create

3、table sc(sno char(9) not null,cno char(20) not null,Grade smallint,Primary key (sno,cno),Foreign key (sno) references student(sno),Foreign key (cno) references course(cno),);可能破壞完整性的情況被參照表參照表違約處理可能破壞參照完整性插入行拒絕可能破壞參照完整性修改外碼值拒絕刪除行可能破壞參照完整性拒絕/級聯(lián)刪除/置空修改主碼值可能破壞參照完整性拒絕/級聯(lián)修改/置空用戶定義的完整性 屬性上的約束條件 列值非空not nul

4、l 列值唯一unique 滿足一個布爾表達(dá)式check 元組上的約束條件列值唯一Create table dept(deptno numeric(2),Dname char(9) unique,Location char(10),Primary key (deptno);Check短語Create table student(sno char(9) primary key,Sname char(20) not null,Ssex char(2) check (ssex in (男,女),Sage smallint,Sdept char(20);Check短語Create table stude

5、nt(sno char(9) primary key,Sname char(20) not null,Ssex char(2) ,Sage smallint,Sdept char(20),Check (ssex=女 or sname not like ms.%);完整性約束命名子句 格式Constraint 條件名 primary key|foreign key|checkCreate table student(sno numeric(6)Constraint c1 check (sno between 90000 and 99999),Sname char(20) Constraint c

6、2 not null,Ssex char(2) Constraint c3 check(ssex in (男,女),Sage smallint Constraint c4 check(sage30),Constraint c5 primary key (sno);去掉限制 去掉限制Alter table student drop constraint c4; 修改限制Alter table student drop constraint c1;Alter table student add constraint c1 check (sno between 900000 and 999999),

7、觸發(fā)器 定義Create trigger 觸發(fā)器名|before|after| on for eachrow|statement when 激活執(zhí)行before觸發(fā)器sql語句執(zhí)行after觸發(fā)器 刪除Drop trigger on 定義一個before行級觸發(fā)器,為teacher表定義規(guī)則“教授工資不得低于4000元,若低于則自動改為4000”Create trigger insert_or_update_salBefore insert or update on teacherFor each row as beginIf (new.pjob=教授) and (new.sal4000) t

8、hen new.sal=4000;End if;End; 定義一個after行級觸發(fā)器,teacher表的工資發(fā)生變化后自動在工資變化表sal_log中增加一條記錄Create trigger insert_sal After insert on teacher For each row As beginInsert into sal_log values(new.eno,nes.sal ,current_user,current_timestamp);End; 定義一個after行級觸發(fā)器,teacher表的工資發(fā)生變化后自動在工資變化表sal_log中增加一條記錄Create trigge

9、r update_sal After update on teacher For each row As beginIf (new.sal old.sal ) then Insert into sal_log values(new.eno,nes.sal ,current_user,current_timestamp);End if;End;完整性約束條件分類對象粒度列元組關(guān)系對象狀態(tài)動態(tài)動態(tài)列級約束動態(tài)元組約束動態(tài)關(guān)系約束靜態(tài)靜態(tài)列級約束靜態(tài)元組約束靜態(tài)關(guān)系約束靜態(tài)約束 對數(shù)據(jù)類型的約束 對數(shù)據(jù)格式的約束 對取值范圍的約束 空值約束 其他列級 對列間關(guān)系的約束發(fā)貨量=1000zc教授拒絕執(zhí)行

10、操作參照完整性 外碼能否為空 在被參照表中刪除行級聯(lián)刪除受限刪除置空刪除 在參照表中插入行受限插入遞歸插入 修改主碼不允許允許約束3靜態(tài)關(guān)系約束 實體完整性約束 參照完整性約束 函數(shù)依賴約束 統(tǒng)計約束數(shù)據(jù)庫的完整性完整性正確性和相容性垃圾進(jìn)垃圾出 garbage in garbage out 對數(shù)據(jù)庫的非法更新輸入數(shù)據(jù)錯誤操作、程序錯誤系統(tǒng)故障事務(wù)的并發(fā)執(zhí)行人為破壞完整性子系統(tǒng) 功能 監(jiān)督事務(wù)的執(zhí)行 針對違反現(xiàn)象采取適當(dāng)操作 完整性規(guī)則的構(gòu)成何時使用觸發(fā)條件觸發(fā)條件何種錯誤約束條件約束條件如何處理ELSE子句子句域完整性規(guī)則域聯(lián)系的規(guī)則關(guān)系完整性規(guī)則SQL的完整性約束主鍵約束主鍵約束外鍵約束外

11、鍵約束刪除、修改基本關(guān)系元組時的考慮屬性值上的屬性值上的約束約束非空值約束檢查子句域約束子句全局約束全局約束基于元組的檢查子句斷言刪除、修改基本關(guān)系元組時的考慮 Restrict方式 參照表中無相關(guān)記錄時允許操作 Cascade方式 參照表中的相關(guān)記錄一同更新 Set null方式 參照表中的相關(guān)記錄字段置空斷言assertionsCreate assertion asse1 check不許男生學(xué)習(xí)張老師的課程不許男生學(xué)習(xí)張老師的課程(not exists沒這種記錄:沒這種記錄:(select *男生學(xué)習(xí)張老師課程的記錄男生學(xué)習(xí)張老師課程的記錄 from sc where cno in (se

12、lect cno from c where teacher=zhang) And sno in (select sno from s where sex=m) );斷言assertionsCreate assertion asse2 check每組人數(shù)不能超過每組人數(shù)不能超過50(50=all(select count(sc.sno)每門課程的學(xué)習(xí)人數(shù)每門課程的學(xué)習(xí)人數(shù) from s,sc where s.sno=sc.sno and sex=m group by cno );約束的命名 Sno char(4) constraint s_pk primary key; Age smallint constraint s_check check(age=15 and age=15 and value=15 and age=15 and age=25); Drop assertion asse1,asse2;數(shù)據(jù)庫的安全

溫馨提示

  • 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)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論