第七章-數(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è),還剩86頁(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ù)原理計(jì)算中心:楊和敏郵箱:第六章數(shù)據(jù)庫(kù)的安全性和完整性5.1數(shù)據(jù)庫(kù)的安全性5.2數(shù)據(jù)庫(kù)的完整性5.3小結(jié)2

數(shù)據(jù)庫(kù)安全性

問(wèn)題的提出數(shù)據(jù)庫(kù)的一大特點(diǎn)是數(shù)據(jù)可以共享數(shù)據(jù)共享必然帶來(lái)數(shù)據(jù)庫(kù)的安全性問(wèn)題數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)共享不能是無(wú)條件的共享例:軍事秘密、國(guó)家機(jī)密、新產(chǎn)品實(shí)驗(yàn)數(shù)據(jù)、市場(chǎng)需求分析、市場(chǎng)營(yíng)銷策略、銷售計(jì)劃、客戶檔案、醫(yī)療檔案、銀行儲(chǔ)蓄數(shù)據(jù)數(shù)據(jù)庫(kù)安全性3數(shù)據(jù)庫(kù)安全性5.1數(shù)據(jù)庫(kù)的安全性5.1.1計(jì)算機(jī)安全性概述5.1.2數(shù)據(jù)庫(kù)安全性控制5.1.3視圖機(jī)制5.1.4審計(jì)(Audit)4計(jì)算機(jī)安全性概述

計(jì)算機(jī)系統(tǒng)安全性為計(jì)算機(jī)系統(tǒng)建立和采取的各種安全保護(hù)措施,以保護(hù)計(jì)算機(jī)系統(tǒng)中的硬件、軟件及數(shù)據(jù),防止其因偶然或惡意的原因使系統(tǒng)遭到破壞,數(shù)據(jù)遭到更改或泄露等。三類計(jì)算機(jī)系統(tǒng)安全性問(wèn)題技術(shù)安全類:采用一定安全性的硬件、軟件來(lái)實(shí)現(xiàn)對(duì)計(jì)算機(jī)系統(tǒng)以及所存數(shù)據(jù)的安全保護(hù)管理安全類:管理不善導(dǎo)致的計(jì)算機(jī)設(shè)備和數(shù)據(jù)截止的物理破壞、丟失等軟硬件意外故障、場(chǎng)地的意外事故等安全問(wèn)題政策法律類:政府部門建立的有關(guān)計(jì)算機(jī)犯罪、數(shù)據(jù)安全保密的法律道德準(zhǔn)則和政策法規(guī)、法令5數(shù)據(jù)庫(kù)安全性5.1數(shù)據(jù)庫(kù)的安全性5.1.1計(jì)算機(jī)安全性概述5.1.2數(shù)據(jù)庫(kù)安全性控制5.1.3視圖機(jī)制5.1.4審計(jì)(Audit)6數(shù)據(jù)庫(kù)安全性控制非法使用數(shù)據(jù)庫(kù)的情況編寫合法程序繞過(guò)DBMS及其授權(quán)機(jī)制直接或編寫應(yīng)用程序執(zhí)行非授權(quán)操作通過(guò)多次合法查詢數(shù)據(jù)庫(kù)從中推導(dǎo)出一些保密數(shù)據(jù)7數(shù)據(jù)庫(kù)安全性控制(續(xù))計(jì)算機(jī)系統(tǒng)中,安全措施是一級(jí)一級(jí)層層設(shè)置

計(jì)算機(jī)系統(tǒng)的安全模型

