數(shù)據(jù)庫(kù)實(shí)用教程董健全丁寶康編著清華大學(xué)出版社第8章2.ppt_第1頁(yè)
數(shù)據(jù)庫(kù)實(shí)用教程董健全丁寶康編著清華大學(xué)出版社第8章2.ppt_第2頁(yè)
數(shù)據(jù)庫(kù)實(shí)用教程董健全丁寶康編著清華大學(xué)出版社第8章2.ppt_第3頁(yè)
數(shù)據(jù)庫(kù)實(shí)用教程董健全丁寶康編著清華大學(xué)出版社第8章2.ppt_第4頁(yè)
數(shù)據(jù)庫(kù)實(shí)用教程董健全丁寶康編著清華大學(xué)出版社第8章2.ppt_第5頁(yè)
已閱讀5頁(yè),還剩44頁(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)介

8.4 數(shù)據(jù)庫(kù)的完整性,8.4.1 完整性子系統(tǒng)和完整性規(guī)則 數(shù)據(jù)庫(kù)中完整性(Integrity)一詞是指數(shù)據(jù)的正確性、有效性和相容性,防止錯(cuò)誤的數(shù)據(jù)進(jìn)入數(shù)據(jù)庫(kù)。所謂正確性是指數(shù)據(jù)的合法性,譬如數(shù)值型數(shù)據(jù)中只能含數(shù)字而不能含字母;所謂有效性是指數(shù)據(jù)是否屬于所定義的有效范圍;所謂相容性是指表示同一事實(shí)的兩個(gè)數(shù)據(jù)應(yīng)相同,不一致就是不相容。,DDBMS必須提供一種功能來(lái)保證數(shù)據(jù)庫(kù)中數(shù)據(jù)是正確的,避免非法的不符合語(yǔ)義的錯(cuò)誤數(shù)據(jù)的輸入和輸出,即所謂“垃圾進(jìn)垃圾出”(Garbage In Garbage Out)所造成的無(wú)效操作和錯(cuò)誤操作。檢查數(shù)據(jù)庫(kù)中數(shù)據(jù)是否滿足規(guī)定的條件稱為“完整性檢查”。數(shù)據(jù)庫(kù)中數(shù)據(jù)應(yīng)該滿足的條件稱為“完整性約束條件”,有時(shí)也稱為完整性規(guī)則。 DBMS中執(zhí)行完整性檢查的子系統(tǒng)稱為“完整性子系統(tǒng)”。完整性子系統(tǒng)的主要功能有兩點(diǎn): (1)監(jiān)督事務(wù)的執(zhí)行,并測(cè)試是否違反完整性規(guī)則。,(2)若有違反現(xiàn)象,則采取恰當(dāng)?shù)牟僮?,譬如拒絕操作、報(bào)告違反情況、改正錯(cuò)誤等方法來(lái)處理。 完整性子系統(tǒng)是根據(jù)“完整性規(guī)則集”工作的。完整性規(guī)則集是由 DBA或應(yīng)用程序員事先向完整性子系統(tǒng)提供的有關(guān)數(shù)據(jù)約束的一組規(guī)則。 每個(gè)完整性規(guī)則應(yīng)由三部分組成: (1)什么時(shí)候使用規(guī)則進(jìn)行檢查(稱為規(guī)則的“觸發(fā)條件”)。 (2)要檢查什么樣的錯(cuò)誤(稱為“約束條件”或“謂詞”)。 (3)如果查出錯(cuò)誤,應(yīng)該怎么辦(稱為“ELSE子句”,即違反時(shí)要做的動(dòng)作)。,8.4.2 SQL中的完整性約束 SQL中把完整性約束分成三大類:域約束、基本表約束和斷言,下面分別介紹。 1域約束 SQL可以用“CREATE DOMAIN”語(yǔ)句定義新的域,并且還可出現(xiàn)CHECK 子句。 例8.10定義一個(gè)新的域COLOR.可用下列語(yǔ)句實(shí)現(xiàn): CREATE DOMAIN COLOR CHAR(6) DEFAULT ? CONSTRAINT VALID_COLORS CHECK(VALUE IN (Red,Yellow, Blue, Green, ?) ;,此處”CONSTRAINT VALIDCOLORS”表示為這個(gè)域約束起個(gè)名字 VALIDCOLORS 假定為基本表PART創(chuàng)建表: CREATE TABLE PART (, COLOR COLOR, ); 若用戶插入一個(gè)零件記錄時(shí)未提交顏色COLOR值那么顏色值將被默認(rèn)為“?”。若用戶輸入非法的顏色值,則操作失敗,系統(tǒng)將產(chǎn)生一個(gè)約束名為VALIDCOLORS的診斷信息。 通常,SQL允許域約束上的CHECK子句中可以有任意復(fù)雜的條件表達(dá)式。,2基本表約束 SQL的基本表約束主要有三種形式:候選鍵定義、外鍵定義和“檢查約束”定義。這些定義都可以在前面加“CONSTRAINT ”,由此為新約束起個(gè)名字。為簡(jiǎn)化,下面都將忽視這一選項(xiàng)。 (1)候選鍵的定義 候選鍵的定義形式為: UNIQUE(列名序列)或 PRIMAR KEY(列名序列),實(shí)際上 UNIQUE方式定義了表的候選鍵,但只表示了值是惟一的,值非空還需在列定義時(shí)帶有選項(xiàng) NOT NULL。 PRIMARY方式定義了表的主鍵,一個(gè)基本表只能指定一個(gè)主鍵。當(dāng)是主鍵時(shí),指定的列會(huì)自動(dòng)被認(rèn)為是非空的。 (2)外鍵的定義 外鍵的定義形式為: FOREIGN KEY(列名序列) REFERENES 參照表(列名序列) ON DELETE 參照動(dòng)作 ON UPDATE 參照動(dòng)作,此處,第一個(gè)列名序列是外鍵第二個(gè)列名序列是參照表中的主鍵或候選鍵。參照動(dòng)作可以有5種方式:NO ACTION(默認(rèn))、CASCADE、RESTRICT、SET NULL或SET DEFAULT 在實(shí)際應(yīng)用中,作為主鍵的關(guān)系稱為參照表,作為外鍵的關(guān)系稱為依賴表。 對(duì)參照表的刪除操作和修改主鍵值的操作,會(huì)對(duì)依賴關(guān)系產(chǎn)生的影響由參照動(dòng)作決定。,刪除參照表中元組時(shí)的考慮 如果要?jiǎng)h除參照表的某個(gè)元組(即要?jiǎng)h除一個(gè)主鍵值),那么對(duì)依賴表有什么影響,由參照動(dòng)作決定: NO ACTION方式:對(duì)依賴表沒(méi)有影響。 CASCADE方式:將依賴表中所有外鍵值與參照表中要?jiǎng)h除的主鍵值相對(duì)應(yīng)的元組一起刪除。 RESTRICT方式:只有當(dāng)依賴表中沒(méi)有一個(gè)外鍵值與要?jiǎng)h除的參照表中主鍵值相對(duì)應(yīng)時(shí),系統(tǒng)才能執(zhí)行刪除操作,否則拒絕此刪除操作。,SET NULL方式:刪除參照表中元組時(shí),將依賴表中所有與參照表中被刪主鍵值相對(duì)應(yīng) 的外鍵值均置為空值。 SET DEFAULT方式:與上述 SET NULL方式類似,只是把外鍵值均置為預(yù)先定義好的默認(rèn)值。 對(duì)于這五種方式,選擇哪一種,要視應(yīng)用環(huán)境而定。 修改參照表中主鍵值時(shí)的考慮 如果要修改參照表的某個(gè)主鍵值時(shí),那么對(duì)依賴關(guān)系的影響將由下列參照動(dòng)作決定: NO ACTION:對(duì)依賴表沒(méi)有影響。,CASCADE方式:將依賴表中與參照表中要修改的主鍵值相對(duì)應(yīng)的所有外鍵值一起修改。 RESTRICT方式:只有當(dāng)依賴表中沒(méi)有外鍵值與參照表中要修改的主鍵值相對(duì)應(yīng)時(shí),系 統(tǒng)才能修改參照表中的主鍵值,否則拒絕此修改操作。 SET NULL方式:修改參照表中主鍵值時(shí),將依賴表中所有與這個(gè)主鍵值相對(duì)應(yīng)的外鍵 值均置為空值。 SET DEFAULT方式:與上述 SET NULL方式類似,只是把外鍵值均置為預(yù)先定義好的默認(rèn)值。 對(duì)于這五種方式,選擇哪一種也要視應(yīng)用環(huán)境而定。,(3)“檢查約束”的定義 這種約束是對(duì)單個(gè)關(guān)系的元組值加以約束。方法是在關(guān)系定義中的任何所需地方加上關(guān)鍵字CHECK和約束的條件: CHECK(條件表達(dá)式) 在條件中還可提及本關(guān)系的其他元組或其他關(guān)系的元組。這個(gè)子句也稱為檢查子句。 這種約束在插入元組或修改元組時(shí),系統(tǒng)要測(cè)試新的元組值是否滿足條件。如果新的元組值不滿足檢查約束中的條件,那么系統(tǒng)將拒絕這個(gè)插入操作或修改操作。,下面若干例子還是針對(duì)教學(xué)數(shù)據(jù)庫(kù)中的關(guān)系: 學(xué)生關(guān)系 S(SNO,SNAME,AGE,SEX,SDEPT) 選課關(guān)系 SC(SN,CNO,GRADE) 課程關(guān)系 C(CN,CNAME,CDEPT,TNAME) 例8.11在教學(xué)數(shù)據(jù)庫(kù)中,如果要求學(xué)生關(guān)系S中存儲(chǔ)的學(xué)生信息滿足下列條件:男同學(xué)的年齡應(yīng)在 1535歲之間,女同學(xué)的年齡應(yīng)在 1530歲之間,那么可在關(guān)系 S的定義中加入一個(gè)檢查子句: CHECK(AGE=15 AND (SEX=男AND AGE=35) OR(SEX=女AND AGE=30);,雖然檢查子句中條件可以很復(fù)雜,也能表示許多復(fù)雜的約束,但是有可能產(chǎn)生違反約束的現(xiàn)象。這是因?yàn)闄z查子句只對(duì)定義它的關(guān)系R1起約束作用,而對(duì)條件中提及的其他關(guān)系R2(R2很可能就是R1本身)不起約束作用。此時(shí)在R2中插入或修改元組時(shí)產(chǎn)生的新元組,有可能使檢查子句中的條件值為假,而系統(tǒng)對(duì)此無(wú)能為力。下例說(shuō)明了這個(gè)問(wèn)題。,例8.12在關(guān)系SC的定義中,參照完整性也可以 不用外鍵子句定義,而用檢查子句定義: CREATE TABLE SC ( SNO CHAR(4), CNO CHAR(4), GRADE SMALLINT, PRIMY KEY(SNO,CNO), CHECK(SNO IN(SELECT SNO FROM S ), CHECK(CNOIN(SELECT CNO FROM C);,此時(shí)可得到下面三種情況: 在關(guān)系SC中插入一個(gè)元組,如果CNO值在關(guān)系C中不存在,那么系統(tǒng)將拒絕這個(gè)插入操作。 在關(guān)系SC中插入一個(gè)元組,如果SNO值在關(guān)系S中不存在,那么系統(tǒng)將拒絕這個(gè)插入操作。 在關(guān)系S中刪除一個(gè)元組,這個(gè)操作將與關(guān)系SC中的檢查子句無(wú)關(guān)。如果此時(shí)關(guān)系SC中存在被刪學(xué)生的選課元組時(shí),關(guān)系SC將出現(xiàn)違反檢查子句中條件的情況。,最后一種情況是我們不希望發(fā)生的,但系統(tǒng)無(wú)法排除。 從上例可以看出,檢查子句中的條件盡可能不要涉及其他關(guān)系,應(yīng)盡量利用外鍵子句或下面提到的“斷言”來(lái)定義完整性約束。 3斷言 如果完整性約束牽涉面較廣,與多個(gè)關(guān)系有關(guān),或者與聚合操作有關(guān),那么SQL2提供“斷言”(Assertions)機(jī)制讓用戶書寫完整性約束。,斷言可以像關(guān)系一樣,用CREATE語(yǔ)句定義,其句法如下: CREATE ASSERTION 斷言名 CHECK(條件) 這里條件與SELECT語(yǔ)句中WHERE子句中的條件表達(dá)式一樣。 撤消斷言的句法是: DROP ASSERTION 斷言名 但是撤消斷言的句法中不提供 RESTRICT和 CASCADE選項(xiàng)。,例8.13在教學(xué)數(shù)據(jù)庫(kù)的關(guān)系S,SC,C中,可以用斷言來(lái)寫出完整性約束。 每位教師開(kāi)設(shè)的課程不能超過(guò)10門。 CREATE ASSERTION ASSE1 CHECK ( 10= ALL(SELECT COUNT(CNO) FROM C GROUP BY TNAME );,不允許男同學(xué)選修WU老師的課程。 CREATE ASSERTION ASSE2 CHECK (NOT EXISTS (SELECT * FROM SC WHERE CNO IN(SELECT CNO FROM C WHERE TEACHER=WU) AND SNO IN ( SELECT SNO FROM S WHERE SEX=男 );,每門課程最多50名男學(xué)生選修 CREATE ASSERTION ASSE3 CHECK (50 = ALL( SELECT COUNT( SCSNO) FROM S, SC WHERE S.SNO=SC.SNO AND SEX=男 GROUP BY CNO); 有時(shí),斷言也可以在關(guān)系定義中用檢查子句形式定義,但是檢查子句不一定能保證完整性約束徹底實(shí)現(xiàn),而斷言能保證不出差錯(cuò)。,8.4.3 SQL3 的觸發(fā)器 前面提到的一些約束機(jī)制,屬于被動(dòng)的約束機(jī)制。在檢查出對(duì)數(shù)據(jù)庫(kù)的操作違反約束后,只能做些比較簡(jiǎn)單的動(dòng)作,譬如拒絕操作。比較復(fù)雜的操作還需要由程序員去安排。如果我們希望在某個(gè)操作后,系統(tǒng)能自動(dòng)根據(jù)條件轉(zhuǎn)去執(zhí)行各種操作,甚至執(zhí)行與原操作無(wú)關(guān)的一些操作,那么這種設(shè)想可以用SQL3中的觸發(fā)器機(jī)制實(shí)現(xiàn)。,1觸發(fā)器結(jié)構(gòu) 定義9.8 觸發(fā)器(Trigger)是一個(gè)能由系統(tǒng)自動(dòng)執(zhí)行對(duì)數(shù)據(jù)庫(kù)修改的語(yǔ)句。觸發(fā)器有時(shí)也稱為主動(dòng)規(guī)則(Active Rule)或事件條件動(dòng)作規(guī)則(EventConditionActionRuleECA規(guī)則)。 一個(gè)觸發(fā)器由三部分組成: (1)事件。事件是指對(duì)數(shù)據(jù)庫(kù)的插入、刪除、修改等操作。觸發(fā)器在這些事件發(fā)生時(shí),將開(kāi)始工作。,(2)條件。觸發(fā)器將測(cè)試條件是否成立。如果條件成立,就執(zhí)行相應(yīng)的動(dòng)作,否則什么也不做。 (3)動(dòng)作。如果觸發(fā)器測(cè)試滿足預(yù)定的條件,那么就由 DBMS執(zhí)行這些動(dòng)作(即對(duì)數(shù)據(jù)庫(kù)的操作)。這些動(dòng)作能使觸發(fā)事件不發(fā)生,即撤消事件,例如刪除一插入的元組等。這些動(dòng)作也可以是一系列對(duì)數(shù)據(jù)庫(kù)的操作,甚至可以是與觸發(fā)事件本身無(wú)關(guān)的其他操作。,2SQL3的觸發(fā)器實(shí)例 先舉例說(shuō)明 SQL3觸發(fā)器的定義,然后解釋觸發(fā)器的結(jié)構(gòu)。 例8.14下面是應(yīng)用于選課關(guān)系 SC的一個(gè)觸發(fā)器。這個(gè)觸發(fā)器規(guī)定,在修改關(guān)系 SC的成績(jī)值時(shí),要求修改后的成績(jī)一定不能比原來(lái)的低,否則就拒絕修改。該觸發(fā)器的程序如下: CREATE TRIGGER TRIG1 AFTER UPDATE OF GRADE ON SC REFERENCING OLD AS OLDTUPLE ,NEW AS NEWTUPLE WHEN(OLDTUPLGRADE NEWTUPLEGRADE) UPDATE SC SETGRADEOLDTUPLEGRADE WHERE CNONEWTUPLECNO FOR EACH ROW 第行說(shuō)明觸發(fā)器的名字為TRIG1。第行給出觸發(fā)事件,即對(duì)關(guān)系SC的成績(jī)值修改后激活觸發(fā)器。,第行為觸發(fā)器的條件和動(dòng)作部分設(shè)置必要的元組變量,OLDTUPLE和NEWTUPLE分別為修改前、后的元組變量。 第行是觸發(fā)器的條件部分。這里,如果修改后的值比修改前的值小,那么必須恢復(fù)修改前的值。 第行是觸發(fā)器的動(dòng)作部分。這里是SQL的修改語(yǔ)句。這個(gè)語(yǔ)句的作用是恢復(fù)修改前的舊值。 第行表示觸發(fā)器對(duì)每一個(gè)修改的元組都要檢查一次。如果默認(rèn),表示觸發(fā)器對(duì)SQL語(yǔ)句的執(zhí)行結(jié)果只檢查一次。,3觸發(fā)器結(jié)構(gòu)的組成說(shuō)明 這里較詳細(xì)地介紹觸發(fā)器的構(gòu)成。 (1)觸發(fā)事件中的時(shí)間關(guān)鍵字有三種。 AFTER:在觸發(fā)事件完成以后,測(cè)試WHEN條件是否滿足,若滿足則執(zhí)行動(dòng)作部分的操作。 BEFORE:在觸發(fā)事件進(jìn)行以前,測(cè)試WHEN條件是否滿足。若滿足則先執(zhí)行動(dòng)作部分的操作,然后再執(zhí)行觸發(fā)事件的操作(此時(shí)可不管WHEN條件是否滿足)。,INSTEAD OF:在觸發(fā)事件發(fā)生時(shí)。只要滿足 WHEN條件,就執(zhí)行動(dòng)作部分的操作,而觸發(fā)事件的操作不再執(zhí)行。 (2)觸發(fā)事件有三類:UPDATE、DELETE和INSERT。在UPDATE時(shí),允許后面跟“OF屬性表”短語(yǔ)。在其他兩種情況時(shí),是對(duì)整個(gè)元組的操作,不允許后面跟“OF屬性表”短語(yǔ)。,(3)動(dòng)作部分可以只有一個(gè) SQL語(yǔ)句,也可以有多個(gè) SQL語(yǔ)句,語(yǔ)句之間用分號(hào)隔開(kāi)。 (4)如果觸發(fā)事件是 UPDATE,那么應(yīng)該用“OLD AS”和“NEW AS”子句定義修改前后的元組變量。如果是 DELETE,那么只要用“OLD AS”子句定義元組變量。如果是 INSERT,那么只要用“NEW AS”子句定義元組變量。,(5)觸發(fā)器有兩類:元組級(jí)觸發(fā)器和語(yǔ)句級(jí)觸發(fā)器。兩者的差別是前者帶“FOR EACH ROW”子句,而后者沒(méi)有;前者對(duì)每一個(gè)修改的元組都要檢查一次,而后者對(duì) SQL語(yǔ)句的執(zhí)行結(jié)果去檢查。 在語(yǔ)句級(jí)觸發(fā)器,不能直接引用修改前后的元組,但可以引用修改前后的元組集。舊的元組集由被刪除的元組或被修改元組的舊值組成,而新的元組集由插入的元組或被修改元組的新值組成。,8.5 數(shù)據(jù)庫(kù)的安全性 8.5.1 安全性級(jí)別 數(shù)據(jù)庫(kù)的安全性(Security)是指保護(hù)數(shù)據(jù)庫(kù),防止不合法的使用,以免數(shù)據(jù)的泄密、更改或破壞。對(duì)數(shù)據(jù)庫(kù)不合法的使用,稱為數(shù)據(jù)庫(kù)的濫用。數(shù)據(jù)庫(kù)的濫用可分為無(wú)意的和惡意的兩類。 無(wú)意的濫用是指系統(tǒng)故障、并發(fā)操作帶來(lái)的錯(cuò)誤,違反數(shù)據(jù)完整性約束的邏輯錯(cuò)誤。,惡意的濫用是指未經(jīng)授權(quán)的讀數(shù)據(jù)(即偷竊信息);未經(jīng)授權(quán)的修改數(shù)據(jù)(即破壞數(shù)據(jù))。 一般,數(shù)據(jù)庫(kù)的完整性是指盡可能避免對(duì)數(shù)據(jù)庫(kù)無(wú)意的濫用;數(shù)據(jù)庫(kù)的安全性是指盡可能避免對(duì)數(shù)據(jù)庫(kù)惡意的濫用。為了保護(hù)數(shù)據(jù)庫(kù),防止惡意的濫用,可以在從低到高的五個(gè)級(jí)別上設(shè)置各種安全措施。 (1)環(huán)境級(jí):計(jì)算機(jī)系統(tǒng)的機(jī)房和設(shè)備應(yīng)加以保護(hù),防止有人進(jìn)行物理破壞。 (2)職員級(jí):工作人員應(yīng)清正廉潔,正確授予用戶訪問(wèn)數(shù)據(jù)庫(kù)的權(quán)限。,(3)OS級(jí):應(yīng)防止未經(jīng)授權(quán)的用戶從OS處著手訪問(wèn)數(shù)據(jù)庫(kù)。 (4)網(wǎng)絡(luò)級(jí):由于大多數(shù)DBS都允許用戶通過(guò)網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程訪問(wèn),因此網(wǎng)絡(luò)軟件內(nèi)部的安全性是很重要的。 (5)DBS級(jí):DBS的職責(zé)是檢查用戶的身份是否合法及使用數(shù)據(jù)庫(kù)的權(quán)限是否正確。 上述環(huán)境級(jí)和職員級(jí)的安全性問(wèn)題屬于社會(huì)倫理道德問(wèn)題,不是本教材的內(nèi)容。OS的安全性從口令到并發(fā)處理的控制,以及文件系統(tǒng)的安全,都屬于 OS的內(nèi)容。網(wǎng)絡(luò)級(jí)的安全性措施已在國(guó)際電子商務(wù)中廣泛應(yīng)用,屬于網(wǎng)絡(luò)教材中的內(nèi)容。下面主要介紹關(guān)系數(shù)據(jù)庫(kù)的安全性措施。,8.5.2 權(quán) 限 用戶(或應(yīng)用程序)使用數(shù)據(jù)庫(kù)的方式稱為“權(quán)限”(Authorization)。權(quán)限有下列幾種: (1)讀(Read)權(quán)限:允許用戶讀數(shù)據(jù),但不能修改數(shù)據(jù)。 (2)插入(Insert)權(quán)限:允許用戶插入新的數(shù)據(jù),但不能修改數(shù)據(jù)。 (3)修改(Update)權(quán)限:允許用戶修改數(shù)據(jù),但不能刪除數(shù)據(jù)。 (4)刪除(Delete)權(quán)限:允許用戶刪除數(shù)據(jù)。,根據(jù)需要,可以授給用戶上述權(quán)限中的一個(gè)或多個(gè),也可以不授予上述任何一個(gè)權(quán)限。 除了訪問(wèn)數(shù)據(jù)的權(quán)限,系統(tǒng)還提供給用戶修改數(shù)據(jù)庫(kù)模式的權(quán)限: (1)索引(Index)權(quán)限:允許用戶創(chuàng)建和刪除索引。 (2)資源(Resource)權(quán)限:允許用戶創(chuàng)建新的關(guān)系。 (3)修改(Alteration)權(quán)限:允許用戶在關(guān)系結(jié)構(gòu)中加入或刪除屬性。 (4)撤消(Drop)權(quán)限:允許用戶撤消關(guān)系。,8.5.3 SQL中的安全性機(jī)制 SQL中有兩個(gè)機(jī)制提供了安全性:一是視圖機(jī)制,它可以用來(lái)對(duì)無(wú)權(quán)用戶屏蔽數(shù)據(jù);二是授權(quán)子系統(tǒng),它允許有特定存取權(quán)的用戶有選擇地和動(dòng)態(tài)地把這些權(quán)限授予其他用戶。 1視圖 視圖(View)是從一個(gè)或多個(gè)基本表導(dǎo)出的表。但視圖僅是一個(gè)定義,視圖本身沒(méi)有數(shù)據(jù)不占磁盤空間。,視圖一經(jīng)定義就可以和基本表一樣被查詢,也可以用來(lái)定義新的視圖,但更新(插、刪、改)操作將有一定限制。這已在第4章444節(jié)介紹過(guò)。 視圖機(jī)制使系統(tǒng)具有三個(gè)優(yōu)點(diǎn):數(shù)據(jù)安全性、邏輯數(shù)據(jù)獨(dú)立性和操作簡(jiǎn)便性。 用戶只能使用視圖定義中的數(shù)據(jù),而不能使用視圖定義外的其他數(shù)據(jù),從而保證了數(shù)據(jù)安全性。,2SQL2中的用戶權(quán)限及其操作 (1)用戶權(quán)限 SQL2定義了六類權(quán)限供用戶選擇使用: SELECT INSERT DELETE UPDATE REFERENCES USAGE 前四類權(quán)限分別允許用戶對(duì)關(guān)系或視圖執(zhí)行查、插、刪、修操作。 REFERENCES權(quán)限允許用戶定義新關(guān)系時(shí),引用其他關(guān)系的主鍵作為外鍵。 USAGE權(quán)限允許用戶使用已定義的域。,(2)授權(quán)語(yǔ)句 授予其他用戶使用關(guān)系和視圖的權(quán)限的語(yǔ)句格式如下: GRANT 權(quán)限表 ON 數(shù)據(jù)庫(kù)元素 TO 用戶名表 WITH GRANT OPTION 這里權(quán)限表中的權(quán)限可以是前面提到的六種權(quán)限。如果權(quán)限表中包括全都六種權(quán)限,那么可用關(guān)鍵字“ALL PRIVILEGES”代替。數(shù)據(jù)庫(kù)元素可以是關(guān)系、視圖或域,但是在域名前要加關(guān)鍵字 DOMAIN。短語(yǔ)WITH GRANT OPTION表示獲得權(quán)限的用戶處能獲得傳遞權(quán)限,把獲得的權(quán)限轉(zhuǎn)授給其他用戶。,例8.15 下面有若干授權(quán)語(yǔ)句: GRANT SELECT,UPDATE ON S TO WANG WITH GRANT OPTION 該語(yǔ)句把對(duì)關(guān)系S的咨詢、修改權(quán)限授給用戶WANG,并且WANG還可以把這些權(quán)限轉(zhuǎn)授給其他用戶。 GRANT INSERT(SNO,CNO)ON SC TO LOU WITH GRANT OPTION 該話句把對(duì)關(guān)系SC的插入(只能插入SNO,CNO值)權(quán)限授給用戶LOU,同時(shí)LOU還獲得了轉(zhuǎn)授權(quán)。,GRANT UPDATE(GRADE)ON SC TO WEN 該語(yǔ)句把對(duì)關(guān)系SC的成績(jī)修改權(quán)限授給用戶WEN GRANT REFERENCES(CNO)ON C TO BAO WITH GRANT OPTION 該語(yǔ)句允許用戶BAO建立新關(guān)系時(shí),可以引用關(guān)系C的主鍵CNO作為新關(guān)系的外鍵,并有轉(zhuǎn)讓權(quán)限。 GRANT USAGE ON DOMAIN AGE TO CHEN 該語(yǔ)句將允許用戶CHEN使用已定義過(guò)的域AGE。 在授權(quán)語(yǔ)句中,關(guān)鍵字PUBLIC表示系統(tǒng)中所有目前的和將來(lái)可能出現(xiàn)的所有用戶。,(3)回收語(yǔ)句 如果用戶Ui已經(jīng)將權(quán)限P授予其他用戶,那么用戶Ui隨后也可以用回收語(yǔ)句REVOKE從其他用戶回收權(quán)限P。回收語(yǔ)句格式如下: REVOKE 權(quán)限表 ON 數(shù)據(jù)庫(kù)元素 FROM 用戶名表 RESTRICT | CASCADE 該語(yǔ)句中帶CASCADE,表示回收權(quán)限時(shí)要引起連鎖回收。即用戶Ui從用戶Uj回收權(quán)限時(shí),要把用戶Uj轉(zhuǎn)授出去的同樣的權(quán)限同時(shí)回收。如果語(yǔ)句中帶RESTRICT。則當(dāng)不存在連鎖回收現(xiàn)象時(shí),才能回收權(quán)限,否則系統(tǒng)拒絕回收。 另外,回收語(yǔ)句中“REVOKE”可用“REVOKE GRANT OPTION FOR”代替,其意思是回收轉(zhuǎn)授出去的轉(zhuǎn)讓權(quán)限,而不是回收轉(zhuǎn)授出去的權(quán)限。,例 8.16下面有若干權(quán)限回收語(yǔ)句: REVOKE SELECT,UPDATE ON S FROM WAN CASCADE 該語(yǔ)句表示從用戶WANG回收對(duì)關(guān)系S的查詢、修改權(quán)限,并且是連鎖回收。 REVOKE INSERT(SNO,CNO)ON SC FROM ZHAN RESTRICT 如果ZHANG已把獲得的插入權(quán)限轉(zhuǎn)授給其他用戶,那么上述回收語(yǔ)句執(zhí)行失敗,否則回收成功。 REVOKE GRANT OPTION FOR REFERENCES(CNO)ON C FROM BAO 該語(yǔ)句從用戶 BAO回收對(duì)關(guān)系 C中主鍵 CNO引用的轉(zhuǎn)授權(quán)。,8.5.4 數(shù) 據(jù) 加 密 為了更好地保證數(shù)據(jù)庫(kù)的

溫馨提示

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