版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、An Introduction to Database System1數據庫系統概論數據庫系統概論An Introduction to Database System第六章第六章 數據庫完整性數據庫完整性An Introduction to Database System2第六章第六章 數據庫完整性數據庫完整性什么是數據庫的完整性什么是數據庫的完整性n數據的正確性和相容性數據的正確性和相容性n防止不合語義的數據進入數據庫。防止不合語義的數據進入數據庫。例例: 學生的年齡必須是整數,取值范圍為學生的年齡必須是整數,取值范圍為14-29; An Introduction to Database S
2、ystem3DBMS的完整性控制機制的完整性控制機制1.完整性約束條件完整性約束條件定義定義機制機制2.完整性完整性檢查檢查機制機制3.違約違約處理處理 An Introduction to Database System4完整性檢查機制完整性檢查機制n一般在一般在INSERT、UPDATE、DELETE語句后語句后開始檢查。開始檢查。 An Introduction to Database System5違約處理違約處理n如果發(fā)現用戶的操作請求使數據違背了完整性如果發(fā)現用戶的操作請求使數據違背了完整性約束條件,則采取一定的動作(如約束條件,則采取一定的動作(如拒絕拒絕執(zhí)行該執(zhí)行該操作)來保證
3、數據的完整性。操作)來保證數據的完整性。An Introduction to Database System6第六章第六章 數據庫完整性數據庫完整性6.1 實體完整性實體完整性6.2 參照完整性參照完整性6.3 用戶定義的完整性用戶定義的完整性6.4 完整性約束命名子句完整性約束命名子句6.5 域中的完整性限制域中的完整性限制An Introduction to Database System76.1.1 實體完整性定義實體完整性定義關系模型的實體完整性在關系模型的實體完整性在CREATE TABLE中中用用PRIMARY KEY定義。定義。n例例1 將將Student表中的表中的Sno屬性定
4、義為主碼。屬性定義為主碼。定義為定義為列級約束列級約束: 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或定義或定義表級約束表級約束: 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)為主碼為主碼. 只能定義為表級約束只能定義為表級約束. CREATE TABLE SC (Sno CHAR(9)NOT NULL, Cno CHAR(4)NOT NULL, Grade SMALLINT, PRIMARY KEY (Sno, Cno) /*表級約束表級約束*/ );An Introduction to Database System106.1.2 實體完整性檢查和違約處理實體完整性檢查和違約處理n當用戶程序對
6、基本表插入一條記錄或對主碼列當用戶程序對基本表插入一條記錄或對主碼列更新時,更新時,RDBMS將檢查:將檢查:n(1) 主碼值是否唯一;主碼值是否唯一;n(2) 主碼的各個屬性值是否為空。主碼的各個屬性值是否為空。如不滿足,則如不滿足,則拒絕插入或修改拒絕插入或修改。從而保證了實。從而保證了實體完整性。體完整性。An Introduction to Database System11第六章第六章 數據庫完整性數據庫完整性6.1 實體完整性實體完整性6.2 參照完整性參照完整性6.3 用戶定義的完整性用戶定義的完整性6.4 完整性約束命名子句完整性約束命名子句6.5 域中的完整性限制域中的完整性
7、限制An Introduction to Database System126.2.1 參照完整性定義參照完整性定義關系模型的參照完整性在關系模型的參照完整性在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í)行,設置為不允許該操作執(zhí)行,設置為默認默認策略。策略。n2 級連(級連(CASCADE)操作)操作n 刪除或修改參照表中的相關元組。刪除或修改參照表中的相關元組。n3 設置為空值(設置為空值(S
9、ET-NULL)n 學生(學生(學號學號,姓名,性別,姓名,性別,專業(yè)號專業(yè)號)n 專業(yè)(專業(yè)(專業(yè)號專業(yè)號,專業(yè)名),專業(yè)名)n專業(yè)號專業(yè)號在學生表中是外碼在學生表中是外碼.刪除專業(yè)表的一個元組刪除專業(yè)表的一個元組時時,就把學生表中的相關專業(yè)號置空就把學生表中的相關專業(yè)號置空.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 );刪除學生表的Sno時,級聯刪除SC表的相關元組更新學生表的Sno時,級聯更新SC表的相應元組刪除Course表的元組,出現與SC表不一致時,拒絕刪除更新Course表的Cno時,級聯更新SC表的相應元組刪除時拒絕如果沒有此句,刪除學生表的Sno時,拒絕執(zhí)行An Introductio
11、n to Database System166.3 用戶定義的完整性用戶定義的完整性用戶定義的完整性用戶定義的完整性: 是針對某一具體應用的數據是針對某一具體應用的數據必須滿足的要求。必須滿足的要求。An Introduction to Database System176.3.1 屬性上的約束條件的定義屬性上的約束條件的定義n在定義表時,定義屬性的同時,指定屬性的約在定義表時,定義屬性的同時,指定屬性的約束條件,包括以下幾種:束條件,包括以下幾種:n列值非空(列值非空(NOT NULL)n列值唯一(列值唯一(UNIQUE)n檢查列值是否滿足一個邏輯表達式檢查列值是否滿足一個邏輯表達式(CHE
12、CK)An Introduction to Database System181 不允許取空值不允許取空值n例例5 在定義在定義SC表時,說明表時,說明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列列 取值唯一,部門編號取值唯一,部門編號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指定列值應該滿足的條件指定列值應該滿足的條件例例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的值應該在的值應該在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,用,用來對完整性約束條件來對完整性約束條件命名命名。從而可以靈活。從而可以靈活地增加、刪除一個完整性約束條件。地增加、刪除一個完整性約束條件。n格式:格式:nCONSTRAINT PRIMARY KEY 短語短語|FOREIGN KEY短語短語|CHECK短語短語An Introduction to Database System23例例10:建立學生登記表:建立學生登記表Student,要求學號在,要求學號在
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表中對性別的表中對性別的限制。限制。n ALTER TABLE Studentn DROP CONSTRAINT C4;An Introduction to Da
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國L肉堿鹽酸鹽行業(yè)運行現狀及投資發(fā)展前景預測報告
- 2024年鄂州職業(yè)大學高職單招職業(yè)適應性測試歷年參考題庫含答案解析
- 2025年滬科版共同必修2物理上冊階段測試試卷
- 2024版廣告投放代理合同
- 2025年度鮮豬肉冷鏈配送及售后服務保障協議3篇
- 2024版地方酒水分銷商代理協議版B版
- 2024年版物業(yè)服務協議補充協議專業(yè)模板一
- 2025年人教版選擇性必修1化學上冊月考試卷含答案
- 二零二五年度魚塘休閑漁業(yè)發(fā)展合作協議3篇
- 二手房交易2024法律協議模板一
- GB/T 44914-2024和田玉分級
- 2024年度企業(yè)入駐跨境電商孵化基地合作協議3篇
- 《形勢與政策》課程標準
- 2023年海南省公務員錄用考試《行測》真題卷及答案解析
- 消防控制室值班人員崗位職責-五項制度
- 鋼結構安裝施工培訓
- 2024至2030年中國抗菌藥數據監(jiān)測研究報告
- 太平洋保險在線測評題
- 珠寶玉石居間合同范本
- 青少年人工智能編程水平測試二級-模擬真題01含答案
- 仁愛英語八年級下冊Unit-5-Topic-2單元測試
評論
0/150
提交評論