8數(shù)據(jù)庫(kù)安全性控制概述(續(xù))數(shù)據(jù)庫(kù)安全性控制的常用方法用戶標(biāo)識(shí)和鑒別存取控制視圖審計(jì)密碼存儲(chǔ)95.1.2數(shù)據(jù)庫(kù)安全性控制用戶標(biāo)識(shí)與鑒別存取控制自主存取控制方法授權(quán)與回收數(shù)據(jù)庫(kù)角色10用戶標(biāo)識(shí)與鑒別用戶標(biāo)識(shí)與鑒別(Identification&Authentication)系統(tǒng)提供的最外層安全保護(hù)措施用戶標(biāo)識(shí)口令系統(tǒng)核對(duì)口令以鑒別用戶身份用戶名和口令易被竊取每個(gè)用戶預(yù)先約定好一個(gè)計(jì)算過(guò)程或者函數(shù)115.1.2數(shù)據(jù)庫(kù)安全性控制用戶標(biāo)識(shí)與鑒別存取控制自主存取控制方法授權(quán)與回收數(shù)據(jù)庫(kù)角色12存取控制存取控制機(jī)制組成定義用戶權(quán)限合法權(quán)限檢查用戶權(quán)限定義和合法權(quán)檢查機(jī)制一起組成了DBMS的安全子系統(tǒng)13存取控制(續(xù))自主存取控制(DiscretionaryAccessControl,簡(jiǎn)稱DAC)靈活強(qiáng)制存取控制(MandatoryAccessControl,簡(jiǎn)稱MAC)嚴(yán)格常用存取控制方法145.1.2數(shù)據(jù)庫(kù)安全性控制用戶標(biāo)識(shí)與鑒別存取控制自主存取控制方法授權(quán)與回收數(shù)據(jù)庫(kù)角色15自主存取控制方法通過(guò)SQL的GRANT

語(yǔ)句和REVOKE

語(yǔ)句實(shí)現(xiàn)用戶權(quán)限組成數(shù)據(jù)對(duì)象操作類型定義用戶存取權(quán)限:定義用戶可以在哪些數(shù)據(jù)庫(kù)對(duì)象上進(jìn)行哪些類型的操作定義存取權(quán)限稱為授權(quán)

16自主存取控制方法(續(xù))關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)中存取控制對(duì)象對(duì)象類型對(duì)象操作類型數(shù)據(jù)庫(kù)模式模式CREATESCHEMA基本表CREATETABLE,ALTERTABLE視圖CREATEVIEW索引CREATEINDEX數(shù)據(jù)基本表和視圖SELECT,INSERT,UPDATE,DELETE,REFERENCES,ALLPRIVILEGES屬性列SELECT,INSERT,UPDATE,REFERENCESALLPRIVILEGES5.1.2數(shù)據(jù)庫(kù)安全性控制用戶標(biāo)識(shí)與鑒別存取控制自主存取控制方法授權(quán)與回收數(shù)據(jù)庫(kù)角色18授權(quán)與回收一、GRANTGRANT語(yǔ)句的一般格式:

GRANT<權(quán)限>[,<權(quán)限>]...[ON<對(duì)象類型><對(duì)象名>]TO<用戶>[,<用戶>]...[WITHGRANTOPTION];語(yǔ)義:將對(duì)指定操作對(duì)象的指定操作權(quán)限授予指定的用戶

19GRANT(續(xù))發(fā)出GRANT:DBA數(shù)據(jù)庫(kù)對(duì)象創(chuàng)建者(即屬主Owner)擁有該權(quán)限的用戶按受權(quán)限的用戶

一個(gè)或多個(gè)具體用戶PUBLIC(全體用戶)20WITHGRANTOPTION子句WITHGRANTOPTION子句:指定:可以再授予沒(méi)有指定:不能傳播不允許循環(huán)授權(quán)21例題[例1]

把查詢Student表權(quán)限授給用戶U1GRANTSELECTONTABLEStudentTOU1;[例2]把對(duì)Student表和Course表的全部權(quán)限授予用戶U2和U3GRANTALLPRIVILIGES

ONTABLEStudent,CourseTOU2,U3;22例題(續(xù))[例3]把對(duì)表SC的查詢權(quán)限授予所有用戶

GRANTSELECTONTABLESC

TOPUBLIC;[例4]把查詢Student表和修改學(xué)生學(xué)號(hào)的權(quán)限授給用戶U4

GRANTUPDATE(Sno),SELECT ONTABLEStudent TOU4;對(duì)屬性列的授權(quán)時(shí)必須明確指出相應(yīng)屬性列名23例題(續(xù))

[例5]把對(duì)表SC的INSERT權(quán)限授予U5用戶,并允許他再將此權(quán)限授予其他用戶

GRANTINSERTONTABLESCTOU5

WITHGRANTOPTION;24傳播權(quán)限執(zhí)行例5后,U5不僅擁有了對(duì)表SC的INSERT權(quán)限,還可以傳播此權(quán)限:

[例6]GRANTINSERTONTABLESCTOU6

