數(shù)據(jù)庫(kù)教案完整性_第1頁(yè)
數(shù)據(jù)庫(kù)教案完整性_第2頁(yè)
數(shù)據(jù)庫(kù)教案完整性_第3頁(yè)
數(shù)據(jù)庫(kù)教案完整性_第4頁(yè)
數(shù)據(jù)庫(kù)教案完整性_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

數(shù)據(jù)庫(kù)教案完整性第1頁(yè),共27頁(yè),2023年,2月20日,星期五完整性約束條件數(shù)據(jù)庫(kù)完整性:指數(shù)據(jù)庫(kù)的正確性和相容性,DBMS提供維護(hù)數(shù)據(jù)庫(kù)完整性的功能完整性約束條件:根據(jù)實(shí)際應(yīng)用需求,數(shù)據(jù)庫(kù)中的數(shù)據(jù)應(yīng)滿足一些規(guī)定的條件,這些條件稱為完整性約束條件完整性約束條件是現(xiàn)實(shí)世界真實(shí)的反映完整性檢查:指DBMS中檢查數(shù)據(jù)是否滿足完整性條件的機(jī)制第2頁(yè),共27頁(yè),2023年,2月20日,星期五完整性約束條件完整性約束條件分為:值的約束和結(jié)構(gòu)約束:指對(duì)數(shù)據(jù)取值類型、范圍、精度等的規(guī)定,例如對(duì)屬性規(guī)定某個(gè)值集,規(guī)定屬性取值類型、格式(職工號(hào)第一位為字母,

后面是四位數(shù)字)指對(duì)數(shù)據(jù)之間聯(lián)系的限制,以關(guān)系庫(kù)為例:同一關(guān)系的不同屬性之間可能滿足一定的約束條件(A1A2);不同關(guān)系之間的屬性取值也可能要滿足一定的約束條件(外鍵取值)第3頁(yè),共27頁(yè),2023年,2月20日,星期五完整性約束條件靜態(tài)約束和動(dòng)態(tài)約束:立即執(zhí)行約束和延遲執(zhí)行約束:指數(shù)據(jù)庫(kù)每一確定狀態(tài)的數(shù)據(jù)應(yīng)滿足的約束條件,例如外鍵約束等指DB從一種狀態(tài)轉(zhuǎn)變?yōu)榱硗庖环N狀態(tài)時(shí),新值和舊值之間應(yīng)滿足的約束條件,例如工資調(diào)整時(shí),要求新工資不低于舊工資在執(zhí)行用戶事務(wù)時(shí),對(duì)事務(wù)中某一更新語(yǔ)句執(zhí)行完后,馬上對(duì)此數(shù)據(jù)檢查它的完整性事務(wù)執(zhí)行結(jié)束后,才檢查所涉及的數(shù)據(jù)是否滿足完整性要求,結(jié)果正確事務(wù)才可提交第4頁(yè),共27頁(yè),2023年,2月20日,星期五完整性約束條件例如:begintransactionupdateStudentssetSno=‘95012’whereSno=‘95001’;updateSCsetSno=‘95012’whereSno=‘95001’;commit如是立即執(zhí)行約束,事務(wù)不能成功執(zhí)行如是延遲執(zhí)行約束,事務(wù)可以成功執(zhí)行第5頁(yè),共27頁(yè),2023年,2月20日,星期五完整性控制DBMS完整性控制機(jī)制包括:定義功能:提供定義完整性約束條件的機(jī)制檢查功能:檢查用戶提供的請(qǐng)求是否違背了完整性約束條件如果發(fā)現(xiàn)用戶的操作違背了完整性約束條件,則采取一定的動(dòng)作來(lái)保證數(shù)據(jù)的完整性(一般是取消該事務(wù)已產(chǎn)生的影響--恢復(fù))第6頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase的完整性在Sybase數(shù)據(jù)庫(kù)中創(chuàng)建帶有數(shù)據(jù)完整性和參照完整性的表:把完整性作為表的一部分來(lái)說(shuō)明即完整性約束子句缺省約束default:給出列的缺省值

createtableStudents(…sexchar(1)default‘M’,

...);檢查約束checkconstrain:限定插入列中的值列級(jí)檢查約束第7頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase的完整性

createtablepublishers(pub_idchar(4)notnull

constraintchk_pubidcheck(pub_idin(‘1389’,‘0736’,‘0877’)orpub_idlike‘99[0-9][0-9]’)….)

表級(jí)檢查約束

createtablediscounts(discounttypevarchar(40)notnull,lowqtyint,hightqtyint,…,

constraintchk_low_hightcheck(lowqty<=hightqty));第8頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase的完整性主鍵約束primarykeyconstraint:限定主鍵的列不可有重復(fù)值,不可有空值列級(jí)主鍵約束

createtablepublishers(pub_idchar(4)

constraintpky_pubidprimarykeyclustered,pub_namevarchar(30),….)

表級(jí)主鍵約束

createtablesales(stor_idchar(4)notnull,ord_numvarchar(20)notnull,datedatetimenotnull,constraintpky_soprimarykeynonclustered(stor_id,ord_num))第9頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase的完整性參照約束referenceconstraint:列級(jí)參照約束

createtablepublishers(pub_idchar(4)

constraintpky_pubidprimarykey,pub_namevarchar(30),….)

createtabletitle(title_idintnotnull,titlevarchar(80)null,pub_idchar(4)null

constraintref_pubidreferencepublishers(pub_id),notevarchar(200)null)第10頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase的完整性表級(jí)參照約束

