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

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(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ù)庫系統(tǒng)概論數(shù)據(jù)庫系統(tǒng)概論An Introduction to Database System第六章第六章 數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性An Introduction to Database System2第六章第六章 數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性什么是數(shù)據(jù)庫的完整性什么是數(shù)據(jù)庫的完整性n數(shù)據(jù)的正確性和相容性數(shù)據(jù)的正確性和相容性n防止不合語義的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫。防止不合語義的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫。例例: 學(xué)生的年齡必須是整數(shù),取值范圍為學(xué)生的年齡必須是整數(shù),取值范圍為14-29; An Introduction to Database S

2、ystem3DBMS的完整性控制機(jī)制的完整性控制機(jī)制1.完整性約束條件完整性約束條件定義定義機(jī)制機(jī)制2.完整性完整性檢查檢查機(jī)制機(jī)制3.違約違約處理處理 An Introduction to Database System4完整性檢查機(jī)制完整性檢查機(jī)制n一般在一般在INSERT、UPDATE、DELETE語句后語句后開始檢查。開始檢查。 An Introduction to Database System5違約處理違約處理n如果發(fā)現(xiàn)用戶的操作請(qǐng)求使數(shù)據(jù)違背了完整性如果發(fā)現(xiàn)用戶的操作請(qǐng)求使數(shù)據(jù)違背了完整性約束條件,則采取一定的動(dòng)作(如約束條件,則采取一定的動(dòng)作(如拒絕拒絕執(zhí)行該執(zhí)行該操作)來保證

3、數(shù)據(jù)的完整性。操作)來保證數(shù)據(jù)的完整性。An Introduction to Database System6第六章第六章 數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性6.1 實(shí)體完整性實(shí)體完整性6.2 參照完整性參照完整性6.3 用戶定義的完整性用戶定義的完整性6.4 完整性約束命名子句完整性約束命名子句6.5 域中的完整性限制域中的完整性限制An Introduction to Database System76.1.1 實(shí)體完整性定義實(shí)體完整性定義關(guān)系模型的實(shí)體完整性在關(guān)系模型的實(shí)體完整性在CREATE TABLE中中用用PRIMARY KEY定義。定義。n例例1 將將Student表中的表中的Sno屬性定

4、義為主碼。屬性定義為主碼。定義為定義為列級(jí)約束列級(jí)約束: CREATE TABLE Student (Sno CHAR(9) PRIMARY KEY , Sname CHAR(20) NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20) );An Introduction to Database System8或定義或定義表級(jí)約束表級(jí)約束: CREATE TABLE Student (Sno CHAR(9), Sname CHAR(20)NOT NULL, Ssex CHAR(2), Sage SMALLINT, Sdept CHAR(20

5、), PRIMARY KEY(Sno) );An Introduction to Database System9例例2:要在:要在SC表中定義表中定義(Sno, Cno)為主碼為主碼. 只能定義為表級(jí)約束只能定義為表級(jí)約束. CREATE TABLE SC (Sno CHAR(9)NOT NULL, Cno CHAR(4)NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno, Cno) /*表級(jí)約束表級(jí)約束*/ );An Introduction to Database System106.1.2 實(shí)體完整性檢查和違約處理實(shí)體完整性檢查和違約處理n當(dāng)用戶程序?qū)?/p>

6、基本表插入一條記錄或?qū)χ鞔a列當(dāng)用戶程序?qū)颈聿迦胍粭l記錄或?qū)χ鞔a列更新時(shí),更新時(shí),RDBMS將檢查:將檢查:n(1) 主碼值是否唯一;主碼值是否唯一;n(2) 主碼的各個(gè)屬性值是否為空。主碼的各個(gè)屬性值是否為空。如不滿足,則如不滿足,則拒絕插入或修改拒絕插入或修改。從而保證了實(shí)。從而保證了實(shí)體完整性。體完整性。An Introduction to Database System11第六章第六章 數(shù)據(jù)庫完整性數(shù)據(jù)庫完整性6.1 實(shí)體完整性實(shí)體完整性6.2 參照完整性參照完整性6.3 用戶定義的完整性用戶定義的完整性6.4 完整性約束命名子句完整性約束命名子句6.5 域中的完整性限制域中的完整性