WITHGRANTOPTION;同樣,U6還可以將此權(quán)限授予U7:

[例7]GRANTINSERTONTABLESCTOU7;

但U7不能再傳播此權(quán)限。

25傳播權(quán)限(續(xù))

下表是執(zhí)行了[例1]到[例7]的語(yǔ)句后,學(xué)生-課程數(shù)據(jù)庫(kù)中的用戶權(quán)限定義表授權(quán)用戶名被授權(quán)用戶名數(shù)據(jù)庫(kù)對(duì)象名允許的操作類型能否轉(zhuǎn)授權(quán)DBAU1關(guān)系StudentDBAU2關(guān)系StudentDBAU2關(guān)系CourseDBAU3關(guān)系StudentDBAU3關(guān)系CourseDBAPUBLIC關(guān)系SCDBAU4關(guān)系StudentDBAU4屬性列Student.SnoDBAU5關(guān)系SCU5U6關(guān)系SCU6U7關(guān)系SC授權(quán)與回收(續(xù))二、REVOKEREVOKE語(yǔ)句的一般格式為:

REVOKE<權(quán)限>[,<權(quán)限>]...

[ON<對(duì)象類型><對(duì)象名>]

FROM<用戶>[,<用戶>]...;授予的權(quán)限可以由DBA或其他授權(quán)者用REVOKE語(yǔ)句收回27REVOKE(續(xù))[例8]把用戶U4修改學(xué)生學(xué)號(hào)的權(quán)限收回

REVOKEUPDATE(Sno) ONTABLEStudent FROMU4;[例9]收回所有用戶對(duì)表SC的查詢權(quán)限

REVOKESELECT ONTABLESC FROMPUBLIC;28REVOKE(續(xù))[例10]把用戶U5對(duì)SC表的INSERT權(quán)限收回

REVOKEINSERT ONTABLESC FROMU5CASCADE;將用戶U5的INSERT權(quán)限收回的時(shí)候必須級(jí)聯(lián)(CASCADE)收回系統(tǒng)只收回直接或間接從U5處獲得的權(quán)限

29樹(shù)倒猢猻散REVOKE(續(xù))

執(zhí)行[例8]到[例10]的語(yǔ)句后,學(xué)生-課程數(shù)據(jù)庫(kù)中的用戶權(quán)限定義表授權(quán)用戶名被授權(quán)用戶名數(shù)據(jù)庫(kù)對(duì)象名允許的操作類型能否轉(zhuǎn)授權(quán)DBAU1關(guān)系StudentDBAU2關(guān)系StudentDBAU2關(guān)系CourseDBAU3關(guān)系StudentDBAU3關(guān)系CourseDBAU4關(guān)系StudentDBA:擁有所有對(duì)象的所有權(quán)限不同的權(quán)限授予不同的用戶用戶:擁有自己建立的對(duì)象的全部的操作權(quán)限GRANT:授予其他用戶被授權(quán)的用戶“繼續(xù)授權(quán)”許可:再授予所有授予出去的權(quán)力在必要時(shí)又都可用REVOKE語(yǔ)句收回31授權(quán)與回收(續(xù))三、創(chuàng)建數(shù)據(jù)庫(kù)模式的權(quán)限D(zhuǎn)BA在創(chuàng)建用戶時(shí)實(shí)現(xiàn)CREATEUSER語(yǔ)句格式

CREATEUSER<username>

[WITH][DBA|RESOURCE|CONNECT]授權(quán)與回收(續(xù))擁有的權(quán)限可否執(zhí)行的操作CREATEUSERCREATESCHEMACREATETABLE登錄數(shù)據(jù)庫(kù)執(zhí)行數(shù)據(jù)查詢和操縱DBA可以可以可以可以RESOURCE不可以不可以可以可以CONNECT不可以不可以不可以可以,但必須擁有相應(yīng)權(quán)限權(quán)限與可執(zhí)行的操作對(duì)照表