createtablepublishers(pub_idchar(4),pub_namevarchar(30),…,

constraintpky_pubidprimarykey(pub_id))

createtabletitle(title_idintnotnull,titlevarchar(80)null,pub_idchar(4)null,notevarchar(200)null,

constraintref_pubidforeignkey(pub_id)

referencepublishers(pub_id))第11頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase的完整性唯一約束uniqueconstraint:列級(jí)唯一約束

createtablepublishers(pub_idchar(4)notnull

constraintunq_pubiduniquenonclustered,pub_namevarchar(30),…)

表級(jí)唯一約束createtablepublishers(pub_idchar(4)notnullpub_namevarchar(30),…,

constraintunq_pubiduniqueclustered(pub_id))缺省第12頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase的完整性刪除約束:只能使用altertable語(yǔ)句,增加、更新或刪除現(xiàn)有表的約束替換現(xiàn)有約束原來(lái):createtableStudents(…,sexchar(1)default‘M’);替換:altertableStudentsreplacesexdefault‘F’第13頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase的完整性增加約束

altertableStudentsaddconstraintchk_SAcheck(SA<30)刪除已有約束

altertableStudentsdropconstraintchk_SA相關(guān)存儲(chǔ)過(guò)程

sp_helpconstraint表名:報(bào)告指定表上的關(guān)于約束的信息sp_column_privileges表名:列級(jí)權(quán)限sp_table_privileges表名:表級(jí)權(quán)限第14頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase的完整性在Sybase中解決完整性的方法還有規(guī)則、索引、觸發(fā)器等規(guī)則創(chuàng)建一個(gè)值的清單或值的集合的規(guī)則CREATERULErul_stateAS@statein(‘CA’,’CO’,’WA’)創(chuàng)建一個(gè)值的范圍規(guī)則CREATERULErul_disc_rangeAS@discobetween0and100創(chuàng)建一個(gè)值由編輯掩碼確定的規(guī)則CREATERULErul_part_numAS@part_numlike“[BF][1-9][1-9]_”第15頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase的完整性規(guī)則將規(guī)則rul_state與“authors.state”列和“publishers.state”列相綁定:EXEC

sp_bindrule“rul_state”,”authors.state”EXEC

sp_bindrule“rul_state”,”publishers.state”將規(guī)則rul_disc_range與“discounts.discount”列相綁定:EXEC

sp_bindrule“rul_disc_range”,“discounts.discount”查看規(guī)則rul_state的正文和其他有關(guān)的信息:EXEC

sp_helptextrul_stateEXEC

sp_helprul_state刪除:DROPRULErul_state第16頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase的完整性唯一索引:限制唯一索引列的取值(唯一)CREATE[UNIQUE][CLUSTERED|NONCLUSTERED]INDEXindex_nameONtable_name(column_name[,column_name…])例如:為authors表的au_id列創(chuàng)建一個(gè)唯一索引CREATEUNIQUEINDEXidx_u_auidONauthors(au_id)第17頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase的完整性觸發(fā)器觸發(fā)器(Trigger)是一種特殊類型的存儲(chǔ)過(guò)程,通過(guò)事件(插入、刪除和更新)觸發(fā)執(zhí)行。-是實(shí)現(xiàn)復(fù)雜完整性約束的有效方法如:主鍵被更新或刪除外鍵值時(shí)應(yīng)如何變更?-在應(yīng)用中的其他作用維護(hù)復(fù)制數(shù)據(jù)、保持導(dǎo)出數(shù)據(jù)列的當(dāng)前值(自動(dòng)更新導(dǎo)出列)、業(yè)務(wù)規(guī)則限制(書(shū)價(jià)不許一次提價(jià)超過(guò)10%)、實(shí)現(xiàn)定制記錄(監(jiān)控:不許周六、周日插入表,銀行必須記錄大于10000的事務(wù)等。)第18頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase的完整性Sybase觸發(fā)器的形式CREATETRIGGERtrigger_nameONtable_nameFOR{INSERT,DELETE,UPDATE}AS sql語(yǔ)句和語(yǔ)句組第19頁(yè),共27頁(yè),2023年,2月20日,星期五Sybase觸發(fā)器的舉例CREATETRIGGERTri_d_publishersONpublishersFORDELETEASif@@rowcount=0//沒(méi)有行被刪除

return//有行被刪除:也刪除title表中相應(yīng)的行DELETEtitlesFORMtitlest,deletedd WHEREt.pub_id=d.pub_idRETURN第20頁(yè),共27頁(yè),2023年,2月20日,星期五約束和觸發(fā)器約束用于維護(hù)數(shù)據(jù)庫(kù)一致性,但最好考慮用約束來(lái)實(shí)現(xiàn)同樣的目的;觸發(fā)器根據(jù)操作來(lái)定義一致性;約束易理解,能給DBMS較多機(jī)會(huì)優(yōu)化執(zhí)行;約束可以阻止任何語(yǔ)句違反一致性;觸發(fā)器只能由特定語(yǔ)句來(lái)激活,比較靈活;觸發(fā)器的其他用途(如維護(hù)復(fù)制數(shù)據(jù)庫(kù)等)第21頁(yè),共27頁(yè),2023年,2月20日,星期五第22頁(yè),共27頁(yè),2023年,2月20日,星期五第23頁(yè),共27頁(yè),2023年,2月20日,星期五第24頁(yè),共27頁(yè),2023年,2月20日,星期五第25頁(yè),共27頁(yè),2023年,2月20日,星期五CREATETRIGGERinit_countBEFOREINSERTONstudents/*event*/ Declare countinteger; begin count:=0;/

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論