7、限制An Introduction to Database System126.2.1 參照完整性定義參照完整性定義關(guān)系模型的參照完整性在關(guān)系模型的參照完整性在CREATE TABLE中用中用FOREIGN KEY定義哪些列為外碼,用定義哪些列為外碼,用REFERENCES短語指明這些外碼參照哪些表短語指明這些外碼參照哪些表的主碼。的主碼。An Introduction to Database System13 例例3:定義:定義SC中中 的參照完整性的參照完整性 CREATE TABLE SC (Sno CHAR(10) , Cno CHAR(4) , Grade SMALLINT, PRI

8、MARY KEY (Sno, Cno), FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno), );An Introduction to Database System146.2.2 參照完整性檢查和違約處理參照完整性檢查和違約處理n1 拒絕執(zhí)行(拒絕執(zhí)行(REJECT)n 不允許該操作執(zhí)行,設(shè)置為不允許該操作執(zhí)行,設(shè)置為默認(rèn)默認(rèn)策略。策略。n2 級(jí)連(級(jí)連(CASCADE)操作)操作n 刪除或修改參照表中的相關(guān)元組。刪除或修改參照表中的相關(guān)元組。n3 設(shè)置為空值(設(shè)置為空值(S

9、ET-NULL)n 學(xué)生(學(xué)生(學(xué)號(hào)學(xué)號(hào),姓名,性別,姓名,性別,專業(yè)號(hào)專業(yè)號(hào))n 專業(yè)(專業(yè)(專業(yè)號(hào)專業(yè)號(hào),專業(yè)名),專業(yè)名)n專業(yè)號(hào)專業(yè)號(hào)在學(xué)生表中是外碼在學(xué)生表中是外碼.刪除專業(yè)表的一個(gè)元組刪除專業(yè)表的一個(gè)元組時(shí)時(shí),就把學(xué)生表中的相關(guān)專業(yè)號(hào)置空就把學(xué)生表中的相關(guān)專業(yè)號(hào)置空.An Introduction to Database System15例例4 顯式說明參照完整性的違約處理示例顯式說明參照完整性的違約處理示例 CREATE TABLE SC (Sno CHAR(9) , Cno CHAR(4) , Grade SMALLINT, PRIMARY KEY (Sno, Cno), FO

10、REIGN KEY (Sno) REFERENCES Student(Sno) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (Cno) REFERENCES Course(Cno) ON DELETE NO ACTION ON UPDATE CASCADE );刪除學(xué)生表的Sno時(shí),級(jí)聯(lián)刪除SC表的相關(guān)元組更新學(xué)生表的Sno時(shí),級(jí)聯(lián)更新SC表的相應(yīng)元組刪除Course表的元組,出現(xiàn)與SC表不一致時(shí),拒絕刪除更新Course表的Cno時(shí),級(jí)聯(lián)更新SC表的相應(yīng)元組刪除時(shí)拒絕如果沒有此句,刪除學(xué)生表的Sno時(shí),拒絕執(zhí)行An Introductio

11、n to Database System166.3 用戶定義的完整性用戶定義的完整性用戶定義的完整性用戶定義的完整性: 是針對(duì)某一具體應(yīng)用的數(shù)據(jù)是針對(duì)某一具體應(yīng)用的數(shù)據(jù)必須滿足的要求。必須滿足的要求。An Introduction to Database System176.3.1 屬性上的約束條件的定義屬性上的約束條件的定義n在定義表時(shí),定義屬性的同時(shí),指定屬性的約在定義表時(shí),定義屬性的同時(shí),指定屬性的約束條件,包括以下幾種:束條件,包括以下幾種:n列值非空(列值非空(NOT NULL)n列值唯一(列值唯一(UNIQUE)n檢查列值是否滿足一個(gè)邏輯表達(dá)式檢查列值是否滿足一個(gè)邏輯表達(dá)式(CHE

12、CK)An Introduction to Database System181 不允許取空值不允許取空值n例例5 在定義在定義SC表時(shí),說明表時(shí),說明Grade屬性不允屬性不允許取空值。許取空值。 CREATE TABLE SC (Sno CHAR(9), Cno CHAR(4), Grade SMALLINT NOT NULL, PRIMARY KEY (Sno, Cno) );An Introduction to Database System192 列值唯一列值唯一例例6建立部門表建立部門表DEPT,要求部門名稱,要求部門名稱Dname列列 取值唯一,部門編號(hào)取值唯一,部門編號(hào)Dept

13、no列為主碼列為主碼CREATE TABLE DEPT(Deptno CHAR(4), Dname VARCHAR(9) UNIQUE, Location VARCHAR(10), PRIMARY KEY (Deptno);列值唯一An Introduction to Database System203. 用用CHECK指定列值應(yīng)該滿足的條件指定列值應(yīng)該滿足的條件例例7 Student表的表的Ssex(性別性別)只能是只能是男男或或女女. CREATE TABLE Student (Sno CHAR(10) PRIMARY KEY, Sname CHAR(8) NOT NULL, Ssex

14、CHAR(2) CHECK (Ssex IN (男男, 女女), Sage SMALLINT, Sdept CHAR(20) );An Introduction to Database System21n例例8 SC表表Grade的值應(yīng)該在的值應(yīng)該在0和和100之間。之間。 CREATE TABLE SC ( Sno CHAR(9), Cno CHAR(4), Grade SMALLINT CHECK(Grade=0 AND Grade=100), PRIMARY KEY (Sno, Cno) );An Introduction to Database System226.4 完整性約束命名子

15、句完整性約束命名子句n1.完整性約束命名子句完整性約束命名子句nSQL還在還在CREATE TABLE語句中提供了語句中提供了完整性約束命名子句完整性約束命名子句CONSTRAINT,用,用來對(duì)完整性約束條件來對(duì)完整性約束條件命名命名。從而可以靈活。從而可以靈活地增加、刪除一個(gè)完整性約束條件。地增加、刪除一個(gè)完整性約束條件。n格式:格式:nCONSTRAINT PRIMARY KEY 短語短語|FOREIGN KEY短語短語|CHECK短語短語An Introduction to Database System23例例10:建立學(xué)生登記表:建立學(xué)生登記表Student,要求學(xué)號(hào)在,要求學(xué)號(hào)在

16、90 000至至99 999之間,姓名非空,年齡之間,姓名非空,年齡30, 性別只能是性別只能是男男或或女女。CREATE TABLE Student (Sno INT CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999), Sname CHAR(8) CONSTRAINT C2 NOT NULL, Sage SMALLINT CONSTRAINT C3 CHECK (Sage =3000) );An Introduction to Database System252. 修改表中的完整性限制修改表中的完整性限制n用用ALTER TABLE 語句修改表中的完整語句修改表中的完整性限制性限制n例例12 去掉去掉例例10student表中對(duì)性別的表中對(duì)性別的限制。限制。n ALTER TABLE Studentn DROP CONSTRAINT C4;An Introduction to Da

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論