5.1.2數(shù)據(jù)庫(kù)安全性控制用戶標(biāo)識(shí)與鑒別存取控制自主存取控制方法授權(quán)與回收數(shù)據(jù)庫(kù)角色34數(shù)據(jù)庫(kù)角色數(shù)據(jù)庫(kù)角色:被命名的一組與數(shù)據(jù)庫(kù)操作相關(guān)的權(quán)限角色是權(quán)限的集合可以為一組具有相同權(quán)限的用戶創(chuàng)建一個(gè)角色簡(jiǎn)化授權(quán)的過(guò)程35數(shù)據(jù)庫(kù)角色一、角色的創(chuàng)建CREATEROLE<角色名>二、給角色授權(quán)

GRANT<權(quán)限>[,<權(quán)限>]…ON<對(duì)象類型>對(duì)象名

TO<角色>[,<角色>]…36數(shù)據(jù)庫(kù)角色三、將一個(gè)角色授予其他的角色或用戶GRANT<角色1>[,<角色2>]…TO<角色3>[,<用戶1>]…[WITHADMINOPTION]四、角色權(quán)限的收回REVOKE<權(quán)限>[,<權(quán)限>]…ON<對(duì)象類型><對(duì)象名>FROM<角色>[,<角色>]…37數(shù)據(jù)庫(kù)角色(續(xù))[例11]通過(guò)角色來(lái)實(shí)現(xiàn)將一組權(quán)限授予一個(gè)用戶。步驟如下:1.首先創(chuàng)建一個(gè)角色R1CREATEROLER1;2.然后使用GRANT語(yǔ)句,使角色R1擁有Student表的SELECT、UPDATE、INSERT權(quán)限

GRANTSELECT,UPDATE,INSERTONTABLEStudentTOR1;38數(shù)據(jù)庫(kù)角色(續(xù))3.將這個(gè)角色授予王平,張明,趙玲。使他們具有角色R1所包含的全部權(quán)限

GRANTR1TO王平,張明,趙玲;4.可以一次性通過(guò)R1來(lái)回收王平的這3個(gè)權(quán)限

REVOKER1FROM王平;39數(shù)據(jù)庫(kù)角色(續(xù))[例12]角色的權(quán)限修改

GRANTDELETEONTABLEStudentTOR1[例13]

REVOKESELECTONTABLEStudentFROMR1;40數(shù)據(jù)庫(kù)安全性5.1數(shù)據(jù)庫(kù)的安全性5.1.1計(jì)算機(jī)安全性概述5.1.2數(shù)據(jù)庫(kù)安全性控制5.1.3視圖機(jī)制5.1.4審計(jì)(Audit)41視圖機(jī)制把要保密的數(shù)據(jù)對(duì)無(wú)權(quán)存取這些數(shù)據(jù)的用戶隱藏起來(lái),對(duì)數(shù)據(jù)提供一定程度的安全保護(hù)

主要功能是提供數(shù)據(jù)獨(dú)立性,無(wú)法完全滿足要求間接實(shí)現(xiàn)了支持存取謂詞的用戶權(quán)限定義42視圖機(jī)制(續(xù))[例14]建立計(jì)算機(jī)系學(xué)生的視圖,把對(duì)該視圖的SELECT權(quán)限授于王平,把該視圖上的所有操作權(quán)限授于張明先建立計(jì)算機(jī)系學(xué)生的視圖CS_Student

CREATEVIEWCS_StudentASSELECT*FROMStudentWHERESdept='CS';43視圖機(jī)制(續(xù))在視圖上進(jìn)一步定義存取權(quán)限

GRANTSELECTONCS_StudentTO王平;GRANTALLPRIVILIGESONCS_StudentTO張明;44數(shù)據(jù)庫(kù)安全性5.1數(shù)據(jù)庫(kù)的安全性5.1.1計(jì)算機(jī)安全性概述5.1.2數(shù)據(jù)庫(kù)安全性控制5.1.3視圖機(jī)制5.1.4審計(jì)(Audit)45審計(jì)什么是審計(jì)審計(jì)日志(AuditLog)將用戶對(duì)數(shù)據(jù)庫(kù)的所有操作記錄在上面DBA利用審計(jì)日志找出非法存取數(shù)據(jù)的人、時(shí)間和內(nèi)容46審計(jì)(續(xù))審計(jì)分為用戶級(jí)審計(jì)針對(duì)自己創(chuàng)建的數(shù)據(jù)庫(kù)表或視圖進(jìn)行審計(jì)記錄所有用戶對(duì)這些表或視圖的一切成功和(或)不成功的訪問(wèn)要求以及各種類型的SQL操作系統(tǒng)級(jí)審計(jì)DBA設(shè)置監(jiān)測(cè)成功或失敗的登錄要求監(jiān)測(cè)GRANT和REVOKE操作以及其他數(shù)據(jù)庫(kù)級(jí)權(quán)限下的操作47審計(jì)(續(xù))AUDIT語(yǔ)句:設(shè)置審計(jì)功能NOAUDIT語(yǔ)句:取消審計(jì)功能48審計(jì)(續(xù))[例15]對(duì)修改SC表結(jié)構(gòu)或修改SC表數(shù)據(jù)的操作進(jìn)行審計(jì)

