《數(shù)據(jù)庫系統(tǒng)概論》第四版課后習(xí)題答案.doc
《《數(shù)據(jù)庫系統(tǒng)概論》第四版課后習(xí)題答案.doc》由會員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫系統(tǒng)概論》第四版課后習(xí)題答案.doc(20頁珍藏版)》請在裝配圖網(wǎng)上搜索。
______________________________________________________________________________________________________________ 第1章 緒論 1 .試述數(shù)據(jù)、數(shù)據(jù)庫、數(shù)據(jù)庫系統(tǒng)、數(shù)據(jù)庫管理系統(tǒng)的概念。 答: ( l )數(shù)據(jù)( Data ) :描述事物的符號記錄稱為數(shù)據(jù)。數(shù)據(jù)是數(shù)據(jù)庫中存儲的基本對象。 ( 2 )數(shù)據(jù)庫( DataBase ,簡稱 DB ) :數(shù)據(jù)庫是長期儲存在計算機(jī)內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲存,具有較小的冗余度、較高的數(shù)據(jù)獨立性和易擴(kuò)展性,并可為各種用戶共享。 ( 3 )數(shù)據(jù)庫系統(tǒng)( DataBas 。 Sytem ,簡稱 DBS ) :數(shù)據(jù)庫系統(tǒng)是指在計算機(jī)系統(tǒng)中引入數(shù)據(jù)庫后的系統(tǒng)構(gòu)成,一般由數(shù)據(jù)庫、數(shù)據(jù)庫管理系統(tǒng)(及其開發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫管理員構(gòu)成。 ( 4 )數(shù)據(jù)庫管理系統(tǒng)( DataBase Management sytem ,簡稱 DBMs ) :數(shù)據(jù)庫管理系統(tǒng)是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件,用于科學(xué)地組織和存儲數(shù)據(jù)、高效地獲取和維護(hù)數(shù)據(jù)。 5 .試述數(shù)據(jù)庫系統(tǒng)的特點。 答: 數(shù)據(jù)庫系統(tǒng)的主要特點有: ( l)數(shù)據(jù)結(jié)構(gòu)化 數(shù)據(jù)庫系統(tǒng)實現(xiàn)整體數(shù)據(jù)的結(jié)構(gòu)化,這是數(shù)據(jù)庫的主要特征之一,也是數(shù)據(jù)庫系統(tǒng)與文件系統(tǒng)的本質(zhì)區(qū)別。 ( 2)數(shù)據(jù)的共享性高,冗余度低,易擴(kuò)充 ( 3 )數(shù)據(jù)獨立性高 數(shù)據(jù)獨立性包括數(shù)據(jù)的物理獨立性和數(shù)據(jù)的邏輯獨立性。 數(shù)據(jù)庫管理系統(tǒng)的模式結(jié)構(gòu)和二級映像功能保證了數(shù)據(jù)庫中的數(shù)據(jù)具有很高的物理獨立性和邏輯獨立性。 ( 4 )數(shù)據(jù)由 DBMS 統(tǒng)一管理和控制 DBMS 必須提供統(tǒng)一的數(shù)據(jù)控制功能, 包括數(shù)據(jù)的安全性保護(hù)、數(shù)據(jù)的完整性檢查、并發(fā)控制和數(shù)據(jù)庫恢復(fù)。 6 .?dāng)?shù)據(jù)庫管理系統(tǒng)的主要功能有哪些? 答:DBMS 的主要功能包括數(shù)據(jù)定義功能、數(shù)據(jù)組織、存儲和管理、數(shù)據(jù)操縱功能、數(shù)據(jù)庫的事務(wù)管理和運(yùn)行管理、數(shù)據(jù)庫的建立和維護(hù)功能。 9 .定義并解釋概念模型中以下術(shù)語:實體,實體型,實體集,屬性,碼,實體聯(lián)系圖( E 一 R 圖) 答: 實體:客觀存在并可以相互區(qū)分的事物。 實體型:具有相同屬性的實體具有相同的特征和性質(zhì),用實體名及其屬性名集合來抽象和刻畫同類實體 實體集:同型實體的集合稱為實體集。 屬性:實體所具有的某一特性,一個實體可由若干個屬性來刻畫。 碼:惟一標(biāo)識實體的屬性集稱為碼。 實體聯(lián)系圖( E 一 R 圖):提供了表示實體型、屬性和聯(lián)系的方法: 實體型:用矩形表示· 屬性:用橢圓形表示 聯(lián)系:用菱形表示, 12 . ;每個班有若干學(xué)生,每個學(xué)生選修若干課程,每門課可由若干學(xué)生選修。請用 E 一 R 圖畫出此學(xué)校的概念模型。 答: 13 .某工廠生產(chǎn)若干產(chǎn)品,每種產(chǎn)品由不同的零件組成,有的零件可用在不同的產(chǎn)品上。這些零件由不同的原材料制成,不同零件所用的材料可以相同。這些零件按所屬的不同產(chǎn)品分別放在倉庫中,原材料按照類別放在若干倉庫中。請用 E 一 R 圖畫出此工廠產(chǎn)品、零件、材料、倉庫的概念模型。 答: 18 .試述關(guān)系模型的概念,定義并解釋以下術(shù)語: ( l )關(guān)系( 2 )屬性( 3 )域( 4 )元組 ( 5 )主碼( 6 )分量( 7 )關(guān)系模式 答: 關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。 在用戶觀點下,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表,它由行和列組成。 ( l )關(guān)系:一個關(guān)系對應(yīng)通常說的一張表; ( 2 )屬性:表中的一列即為一個屬性; ( 3 )域:屬性的取值范圍; ( 4 )元組:表中的一行即為一個元組; ( 5 )主碼:表中的某個屬性組,它可以惟一確定一個元組; ( 6 )分量:元組中的一個屬性值; ( 7 )關(guān)系模式:對關(guān)系的描述,一般表示為關(guān)系名(屬性 1 ,屬性 2 , … ,屬性 n ) 20 .試述數(shù)據(jù)庫系統(tǒng)三級模式結(jié)構(gòu),這種結(jié)構(gòu)的優(yōu)點是什么? 答: 數(shù)據(jù)庫系統(tǒng)的三級模式結(jié)構(gòu)由外模式、模式和內(nèi)模式組成。 外模式,亦稱子模式或用戶模式,是數(shù)據(jù)庫用戶(包括應(yīng)用程序員和最終用戶)能夠看見和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。 模式,亦稱邏輯模式,是數(shù)據(jù)庫中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖。模式描述的是數(shù)據(jù)的全局邏輯結(jié)構(gòu)。外模式涉及的是數(shù)據(jù)的局部邏輯結(jié)構(gòu),通常是模式的子集。 內(nèi)模式,亦稱存儲模式,是數(shù)據(jù)在數(shù)據(jù)庫系統(tǒng)內(nèi)部的表示,即對數(shù)據(jù)的物理結(jié)構(gòu)和存儲方式的描述。 數(shù)據(jù)庫系統(tǒng)的三級模式是對數(shù)據(jù)的三個抽象級別,它把數(shù)據(jù)的具體組織留給 DBMs 管理,使用戶能邏輯抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計算機(jī)中的表示和存儲。為了能夠在內(nèi)部實現(xiàn)這三個抽象層次的聯(lián)系和轉(zhuǎn)換,數(shù)據(jù)庫系統(tǒng)在這三級模式之間提供了兩層映像:外模式/模式映像和模式/內(nèi)模式映像。正是這兩層映像保證了數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨立性和物理獨立性。 DDL :數(shù)據(jù)定義語言,用來定義數(shù)據(jù)庫模式、外模式、內(nèi)模式的語言。 DML :數(shù)據(jù)操縱語言,用來對數(shù)據(jù)庫中的數(shù)據(jù)進(jìn)行查詢、插入、刪除和修改的語句。 22 .什么叫數(shù)據(jù)與程序的物理獨立性?什么叫數(shù)據(jù)與程序的邏輯獨立性?為什么數(shù)據(jù)庫系統(tǒng)具有數(shù)據(jù)與程序的獨立性? 答: 數(shù)據(jù)與程序的邏輯獨立性:當(dāng)模式改變時(例如增加新的關(guān)系、新的屬性、改變屬性的數(shù)據(jù)類型等),由數(shù)據(jù)庫管理員對各個外模式/模式的映像做相應(yīng)改變,可以使外模式保持不變。應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫的,從而應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨立性,簡稱數(shù)據(jù)的邏輯獨立性。 數(shù)據(jù)與程序的物理獨立性:當(dāng)數(shù)據(jù)庫的存儲結(jié)構(gòu)改變了,由數(shù)據(jù)庫管理員對模式/內(nèi)模式映像做相應(yīng)改變,可以使模式保持不變,從而應(yīng)用程序也不必改變,保證了數(shù)據(jù)與程序的物理獨立性,簡稱數(shù)據(jù)的物理獨立性。 數(shù)據(jù)庫管理系統(tǒng)在三級模式之間提供的兩層映像保證了數(shù)據(jù)庫系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨立性和物理獨立性。 第2章 關(guān)系數(shù)據(jù)庫 1 .試述關(guān)系模型的三個組成部分。 答:關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。 3、 (1)域,笛卡爾積,關(guān)系,元祖,屬性 (2)主碼,候選碼,外部碼 主碼:若一個關(guān)系有多個候選碼,則選定其中一個為主碼 候選碼:若關(guān)系中的某一屬性組的值能夠唯一的標(biāo)識一個元組 外部碼: (3)關(guān)系模式,關(guān)系,關(guān)系數(shù)據(jù)庫 關(guān)系:關(guān)系是笛卡爾積的有限子集,是一個二維表 關(guān)系模式:是對關(guān)系的描述 關(guān)系數(shù)據(jù)庫:在一個給定的應(yīng)用領(lǐng)域中(關(guān)系模式),所有實體及實體之間的聯(lián)系(關(guān)系)的關(guān)系的集合構(gòu)成一個關(guān)系數(shù)據(jù)庫 關(guān)系模式是靜態(tài)的,關(guān)系是動態(tài)的,關(guān)系模式是型,關(guān)系是值,關(guān)系數(shù)據(jù)庫的值是這些關(guān)系模式在某一時刻對應(yīng)的關(guān)系的集合。 4 .試述關(guān)系模型的完整性規(guī)則。在參照完整性中,為什么外部碼屬性的值也可以為空?什么情況下才可以為空? 答:實體完整性規(guī)則是指若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值。 若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對于R中每個元組在F上的值必須為:或者取空值(F的每個屬性值均為空值);或者等于S中某個元組的主碼值。即屬性F本身不是主屬性,則可以取空值,否則不能取空值。 6.試述等值連接與自然連接的區(qū)別和聯(lián)系。? 答:連接運(yùn)算符是“=”的連接運(yùn)算稱為等值連接。它是從關(guān)系R與S的廣義笛卡爾積中選取A,B屬性值相等的那些元組? 自然連接是一種特殊的等值連接,它要求兩個關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉。?? 7.關(guān)系代數(shù)的基本運(yùn)算有哪些???如何用這些基本運(yùn)算來表示其他運(yùn)算??? 答:并、差、笛卡爾積、投影和選擇5種運(yùn)算為基本的運(yùn)算。其他3種運(yùn)算,即交、連接和除,均可以用這5種基本運(yùn)算來表達(dá)。? 第3章 關(guān)系數(shù)據(jù)庫標(biāo)準(zhǔn)語言SQL 3 .用 sQL 語句建立第二章習(xí)題 5 中的 4 個表。 答: 對于 S 表: S ( SNO , SNAME , STATUS , CITY ) ; 建 S 表: CREATE TABLE S ( Sno C(2) UNIQUE, Sname C(6) , Status C(2), City C(4)); 對于 P 表: P ( PNO , PNAME , COLOR , WEIGHT ); 建 P 表 : CREATE TABLE P (Pno C(2) UNIQUE, Pname C(6), COLOR C(2), WEIGHT INT); 對于 J 表: J ( JNO , JNAME , CITY) ; 建 J 表: CREATE TABLE J (Jno C(2) UNlQUE, JNAME C(8), CITY C(4)) 對于 sPJ 表: sPJ ( sNo , PNo , JNo , QTY) ; 建 SPJ 表:SPJ(SNO,PNO,JNO,QTY) CREATE TABLE SPJ (Sno C(2), Pno C(2), JNO C(2), QTY INT)) 4.針對上題中建立的 4 個表試用 sQL 語言完成第二章習(xí)題 5 中的查詢。 ( l )求供應(yīng)工程 Jl 零件的供應(yīng)商號碼 SNO ; SELECT DIST SNO FROM SPJ WHERE JNO=’J1’ ( 2 )求供應(yīng)工程 Jl 零件 Pl 的供應(yīng)商號碼 SNO ; SELECT DIST SNO FROM SPJ WHERE JNO='J1' AND PNO='P1' ( 3 )求供應(yīng)工程 Jl 零件為紅色的供應(yīng)商號碼 SNO ; SELECT SNO FROM SPJ,P WHERE JNO='J1' AND SPJ.PNO=P.PNO AND COLOR='紅' ( 4 )求沒有使用天津供應(yīng)商生產(chǎn)的紅色零件的工程號 JNO ; SELECT DIST JNO FROM SPJ WHERE JNO NOT IN (SELE JNO FROM SPJ,P,S WHERE S.CITY='天津' AND COLOR='紅' AND S.SNO=SPJ.SNO AND P.PNO=SPJ.PNO)。 ( 5 )求至少用了供應(yīng)商 Sl 所供應(yīng)的全部零件的工程號 JNO ; 由于VFP不允許子查詢嵌套太深,將查詢分為兩步 A、查詢S1供應(yīng)商供應(yīng)的零件號 SELECT DIST PNO FROM SPJ WHERE SNO='S1'結(jié)果是(P1,P2) B、查詢哪一個工程既使用P1零件又使用P2零件。 SELECT JNO FROM SPJ WHERE PNO='P1' AND JNO IN (SELECT JNO FROM SPJ WHERE PNO='P2') 5.針對習(xí)題3中的四個表試用SQL語言完成以下各項操作: (1)找出所有供應(yīng)商的姓名和所在城市。 SELECT SNAME,CITY FROM S (2)找出所有零件的名稱、顏色、重量。 SELECT PNAME,COLOR,WEIGHT FROM P (3)找出使用供應(yīng)商S1所供應(yīng)零件的工程號碼。 SELECT DIST JNO FROM SPJ WHERE SNO='S1' (4)找出工程項目J2使用的各種零件的名稱及其數(shù)量。 SELECT PNAME,QTY FROM SPJ,P WHERE P.PNO=SPJ.PNO AND SPJ.JNO='J2' (5)找出上海廠商供應(yīng)的所有零件號碼。 SELECT PNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND CITY='上海' (6)出使用上海產(chǎn)的零件的工程名稱。 SELECT JNAME FROM SPJ,S,J WHERE S.SNO=SPJ.SNO AND S.CITY='上海' AND J.JNO=SPJ.JNO (7)找出沒有使用天津產(chǎn)的零件的工程號碼。 注意: SELECT DISP JNO FROM SPJ WHERE JNO NOT IN (SELECT DIST JNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND S.CITY='天津') 適用于JNO是唯一或不唯一的情況. 注意: SELECT DIST JNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND S.CITY<>'天津'適用于JNO是唯一的情況 (8)把全部紅色零件的顏色改成藍(lán)色。 UPDATE P SET COLOR='藍(lán)' WHERE COLOR='紅' (9)由S5供給J4的零件P6改為由S3供應(yīng)。 UPDATE SPJ SET SNO='S3' WHERE SNO='S5' AND JNO='J4' AND PNO='P6' (10)從供應(yīng)商關(guān)系中刪除供應(yīng)商號是S2的記錄,并從供應(yīng)情況關(guān)系中刪除相應(yīng)的記錄。 A、DELETE FROM S WHERE SNO=’S2’ B、DELETE FROM SPJ WHERE SNO=‘S2’ (11)請將(S2,J6,P4,200)插入供應(yīng)情況關(guān)系。 INSERT INTO SPJ VALUES(‘S2’,‘J6’,‘P4’,200) 6 .什么是基本表?什么是視圖? 答 兩者的區(qū)別和聯(lián)系是什么?基本表是本身獨立存在的表,在 sQL 中一個關(guān)系就對應(yīng)一個表。視圖是從一個或幾個基本表導(dǎo)出的表。視圖本身不獨立存儲在數(shù)據(jù)庫中,是一個虛表。即數(shù)據(jù)庫中只存放視圖的定義而不存放視圖對應(yīng)的數(shù)據(jù),這些數(shù)據(jù)仍存放在導(dǎo)出視圖的基本表中。視圖在概念上與基本表等同,用戶可以如同基本表那樣使用視圖,可以在視圖上再定義視圖。 7 .試述視圖的優(yōu)點。 答 ( l )視圖能夠簡化用戶的操作; ( 2 )視圖使用戶能以多種角度看待同一數(shù)據(jù); ( 3 )視圖對重構(gòu)數(shù)據(jù)庫提供了一定程度的邏輯獨立性; ( 4 )視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)。 8 .所有的視圖是否都可以更新?為什么? 答: 不是。視圖是不實際存儲數(shù)據(jù)的虛表,因此對視圖的更新,最終要轉(zhuǎn)換為對基本表的更新。因為有些視圖的更新不能惟一有意義地轉(zhuǎn)換成對相應(yīng)基本表的更新,所以,并不是所有的視圖都是可更新的. 9 .哪類視圖是可以更新的?哪類視圖是不可更新的?各舉一例說明。 答:基本表的行列子集視圖一般是可更新的。若視圖的屬性來自集函數(shù)、表達(dá)式,則該視圖肯定是不可以更新的。 11.請為三建工程項目建立一個供應(yīng)情況的視圖,包括供應(yīng)商代碼(SNO)、零件代碼(PNO)、供應(yīng)數(shù)量(QTY)。 CREATE VIEW VSP AS SELECT SNO,PNO,QTY FROM SPJ,J WHERE SPJ.JNO=J.JNO AND J.JNAME='三建' 針對該視圖VSP完成下列查詢: (1)找出三建工程項目使用的各種零件代碼及其數(shù)量。 SELECT DIST PNO,QTY FROM VSP (2)找出供應(yīng)商S1的供應(yīng)情況。 SELECT DIST * FROM VSP WHERE SNO='S1' 第4章 數(shù)據(jù)庫安全性 5 .試述實現(xiàn)數(shù)據(jù)庫安全性控制的常用方法和技術(shù)。 答:實現(xiàn)數(shù)據(jù)庫安全性控制的常用方法和技術(shù)有: ( l )用戶標(biāo)識和鑒別:該方法由系統(tǒng)提供一定的方式讓用戶標(biāo)識自己的名字或身份。每次用戶要求進(jìn)入系統(tǒng)時,由系統(tǒng)進(jìn)行核對,通過鑒定后才提供系統(tǒng)的使用權(quán)。 ( 2 )存取控制:通過用戶權(quán)限定義和合法權(quán)檢查確保只有合法權(quán)限的用戶訪問數(shù)據(jù)庫,所有未被授權(quán)的人員無法存取數(shù)據(jù)。例如CZ 級中的自主存取控制( DAC ) , Bl 級中的強(qiáng)制存取控制(MAC )。 ( 3 )視圖機(jī)制:為不同的用戶定義視圖,通過視圖機(jī)制把要保密的數(shù)據(jù)對無權(quán)存取的用戶隱藏起來,從而自動地對數(shù)據(jù)提供一定程度的安全保護(hù)。 ( 4 )審計:建立審計日志,把用戶對數(shù)據(jù)庫的所有操作自動記錄下來放入審計日志中,DBA 可以利用審計跟蹤的信息,重現(xiàn)導(dǎo)致數(shù)據(jù)庫現(xiàn)有狀況的一系列事件,找出非法存取數(shù)據(jù)的人、時間和內(nèi)容等。 ( 5 )數(shù)據(jù)加密:對存儲和傳輸?shù)臄?shù)據(jù)進(jìn)行加密處理,從而使得不知道解密算法的人無法獲知數(shù)據(jù)的內(nèi)容。 6 .什么是數(shù)據(jù)庫中的自主存取控制方法和強(qiáng)制存取控制方法? 答: 自主存取控制方法:定義各個用戶對不同數(shù)據(jù)對象的存取權(quán)限。當(dāng)用戶對數(shù)據(jù)庫訪問時首先檢查用戶的存取權(quán)限。防止不合法用戶對數(shù)據(jù)庫的存取。 強(qiáng)制存取控制方法:每一個數(shù)據(jù)對象被(強(qiáng)制地)標(biāo)以一定的密級,每一個用戶也被(強(qiáng)制地)授予某一個級別的許可證。系統(tǒng)規(guī)定只有具有某一許可證級別的用戶才能存取某一個密級的數(shù)據(jù)對象。 7 .SQL 語言中提供了哪些數(shù)據(jù)控制(自主存取控制)的語句?請試舉幾例說明它們的使用方法。 答: SQL 中的自主存取控制是通過GRANT語句和REVOKE語句來實現(xiàn)的。如: GRANT SELECT , INSERT ON Student TO 王平 WITH GRANT OPTION ; 就將Student 表的SELECT 和INSERT 權(quán)限授予了用戶王平,后面的“WITH GRANT OPTION ”子句表示用戶王平同時也獲得了“授權(quán)”的權(quán)限,即可以把得到的權(quán)限繼續(xù)授予其他用戶。 REVOKE INSERT ON Student FROM 王平CASCADE ; 就將Student 表的INSERT 權(quán)限從用戶王平處收回,選項CASCADE 表示,如果用戶王平將Student 的INSERT 權(quán)限又轉(zhuǎn)授給了其他用戶,那么這些權(quán)限也將從其他用戶處收回。 8.請用SQL的GRANT 和REVOKE語句(加上視圖機(jī)制)完成以下授權(quán)定義或存取控制功能: ( a )用戶王明對兩個表有SELECT 權(quán)力。 GRANT SELECT ON 職工,部門 TO 王明 ( b )用戶李勇對兩個表有INSERT 和DELETE 權(quán)力。 GRANT INSERT,DELETE ON 職工,部門 TO 李勇 ( c ) 每個職工只對自己的記錄有SELECT 權(quán)力。 GRANT SELECT ON 職工 WHEN USER()=NAME TO ALL; ( d )用戶劉星對職工表有SELECT 權(quán)力,對工資字段具有更新權(quán)力。 GRANT SELECT,UPDATE(工資) ON 職工 TO 劉星 ( e )用戶張新具有修改這兩個表的結(jié)構(gòu)的權(quán)力。 GRANT ALTER TABLE ON 職工,部門 TO 張新; ( f )用戶周平具有對兩個表所有權(quán)力(讀,插,改,刪數(shù)據(jù)),并具有給其他用戶授權(quán)的權(quán)力。 GRANT ALL PRIVILIGES ON 職工,部門 TO 周平 WITH GRANT OPTION; ( g )用戶楊蘭具有從每個部門職工中SELECT 最高工資、最低工資、平均工資的權(quán)力,他不能查看每個人的工資。 CREATE VIEW 部門工資 AS SELECT 部門.名稱,MAX(工資),MIN(工資),AVG(工資) FROM 職工,部門 WHERE 職工.部門號=部門.部門號 GROUP BY 職工.部門號 GRANT SELECT ON 部門工資 TO 楊蘭; 13 .什么是數(shù)據(jù)庫的審計功能,為什么要提供審計功能? 答:審計功能是指DBMS 的審計模塊在用戶對數(shù)據(jù)庫執(zhí)行操作的同時把所有操作自動記錄到系統(tǒng)的審計日志中。 因為任何系統(tǒng)的安全保護(hù)措施都不是完美無缺的,蓄意盜竊破壞數(shù)據(jù)的人總可能存在。利用數(shù)據(jù)庫的審計功能,DBA 可以根據(jù)審計跟蹤的信息,重現(xiàn)導(dǎo)致數(shù)據(jù)庫現(xiàn)有狀況的一系列事件,找出非法存取數(shù)據(jù)的人、時間和內(nèi)容等。 第5章 數(shù)據(jù)庫完整性 1什么是數(shù)據(jù)庫的完整性? 答: 數(shù)據(jù)庫的完整性是指數(shù)據(jù)的正確性和相容性。 2 .?dāng)?shù)據(jù)庫的完整性概念與數(shù)據(jù)庫的安全性概念有什么區(qū)別和聯(lián)系? 答: 數(shù)據(jù)的完整性和安全性是兩個不同的概念,但是有一定的聯(lián)系。前者是為了防止數(shù)據(jù)庫中存在不符合語義的數(shù)據(jù),防止錯誤信息的輸入和輸出,即所謂垃圾進(jìn)垃圾出( Garba : e In Garba : e out )所造成的無效操作和錯誤結(jié)果。后者是保護(hù)數(shù)據(jù)庫防止惡意的破壞和非法的存取。也就是說,安全性措施的防范對象是非法用戶和非法操作,完整性措施的防范對象是不合語義的數(shù)據(jù)。 3 .什么是數(shù)據(jù)庫的完整性約束條件?可分為哪幾類? 答 完整性約束條件是指數(shù)據(jù)庫中的數(shù)據(jù)應(yīng)該滿足的語義約束條件。一般可以分為六類:靜態(tài)列級約束、靜態(tài)元組約束、靜態(tài)關(guān)系約束、動態(tài)列級約束、動態(tài)元組約束、動態(tài)關(guān)系約束。靜態(tài)列級約束是對一個列的取值域的說明,包括以下幾個方面: ( l )對數(shù)據(jù)類型的約束,包括數(shù)據(jù)的類型、長度、單位、精度等; ( 2 )對數(shù)據(jù)格式的約束; ( 3 )對取值范圍或取值集合的約束; ( 4 )對空值的約束; ( 5 )其他約束。靜態(tài)元組約束就是規(guī)定組成一個元組的各個列之間的約束關(guān)系,靜態(tài)元組約束只局限在單個元組上。靜態(tài)關(guān)系約束是在一個關(guān)系的各個元組之間或者若干關(guān)系之間常常存在各種聯(lián)系或約束。 常見的靜態(tài)關(guān)系約束有: ( l )實體完整性約束; ( 2 )參照完整性約束; ( 3 )函數(shù)依賴約束。 動態(tài)列級約束是修改列定義或列值時應(yīng)滿足的約束條件,包括下面兩方面: ( l )修改列定義時的約束; ( 2 )修改列值時的約束。動態(tài)元組約束是指修改某個元組的值時需要參照其舊值,并且新舊值之間需要滿足某種約束條件。動態(tài)關(guān)系約束是加在關(guān)系變化前后狀態(tài)上的限制條件,例如事務(wù)一致性、原子性等約束條件。 4 . DBMS 的完整性控制機(jī)制應(yīng)具有哪些功能? 答: DBMS 的完整性控制機(jī)制應(yīng)具有三個方面的功能: ( l )定義功能,即提供定義完整性約束條件的機(jī)制; ( 2 )檢查功能,即檢查用戶發(fā)出的操作請求是否違背了完整性約束條件;( 3 )違約反應(yīng):如果發(fā)現(xiàn)用戶的操作請求使數(shù)據(jù)違背了完整性約束條件,則采取一定的動作來保證數(shù)據(jù)的完整性。 5 . RDBMS 在實現(xiàn)參照完整性時需要考慮哪些方面? 答 RDBMs 在實現(xiàn)參照完整性時需要考慮以下幾個方面: ( l )外碼是否可以接受空值。 ( 2 )冊 l 除被參照關(guān)系的元組時的考慮,這時系統(tǒng)可能采取的作法有三種: l )級聯(lián)刪除( CASCADES ) ; 2 )受限刪除( RESTRICTED ) ; 3 )置空值刪除( NULLIFIES )。 ( 3 )在參照關(guān)系中插入元組時的問題,這時系統(tǒng)可能采取的作法有: l )受限插入; 2 )遞歸插入。 ( 4 )修改關(guān)系中主碼的問題。一般是不能用 UPDATE 語句修改關(guān)系主碼的。如果需要修改主碼值,只能先刪除該元組,然后再把具有新主碼值的元組插入到關(guān)系中。如果允許修改主碼,首先要保證主碼的惟一性和非空,否則拒絕修改。然后要區(qū)分是參照關(guān)系還是被參照關(guān)系。 6 .假設(shè)有下面兩個關(guān)系模式:職工(職工號,姓名,年齡,職務(wù),工資,部門號),其中職工號為主碼;部門(部門號,名稱,經(jīng)理名,電話),其中部門號為主碼。用 sQL 語言定義這兩個關(guān)系模式,要求在模式中完成以下完整性約束條件的定義:定義每個模式的主碼;定義參照完整性;定義職工年齡不得超過 60 歲。 答 CREATE TABLE DEPT (Deptno NUMBER(2), Deptname VARCHAR(10), Manager VARCHAR(10), PhoneNumber Char(12) CONSTRAINT PK_SC RIMARY KEY(Deptno)); CREATE TABLE EMP (Empno NUMBER(4), Ename VARCHAR(10), Age NUMBER(2), CONSTRAINT C1 CHECK ( Aage<=60), Job VARCHAR(9), Sal NUMBER(7,2), Deptno NUMBER(2), CONSTRAINT FK_DEPTNO FOREIGN KEY(Deptno) REFFERENCES DEPT(Deptno)); 7 .關(guān)系系統(tǒng)中,當(dāng)操作違反實體完整性、參照完整性和用戶定義的完整性約束條件時,一般是如何分別進(jìn)行處理的? 答: 對于違反實體完整性和用戶定義的完整性的操作一般都采用拒絕執(zhí)行的方式進(jìn)行處理。而對于違反參照完整性的操作,并不都是簡單地拒絕執(zhí)行,有時要根據(jù)應(yīng)用語義執(zhí)行一些附加的操作,以保證數(shù)據(jù)庫的正確性。 第6章 關(guān)系數(shù)據(jù)庫理論 1 .理解并給出下列術(shù)語的定義: 函數(shù)依賴、部分函數(shù)依賴、完全函數(shù)依賴、傳遞依賴、候選碼、主碼、外碼、全碼(All 一key )、1 NF 、ZNF 、3NF 、BcNF 、多值依賴、4NF 。 定義1:設(shè)R(U)是屬性集U上的關(guān)系模式。X,Y是屬性集U的子集。若對于R(U)的任意一個可能的關(guān)系r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則稱X函數(shù)確定Y或Y函數(shù)依賴于X,記作XàY。(即只要X上的屬性值相等,Y上的值一定相等。) 術(shù)語和記號: XàY,但Y不是X的子集,則稱XàY是非平凡的函數(shù)依賴。若不特別聲明,總是討論非平凡的函數(shù)依賴。 XàY,但Y是X的子集,則稱XàY是平凡的函數(shù)依賴。 若XàY,則X叫做決定因素(Determinant)。 若XàY,YàX,則記作X?àY。 若Y不函數(shù)依賴于X,則記作X à Y。 定義2:在R(U)中,如果 XàY,并且對于X的任何一個真子集X’,都有X’ à Y,則稱Y對X完全函數(shù)依賴 若XàY,但Y不完全函數(shù)依賴于X,則稱Y對X部分函數(shù)依賴 定義3:若關(guān)系模式R的每一個分量是不可再分的數(shù)據(jù)項,則關(guān)系模式R屬于第一范式(1NF)。 定義4:若關(guān)系模式R∈1NF,且每一個非主屬性完全函數(shù)依賴于碼,則關(guān)系模式R∈2NF 。(即1NF消除了非主屬性對碼的部分函數(shù)依賴則成為2NF)。 定義5:關(guān)系模式R 中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z不是Y的子集)使得XàY,Y à X,Y à Z成立,則稱R∈3NF。 定義6:關(guān)系模式R∈1NF 。若XàY且Y不是X的子集時,X必含有碼,則R∈BCNF。 定義7:關(guān)系模式R∈1NF,如果對于R的每個非平凡多值依賴XààY(Y不是X的子集,Z=U-X-Y不為空),X都含有碼,則稱R∈4NF。 2.建立一個關(guān)于系、學(xué)生、班級、學(xué)會等諸信息的關(guān)系數(shù)據(jù)庫。 學(xué)生:學(xué)號、姓名、出生年月、系名、班號、宿舍區(qū)。 班級:班號、專業(yè)名、系名、人數(shù)、入校年份。 系:系名、系號、系辦公地點、人數(shù)。 學(xué)會:學(xué)會名、成立年份、辦公地點、人數(shù)。 語義如下:一個系有若干專業(yè),每個專業(yè)每年只招一個班,每個班有若干學(xué)生。一個系的學(xué)生住在同一宿舍區(qū)。每個學(xué)生可參加若干學(xué)會,每個學(xué)會有若干學(xué)生。學(xué)生參加某學(xué)會有一個入會年份。 請給出關(guān)系模式,寫出每個關(guān)系模式的極小函數(shù)依賴集,指出是否存在傳遞函數(shù)依賴,對于函數(shù)依賴左部是多屬性的情況討論函數(shù)依賴是完全函數(shù)依賴,還是部分函數(shù)依賴。指出各關(guān)系模式的候選碼、外部碼,有沒有全碼存在? 解:(1)關(guān)系模式如下: 學(xué)生:S(Sno,Sname,Sbirth,Dept,Class,Rno) 班級:C(Class,Pname,Dept,Cnum,Cyear) 系:D(Dept,Dno,Office,Dnum) 學(xué)會:M(Mname,Myear,Maddr,Mnum) (2)每個關(guān)系模式的最小函數(shù)依賴集如下: A、學(xué)生S (Sno,Sname,Sbirth,Dept,Class,Rno) 的最小函數(shù)依賴集如下:SnoàSname,SnoàSbirth,SnoàClass,ClassàDept,DEPTàRno 傳遞依賴如下: 由于SnoàDept,而DeptàSno ,DeptàRno(宿舍區(qū)) 所以Sno與Rno之間存在著傳遞函數(shù)依賴。 由于ClassàDept,Dept à Class,DeptàRno 所以Class與Rno之間存在著傳遞函數(shù)依賴。 由于SnoàClass,ClassàSno,ClassàDept 所以Sno與Dept之間存在著傳遞函數(shù)依賴。 B、班級C(Class,Pname,Dept,Cnum,Cyear)的最小函數(shù)依賴集如下: ClassàPname,ClassàCnum,ClassàCyear,PnameàDept. 由于ClassàPname,PnameàClass,PnameàDept 所以C1ass與Dept之間存在著傳遞函數(shù)依賴。 C、系D(Dept,Dno,Office,Dnum)的最小函數(shù)依賴集如下: DeptàDno,DnoàDept,DnoàOffice,DnoàDnum 根據(jù)上述函數(shù)依賴可知,Dept與Office,Dept與Dnum之間不存在傳遞依賴。 D、學(xué)會M(Mname,Myear,Maddr,Mnum)的最小函數(shù)依賴集如下: MnameàMyear,MnameàMaddr,MnameàMnum 該模式不存在傳遞依賴。 (3)各關(guān)系模式的候選碼、外部碼,全碼如下: A、學(xué)生S候選碼:Sno;外部碼:Dept、Class;無全碼 B、班級C候選碼:Class;外部碼:Dept;無全碼 C、系D候選碼:Dept或Dno;無外部碼;無全碼 D、學(xué)會M候選碼:Mname;無外部碼;無全碼 10、?每個訂貨單ORDNO包含顧客號CUSTNO、收貨地址ADDRESS、訂貨日期DATE 、訂貨細(xì)則LINENO(每個訂貨單有若干條),每條訂貨細(xì)則內(nèi)容為貨物號ITEMNO及訂貨數(shù)據(jù)QTYORD。每種貨物包含貨物號ITEMNO(唯一的)、制造廠商PLANTNO、每個廠商的實際存貨量QTYOH、規(guī)定的最低存貨量DANGER和貨物描述DESCN。 ?為這些數(shù)據(jù)設(shè)計一個數(shù)據(jù)庫,首先給出合理的數(shù)據(jù)依賴。 ?答:其語義假設(shè)如下: ?(1)任何兩個顧客的收貨地址都不相; ?(2)每一訂單都有一個唯一的訂單號碼;? (3)每個訂單的訂單細(xì)則在該訂單里有一個唯一的編號。 ?函數(shù)依賴如下: 相應(yīng)的BCNF如下: ?顧客: CUST(CUSTNO,BAL,CREDLIM,DISCOUNT)? 發(fā)貨: SHOPTO(ADDRESS,CUSTNO)? 訂貨單: ORDHEAD(ORDNO,ADDRESS,DATE)? 訂貨細(xì)則: ORDLINE(ORDNO,LINENO,ITEMNO,QTYORD,QTYOUT)? 貨物: ITEM(ITEMNO,DESCN)? 供貨: IP(ITEMNO,PLANTNO,QTYOH,DANGER) 第7章 數(shù)據(jù)庫設(shè)計 1.試述數(shù)據(jù)庫設(shè)計過程。 答:這里只概要列出數(shù)據(jù)庫設(shè)計過程的六個階段: ( l )需求分析; ( 2 )概念結(jié)構(gòu)設(shè)計; ( 3 )邏輯結(jié)構(gòu)設(shè)計; ( 4 )數(shù)據(jù)庫物理設(shè)計; ( 5 )數(shù)據(jù)庫實施; ( 6 )數(shù)據(jù)庫運(yùn)行和維護(hù)。這是一個完整的實際數(shù)據(jù)庫及其應(yīng)用系統(tǒng)的設(shè)計過程。不僅包括設(shè)計數(shù)據(jù)庫本身,還包括數(shù)據(jù)庫的實施、運(yùn)行和維護(hù)。設(shè)計一個完善的數(shù)據(jù)庫應(yīng)用系統(tǒng)往往是上述六個階段的不斷反復(fù)。 2 .試述數(shù)據(jù)庫設(shè)計過程各個階段上的設(shè)計描述。 答:各階段的設(shè)計要點如下: ( l )需求分析:準(zhǔn)確了解與分析用戶需求(包括數(shù)據(jù)與處理)。 ( 2 )概念結(jié)構(gòu)設(shè)計:通過對用戶需求進(jìn)行綜合、歸納與抽象,形成一個獨立于具體 DBMS 的概念模型。 ( 3 )邏輯結(jié)構(gòu)設(shè)計:將概念結(jié)構(gòu)轉(zhuǎn)換為某個 DBMS 所支持的數(shù)據(jù)模型,并對其進(jìn)行優(yōu)化。 ( 4 )數(shù)據(jù)庫物理設(shè)計:為邏輯數(shù)據(jù)模型選取一個最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(包括存儲結(jié)構(gòu)和存取方法)。 ( 5 )數(shù)據(jù)庫實施:設(shè)計人員運(yùn)用 DBMS 提供的數(shù)據(jù)語言、工具及宿主語言,根據(jù)邏輯設(shè)計和物理設(shè)計的結(jié)果建立數(shù)據(jù)庫,編制與調(diào)試應(yīng)用程序,組織數(shù)據(jù)入庫,并進(jìn)行試運(yùn)行。 ( 6 )數(shù)據(jù)庫運(yùn)行和維護(hù):在數(shù)據(jù)庫系統(tǒng)運(yùn)行過程中對其進(jìn)行評價、調(diào)整與修改。 6 .?dāng)?shù)據(jù)字典的內(nèi)容和作用是什么? 答:數(shù)據(jù)字典是系統(tǒng)中各類數(shù)據(jù)描述的集合。數(shù)據(jù)字典的內(nèi)容通常包括: ( l )數(shù)據(jù)項; ( 2 )數(shù)據(jù)結(jié)構(gòu); ( 3 )數(shù)據(jù)流; ( 4 )數(shù)據(jù)存儲; ( 5 )處理過程五個部分。其中數(shù)據(jù)項是數(shù)據(jù)的最小組成單位,若干個數(shù)據(jù)項可以組成一個數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)字典通過對數(shù)據(jù)項和數(shù)據(jù)結(jié)構(gòu)的定義來描述數(shù)據(jù)流和數(shù)據(jù)存儲的邏輯內(nèi)容。數(shù)據(jù)字典的作用:數(shù)據(jù)字典是關(guān)于數(shù)據(jù)庫中數(shù)據(jù)的描述,在需求分析階段建立,是下一步進(jìn)行概念設(shè)計的基礎(chǔ),并在數(shù)據(jù)庫設(shè)計過程中不斷修改、充實、完蓋。 12? 18 .現(xiàn)有一局部應(yīng)用,包括兩個實體:“出版社”和“作者”,這兩個實體是多對多的聯(lián)系,請讀者自己設(shè)計適當(dāng)?shù)膶傩裕嫵?E 一 R 圖,再將其轉(zhuǎn)換為關(guān)系模型(包括關(guān)系名、屬性名、碼和完整性約束條件)。 答: 關(guān)系模型為:作者(作者號,姓名,年齡,性別,電話,地址)出版社(出版社號,名稱,地址,聯(lián)系電話)出版(作者號,出版社號,書的數(shù)量)出版關(guān)系的主碼作者號,出版社號分別參照作者關(guān)系的主碼作者號和出版社關(guān)系的主碼出版社號。 19 .請設(shè)計一個圖書館數(shù)據(jù)庫,此數(shù)據(jù)庫中對每個借閱者保存讀者記錄,包括:讀者號,姓名,地址,性別,年齡,單位。對每本書存有:書號,書名,作者,出版社。對每本被借出的書存有讀者號、借出日期和應(yīng)還日期。要求:給出 E 一 R 圖,再將其轉(zhuǎn)換為關(guān)系模型。 答 :E 一 R 圖為: 關(guān)系模型為:讀者(讀者號,姓名,地址,性別書(書號,書名,作者,出版社)借書(讀者號,書號,借出日期,年齡,單位)應(yīng)還日期) 第10章 數(shù)據(jù)庫恢復(fù)技術(shù) 1.試述事務(wù)的概念及事務(wù)的4 個特性。 答: 事務(wù)是用戶定義的一個數(shù)據(jù)庫操作序列,這些操作要么全做要么全不做,是一個不可分割的工作單位。 事務(wù)具有4 個特性:原子性(Atomicity )、一致性(consistency )、隔離性( Isolation )和持續(xù)性(Durability )。這4 個特性也簡稱為ACID 特性。 原子性:事務(wù)是數(shù)據(jù)庫的邏輯工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。 一致性:事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。 隔離性:一個事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對其他并發(fā)事務(wù)是隔離的,并發(fā)執(zhí)行的各個事務(wù)之間不能互相干擾。持續(xù)性:持續(xù)性也稱永久性(Perfnanence ) ,指一個事務(wù)一旦提交,它對數(shù)據(jù)庫中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來的其他操作或故障不應(yīng)該對其執(zhí)行結(jié)果有任何影響。 4 .?dāng)?shù)據(jù)庫運(yùn)行中可能產(chǎn)生的故障有哪幾類?哪些故障影響事務(wù)的正常執(zhí)行?哪些故障破壞數(shù)據(jù)庫數(shù)據(jù)? 答: 數(shù)據(jù)庫系統(tǒng)中可能發(fā)生各種各樣的故障,大致可以分以下幾類: (1)事務(wù)內(nèi)部的故障; (2)系統(tǒng)故障; (3)介質(zhì)故障; (4)計算機(jī)病毒。 事務(wù)故障、系統(tǒng)故障和介質(zhì)故障影響事務(wù)的正常執(zhí)行;介質(zhì)故障和計算機(jī)病毒破壞數(shù)據(jù)庫數(shù)據(jù)。 5 .?dāng)?shù)據(jù)庫恢復(fù)的基本技術(shù)有哪些? 答: 數(shù)據(jù)轉(zhuǎn)儲和登錄日志文件是數(shù)據(jù)庫恢復(fù)的基本技術(shù)。 當(dāng)系統(tǒng)運(yùn)行過程中發(fā)生故障,利用轉(zhuǎn)儲的數(shù)據(jù)庫后備副本和日志文件就可以將數(shù)據(jù)庫恢復(fù)到故障前的某個一致性狀態(tài)。 6 .?dāng)?shù)據(jù)庫轉(zhuǎn)儲的意義是什么?試比較各種數(shù)據(jù)轉(zhuǎn)儲方法。 答: 數(shù)據(jù)轉(zhuǎn)儲是數(shù)據(jù)庫恢復(fù)中采用的基本技術(shù)。所謂轉(zhuǎn)儲即DBA 定期地將數(shù)據(jù)庫復(fù)制到磁帶或另一個磁盤上保存起來的過程。當(dāng)數(shù)據(jù)庫遭到破壞后可以將后備副本重新裝入,將數(shù)據(jù)庫恢復(fù)到轉(zhuǎn)儲時的狀態(tài)。 靜態(tài)轉(zhuǎn)儲:在系統(tǒng)中無運(yùn)行事務(wù)時進(jìn)行的轉(zhuǎn)儲操作,如上圖所示。靜態(tài)轉(zhuǎn)儲簡單,但必須等待正運(yùn)行的用戶事務(wù)結(jié)束才能進(jìn)行。同樣,新的事務(wù)必須等待轉(zhuǎn)儲結(jié)束才能執(zhí)行。顯然,這會降低數(shù)據(jù)庫的可用性。 動態(tài)轉(zhuǎn)儲:指轉(zhuǎn)儲期間允許對數(shù)據(jù)庫進(jìn)行存取或修改。動態(tài)轉(zhuǎn)儲可克服靜態(tài)轉(zhuǎn)儲的缺點,它不用等待正在運(yùn)行的用戶事務(wù)結(jié)束,也不會影響新事務(wù)的運(yùn)行。但是,轉(zhuǎn)儲結(jié)束時后援副本上的數(shù)據(jù)并不能保證正確有效。因為轉(zhuǎn)儲期間運(yùn)行的事務(wù)可能修改了某些數(shù)據(jù),使得后援副本上的數(shù)據(jù)不是數(shù)據(jù)庫的一致版本。為此,必須把轉(zhuǎn)儲期間各事務(wù)對數(shù)據(jù)庫的修改活動登記下來,建立日志文件( 109 file )。這樣,后援副本加上日志文件就能得到數(shù)據(jù)庫某一時刻的正確狀態(tài)。轉(zhuǎn)儲還可以分為海量轉(zhuǎn)儲和增量轉(zhuǎn)儲兩種方式。 海量轉(zhuǎn)儲是指每次轉(zhuǎn)儲全部數(shù)據(jù)庫。增量轉(zhuǎn)儲則指每次只轉(zhuǎn)儲上一次轉(zhuǎn)儲后更新過的數(shù)據(jù)。從恢復(fù)角度看,使用海量轉(zhuǎn)儲得到的后備副本進(jìn)行恢復(fù)一般說來更簡單些。但如果數(shù)據(jù)庫很大,事務(wù)處理又十分頻繁,則增量轉(zhuǎn)儲方式更實用更有效。 7 .什么是日志文件?為什么要設(shè)立日志文件? 答: (1)日志文件是用來記錄事務(wù)對數(shù)據(jù)庫的更新操作的文件。 (2)設(shè)立日志文件的目的是:進(jìn)行事務(wù)故障恢復(fù);進(jìn)行系統(tǒng)故障恢復(fù);協(xié)助后備副本進(jìn)行介質(zhì)故障恢復(fù)。 8 .登記日志文件時為什么必須先寫日志文件,后寫數(shù)據(jù)庫? 答: 把對數(shù)據(jù)的修改寫到數(shù)據(jù)庫中和把表示這個修改的日志記錄寫到日志文件中是兩個不同的操作。有可能在這兩個操作之間發(fā)生故障,即這兩個寫操作只完成了一個。 如果先寫了數(shù)據(jù)庫修改,而在運(yùn)行記錄中沒有登記這個修改,則以后就無法恢復(fù)這個修改了。如果先寫日志,但沒有修改數(shù)據(jù)庫,在恢復(fù)時只不過是多執(zhí)行一次UNDO 操作,并不會影響數(shù)據(jù)庫的正確性。所以一定要先寫日志文件,即首先把日志記錄寫到日志文件中,然后寫數(shù)據(jù)庫的修改。 9 .針對不同的故障,試給出恢復(fù)的策略和方法。(即如何進(jìn)行事務(wù)故障的恢復(fù)?系統(tǒng)故障的恢復(fù)?介質(zhì)故障恢復(fù)?) 答: 事務(wù)故障的恢復(fù): 事務(wù)故障的恢復(fù)是由DBMS DBMs 執(zhí)行恢復(fù)步驟是: 自動完成的,對用戶是透明的。 (1)反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作; (2)對該事務(wù)的更新操作執(zhí)行逆操作,即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫; (3)繼續(xù)反向掃描日志文件,做同樣處理; (4)如此處理下去,直至讀到此事務(wù)的開始標(biāo)記,該事務(wù)故障的恢復(fù)就完成了。 系統(tǒng)故障的恢復(fù): 系統(tǒng)故障可能會造成數(shù)據(jù)庫處于不一致狀態(tài):一是未完成事務(wù)對數(shù)據(jù)庫的更新可能已寫入數(shù)據(jù)庫;二是已提交事務(wù)對數(shù)據(jù)庫的更新可能還留在緩沖區(qū),沒來得及寫入數(shù)據(jù)庫。因此恢復(fù)操作就是要撤銷(UNDO )故障發(fā)生時未完成的事務(wù),重做(REDO )已完成的事務(wù)。 系統(tǒng)的恢復(fù)步驟是: (1)正向掃描日志文件,找出在故障發(fā)生前已經(jīng)提交的事務(wù)隊列(REDO 隊列)和未完成的事務(wù)隊列(uNDO 隊列)。 (2)對撤銷隊列中的各個事務(wù)進(jìn)行UNDO 處理。 進(jìn)行UNDO 處理的方法是,反向掃描日志文件,對每個UNDO 事務(wù)的更新操作執(zhí)行逆操作,即將日志記錄中“更新前的值”Before Image )寫入數(shù)據(jù)庫。( 3 )對重做隊列中的各個事務(wù)進(jìn)行REDO 處理。 進(jìn)行REDO 處理的方法是:正向掃描日志文件,對每個REDO 事務(wù)重新執(zhí)行日志文件登記的操作。即將日志記錄中“更新后的值”Afte , Image )寫入數(shù)據(jù)庫。 介質(zhì)故障的恢復(fù): 介質(zhì)故障是最嚴(yán)重的一種故障。 恢復(fù)方法是重裝數(shù)據(jù)庫,然后重做已完成的事務(wù)。具體過程是: ( 1 ) DBA 裝入最新的數(shù)據(jù)庫后備副本(離故障發(fā)生時刻最近的轉(zhuǎn)儲副本), 使數(shù)據(jù)庫恢復(fù)到轉(zhuǎn)儲時的一致性狀態(tài); ( 2 ) DBA 裝入轉(zhuǎn)儲結(jié)束時刻的日志文件副本; ( 3 ) DBA 啟動系統(tǒng)恢復(fù)命令,由DBMS 完成恢復(fù)功能,即重做已完成的事務(wù)。 第11章 并發(fā)控制 2 .并發(fā)操作可能會產(chǎn)生哪幾類數(shù)據(jù)不一致?用什么方法能避免各種不一致的情況? 答:并發(fā)操作帶來的數(shù)據(jù)不一致性包括三類:丟失修改、不可重復(fù)讀和讀“臟’夕數(shù)據(jù)。 ( l )丟失修改(lost update ) 兩個事務(wù) Tl 和T2讀入同一數(shù)據(jù)并修改,T2提交的結(jié)果破壞了(覆蓋了) Tl 提交的結(jié)果,導(dǎo)致 Tl 的修改被丟失。 ( 2 )不可重復(fù)讀( Non 一 Repeatable Read ) 不可重復(fù)讀是指事務(wù) Tl 讀取數(shù)據(jù)后,事務(wù)幾執(zhí)行更新操作,使 Tl 無法再現(xiàn)前一次讀取結(jié)果。( 3 )讀“臟”數(shù)據(jù)( Dirty Read ) 讀“臟’夕數(shù)據(jù)是指事務(wù) Tl 修改某一數(shù)據(jù),并將其寫回磁盤,事務(wù)幾讀取同一數(shù)據(jù)后, Tl 由于某種原因被撤銷,這時 Tl 已修改過的數(shù)據(jù)恢復(fù)原值,幾讀到的數(shù)據(jù)就與數(shù)據(jù)庫中的數(shù)據(jù)不一致,則幾讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù)。避免不一致性的方法和技術(shù)就是并發(fā)控制。最常用的技術(shù)是封鎖技術(shù)。也可以用其他技術(shù),例如在分布式數(shù)據(jù)庫系統(tǒng)中可以采用時間戳方法來進(jìn)行并發(fā)控制。 3 .什么是封鎖?基本的封鎖類型有幾種?試述它們的含義。 答:封鎖就是事務(wù) T 在對某個數(shù)據(jù)對象例如表、記錄等操作之前,先向系統(tǒng)發(fā)出請求,對其加鎖。加鎖后事務(wù) T 就對該數(shù)據(jù)對象有了一定的控制,在事務(wù) T 釋放它的鎖之前,其他的事務(wù)不能更新此數(shù)據(jù)對象。封鎖是實現(xiàn)并發(fā)控制的一個非常重要的技術(shù)。 基本的封鎖類型有兩種:排它鎖( Exclusive Locks ,簡稱 x 鎖)和共享鎖 ( Share Locks,簡稱 S 鎖)。排它鎖又稱為寫鎖。若事務(wù) T 對數(shù)據(jù)對象 A 加上 X 鎖,則只允許 T 讀取和修改 A ,其他任何事務(wù)都不能再對 A 加任何類型的鎖,直到 T 釋放 A 上的鎖。這就保證了其他事務(wù)在 T 釋放 A 上的鎖之前不能再讀取和修改 A 。共享鎖又稱為讀鎖。若事務(wù) T 對數(shù)據(jù)對象 A 加上 S 鎖,則事務(wù) T 可以讀 A但不能修改 A ,其他事務(wù)只能再對 A 加 S 鎖,而不能加 X 鎖,直到 T 釋放 A 上的 S 鎖。這就保證了其他事務(wù)可以讀 A ,但在 T 釋放 A 上的 S 鎖之前不能對 A 做任何修改。 4 .如何用封鎖機(jī)制保證數(shù)據(jù)的一致性? 答: DBMS 在對數(shù)據(jù)進(jìn)行讀、寫操作之前首先對該數(shù)據(jù)執(zhí)行封鎖操作,例如下圖中事務(wù) Tl 在對 A 進(jìn)行修改之前先對 A 執(zhí)行 xock ( A ) ,即對 A 加 x 鎖。這樣,當(dāng)幾請求對 A 加 x 鎖時就被拒絕,幾只能等待 Tl 釋放 A 上的鎖后才能獲得對 A 的 x 鎖,這時它讀到的 A 是 Tl 更新后的值,再按此新的 A 值進(jìn)行運(yùn)算。這樣就不會丟失 Tl 的更新。 DBMS 按照一定的封鎖協(xié)議,對并發(fā)操作進(jìn)行控制,使得多個并發(fā)操作有序地執(zhí)行,就可以避免丟失修改、不可重復(fù)讀和讀“臟’夕數(shù)據(jù)等數(shù)據(jù)不一致性。 5 .什么是活鎖?什么是死鎖? 答: 如果事務(wù) Tl 封鎖了數(shù)據(jù) R ,事務(wù)幾又請求封鎖 R ,于是幾等待。幾也請求封鎖 R ,當(dāng) Tl 釋放了 R 上的封鎖之后系統(tǒng)首先批準(zhǔn)了幾的請求,幾仍然等待。然后幾又請求封鎖 R ,當(dāng)幾釋放了 R 上的封鎖之后系統(tǒng)又批準(zhǔn)了幾的請求 … … 幾有可能永遠(yuǎn)等待,這就是活鎖的情形。活鎖的含義是該等待事務(wù)等待時間太長,似乎被鎖住了,實際上可能被激活。如果事務(wù) Tl 封鎖了數(shù)據(jù) Rl ,幾封鎖了數(shù)據(jù)凡,然后 Tl 又請求封鎖幾,因幾已封鎖了幾,于是 Tl 等待幾釋放幾上的鎖。接著幾又申請封鎖 Rl ,因 Tl 已封鎖了 Rl ,幾也只能等待 Tl 釋放 Rl 上的鎖。這樣就出現(xiàn)了 Tl 在等待幾,而幾又在等待 T }的局面, T }和幾兩個事務(wù)永遠(yuǎn)不能結(jié)束,形成死鎖。 6 .試述活鎖的產(chǎn)生原因和解決方法。 答:活鎖產(chǎn)生的原因:當(dāng)一系列封鎖不能按照其先后順序執(zhí)行時,就可能導(dǎo)致一些事務(wù)無限期等待某個封鎖,從而導(dǎo)致活鎖。避免活鎖的簡單方法是采用先來先服務(wù)的策略。當(dāng)多個事務(wù)請求封鎖同一數(shù)據(jù)對象時,封鎖子系統(tǒng)按請求封鎖的先后次序?qū)κ聞?wù)排隊,數(shù)據(jù)對象上的鎖一旦釋放就批準(zhǔn)申請隊列中第一個事務(wù)獲得鎖。 7?請給出檢測死鎖發(fā)生的一種方法,當(dāng)發(fā)生死鎖后如何解除死鎖?? 答:數(shù)據(jù)庫系統(tǒng)一般采用允許死鎖發(fā)生,DBMS檢測到死鎖后加以解除的方法。DBMS中診斷死鎖的方法與操作系統(tǒng)類似,一般使用超時法或事務(wù)等待圖法。? 超時法是:如果一個事務(wù)的等待時間超過了規(guī)定的時限,就認(rèn)為發(fā)生了死鎖。超時法實現(xiàn)簡單,但有可能誤判死鎖,事務(wù)因其他原因長時間等待超過時限?時,系統(tǒng)會誤認(rèn)為發(fā)生了死鎖。若時限設(shè)置得太長,又不能及時發(fā)現(xiàn)死鎖發(fā)生。????? DBMS并發(fā)控制子系統(tǒng)檢測到死鎖后,就要設(shè)法解除。通常采用的方法是選擇一個處理死鎖代價最小的事務(wù),將其撤消,釋放此事務(wù)持有的所有鎖,使其他事務(wù)得以繼續(xù)運(yùn)行下去。當(dāng)然,對撤銷的事務(wù)所執(zhí)行的數(shù)據(jù)修改操作必須加以恢復(fù)。 8?答:可串行化(Sertalizable)的調(diào)度是正確的調(diào)度。? 可串行化的調(diào)度的定義:多個事務(wù)的并發(fā)執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與?按某一次序串行執(zhí)行它們時的結(jié)果相同,稱這種調(diào)度策略為可串行化的調(diào)度。 10?是,因為該調(diào)度可交換為r3(B)w3(B)r2(A)w2(B)r1(A)r1(B)w1(A)這是一個串行調(diào)度,因此它是一個沖突可串行化調(diào)度。 15 .理解并解釋下列術(shù)語的含義:封鎖、活鎖、死鎖、排它鎖、共享鎖、并發(fā)事務(wù)的調(diào)度、可串行化的調(diào)度、兩段鎖協(xié)議。 答:(略,已經(jīng)在上面有關(guān)習(xí)題中解答) THANKS !!! 致力為企業(yè)和個人提供合同協(xié)議,策劃案計劃書,學(xué)習(xí)課件等等 打造全網(wǎng)一站式需求 歡迎您的下載,資料僅供參考 -可編輯修改-- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對于不預(yù)覽、不比對內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
32 積分
下載 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計者僅對作品中獨創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)庫系統(tǒng)概論 數(shù)據(jù)庫 系統(tǒng) 概論 第四 課后 習(xí)題 答案
鏈接地址:http://m.jqnhouse.com/p-1544933.html