第五章關(guān)系完整性-終稿_第1頁(yè)
第五章關(guān)系完整性-終稿_第2頁(yè)
第五章關(guān)系完整性-終稿_第3頁(yè)
第五章關(guān)系完整性-終稿_第4頁(yè)
第五章關(guān)系完整性-終稿_第5頁(yè)
已閱讀5頁(yè),還剩43頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

關(guān)系完整性的分類實(shí)體完整性參照完整性用戶定義完整性1實(shí)體完整性的定義實(shí)體完整性:保證關(guān)系中的每一個(gè)元組都是可唯一識(shí)別的?!翱晌ㄒ蛔R(shí)別”和“一定有候選碼”是否等價(jià)?2實(shí)體完整性NoNameSexAgedept95001李勇男20CS95002劉晨女19IS95003王敏女18MA95004劉晨男19IS95001劉勇男17MA劉勇男17MA不可插入,不滿足實(shí)體完整性要求不可插入,不滿足實(shí)體完整性要求3定義實(shí)體完整性

創(chuàng)建表時(shí)用PRIMARYKEY定義,單屬性構(gòu)成的碼有兩種說明方法:定義為列級(jí)約束條件。定義為表級(jí)約束條件。

由多個(gè)屬性構(gòu)成的碼只有一種說明方法:定義為表級(jí)約束條件。4(1)在列級(jí)定義主碼

例[1]

將Student表中的Sno屬性定義為碼CREATE

TABLE

Student

(noCHAR(9)

PRIMARYKEY,

nameCHAR(20)NOTNULL,sexCHAR(2),ageSMALLINT,deptCHAR(20));定義實(shí)體完整性5(2)在表級(jí)定義主碼

CREATE

TABLE

Student(noCHAR(9)NOTNULL,nameCHAR(20)NOTNULL,sexCHAR(2),ageSMALLINT,deptCHAR(20),

PRIMARYKEY(no));

定義實(shí)體完整性6定義實(shí)體完整性例:將Student表中的Sno屬性定義為碼CREATE

TABLE

Student

(noCHAR(9)unique,notnull,

nameCHAR(20)NOTNULL,sexCHAR(2),ageSMALLINT,deptCHAR(20));執(zhí)行:insertintostudentvalues(‘’,‘張’,20,‘CS’)不提示錯(cuò)誤Notnull,unique和primarykey是否可以互換?若不可以,區(qū)別是什么?7定義實(shí)體完整性[例]:CREATE

TABLE

Student

(noCHAR(9)primarykey,

nameCHAR(20)NOTNULL,sexCHAR(2),ageSMALLINT,deptCHAR(20));執(zhí)行:insertintostudentvalues('','張',20,'CS')則提示錯(cuò)誤8例[2]將SC表中的Sno,Cno屬性組定義為碼

CREATETABLESC(noCHAR(9)NOTNULL,cnoCHAR(4)NOTNULL,GradeSMALLINT,

PRIMARYKEY(Sno,Cno)));/*只能在表級(jí)定義主碼*/定義實(shí)體完整性9實(shí)體完整性的違約處理

1.檢查主碼值是否唯一,如果不唯一則拒絕執(zhí)行。2.檢查主碼的各個(gè)屬性是否為空,只要有一個(gè)為空就拒絕執(zhí)行。10實(shí)體完整性的違約處理

(1)單屬性作主碼,拒絕執(zhí)行NoNameSexAgedept95001李勇男20CS95002劉晨女19IS95003王敏女18MA95004劉晨男19IS95001張立男17MA張立男17MA不可插入,不滿足實(shí)體完整性要求不可插入,不滿足實(shí)體完整性要求11noCnoGrade950012889500229295001192Sc9500588(2)多屬性作主碼實(shí)體完整性的違約處理

12noCnoGrade950012889500229295001192Sc95001288(2)多屬性作主碼實(shí)體完整性的違約處理

13參照完整性

如果屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼相對(duì)應(yīng),則對(duì)于R中每個(gè)元組在F上的值必須為空值(F的每一個(gè)屬性值都為空)或者等于S中某個(gè)元組的主碼值。cnocnamecredit1數(shù)據(jù)庫(kù)22操作系統(tǒng)33數(shù)據(jù)結(jié)構(gòu)5noCnograde12851385SCC390null5NoNameSexAgedept95001李勇男20CS95002劉晨女19ISstudent14studentNoNameSexAgedept95001李勇男20CS95002劉晨女19IS95003王敏女18MA95004張立男19ISnoCnoGrade950012889500229295001192Sc950052889500438815定義參照完整性

