版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第五章數(shù)據(jù)庫完整性AnIntroductiontoDatabaseSystem復(fù)習(xí):完整性約束條件三類完整性:實(shí)體完整性參照完整性用戶自定義的完整性六種約束條件主鍵約束外鍵約束唯一性約束檢查約束默認(rèn)值約束空值約束AnIntroductiontoDatabaseSystem數(shù)據(jù)完整性
數(shù)據(jù)的完整性數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性。完整性VS
安全性(兩個(gè)不同的概念)數(shù)據(jù)完整性是為了防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),即防止數(shù)據(jù)庫中存在不正確的數(shù)據(jù)。防范的對(duì)象是不合語義的、不正確的數(shù)據(jù)。數(shù)據(jù)安全性是保護(hù)數(shù)據(jù)庫防止惡意的破壞和非法的存取。防范的對(duì)象是非法用戶和非法操作。AnIntroductiontoDatabaseSystem數(shù)據(jù)庫完整性
為維護(hù)數(shù)據(jù)庫的完整性,DBMS必須:1.提供定義完整性約束條件的機(jī)制2.提供完整性檢查的方法3.違約處理實(shí)體完整性參照完整性用戶自定義的完整性拒絕級(jí)聯(lián)設(shè)置為空值A(chǔ)nIntroductiontoDatabaseSystem第五章數(shù)據(jù)庫完整性5.1實(shí)體完整性5.2參照完整性5.3用戶定義的完整性5.4完整性約束命名字句5.5觸發(fā)器5.6小結(jié)第一講AnIntroductiontoDatabaseSystem5.1實(shí)體完整性5.1.1實(shí)體完整性定義回憶定義?關(guān)系數(shù)據(jù)庫的實(shí)體完整性的定義,有兩種方式:①創(chuàng)建表時(shí):PrimaryKey【單/多屬性構(gòu)成主鍵問題】②修改表定義時(shí):添加PrimaryKey約束具體實(shí)例參照:P152AnIntroductiontoDatabaseSystem5.1實(shí)體完整性5.1.2實(shí)體完整性檢查和違約處理當(dāng)對(duì)關(guān)系定義主碼后,每當(dāng)用戶程序?qū)颈硖砑佑涗浕蚋轮鞔a鍵值時(shí),RDBMS將按照實(shí)體完整性規(guī)則自動(dòng)檢查記錄的完整性:①主碼值是否唯一,如果不唯一則拒絕此次操作。②主碼的各個(gè)屬性(主屬性)是否為空,如果有一個(gè)為空則拒絕此次操作。并且現(xiàn)行的RDBMS會(huì)給出相應(yīng)的錯(cuò)誤提示。AnIntroductiontoDatabaseSystem5.1實(shí)體完整性5.1.2實(shí)體完整性檢查和違約處理核查記錄主碼值是否唯一的方法:全表掃描,即依次判斷表中的每一條記錄的主碼值是否與即將插入的記錄主碼值重復(fù)。(教材P153頁)全表掃描一般情況是十分耗時(shí),尤其在數(shù)據(jù)記錄量較多的情況下。為了避免全表掃描,RDBMS核心一般都在主碼字段自動(dòng)建立B+樹的聚簇索引,從而提高檢索效率!如何保證?回憶:RDBMS默認(rèn)會(huì)為主碼上建立一個(gè)聚簇索引!AnIntroductiontoDatabaseSystem5.2參照完整性5.2.1參照完整性定義5.2.2參照完整性檢查和違約處理關(guān)系數(shù)據(jù)庫的參照完整性在創(chuàng)建表或修改表時(shí),使用ForeignKey
短語定義哪些列為外鍵,用References短語指明這些外碼參照哪些表的主碼。示例:P154參照完整性定義完畢,該約束就將相關(guān)聯(lián)的兩個(gè)表中的相應(yīng)的元組聯(lián)系起來了,因此為保證數(shù)據(jù)的有效性,必須對(duì)相關(guān)的更新操作(增、刪、改)進(jìn)行完整性檢查。回憶定義?AnIntroductiontoDatabaseSystem5.2參照完整性5.2.2參照完整性檢查和違約處理可能破壞參照完整性的情況及違約處理被參照表(Student表)參照表(SC表)違約處理可能破壞參照完整性插入元組拒絕可能破壞參照完整性修改外碼值拒絕刪除元組可能破壞參照完整性拒絕/級(jí)連刪除/設(shè)置為空值修改主碼值可能破壞參照完整性拒絕/級(jí)連修改/設(shè)置為空值如果為定義參照完整性違反策略,當(dāng)違反參照完整性時(shí),系統(tǒng)選擇默認(rèn)策略;如果想讓系統(tǒng)采用其他策略則必須顯式說明。AnIntroductiontoDatabaseSystem5.2參照完整性5.2.2參照完整性檢查和違約處理參照完整性違約處理策略:1拒絕(NoAction)執(zhí)行該策略一般設(shè)置為各個(gè)RDBMS的默認(rèn)策略。2級(jí)聯(lián)(Cascade)操作自動(dòng)刪除或更新參照表的所有相關(guān)聯(lián)的記錄。3設(shè)置為空值主要涉及參照表中的相應(yīng)字段是否允許空值的考慮。AnIntroductiontoDatabaseSystem5.2參照完整性舉例:定義成績表,并顯式設(shè)置其參照完整性違約策略。AnIntroductiontoDatabaseSystem5.3用戶定義的完整性用戶定義的完整性就是針對(duì)某一具體應(yīng)用的數(shù)據(jù)必須滿足的語義要求。目前的RDBMS都提供了定義和檢查用戶自定義完整的機(jī)制,而不必由應(yīng)用程序承擔(dān)。SQLServer中提供完整性機(jī)制常用的方法:唯一性約束(Unique)檢查(Check)約束:約束字段只涉及一個(gè)表時(shí)非常有效默認(rèn)值約束(Default)空值約束(NotNull)存儲(chǔ)過程和觸發(fā)器:涉及多個(gè)表多個(gè)字段維護(hù)時(shí)非常有效AnIntroductiontoDatabaseSystem5.3用戶定義的完整性用戶自定義完整性約束條件的定義用戶自定義完整性約束條件檢查和違約處理說明:(1)如果約束涉及單個(gè)屬性列,可以定義在列級(jí),也可定義在表級(jí)
(2)如果約束涉及多個(gè)屬性列,只能定義在表級(jí)拒絕執(zhí)行!AnIntroductiontoDatabaseSystem5.3用戶定義的完整性習(xí)題:1定義圖書信息表:Book
BookID:圖書編號(hào)、主鍵、Char(8)
BookName
圖書名稱、非空、nvarchar(20)
BookISBN
圖書ISBN號(hào)碼、唯一、varchar(18)
Price圖書單價(jià)、要求在0~200元之間、decimal(5,2)AnIntroductiontoDatabaseSystem5.3用戶定義的完整性習(xí)題:2定義讀者信息表:ReaderRID:讀者編號(hào)、主鍵、Char(6)
RName:讀者姓名、非空、nvarchar(10)
RSex:性別(只能取‘男’和‘女’)、nchar(1)
RCardNo:身份證編號(hào)(唯一且滿足公認(rèn)的條件:性別為男,倒數(shù)第2位是單數(shù),否則相反)、char(18)AnIntroductiontoDatabaseSystem5.3用戶定義的完整性習(xí)題:3定義借閱信息表:BorrowRID參照讀者信息表的RID取值
BookID
參照圖書信息表的BookID取值
BDate
借閱日期、Datetime
RDate
歸還日期:不能在借閱日期之前假設(shè)允許續(xù)借圖書,試分析本表的主鍵,并完成主鍵、外鍵和用戶自定義完整性設(shè)置。AnIntroductiontoDatabaseSystem5.4完整性約束命名子句SQL在創(chuàng)建和修改表定義的語句中,提供了完整性約束命名子句Constraint,用來對(duì)完整性約束命名。修改表中完整性限制第三章數(shù)據(jù)定義部分:AlterTable
語句的Add/Drop
約束子句個(gè)人認(rèn)為:對(duì)于:非空、默認(rèn)值、唯一約束,這三種約束可直接定義對(duì)于:主鍵、外鍵、Check約束、為了便于維護(hù),最好在創(chuàng)建約束時(shí)采用約束命名機(jī)制。AnIntroductiontoDatabaseSystem5.4完整性約束命名子句約束簡寫_表名_約束的列名約束的命名約定例子:
DF_TableB_age
FK_TableB_pno試說出它們表示的含義?AnIntroductiontoDatabaseSystem5.6觸發(fā)器轉(zhuǎn)入觸發(fā)器專題知識(shí)章節(jié)請首先學(xué)習(xí)SQL語言程序流程控制結(jié)構(gòu)后AnIntroductiontoDatabaseSystem5.6SQL流程控制語句
IF…ELSE語句
While…Continue…Break
Begin…End--語句塊的開始和結(jié)束標(biāo)志用戶在程序設(shè)計(jì)語言時(shí),常常需要利用各種流程控制語句,改變計(jì)算機(jī)的執(zhí)行流程,以滿足程序設(shè)計(jì)的需要。AnIntroductiontoDatabaseSystem5.6SQL流程控制語句
IF…ELSE語句
在程序設(shè)計(jì)中,如果需要對(duì)給定的條件進(jìn)行判斷,然后根據(jù)條件的真假選擇不同的執(zhí)行路徑時(shí)采用該語句。語法格式:
IF
條件表達(dá)式
{單個(gè)SQL語句或者Begin-End語句塊}[ELSE{單個(gè)SQL語句或者Begin-End語句塊}]提示:如果條件表達(dá)式中有Select語句,需要用小括號(hào)括起來TRUE/FALSEAnIntroductiontoDatabaseSystem5.6SQL流程控制語句
IF…ELSE語句例題:在學(xué)生表中查詢姓名為“王琳琳”的學(xué)生,如果存在,列示該學(xué)生的學(xué)號(hào)、姓名、性別、出生日期、所屬院系名稱等信息;如果不存在,則打印提示信息:“不存在姓名為王琳琳的學(xué)生!”。AnIntroductiontoDatabaseSystem5.6SQL流程控制語句
WHILE…CONTINUE…BREAK語句語法格式:WhileLogical_Expression_1 Begin
語句塊;
[IFLogical_Expression_2 Continue;][IFLogical_Expression_3 Break;] End退出循環(huán)體退出本次循環(huán)學(xué)號(hào)自動(dòng)生成循環(huán)更新簡歷數(shù)據(jù)AnIntroductiontoDatabaseSystem5.6SQL流程控
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(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)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 污水課程設(shè)計(jì)紫外消毒
- 數(shù)字電路ic課程設(shè)計(jì)
- 教育培訓(xùn)行業(yè)教學(xué)方法培訓(xùn)體驗(yàn)
- 電子課程設(shè)計(jì)網(wǎng)課答案
- 稅務(wù)工作總結(jié)制度建設(shè)與規(guī)范化監(jiān)督
- 急救護(hù)理工作總結(jié)
- 貸款經(jīng)理工作總結(jié)
- 電信通訊科技行業(yè)技術(shù)分析
- 旅游行業(yè)促銷活動(dòng)總結(jié)
- 酒店用品銷售工作總結(jié)
- 搶工措施方案
- 數(shù)值分析上機(jī)題(matlab版)(東南大學(xué))
- 93江蘇省宿遷市泗洪縣2023-2024學(xué)年八年級(jí)上學(xué)期期末英語試題()
- 教學(xué)能力大賽決賽獲獎(jiǎng)-教學(xué)實(shí)施報(bào)告-(完整圖文版)
- 亞朵酒店管理手冊
- 高一期末家長會(huì)課件
- 2024年航空職業(yè)技能鑒定考試-航空乘務(wù)員危險(xiǎn)品歷年考試高頻考點(diǎn)試題附帶答案
- 醫(yī)院禁毒行動(dòng)方案
- 設(shè)立影視服務(wù)公司商業(yè)計(jì)劃書
- 《流行性腦脊髓膜炎》課件
- 學(xué)生公寓物業(yè)服務(wù)方案投標(biāo)方案(技術(shù)方案)
評(píng)論
0/150
提交評(píng)論