AUDITALTER,UPDATEONSC;[例16]取消對(duì)SC表的一切審計(jì)

NOAUDITALTER,UPDATEONSC;49數(shù)據(jù)庫(kù)安全性5.1數(shù)據(jù)庫(kù)的安全性5.1.1計(jì)算機(jī)安全性概述5.1.2數(shù)據(jù)庫(kù)安全性控制5.1.3視圖機(jī)制5.1.4審計(jì)(Audit)50練習(xí)數(shù)據(jù)庫(kù)的安全性是指保護(hù)數(shù)據(jù)庫(kù)以防止不合法的使用所造成的____________和____一起組成了DBMS的安全子系統(tǒng)計(jì)算機(jī)系統(tǒng)有三類安全性問(wèn)題,即____、____和______。一個(gè)DBA用戶可以擁有____、____和______權(quán)限,一個(gè)RESOURCE用戶可以擁有_____權(quán)限。審計(jì)一般可以分為_(kāi)___審計(jì)和_____審計(jì)。51第五章數(shù)據(jù)庫(kù)的安全性和完整性5.1數(shù)據(jù)庫(kù)的安全性5.2數(shù)據(jù)庫(kù)的完整性5.3小結(jié)52數(shù)據(jù)庫(kù)完整性數(shù)據(jù)庫(kù)的完整性數(shù)據(jù)的正確性和相容性數(shù)據(jù)的完整性和安全性是兩個(gè)不同概念數(shù)據(jù)的完整性防止數(shù)據(jù)庫(kù)中存在不符合語(yǔ)義的數(shù)據(jù),也就是防止數(shù)據(jù)庫(kù)中存在不正確的數(shù)據(jù)防范對(duì)象:不合語(yǔ)義的、不正確的數(shù)據(jù)數(shù)據(jù)的安全性保護(hù)數(shù)據(jù)庫(kù)防止惡意的破壞和非法的存取防范對(duì)象:非法用戶和非法操作53數(shù)據(jù)庫(kù)完整性(續(xù))為維護(hù)數(shù)據(jù)庫(kù)的完整性,DBMS必須:提供定義完整性約束條件的機(jī)制提供完整性檢查的方法違約處理54數(shù)據(jù)庫(kù)完整性5.2.1實(shí)體完整性5.2.2參照完整性5.2.3用戶定義的完整性5.2.4完整性約束命名子句5.2.5域中的完整性限制55實(shí)體完整性定義關(guān)系模型的實(shí)體完整性CREATETABLE中用PRIMARYKEY定義單屬性構(gòu)成的碼有兩種說(shuō)明方法定義為列級(jí)約束條件定義為表級(jí)約束條件對(duì)多個(gè)屬性構(gòu)成的碼只有一種說(shuō)明方法定義為表級(jí)約束條件

56實(shí)體完整性定義(續(xù))

(1)在列級(jí)定義主碼

CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,

SnameCHAR(20)NOTNULL,

SsexCHAR(2),

SageSMALLINT,

SdeptCHAR(20));[例1]將Student表中的Sno屬性定義為碼57實(shí)體完整性定義(續(xù))(2)在表級(jí)定義主碼

CREATETABLEStudent(SnoCHAR(9),

SnameCHAR(20)NOTNULL,

SsexCHAR(2),

SageSMALLINT,

SdeptCHAR(20),

PRIMARYKEY(Sno));58實(shí)體完整性定義(續(xù))CREATETABLESC