在創(chuàng)建表時(shí)用FOREIGNKEY短語(yǔ)定義哪些列為外碼,用REFERENCES短語(yǔ)指明這些外碼參照哪些表的主碼16例:定義SC中的參照完整性CREATETABLESC(noCHAR(9)NOTNULL,CnoCHAR(4)NOTNULL,GradeSMALLINT,

PRIMARYKEY(no,Cno),/*在表級(jí)定義實(shí)體完整性*/

FOREIGNKEY(no)REFERENCESStudent(no),

/*在表級(jí)定義參照完整性*/

FOREIGNKEY(Cno)REFERENCESCourse(Cno)

/*在表級(jí)定義參照完整性,可以定義多次*/定義參照完整性17參照完整性的違約處理1.

拒絕(NOACTION)執(zhí)行(默認(rèn)策略)。2.級(jí)聯(lián)(CASCADE)操作。3.設(shè)置為空值(SET-NULL)。18(1)拒絕插入NoNameSexAgedept95001李勇男20CS95002劉晨女19IS95003劉云女18CSnoCnoGrade950012889500229295004192sc

在SC表中插入學(xué)號(hào)為95004的學(xué)生選課信息拒絕插入,不存在學(xué)號(hào)為95004的學(xué)生student拒絕(NOACTION)執(zhí)行19(2)拒絕修改NoNameSexAgedept95001李勇男20CS95002劉晨女19IS95003劉云女18CSnoCnoGrade950012889500229295003192sc

將95003的學(xué)號(hào)改為95004修改失敗student20(3)拒絕刪除NoNameSexAgedept95001李勇男20CS95002劉晨女19IS95003劉云女18CSnoCnoGrade950012889500229295003192sc

刪除student表中學(xué)號(hào)為95003的記錄刪除失敗student21級(jí)聯(lián)策略NoNameSexAgedept95001李勇男20CS95002劉晨女19IS95003劉云女18CSnoCnoGrade950012889500229295003192sc

刪除student表中的學(xué)號(hào)為95003的記錄student插入成功(1)級(jí)聯(lián)插入22(2)級(jí)聯(lián)修改策略NoNameSexAgedept95001李勇男20CS95002劉晨女19IS95003劉云女18CSnoCnoGrade950012889500229295003192sc

將95003的學(xué)號(hào),改為95004student修改成功95004劉云女18CS9500419223(3)級(jí)聯(lián)刪除策略NoNameSexAgedept95001李勇男20CS95002劉晨女19IS95003楊云女18CSnoCnoGrade950012889500229295003192sc

刪除student表中學(xué)號(hào)為95003的學(xué)生信息student刪除成功24置空策略(SET-NULL)

刪除被參照關(guān)系中的某一元組或修改某一元組的主碼值時(shí),參照關(guān)系中外碼值等于該主碼值的元組在該外碼上的值將被置空。

修改時(shí)置空刪除時(shí)置空25(1)修改時(shí)置空NoNameSexAgedept95001李勇男20CS95002張晨女19IS95003劉云女18CSnoCnoGrade950012889500229295003192sc

將95003的學(xué)號(hào)改為9500495004

劉云女18CSNULL192student空表示不知道或不確定26(2)刪除時(shí)置空NoNameSexAgedept95001李勇男20CS95002劉晨女19IS95003楊云女18CSnoCnoGrade950012889500229295003192sc

刪除學(xué)號(hào)為95003的學(xué)生信息NULL192student27用戶定義完整性(域完整性)

針對(duì)某一具體關(guān)系數(shù)據(jù)庫(kù)用戶規(guī)定的約束條件,如果操作不滿足約束條件,則拒絕執(zhí)行。

如:學(xué)生的成績(jī)不能為負(fù),出生的年齡不能超過20歲28studentNoNameSexAgedept95001李勇男20CS95002劉晨女19IS95003王敏女18MA95004張立男19IS95005張明男22CS不可插入記錄,該生年齡太大了(1)拒絕插入29(2)拒絕修改NoNameSexAgedept95001李勇男20CS95002劉晨女19IS95003王敏女18MA95004張立男19將95004學(xué)生的年齡修改為25IS2519不可修改30完整性約束命名子句1完整性約束命名子句constraint<完整性約束條件>[primarykey短語(yǔ)]|foreignkey短語(yǔ)|check短語(yǔ)]31完整性約束命名子句1完整性約束命名子句例1:建立學(xué)生登記表Student,要求學(xué)號(hào)在90000~99999之間,姓名不能取空值,年齡小于30,性別只能是“男”或“女”。Createtablestudent12(nonumeric(6)constraintc1check(nobetween90000and99999),namechar(20)constraintc2notnull,agenumeric(3)constraintc3check(age<30),sexchar(2)constraintc4check(sexIN('男','女')),ConstraintStudentKeyprimarykey(no))

