版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、An Introduction to Database System1數(shù)據(jù)庫(kù)系統(tǒng)概論數(shù)據(jù)庫(kù)系統(tǒng)概論An Introduction to Database System第五章第五章 數(shù)據(jù)庫(kù)完整性數(shù)據(jù)庫(kù)完整性An Introduction to Database System2第五章第五章 數(shù)據(jù)庫(kù)完整性數(shù)據(jù)庫(kù)完整性什么是數(shù)據(jù)庫(kù)的完整性n數(shù)據(jù)的正確性和相容性n防止不合語(yǔ)義的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)。例: 學(xué)生的年齡必須是整數(shù),取值范圍為14-29; 學(xué)生的性別只能是男或女; 學(xué)生的學(xué)號(hào)一定是唯一的; 學(xué)生所在的系必須是學(xué)校開(kāi)設(shè)的系;n完整性:是否真實(shí)地反映現(xiàn)實(shí)世界An Introduction to Data
2、base System3數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)的完整性與安全性完整性與安全性的的區(qū)別和聯(lián)系區(qū)別和聯(lián)系n兩個(gè)不同的概念,但有一定的聯(lián)系;前者是為了防止數(shù)據(jù)庫(kù)中存在不符合語(yǔ)義的數(shù)據(jù),防止錯(cuò)誤信息的輸入和輸出,既所謂的垃圾進(jìn)垃圾出(Garbage in Garbage out)所造成的無(wú)效操作和錯(cuò)誤結(jié)果;后者是保護(hù)數(shù)據(jù)庫(kù)防止惡意的破壞和非法存取;安全性措施防范的對(duì)象是非法用戶,完整性措施的防范對(duì)象是不合語(yǔ)義的數(shù)據(jù).An Introduction to Database System4完整性控制機(jī)制完整性控制機(jī)制1.完整性約束條件定義2.完整性檢查機(jī)制3.違約反應(yīng) An Introduction to Dat
3、abase System5完整性約束條件定義完整性約束條件定義n完整性約束條件:數(shù)據(jù)模型的組成部分,約束數(shù)據(jù)庫(kù)中數(shù)據(jù)的語(yǔ)義nDBMS應(yīng)提供定義數(shù)據(jù)庫(kù)完整性約束條件,并把它們作為模式的一部分存入數(shù)據(jù)庫(kù)字典中。An Introduction to Database System6完整性控制機(jī)制完整性控制機(jī)制n檢查用戶發(fā)出的操作請(qǐng)求是否違背了完整性約束條件 An Introduction to Database System7違約反應(yīng)違約反應(yīng)n如果發(fā)現(xiàn)用戶的操作請(qǐng)求使數(shù)據(jù)違背了完整性約束條件,則采取一定的動(dòng)作來(lái)保證數(shù)據(jù)的完整性。An Introduction to Database System8補(bǔ)
4、充:補(bǔ)充:完整性約束條件(續(xù))完整性約束條件(續(xù))完整性約束條件作用的對(duì)象n列:對(duì)屬性的取值類(lèi)型、范圍、精度等的約束條件n元組:對(duì)元組中各個(gè)屬性列間的聯(lián)系的約束n關(guān)系:對(duì)若干元組間、關(guān)系集合上以及關(guān)系之間的聯(lián)系的約束An Introduction to Database System9補(bǔ)充:補(bǔ)充:完整性約束條件(續(xù))完整性約束條件(續(xù))n靜態(tài)n對(duì)靜態(tài)對(duì)象的約束,是反映數(shù)據(jù)庫(kù)狀態(tài)合理性的約束n動(dòng)態(tài)n對(duì)動(dòng)態(tài)對(duì)象的約束,是反映數(shù)據(jù)庫(kù)狀態(tài)變遷的約束An Introduction to Database System10補(bǔ)充:完整性約束條件分類(lèi)補(bǔ)充:完整性約束條件分類(lèi)六類(lèi)完整性約束條件n 靜態(tài)列級(jí)列級(jí)約
5、束n 靜態(tài)元組元組約束n 靜態(tài)關(guān)系關(guān)系約束n 動(dòng)態(tài)列級(jí)列級(jí)約束n 動(dòng)態(tài)元組元組約束n 動(dòng)態(tài)關(guān)系關(guān)系約束An Introduction to Database System11補(bǔ)充:補(bǔ)充:完整性約束條件(續(xù))完整性約束條件(續(xù))1. 靜態(tài)列級(jí)約束n靜態(tài)列級(jí)約束:對(duì)的取值域的說(shuō)明n最常見(jiàn)、最簡(jiǎn)單、最容易實(shí)現(xiàn)的一類(lèi)完整性約束An Introduction to Database System12補(bǔ)充:補(bǔ)充:完整性約束條件(續(xù))完整性約束條件(續(xù))n五類(lèi)靜態(tài)列級(jí)約束1) 數(shù)據(jù)類(lèi)型約束:數(shù)據(jù)的類(lèi)型、長(zhǎng)度、單位、精度等 例:學(xué)生姓名的數(shù)據(jù)類(lèi)型為字符型,長(zhǎng)度為82) 對(duì)數(shù)據(jù)格式的約束例: 學(xué)號(hào):前兩位表示入
6、學(xué)年份,后四位為順序編號(hào) 日期:YY.MM.DD。An Introduction to Database System13補(bǔ)充:補(bǔ)充:完整性約束條件(續(xù))完整性約束條件(續(xù))3) 取值范圍或取值集合的約束例:規(guī)定成績(jī)的取值范圍為0-100 年齡的取值范圍為14-29 性別的取值集合為男,女4) 對(duì)空值的約束 空值:未定義或未知的值 空值:與零值和空格不同 有的列允許空值,有的則不允許,如成績(jī)可為空值5) 其他約束例:關(guān)于列的排序說(shuō)明,組合列等An Introduction to Database System14補(bǔ)充:補(bǔ)充:完整性約束條件(續(xù))完整性約束條件(續(xù))2. 靜態(tài)元組約束 規(guī)定元組的
7、各個(gè)列之間的約束關(guān)系例:訂貨關(guān)系中發(fā)貨量=700元 靜態(tài)元組約束只局限在元組上 An Introduction to Database System15補(bǔ)充:補(bǔ)充:完整性約束條件(續(xù))完整性約束條件(續(xù))3. 靜態(tài)關(guān)系約束 關(guān)系的各個(gè)元組之間或若干關(guān)系之間存在的各種聯(lián)系或約束 常見(jiàn)靜態(tài)關(guān)系約束:1) 實(shí)體完整性約束2) 參照完整性約束3) 函數(shù)依賴約束4) 統(tǒng)計(jì)約束An Introduction to Database System16統(tǒng)計(jì)約束統(tǒng)計(jì)約束n定義某個(gè)字段值與一個(gè)關(guān)系多個(gè)元組的統(tǒng)計(jì)值之間的約束關(guān)系n例:職工平均工資的2倍=部門(mén)經(jīng)理的工資= 原來(lái)工資 年齡只能增長(zhǎng)An Introduc
8、tion to Database System19完整性約束條件(續(xù))完整性約束條件(續(xù))5. 動(dòng)態(tài)元組約束 修改元組值: 各個(gè)字段之間要滿足的約束條件例: 職工工資調(diào)整不得低于其原來(lái)工資 + 工齡*1.5An Introduction to Database System20完整性約束條件(續(xù))完整性約束條件(續(xù))6. 動(dòng)態(tài)關(guān)系約束 關(guān)系變化前后狀態(tài):限制條件例:事務(wù)一致性、原子性等約束條件An Introduction to Database System21第五章 數(shù)據(jù)庫(kù)完整性5.1 實(shí)體完整性5.2 參照完整性5.3 用戶定義完整性5.4 完整性約束命名子句5.5 域中的完整性限制5.
9、6 觸發(fā)器5.7 小結(jié)An Introduction to Database System225.1 實(shí)體完整性實(shí)體完整性5.1.1 實(shí)體完整性定義5.1.2 實(shí)體完整性檢查和違約處理An Introduction to Database System235.1.1 實(shí)體完整性定義實(shí)體完整性定義n實(shí)體完整性(Entity Integrity)若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值例SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)POSTGRADUATE屬性為主碼(假設(shè)研究生不會(huì)重名),則其不能取空值A(chǔ)n Introduction to Database
10、System245.1.1 實(shí)體完整性定義實(shí)體完整性定義關(guān)系模型必須遵守實(shí)體完整性規(guī)則的原因(1) 實(shí)體完整性規(guī)則是針對(duì)基本關(guān)系基本關(guān)系而言的。一個(gè)基本表通常對(duì)應(yīng)對(duì)應(yīng)現(xiàn)實(shí)世界的一個(gè)實(shí)體集或多對(duì)多聯(lián)系一個(gè)實(shí)體集或多對(duì)多聯(lián)系。(2) 現(xiàn)實(shí)世界中的實(shí)體和實(shí)體間的聯(lián)系都是可區(qū)分可區(qū)分的,即它們具有某種唯一性標(biāo)識(shí)唯一性標(biāo)識(shí)。(3) 相應(yīng)地,關(guān)系模型中以主碼作為唯一性標(biāo)識(shí)主碼作為唯一性標(biāo)識(shí)。(4) 主碼中的屬性即主屬性不能取空值屬性不能取空值。 空值就是“不知道”或“無(wú)意義”的值。 主屬性取空值,就說(shuō)明存在某個(gè)不可標(biāo)識(shí)的實(shí)體,即存在不可區(qū)分的實(shí)體,這與第(2)點(diǎn)相矛盾,因此這個(gè)規(guī)則稱為實(shí)體完整性。An I
11、ntroduction to Database System255.1.1 實(shí)體完整性定義實(shí)體完整性定義關(guān)系模型的實(shí)體完整性在Create table 中用 Primary Key定義。對(duì)單屬性的構(gòu)成的碼有兩種說(shuō)明方法:n定義為列級(jí)約束條件n表級(jí)約束條件對(duì)多個(gè)屬性構(gòu)成的碼只有一種說(shuō)明方法,即定義為表級(jí)約束條件An Introduction to Database System26例題1將Student表中的Sno屬性定義為碼。Create table student (Sno char(9) primary key,/*在列級(jí)定義主碼*/ Sname char(20) not null, Ss
12、ex char(2), Sage smallint, Sdept char(20) );5.1.1 實(shí)體完整性定義實(shí)體完整性定義An Introduction to Database System275.1.1 實(shí)體完整性定義實(shí)體完整性定義或者Create table student ( sno char(9), Sname char(20) not null, Ssex char(2), Sage smallint, Sdept char(20), primary key (sno) ,/*在表級(jí)定義主碼*/);An Introduction to Database System285.1.
13、1 實(shí)體完整性定義實(shí)體完整性定義例題2 將SC表中的Sno,Cno屬性組定義為碼 Create table SC ( Sno char(9) not null, Cno char(4) not null, grade smallint, Primary key (Sno,Cno) ,/*只能在表級(jí)定義主碼*/ );An Introduction to Database System295.1.2 實(shí)體完整性檢查和違約處理實(shí)體完整性檢查和違約處理n用primary key 短語(yǔ)定義了關(guān)系的主碼后,每當(dāng)用戶程序?qū)颈聿迦胍粭l記錄或者對(duì)主碼列進(jìn)行更新操作時(shí),RDBMS將自動(dòng)檢查:n檢查主碼值是否唯
14、一,如果不唯一則拒絕插入或修改。n檢查主碼的各個(gè)屬性是否為空,只要一個(gè)為空就拒絕插入或修改An Introduction to Database System305.1.2 實(shí)體完整性檢查和違約處理實(shí)體完整性檢查和違約處理n檢查主碼值是否唯一的方法(2種):n全表掃描keyif2if3if4if5ikey1f21f31f41f51key2f22f32f42f52key3f23f33f43f53.插入An Introduction to Database System315.1.2 實(shí)體完整性檢查和違約處理實(shí)體完整性檢查和違約處理n全表掃描缺點(diǎn):n耗時(shí)第二種方法:建索引(如B+樹(shù)索引)nRDBM
15、S核心一般都在主碼上自動(dòng)建立一個(gè)索引n通過(guò)索引查找基本表中是否存在新的主碼值 提高效率An Introduction to Database System325.1.2 實(shí)體完整性檢查和違約處理實(shí)體完整性檢查和違約處理例:255112 3066 7815 20 253 730 4168 69 71 7679 84 9351 54 65新插入記錄的主碼值新插入記錄的主碼值2525存在,不能插入An Introduction to Database System335.2 參照完整性參照完整性5.1 實(shí)體完整性實(shí)體完整性5.2 參照完整性5.3 用戶定義完整性5.4 完整性約束命名子句5.5 域中
16、的完整性限制5.6 觸發(fā)器5.7 小結(jié)An Introduction to Database System345.2 參照完整性參照完整性5.2.1 參照完整性定義參照完整性定義5.2.2 參照完整性檢查和違約處參照完整性檢查和違約處An Introduction to Database System355.2.1 參照完整性定義參照完整性定義n關(guān)系模型的參照完整性在Create table中用foreign key 短語(yǔ)定義哪些列為外碼,用REFERENCES短語(yǔ)指明這些外碼參照哪些表的主碼。An Introduction to Database System365.2.1 參照完整性定義參
17、照完整性定義例題3 定義SC中的參考完整性。Create table sc (sno char(9) not null, cno char(4) not null, grade smallint, Primary key (sno,cno) , /*在表級(jí)定義實(shí)體完整性*/ foreign key (sno) references student(sno),/*在表級(jí)定義 參照完整性*/ foreign key (Cno) references Course (Cno),/*在表級(jí)定義 參照完整性*/ );An Introduction to Database System375.2.2 參照
18、完整性檢查和違約處理參照完整性將兩個(gè)表中的相應(yīng)元組聯(lián)系起來(lái)后。當(dāng)進(jìn)行增刪操作時(shí)有可能破壞參照完整性,必須進(jìn)行檢查。An Introduction to Database System385.2.2 參照完整性檢查和違約處理n對(duì)SC和Students有4種可能破壞參照完整性的情況:nSC表中增加一個(gè)元組,該元組的Sno 屬性值在Students中找不到一個(gè)元組,其Sno屬性的值與之相等。n修改SC表中的一個(gè)元組,修改后該元組的Sno屬性的值在Students中找不到一個(gè)元組,其Sno屬性值與之相等。n從Students表中刪除一個(gè)元組,造成SC表中某些元組的Sno屬性值在Students中找不到
19、一個(gè)元組,其Sno屬性值與之相等。n修改Students表中的一個(gè)元組的Sno屬性,造成SC表中某些元組的Sno屬性值在Students中找不到一個(gè)元組,其Sno屬性值與之相等An Introduction to Database System39 表5.1 可能破壞參照完整性的情況及違約處理被參照表(Students)參照表(例如SC)違約處理可能破壞參照完整性插入元組拒絕可能破壞參照完整性修改外碼值拒絕刪除元組可能破壞參照完整性拒絕/級(jí)聯(lián)刪除/設(shè)置為空修改主碼值可能破壞參照完整性拒絕/級(jí)聯(lián)刪除/設(shè)置為空5.2.2 參照完整性檢查和違約處理(續(xù))An Introduction to Data
20、base System40處理策略處理策略1、拒絕(No action)執(zhí)行不允許該操作執(zhí)行。該策略一般為默認(rèn)策略。2、級(jí)聯(lián)(Cascade)操作當(dāng)刪除或修改被參照表(Students)的一個(gè)元組造成了與參照表(SC)的不一致,則刪除或修改參照表中的所有造成不一致的元組。例如,刪除Students表中的元組,Sno值為200215121則要從SC表中級(jí)聯(lián)刪除SC.Sno= 200215121的所有元組。An Introduction to Database System41處理策略處理策略3、設(shè)置空值(Set-Null)例如:學(xué)生(學(xué)號(hào),姓名,性別,專(zhuān)業(yè)號(hào)專(zhuān)業(yè)號(hào),年齡) 專(zhuān)業(yè)(專(zhuān)業(yè)號(hào),專(zhuān)業(yè)名)
21、 假設(shè)專(zhuān)業(yè)表(被參照表)中專(zhuān)業(yè)號(hào)=12的元組被刪除,則學(xué)生表(參照表)中專(zhuān)業(yè)號(hào)=12的所有元組的專(zhuān)業(yè)號(hào)設(shè)置為空值 但在學(xué)生-選課數(shù)據(jù)庫(kù)中,Students關(guān)系為被參照關(guān)系,其主碼為Sno,SC為參考關(guān)系,Sno為外碼。若SC的Sno為空值,則表明。外碼是否允許為空值?An Introduction to Database System42處理策略處理策略 若違反了參照完整性,系統(tǒng)選用默認(rèn)策略,即拒絕執(zhí)行。 如果想讓系統(tǒng)采用其他策略則必須在創(chuàng)建表的時(shí)候顯式地加以說(shuō)明。An Introduction to Database System43例題例題4 顯式說(shuō)明參照完整性的違約處理顯式說(shuō)明參照完整性
22、的違約處理Create table SC ( sno char(9) not null, cno char(4) not null, grade smallint, Primary key (sno,cno) , /*在表級(jí)定義實(shí)體完整性*/ foreign key (sno) references student(sno), /*在表級(jí)定義參照完整性*/ on delete cascade, /*當(dāng)刪除當(dāng)刪除student表中的元組時(shí),級(jí)聯(lián)刪除表中的元組時(shí),級(jí)聯(lián)刪除SC表中的相應(yīng)元組表中的相應(yīng)元組*/ on update cascade, /*當(dāng)更新當(dāng)更新student表中的表中的Sno時(shí),
23、級(jí)聯(lián)更新時(shí),級(jí)聯(lián)更新SC表中的相應(yīng)元組表中的相應(yīng)元組*/ foreign key (sno) references courses(sno), /*在表級(jí)定義參照完整性*/ on delete no Action,/*當(dāng)刪除當(dāng)刪除courses表中的元組時(shí)造成了與表中的元組時(shí)造成了與SC表不一致拒絕刪除表不一致拒絕刪除*/ on update cascade,/*當(dāng)更新當(dāng)更新courses表中的表中的Cno時(shí),級(jí)聯(lián)更新時(shí),級(jí)聯(lián)更新SC表中的相應(yīng)元組表中的相應(yīng)元組*/ );An Introduction to Database System44第五章 數(shù)據(jù)庫(kù)完整性5.1 實(shí)體完整性5.2 參照完
24、整性5.3 用戶定義完整性5.4 完整性約束命名子句5.5 域中的完整性限制5.6 觸發(fā)器5.7 小結(jié)An Introduction to Database System455.3 用戶定義完整性5.3.1 屬性上的約束條件的定義屬性上的約束條件的定義5.3.2 屬性上的約束條件檢查和違約處理屬性上的約束條件檢查和違約處理5.3.3 元組上的約束條件的定義元組上的約束條件的定義5.3.4 元組上的約束條件檢查和違約處理元組上的約束條件檢查和違約處理An Introduction to Database System465.3.1 屬性上的約束條件的定義n屬性值的限制,包括:n列值非空(Not
25、null 短語(yǔ))n列值唯一(unique短語(yǔ))n檢查列值是否滿足一個(gè)布爾表達(dá)式(Check 短語(yǔ))An Introduction to Database System475.3.1 屬性上的約束條件的定義1、不允許取空值例題5 在定義SC表時(shí),說(shuō)明Sno,Cno,Grade屬性不允許取空值。Create table SC ( Sno char(9) not null, Cno char(40) not null, Grade smallint not null, Primary key (Sno, Cno), )An Introduction to Database System485.3.1
26、 屬性上的約束條件的定義2、列值唯一例題6 建立部門(mén)表Dept ,要求部門(mén)名稱Dname 列取值唯一,部門(mén)編號(hào)Deptno列為主碼。Create table dept ( Deptno numeric(2), Dname char(9) nuique, Location char(10), Primary key (Deptno) );An Introduction to Database System495.3.1 屬性上的約束條件的定義3、用Check 短語(yǔ)指定列值應(yīng)該滿足的條件例題7 Student 表的Ssex只允許取“男”或“女”。Create table Students ( Sn
27、o char (9) primary key, Snome char(8) not null, Ssex char(2) check (Ssex IN (男,女), Sage smallint, Sdept Char(20) )An Introduction to Database System505.3.1 屬性上的約束條件的定義例題8 SC表的Grade 的值應(yīng)該在0和100之間。Create table SC ( Sno char(9) not null, Cno char(4) not null, Grade smallint Check (Grade =0 and Grade =10
28、0), primary key (Sno,Cno), Foreign key (Sno) references Student(Sno), Foreign key (Cno) references Course (Cno) );An Introduction to Database System515.3 用戶定義完整性5.3.1 屬性上的約束條件的定義屬性上的約束條件的定義5.3.2 屬性上的約束條件檢查和違約處理屬性上的約束條件檢查和違約處理5.3.3 元組上的約束條件的定義元組上的約束條件的定義5.3.4 元組上的約束條件檢查和違約處理元組上的約束條件檢查和違約處理An Introduc
29、tion to Database System525.3.2 屬性上的約束條件檢查和違約處理n當(dāng)往表中插入元組或修改屬性的值時(shí),RDBMS就檢查屬性上的約束條件是否被滿足,否則拒絕執(zhí)行。An Introduction to Database System535.3 用戶定義完整性5.3.1 屬性上的約束條件的定義屬性上的約束條件的定義5.3.2 屬性上的約束條件檢查和違約處理屬性上的約束條件檢查和違約處理5.3.3 元組上的約束條件的定義元組上的約束條件的定義5.3.4 元組上的約束條件檢查和違約處理元組上的約束條件檢查和違約處理An Introduction to Database Syst
30、em545.3.3 元組上的約束條件的定義n與屬性上約束條件的定義類(lèi)似,在Create 語(yǔ)句中可以用Check短語(yǔ)定義元組上的約束條件,即元組級(jí)的限制。例題9 當(dāng)學(xué)生的性別是男時(shí),其名字不能以Ms. 打頭。Create table Student ( Sno char(9), Sname char (8) not null, Ssex char(2), Sage smallint, Sdept char(20), Primary key(Sno), check (Sex=女 or Sname not like Ms.%) );An Introduction to Database System
31、555.3 用戶定義完整性5.3.1 屬性上的約束條件的定義屬性上的約束條件的定義5.3.2 屬性上的約束條件檢查和違約處理屬性上的約束條件檢查和違約處理5.3.3 元組上的約束條件的定義元組上的約束條件的定義5.3.4 元組上的約束條件檢查和違約處理元組上的約束條件檢查和違約處理An Introduction to Database System565.3.4 元組上的約束條件檢查和違約處理n當(dāng)往表中插入元組或修改屬性的值時(shí),RDBMS就檢查屬性上的約束條件是否被滿足,否則拒絕執(zhí)行。An Introduction to Database System57第五章 數(shù)據(jù)庫(kù)完整性5.1 實(shí)體完整性
32、5.2 參照完整性5.3 用戶定義完整性5.4 完整性約束命名子句完整性約束命名子句5.5 域中的完整性限制5.6 觸發(fā)器5.7 小結(jié)An Introduction to Database System585.4 完整性約束命名子句1、完整性約束命令子句語(yǔ)法:Constraintprimary key短語(yǔ)|foreign key 短語(yǔ)|check 短語(yǔ)作用:靈活地增加、刪除一個(gè)完整性約束條件。An Introduction to Database System595.4 完整性約束命名子句例題10 建立學(xué)生登記表Students,要求學(xué)號(hào)在90 00099 999之間,姓名不能取空值,年齡小于
33、30,性別只能是“男”或“女”。Create table Students ( Sno numeric(6) constraint C1 check (Sno between 90000 and 99999), Sname char(20) constraint C2 not null, Sage numeric(3) constraint C3 check (Sage=3000) );An Introduction to Database System615.4 完整性約束命名子句2. 修改表中的完整性限制使用Alter table語(yǔ)句例題12 去掉例題10 Students表中對(duì)性別的限制
34、。Alter table student Drop constraint C4An Introduction to Database System625.4 完整性約束命名子句例題13 修改表 Students表中的約束條件,要求學(xué)號(hào)改為800 000 999 999之間,年齡小于30改為45。先刪除原來(lái)的約束條件,再增加新的約束條件先刪除原來(lái)的約束條件,再增加新的約束條件。Alter table students Drop constraint C1;Alter table students Add constraint C1 check (Sno between 800000 and 99
35、9999),Alter table students Drop constraint C3;Alter table students Add constraint C3 check (Sage 45);An Introduction to Database System63第五章 數(shù)據(jù)庫(kù)完整性5.1 實(shí)體完整性5.2 參照完整性5.3 用戶定義完整性5.4 完整性約束命名子句完整性約束命名子句5.5 域中的完整性限制域中的完整性限制5.6 觸發(fā)器5.7 小結(jié)An Introduction to Database System645.5 域中的完整性限制n命令:CREATE DOMAIN 建立一
36、個(gè)域以及該域應(yīng)該滿足的完整性約束條件。例14 建立一個(gè)性別域,并聲明性別域的取值范圍CREATE DOMAIN GenderDomain CHAR(2)CHECK (VALUE IN(男,女);這樣例10中對(duì)Ssex的說(shuō)明可以改寫(xiě)為Ssex GenderDomainAn Introduction to Database System655.5 域中的完整性限制(續(xù))例15 建立一個(gè)性別域GenderDomain,并對(duì)其中的限制命名。CREATE DOMAIN GenderDomain CHAR(2)CONSTRAINT GD CHECK (VALUE IN (男,女);例16 刪除域Gende
37、rDomain的限制條件GD。ALTER DOMAIN GenderDomainDROP CONSTRAINT GD;An Introduction to Database System665.5 域中的完整性限制(續(xù))例17 在域GenderDomain上增加限制條件GDD。ALTER DOMAIN GenderDomainADD CONSTRAINT GDD CHECK (VALUE IN (1,0);這樣,通過(guò)例16和例17,就把性別的取值范圍由(男,女)改為(1,0)。An Introduction to Database System67第五章 數(shù)據(jù)庫(kù)完整性5.1 實(shí)體完整性5.2
38、參照完整性5.3 用戶定義完整性5.4 完整性約束命名子句5.5 域中的完整性限制5.6 觸發(fā)器5.7 小結(jié)An Introduction to Database System685.6 觸發(fā)器5.6.1 定義觸發(fā)器定義觸發(fā)器5.6.2 激活觸發(fā)器5.6.3 刪除觸發(fā)器An Introduction to Database System695.6.1 定義觸發(fā)器(續(xù))1、觸發(fā)器(Trigger): 定義在關(guān)系表上的一類(lèi)由事件驅(qū)動(dòng)的特殊存儲(chǔ)過(guò)程。一旦定義,任何對(duì)表的增、刪、改的操作,系統(tǒng)都自動(dòng)激活相應(yīng)的觸發(fā)器。 例:不及格門(mén)數(shù)預(yù)警。當(dāng)不及格門(mén)數(shù)達(dá)到一定數(shù)時(shí),系統(tǒng)自動(dòng)激活一個(gè)過(guò)程,給學(xué)生打印預(yù)警通
39、知單。 例:當(dāng)奧運(yùn)門(mén)票第1,000,000張的幸運(yùn)觀眾產(chǎn)生時(shí),并贈(zèng)送紀(jì)念品。滿足兩個(gè)要求: 1)指明什么事件發(fā)生和滿足什么條件時(shí)執(zhí)行觸發(fā)器; 2)指明觸發(fā)器執(zhí)行什么樣的動(dòng)作。An Introduction to Database System705.6.1 定義觸發(fā)器(續(xù))2、格式Create trigger Before |After on For each Row|Statement When An Introduction to Database System71 5.6.1 定義觸發(fā)器(續(xù)) 例題例題18 18 定義一個(gè)定義一個(gè)Before Before 行級(jí)觸發(fā)器,為教師表行級(jí)觸發(fā)器
40、,為教師表TeacherTeacher定義完定義完整性規(guī)則整性規(guī)則“教授的工資不得低于教授的工資不得低于40004000元,如果低于元,如果低于40004000元,自動(dòng)元,自動(dòng)改為改為40004000元元”。Create trigger Inser_or_Create trigger Inser_or_Update_Sal _Sal /*在教師表在教師表Teacher上定義上定義觸發(fā)器觸發(fā)器*/ Before insert or update on teacher Before insert or update on teacher*觸發(fā)事件是插入或更新觸發(fā)事件是插入或更新操作操作*/For
41、each row For each row /*這是行級(jí)觸發(fā)器這是行級(jí)觸發(fā)器*/ As begin As begin /*定義觸發(fā)動(dòng)作體定義觸發(fā)動(dòng)作體*/ If (new.Job= If (new.Job=教授教授 ) and (new.Sal4000) Then ) and (new.Sal4000) Then new.sal:=4000; new.sal:=4000; End If; End If;EndEnd; /*觸發(fā)動(dòng)作體結(jié)束觸發(fā)動(dòng)作體結(jié)束*/An Introduction to Database System72 5.6.1 定義觸發(fā)器(續(xù))例題19 定義一個(gè)After 行級(jí)觸發(fā)器
42、,當(dāng)教師表Teacher的工資發(fā)生變化后就自動(dòng)在工資變化表Sal_log中增加一條相應(yīng)紀(jì)錄。Create table Sal_log(Eno numric(4) reference teacher(eno), Sal numric(7,2), Username char(10), Date timestamp );An Introduction to Database System73 5.6.1 定義觸發(fā)器(續(xù))Create trigger insert_SalCreate trigger insert_Sal/*建立了一個(gè)觸發(fā)器建立了一個(gè)觸發(fā)器*/ After After insert i
43、nsert on teacheron teacherFor each rowFor each rowAs begin As begin insert into Sal_log values( insert into Sal_log values( new.Eno,new.Sal,Current_user,Current_Timestamp);new.Eno,new.Sal,Current_user,Current_Timestamp); End End;Create trigger Update_SalCreate trigger Update_Sal/*建立了一個(gè)觸發(fā)器建立了一個(gè)觸發(fā)器*/ After After update update on teacheron teacherFor each rowFor each rowAs begin As b
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鐵路路基排水首件施工方案
- 路基注漿加固專(zhuān)項(xiàng)施工方案
- 二零二五版水車(chē)租賃及水利設(shè)施維護(hù)合同3篇
- 二零二五版石料礦山安全合作協(xié)議:安全生產(chǎn)與事故應(yīng)急預(yù)案3篇
- 閘閥房施工方案
- 房屋抵押貸款培訓(xùn)
- 二零二五版土地租賃合同因合同履行風(fēng)險(xiǎn)提前終止協(xié)議3篇
- “安全生產(chǎn)月”安全知識(shí)綜合作業(yè)例題
- 隧道變電所主體施工方案
- 2025版香港離婚協(xié)議書(shū):共同財(cái)產(chǎn)分配及子女監(jiān)護(hù)權(quán)協(xié)定3篇
- 婚介公司紅娘管理制度
- 煤礦電氣試驗(yàn)規(guī)程
- DL∕T 547-2020 電力系統(tǒng)光纖通信運(yùn)行管理規(guī)程
- 種子輪投資協(xié)議
- 物業(yè)客服培訓(xùn)課件PPT模板
- 員工工資條模板
- 執(zhí)行依據(jù)主文范文(通用4篇)
- 浙教版七年級(jí)數(shù)學(xué)下冊(cè)全冊(cè)課件
- 華為攜手深圳國(guó)際會(huì)展中心創(chuàng)建世界一流展館
- 2023版思想道德與法治專(zhuān)題2 領(lǐng)悟人生真諦 把握人生方向 第3講 創(chuàng)造有意義的人生
- 全過(guò)程工程咨詢服務(wù)技術(shù)方案
評(píng)論
0/150
提交評(píng)論