(SnoCHAR(9)NOTNULL,

CnoCHAR(4)NOTNULL,

GradeSMALLINT,

PRIMARYKEY(Sno,Cno)/*只能在表級(jí)定義主碼*/);[例2]將SC表中的Sno,Cno屬性組定義為碼59實(shí)體完整性檢查和違約處理插入或?qū)χ鞔a列進(jìn)行更新操作時(shí),RDBMS按照實(shí)體完整性規(guī)則自動(dòng)進(jìn)行檢查。包括:檢查主碼值是否唯一,如果不唯一則拒絕插入或修改檢查主碼的各個(gè)屬性是否為空,只要有一個(gè)為空就拒絕插入或修改60實(shí)體完整性檢查和違約處理(續(xù))檢查記錄中主碼值是否唯一的一種方法是進(jìn)行全表掃描61實(shí)體完整性檢查和違約處理(續(xù))另一個(gè)是索引

62數(shù)據(jù)庫(kù)完整性5.2.1實(shí)體完整性5.2.2參照完整性5.2.3用戶定義的完整性5.2.4完整性約束命名子句5.2.5域中的完整性限制63參照完整性定義關(guān)系模型的參照完整性定義在CREATETABLE中用FOREIGNKEY短語(yǔ)定義哪些列為外碼用REFERENCES短語(yǔ)指明這些外碼參照哪些表的主碼64參照完整性定義(續(xù))[例3]定義SC中的參照完整性

CREATETABLESC(SnoCHAR(9)NOTNULL,

CnoCHAR(4)NOTNULL,

GradeSMALLINT,

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

FOREIGNKEY(Sno)REFERENCESStudent(Sno),

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

FOREIGNKEY(Cno)REFERENCESCourse(Cno)

/*在表級(jí)定義參照完整性*/);例如,關(guān)系SC中一個(gè)元組表示一個(gè)學(xué)生選修的某門課程的成績(jī),(Sno,Cno)是主碼。Sno,Cno分別參照引用Student表的主碼和Course表的主碼65參照完整性檢查和違約處理可能破壞參照完整性的情況及違約處理被參照表(例如Student)參照表(例如SC)違約處理可能破壞參照完整性

插入元組可能破壞參照完整性

可能破壞參照完整性

可能破壞參照完整性66違約處理參照完整性違約處理拒絕(NOACTION)執(zhí)行默認(rèn)策略級(jí)聯(lián)(CASCADE)操作設(shè)置為空值(SET-NULL)對(duì)于參照完整性,除了應(yīng)該定義外碼,還應(yīng)定義外碼列是否允許空值67違約處理(續(xù))CREATETABLESC(SnoCHAR(9)NOTNULL,

CnoCHAR(4)NOTNULL,

GradeSMALLINT,

PRIMARYKEY(Sno,Cno),

FOREIGNKEY(Sno)REFERENCESStudent(Sno) ONDELETECASCADE/*級(jí)聯(lián)刪除SC表中相應(yīng)的元組*/ONUPDATECASCADE,/*級(jí)聯(lián)更新SC表中相應(yīng)的元組*/FOREIGNKEY(Cno)REFERENCESCourse(Cno) ONDELETENOACTION /*當(dāng)刪除course表中的元組造成了與SC表不一致時(shí)拒絕刪除*/ONUPDATECASCADE /*當(dāng)更新course表中的cno時(shí),級(jí)聯(lián)更新SC表中相應(yīng)的元組*/);[例4]顯式說(shuō)明參照完整性的違約處理示例68數(shù)據(jù)庫(kù)完整性5.2.1實(shí)體完整性5.2.2參照完整性5.2.3用戶定義的完整性5.2.4完整性約束命名子句5.2.5域中的完整性限制69用戶定義的完整性用戶定義的完整性就是針對(duì)某一具體應(yīng)用的數(shù)據(jù)必須滿足的語(yǔ)義要求RDBMS提供,而不必由應(yīng)用程序承擔(dān)70用戶定義的完整性屬性上的約束條件的定義屬性上的約束條件檢查和違約處理元組上的約束條件的定義元組上的約束條件檢查和違約處理71屬性上的約束條件的定義CREATETABLE時(shí)定義列值非空(NOTNULL)列值唯一(UNIQUE)檢查列值是否滿足一個(gè)布爾表達(dá)式(CHECK)72屬性上的約束條件的定義(續(xù))不允許取空值

[例5]在定義SC表時(shí),說(shuō)明Sno、Cno、Grade屬性不允許取空值。