32完整性約束命名子句1完整性約束命名子句例:建立教師表teacher,要求每個(gè)教師的應(yīng)發(fā)工資不低于3000元。應(yīng)發(fā)工資實(shí)際上就是實(shí)發(fā)工資列sal與扣除項(xiàng)deduct之和。(1)createtabledept(deptnonumeric(2)primarykey,deptnamechar(20))(2)createtableteacher(enonumeric(4)primarykey,enamechar(10),jobchar(8),salnumeric(7,2),deductnumeric(7,2),deptnonumeric(2),constraintempfkeyforeignkey(deptno)referencesdept(deptno),constraintc10check(sal+deduct>=3000))33完整性約束命名子句2修改表中的完整性限制用altertable修改表中的完整性限制例:去掉student12表中對(duì)性別的限制Altertablestudent12dropconstraintc434完整性約束命名子句2修改表中的完整性限制例:修改表student中的約束條件,要求學(xué)號(hào)改為900000_999999之間,年齡由小于30改為小于40.例:(1)altertableStudent12dropconstraintc1(2)altertablestudent12addconstraintc1check(nobetween900000and999999)35小結(jié)(1)關(guān)系完整性的定義,相關(guān)概念(2)關(guān)系完整性的分類(3)各類完整性的定義

primarykey,foreignkey,references,constraint(4)各類完整性的違約處理策略:拒絕執(zhí)行,級(jí)聯(lián)策略,置空策略36作業(yè)1、假設(shè)有下面的關(guān)系模式:職工(職工號(hào),姓名,年齡,職務(wù),工資,部門號(hào)),其中職工號(hào)為主碼;

部門(部門號(hào),名稱,經(jīng)理名,電話),其中部門號(hào)為主碼;用SQL語(yǔ)言定義這個(gè)兩個(gè)關(guān)系模式,要求在模式中完成以下完整性約束條件的定義:(1)定義每個(gè)模式的主碼;(2)定義參照完整性;(3)定義職工年齡不得超過60歲。37觸發(fā)器定義:用戶定義在關(guān)系表上的一類由事件驅(qū)動(dòng)的特殊過程。格式:Createtrigger<觸發(fā)器名>ON<表名>{For|after|insteadof}{delete|insert|update}As動(dòng)作體38例:createtriggerstum1onstudent

afterinsert

as

print‘歡迎新同學(xué)'

insertintostudentvalues('16','劉','男','28','ma')39觸發(fā)器名:必須符合標(biāo)示符的命名規(guī)則表名:是在其上執(zhí)行觸發(fā)器的表,有時(shí)也稱觸發(fā)器表。After:指定觸發(fā)器只有在觸發(fā)SQL語(yǔ)句中指定的所有操作都已成功執(zhí)行后才激發(fā)。如果指定FOr關(guān)鍵字,則AFTER是默認(rèn)設(shè)置。Insteadof:指定執(zhí)行觸發(fā)器而不是執(zhí)行觸發(fā)SQL語(yǔ)句,從而替代觸發(fā)SQL語(yǔ)句的操作。Delete|insert|update:是指定在表或視圖上執(zhí)行哪些數(shù)據(jù)修改語(yǔ)句時(shí)將激活觸發(fā)器的關(guān)鍵字。必須至少指定一項(xiàng)。在觸發(fā)器定義中允許使用以任意順序組合的關(guān)鍵字。40As:引入觸發(fā)器要執(zhí)行的操作Ifupdate(列):用于判斷是否在指定的列上進(jìn)行了insert或update操作(不能用于delete操作),可以指定多列。列名前不需要指定表名,因?yàn)樵趏n子句中已經(jīng)指定了表名。41

snosname

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論