CREATETABLESC

(SnoCHAR(9)NOTNULL,

CnoCHAR(4)NOTNULL,

GradeSMALLINTNOTNULL,

PRIMARYKEY(Sno,Cno),

/*如果在表級(jí)定義實(shí)體完整性,隱含了Sno,Cno不允許取空值,則在列級(jí)不允許取空值的定義就不必寫了*/

);73屬性上的約束條件的定義(續(xù))列值唯一[例6]建立部門表DEPT,要求部門名稱Dname列取值唯一,部門編號(hào)Deptno列為主碼

CREATETABLEDEPT(DeptnoNUMERIC(2),

DnameCHAR(9)UNIQUE,/*要求Dname列值唯一*/LocationCHAR(10),

PRIMARYKEY(Deptno));74屬性上的約束條件的定義(續(xù))

用CHECK短語(yǔ)指定列值應(yīng)該滿足的條件[例7]Student表的Ssex只允許取“男”或“女”。

CREATETABLEStudent(SnoCHAR(9)PRIMARYKEY,

SnameCHAR(8)NOTNULL,

SsexCHAR(2)CHECK(SsexIN(‘男’,‘女’))

,

/*性別屬性Ssex只允許取'男'或'女'*/SageSMALLINT,

SdeptCHAR(20));75用戶定義的完整性屬性上的約束條件的定義屬性上的約束條件檢查和違約處理元組上的約束條件的定義元組上的約束條件檢查和違約處理76屬性上的約束條件檢查和違約處理插入元組或修改屬性的值時(shí),RDBMS檢查屬性上的約束條件是否被滿足如果不滿足則操作被拒絕執(zhí)行77用戶定義的完整性屬性上的約束條件的定義屬性上的約束條件檢查和違約處理元組上的約束條件的定義元組上的約束條件檢查和違約處理78元組上的約束條件的定義在CREATETABLE時(shí)可以用CHECK短語(yǔ)定義元組上的約束條件,即元組級(jí)的限制同屬性值限制相比,元組級(jí)的限制可以設(shè)置不同屬性之間的取值的相互約束條件

79元組上的約束條件的定義(續(xù))CREATETABLEStudent

(SnoCHAR(9),

SnameCHAR(8)NOTNULL,

SsexCHAR(2),

SageSMALLINT,

SdeptCHAR(20),

PRIMARYKEY(Sno),

CHECK(Ssex='女'ORSnameNOTLIKE'Ms.%')/*定義了元組中Sname和Ssex兩個(gè)屬性值之間的約束條件*/);性別是女性的元組都能通過(guò)該項(xiàng)檢查,因?yàn)镾sex=‘女’成立;當(dāng)性別是男性時(shí),要通過(guò)檢查則名字一定不能以Ms.打頭[例9]當(dāng)學(xué)生的性別是男時(shí),其名字不能以Ms.打頭。80用戶定義的完整性屬性上的約束條件的定義屬性上的約束條件檢查和違約處理元組上的約束條件的定義元組上的約束條件檢查和違約處理81元組上的約束條件檢查和違約處理插入元組或修改屬性的值時(shí),RDBMS檢查元組上的約束條件是否被滿足如果不滿足則操作被拒絕執(zhí)行

82數(shù)據(jù)庫(kù)完整性5.2.1實(shí)體完整性5.2.2參照完整性5.2.3用戶定義的完整性5.2.4完整性約束命名子句5.2.5域中的完整性限制83完整性約束命名子句CONSTRAINT約束CONSTRAINT<完整性約束條件名>[PRIMARYKEY短語(yǔ)|FOREIGNKEY短語(yǔ)|CHECK短語(yǔ)]84完整性約束命名子句(續(xù))CREATETABLEStudent

(SnoNUMERIC(6)

CONSTRAINTC1CHECK(SnoBETWEEN90000AND99999),

SnameCHAR(20)

CONSTRAINTC2NOTNULL,

SageNUMERIC(3)

CONSTRAINTC3CHECK(Sage<30),

SsexCHAR(2)

CONSTRAINTC4CHECK(SsexIN('男','女')),

CONSTRAINTStudentKeyPRIMARYKEY(Sno));在Student表上建立了5

溫馨提示

  • 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)論