《數(shù)據(jù)庫(kù)系統(tǒng)概論》課后習(xí)題及參考答案.docx
《《數(shù)據(jù)庫(kù)系統(tǒng)概論》課后習(xí)題及參考答案.docx》由會(huì)員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫(kù)系統(tǒng)概論》課后習(xí)題及參考答案.docx(49頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、課后作業(yè)習(xí)題 《數(shù)據(jù)庫(kù)系統(tǒng)概論》課程部分習(xí)題及參考答案 第一章緒論(教材 41頁(yè)) 1.試述數(shù)據(jù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)的概念。 數(shù)據(jù): 描述事物的符號(hào)記錄稱為數(shù)據(jù)。數(shù)據(jù)的種類有文字、圖形、圖象、聲音、正文等等。數(shù)據(jù)與其語(yǔ)義是不可分的。 數(shù)據(jù)庫(kù): 數(shù)據(jù)庫(kù)是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)、有組織的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫(kù)中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲(chǔ)存,具有較小的冗余度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并可為各種用戶共享。 數(shù)據(jù)庫(kù)系統(tǒng): 數(shù)據(jù)庫(kù)系統(tǒng)( DBS)是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫(kù)后的系統(tǒng)構(gòu)成。數(shù)據(jù)庫(kù)系統(tǒng)由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系
2、統(tǒng)(及其開(kāi)發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)管理員構(gòu)成。 數(shù)據(jù)庫(kù)管理系統(tǒng): 數(shù)據(jù)庫(kù)管理系統(tǒng) (DBMS)是位于用戶與操作系統(tǒng)之間的一層數(shù)據(jù)管理軟件。用于科學(xué)地組織和存儲(chǔ)數(shù)據(jù)、高效地獲取和維護(hù)數(shù)據(jù)。DBMS主要功能包括數(shù)據(jù)定義功能、數(shù)據(jù)操縱功能、數(shù)據(jù)庫(kù)的運(yùn)行管理功能、數(shù)據(jù)庫(kù)的建立和維護(hù)功能。 2.使用數(shù)據(jù)庫(kù)系統(tǒng)有什么好處? 使用數(shù)據(jù)庫(kù)系統(tǒng)的好處是由數(shù)據(jù)庫(kù)管理系統(tǒng)的特點(diǎn)或優(yōu)點(diǎn)決定的。 使用數(shù)據(jù)庫(kù)系統(tǒng)的好處很多,例如可以大大提高應(yīng)用開(kāi)發(fā)的效率,方便用戶的使用,減輕數(shù)據(jù)庫(kù)系統(tǒng)管理人員維護(hù)的負(fù)擔(dān)等。 為什么有這些好處,可以結(jié)合第 5題來(lái)回答。 使用數(shù)據(jù)庫(kù)系統(tǒng)可以大
3、大提高應(yīng)用開(kāi)發(fā)的效率。因?yàn)樵跀?shù)據(jù)庫(kù)系統(tǒng)中應(yīng)用程序不必考慮數(shù)據(jù)的定義、存儲(chǔ)和數(shù)據(jù)存取的具體路徑,這些工作都由 DBMS來(lái)完成。 此外,當(dāng)應(yīng)用邏輯改變,數(shù)據(jù)的邏輯結(jié)構(gòu)需要改變時(shí),由于數(shù)據(jù)庫(kù)系統(tǒng)提供了數(shù)據(jù)與程序之間的獨(dú)立性。數(shù)據(jù)邏輯結(jié)構(gòu)的改變是 DBA的責(zé)任,開(kāi)發(fā)人員不必修改應(yīng)用程序,或者只需要修改很少的應(yīng)用程序。從而既簡(jiǎn)化了應(yīng)用程序的編制,又大大減少了應(yīng)用程序的維護(hù)和修改。 使用數(shù)據(jù)庫(kù)系統(tǒng)可以減輕數(shù)據(jù)庫(kù)系統(tǒng)管理人員維護(hù)系統(tǒng)的負(fù)擔(dān)。因?yàn)?DBMS在數(shù)據(jù)庫(kù)建立、運(yùn)用和維護(hù)時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一的管理和控制,包括數(shù)據(jù)的完整性、安全性,多用戶并發(fā)控制,故障恢復(fù)等等都由DBMS執(zhí)行。 總
4、之,使用數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)點(diǎn)是很多的,既便于數(shù)據(jù)的集中管理,控制數(shù)據(jù)冗余,可以提高數(shù)據(jù)的利用率和一致性,又有利于應(yīng)用程序的開(kāi)發(fā)和維護(hù)。 3.試述文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng)的區(qū)別和聯(lián)系。 文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng)的區(qū)別: 文件系統(tǒng)面向某一應(yīng)用程序,共享性差、冗余度大,獨(dú)立性差,紀(jì)錄內(nèi)有結(jié)構(gòu)、整體無(wú)結(jié)構(gòu),應(yīng)用程序自己控制。 數(shù)據(jù)庫(kù)系統(tǒng)面向現(xiàn)實(shí)世界,共享性高、冗余度小,具有高度的物理獨(dú)立性和一定的邏輯獨(dú)立性,整體結(jié)構(gòu)化,用數(shù)據(jù)模型描述,由數(shù)據(jù)庫(kù)管理系統(tǒng)提供數(shù)據(jù)安全性、完整性、并發(fā)控制和恢復(fù)能力。 文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng)的聯(lián)系是: 文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng)都是計(jì)算機(jī)系統(tǒng)中管理數(shù)
5、據(jù)的軟件。 5.試述數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)。 數(shù)據(jù)庫(kù)系統(tǒng)的主要特點(diǎn)有: 一、數(shù)據(jù)結(jié)構(gòu)化 數(shù)據(jù)庫(kù)系統(tǒng)實(shí)現(xiàn)整體數(shù)據(jù)的結(jié)構(gòu)化,這是數(shù)據(jù)庫(kù)的主要特征之一,也是數(shù)據(jù)庫(kù)系統(tǒng)與文件系統(tǒng)的本質(zhì)區(qū)別。 二、數(shù)據(jù)的共享性高,冗余度低,易擴(kuò)充 數(shù)據(jù)庫(kù)的數(shù)據(jù)不再面向某個(gè)應(yīng)用而是面向整個(gè)系統(tǒng),因此可以被多個(gè)用戶、多個(gè)應(yīng)用、用多種不同的語(yǔ)言共享使用。由于數(shù)據(jù)面向整個(gè)系統(tǒng),是有結(jié)構(gòu)的數(shù)據(jù),不僅可以被多個(gè)應(yīng)用共享使用,而且容易增加新的應(yīng)用,這就使得數(shù)據(jù)庫(kù)系統(tǒng)彈性大,易于擴(kuò)充。 三、數(shù)據(jù)獨(dú)立性高 數(shù)據(jù)獨(dú)立性包括數(shù)據(jù)的物理獨(dú)立性和數(shù)據(jù)的邏輯獨(dú)立性。 數(shù)據(jù)庫(kù)管理系統(tǒng)的模
6、式結(jié)構(gòu)和二級(jí)映象功能保證了數(shù)據(jù)庫(kù)中的數(shù)據(jù)具有很高的物理獨(dú)立性和邏輯獨(dú)立性。 四、數(shù)據(jù)由 DBMS統(tǒng)一管理和控制 數(shù)據(jù)庫(kù)的共享是并發(fā)的共享,即多個(gè)用戶可以同時(shí)存取數(shù)據(jù)庫(kù)中的數(shù)據(jù)甚至可以同時(shí)存取數(shù)據(jù)庫(kù)中同一個(gè)數(shù)據(jù)。為此, DBMS必須提供統(tǒng)一的數(shù)據(jù)控制功能,包括數(shù)據(jù)的安全性保護(hù),數(shù)據(jù)的完整性檢查,并發(fā)控制和數(shù)據(jù)庫(kù)恢復(fù)。 6.?dāng)?shù)據(jù)庫(kù)管理系統(tǒng)的主要功能有哪些? ①數(shù)據(jù)庫(kù)定義功能; ?、跀?shù)據(jù)存取功能; ?、蹟?shù)據(jù)庫(kù)運(yùn)行管理; ?、軘?shù)據(jù)庫(kù)的建立和維護(hù)功能。 7.試述數(shù)據(jù)模型的概念、數(shù)據(jù)模型的作用和數(shù)據(jù)模型的三個(gè)要素。 數(shù)據(jù)模型是數(shù)據(jù)庫(kù)中用來(lái)對(duì)現(xiàn)實(shí)世界
7、進(jìn)行抽象的工具,是數(shù)據(jù)庫(kù)中用于提供信息表示和操作手段的形式構(gòu)架。 一般地講,數(shù)據(jù)模型是嚴(yán)格定義的概念的集合。這些概念精確地描述系統(tǒng)的靜態(tài)特性、動(dòng)態(tài)特性和完整性約束條件。因此數(shù)據(jù)模型通常由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和完整性約束三部分組成。 ?、贁?shù)據(jù)結(jié)構(gòu):是所研究的對(duì)象類型的集合,是對(duì)系統(tǒng)的靜態(tài)特性的描述。 ②數(shù)據(jù)操作:是指對(duì)數(shù)據(jù)庫(kù)中各種對(duì)象(型)的實(shí)例(值)允許進(jìn)行的操作的集合,包括操作及有關(guān)的操作規(guī)則,是對(duì)系統(tǒng)動(dòng)態(tài)特性的描述。 ?、蹟?shù)據(jù)的約束條件:是完整性規(guī)則的集合,完整性規(guī)則是給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫(kù)狀態(tài)以及狀態(tài)的變
8、化,以保證數(shù)據(jù)的正確、有效、相容。 8.試述概念模型的作用。 概念模型實(shí)際上是現(xiàn)實(shí)世界到機(jī)器世界的一個(gè)中間層次。概念模型用于信息世界的建模,是現(xiàn)實(shí)世界到信息世界的第一層抽象,是數(shù)據(jù)庫(kù)設(shè)計(jì)人員進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)的有力工具,也是數(shù)據(jù)庫(kù)設(shè)計(jì)人員和用戶之間進(jìn)行交流的語(yǔ)言。 9.定義并解釋概念模型中以下術(shù)語(yǔ): 實(shí)體,實(shí)體型,實(shí)體集,屬性,碼,實(shí)體聯(lián)系圖( E-R圖) 實(shí)體:客觀存在并可以相互區(qū)分的事物叫實(shí)體。 實(shí)體型:具有相同屬性的實(shí)體具有相同的特征和性質(zhì),用實(shí)體名及其屬性名集合來(lái)抽象和刻畫同類實(shí)體稱為實(shí)體型。 實(shí)體集:同型實(shí)體的集合稱為實(shí)體集。 屬性
9、:實(shí)體所具有的某一特性,一個(gè)實(shí)體可由若干個(gè)屬性來(lái)刻畫。 碼:唯一標(biāo)識(shí)實(shí)體的屬性集稱為碼。 實(shí)體聯(lián)系圖: E-R圖提供了表示實(shí)體型、屬性和聯(lián)系的方法: 實(shí)體型:用矩形表示,矩形框內(nèi)寫明實(shí)體名。 屬性:用橢圓形表示,并用無(wú)向邊將其與相應(yīng)的實(shí)體連接起來(lái)。 聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無(wú)向邊分別與有關(guān)實(shí)體連接起來(lái),同時(shí)在無(wú)向邊旁標(biāo)上聯(lián)系的類型( 1 : 1,1 : n或m : n)。 第二章 關(guān)系數(shù)據(jù)庫(kù) (教材81頁(yè)) 1.試述關(guān)系模型的三個(gè)組成部分。 答:關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。 2
10、.試述關(guān)系數(shù)據(jù)語(yǔ)言的特點(diǎn)和分類。 答:關(guān)系數(shù)據(jù)語(yǔ)言可以分為三類: 關(guān)系代數(shù)語(yǔ)言 例如 ISBL 關(guān)系演算語(yǔ)言 (元組關(guān)系演算語(yǔ)言 例如 APLHA,QUEL 和 域關(guān)系演算語(yǔ)言 例如QBE) 具有關(guān)系代數(shù)和關(guān)系演算雙重特點(diǎn)的語(yǔ)言 例如 SQL 這些關(guān)系數(shù)據(jù)語(yǔ)言的共同特點(diǎn)是,具有完備的表達(dá)能力,是非過(guò)程化的集合操作語(yǔ)言,功能強(qiáng),能夠嵌入高級(jí)語(yǔ)言中使用。 3. 定義并理解下列術(shù)語(yǔ),說(shuō)明它們之間的聯(lián)系與區(qū)別: ?。?1)域,關(guān)系,元組,屬性 答: 域:域是一組具有相同數(shù)據(jù)類型的值的集合。 關(guān)系:在域 D1,D2,…,D
11、n上笛卡爾積D1D2…Dn的子集稱為關(guān)系,表示為 R(D1,D2,…,Dn) 元組:關(guān)系中的每個(gè)元素是關(guān)系中的元組。 屬性:關(guān)系也是一個(gè)二維表,表的每行對(duì)應(yīng)一個(gè)元組,表的每列對(duì)應(yīng)一個(gè)域。由于域可以相同,為了加以區(qū)分,必須對(duì)每列起一個(gè)名字,稱為屬性( Attribute)。 ?。?2)主碼,候選碼,外部碼 答: 候選碼:若關(guān)系中的某一屬性組的值能唯一地標(biāo)識(shí)一個(gè)元組,則稱該屬性組為候選碼( Candidate key)。 主碼:若一個(gè)關(guān)系有多個(gè)候選碼,則選定其中一個(gè)為主碼( Primary key)。 外部碼:設(shè) F是基本關(guān)系R的一個(gè)或一組
12、屬性,但不是關(guān)系R的碼,如果F與基本關(guān)系S的主碼Ks相對(duì)應(yīng),則稱F是基本關(guān)系R的外部碼(Foreign key),簡(jiǎn)稱外碼。 基本關(guān)系 R稱為參照關(guān)系(Referencing relation),基本關(guān)系S稱為被參照關(guān)系(Referenced relation)或目標(biāo)關(guān)系(Target relation)。關(guān)系R和S可以是相同的關(guān)系。 (3)關(guān)系模式,關(guān)系,關(guān)系數(shù)據(jù)庫(kù) 關(guān)系模式:關(guān)系的描述稱為關(guān)系模式( Relation Schema)。它可以形式化地表示為: R(U,D,dom,F(xiàn)) 其中 R為關(guān)系名,U為組成該關(guān)系的屬性名集合,D為屬性組U中屬性所來(lái)自的域,
13、dom為屬性向域的映象集合,F(xiàn)為屬性間數(shù)據(jù)的依賴關(guān)系集合。 關(guān)系:在域 D1,D2,…,Dn上笛卡爾積D1D2…Dn的子集稱為關(guān)系,表示為 R(D1,D2,…,Dn) 關(guān)系是關(guān)系模式在某一時(shí)刻的狀態(tài)或內(nèi)容。關(guān)系模式是靜態(tài)的、穩(wěn)定的,而關(guān)系是動(dòng)態(tài)的、隨時(shí)間不斷變化的,因?yàn)殛P(guān)系操作在不斷地更新著數(shù)據(jù)庫(kù)中的數(shù)據(jù)。 關(guān)系數(shù)據(jù)庫(kù):關(guān)系數(shù)據(jù)庫(kù)也有型和值之分。關(guān)系數(shù)據(jù)庫(kù)的型也稱為關(guān)系數(shù)據(jù)庫(kù)模式,是對(duì)關(guān)系數(shù)據(jù)庫(kù)的描述,它包括若干域的定義以及在這些域上定義的若干關(guān)系模式。關(guān)系數(shù)據(jù)庫(kù)的值是這些關(guān)系模式在某一時(shí)刻對(duì)應(yīng)的關(guān)系的集合,通常就稱為關(guān)系數(shù)據(jù)庫(kù)。 4.試述關(guān)系模型的完整性規(guī)則。
14、在參照完整性中,為什么外部碼屬性的值也可以為空?什么情況下才可以為空? 答: 關(guān)系模型的完整性規(guī)則是對(duì)關(guān)系的某種約束條件。關(guān)系模型中可以有三類完整性約束:實(shí)體完整性、參照完整性和用戶定義的完整性。參見(jiàn)教材 在參照完整性中,外部碼屬性的值可以為空,它表示該屬性的值尚未確定。但前提條件是該外部碼屬性不是其所在關(guān)系的主屬性。 例如,在下面的 “學(xué)生”表中,“專業(yè)號(hào)”是一個(gè)外部碼,不是學(xué)生表的主屬性,可以為空。其語(yǔ)義是,該學(xué)生的專業(yè)尚未確定。 學(xué)生(學(xué)號(hào),姓名,性別,專業(yè)號(hào),年齡) 專業(yè)(專業(yè)號(hào),專業(yè)名) 而在下面的 “選修”表中的“課程號(hào)”雖然
15、也是一個(gè)外部碼屬性,但它又是“選修”表的主屬性,所以不能為空。因?yàn)殛P(guān)系模型必須滿足實(shí)體完整性。 課程(課程號(hào),課程名,學(xué)分) 選修(學(xué)號(hào),課程號(hào),成績(jī)) 5.等值連接與自然連接的區(qū)別是什么? 答:自然連接( Natural join)是一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且要在結(jié)果中把重復(fù)的屬性去掉。 第三章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言 SQL (教材148頁(yè)) 1. 試述SQL語(yǔ)言的特點(diǎn)。 答: ( 1)綜合統(tǒng)一。 SQL語(yǔ)言集數(shù)據(jù)定義語(yǔ)言DDL、數(shù)據(jù)操縱語(yǔ)言DML、數(shù)據(jù)控制語(yǔ)言DCL的功能于一體。 ?。?2)高度
16、非過(guò)程化。用SQL語(yǔ)言進(jìn)行數(shù)據(jù)操作,只要提出“做什么”,而無(wú)須指明“怎么做”,因此無(wú)需了解存取路徑,存取路徑的選擇以及SQL語(yǔ)句的操作過(guò)程由系統(tǒng)自動(dòng)完成。 ?。?3)面向集合的操作方式。SQL語(yǔ)言采用集合操作方式,不僅操作對(duì)象、查找結(jié)果可以是元組的集合,而且一次插入、刪除、更新操作的對(duì)象也可以是元組的集合。 ?。?4)以同一種語(yǔ)法結(jié)構(gòu)提供兩種使用方式。SQL語(yǔ)言既是自含式語(yǔ)言,又是嵌入式語(yǔ)言。作為自含式語(yǔ)言,它能夠獨(dú)立地用于聯(lián)機(jī)交互的使用方式,也能夠嵌入到高級(jí)語(yǔ)言程序中,供程序員設(shè)計(jì)程序時(shí)使用。 ( 5)語(yǔ)言簡(jiǎn)捷,易學(xué)易用。 2. 試述SQL的定義功能。 答:
17、 SQL的數(shù)據(jù)定義功能包括定義表、定義視圖和定義索引。 SQL語(yǔ)言使用CREATE TABLE語(yǔ)句定義建立基本表,;ALTER TABLE語(yǔ)句修改基本表定義,DROP TABLE語(yǔ)句刪除基本表;建立索引使用CREATE INDEX語(yǔ)句建立索引, DROP INDEX語(yǔ)句刪除索引表;SQL語(yǔ)言使用CREATE VIEW命令建立視圖,DROP VIEW語(yǔ)句刪除視圖。 3. 用SQL語(yǔ)句建立第3章習(xí)題3中的四個(gè)表。 答: 對(duì)于 S表:S( SNO,SNAME,STATUS,CITY); 建 S表 CREATE TABLE S (SNO CHAR(3),
18、 SNAME CHAR(10), STATUS CHAR(2), CITY CHAR(10)); P(PNO,PNAME,COLOR,WEIGHT); 建 P表、 建J表、建SPJ表略。 4. 針對(duì)上題中建立的四個(gè)表試用SQL語(yǔ)言完成第3章習(xí)題3中的查詢。 答: ?。?1) 求供應(yīng)工程J1零件的供應(yīng)商號(hào)碼SNO; SELECT SNO FROM SPJ WHERE JNO=‘J1; ( 2) 求供應(yīng)工程J1零件P1的供應(yīng)商號(hào)碼SNO; SELECT SNO FROM SPJ WHERE JNO=‘J1 AND PNO
19、=‘P1; ( 3) 求供應(yīng)工程J1零件為紅色的供應(yīng)商號(hào)碼SNO; SELECT SNO FROM SPJ WHERE JNO=‘J1 AND PNO IN (SELECT PNO FROM P WHERE COLOR=‘紅); ( 4) 求沒(méi)有使用天津供應(yīng)商生產(chǎn)的紅色零件的工程號(hào)JNO; 略, 注意:從 J 表入手,以包含那些尚未使用任何零件的工程號(hào)。 5. 針對(duì)習(xí)題3中的四個(gè)表試用SQL語(yǔ)言完成以下各項(xiàng)操作: ( 1)找出所有供應(yīng)商的姓名和所在城市。 ( 2)找出所有零件的名稱、顏色、重量。 ( 3)找出使
20、用供應(yīng)商S1所供應(yīng)零件的工程號(hào)碼。 ( 4)找出工程項(xiàng)目J2使用的各種零件的名稱及其數(shù)量。 ( 5)找出上海廠商供應(yīng)的所有零件號(hào)碼。 ( 6)找出使用上海產(chǎn)的零件的工程名稱。 ( 7)找出沒(méi)有使用天津產(chǎn)的零件的工程號(hào)碼。 ( 8)把全部紅色零件的顏色改成藍(lán)色。 ( 9)由S5供給J4的零件P6改為由S3供應(yīng),請(qǐng)作必要的修改。 ( 10)從供應(yīng)商關(guān)系中刪除S2的記錄,并從供應(yīng)情況關(guān)系中刪除相應(yīng)的記錄。 ( 11)請(qǐng)將 (S2,J6,P4,200) 插入供應(yīng)情況關(guān)系。 答: (1) 找出所有供應(yīng)商的姓名和
21、所在城市。 SELECT SNAME, CITY FROM S; (2) 找出所有零件的名稱、顏色、重量。 SELECT PNAME, COLOR, WEIGHT FROM P; (3) 找出使用供應(yīng)商S1所供應(yīng)零件的工程號(hào)碼。 SELECT JNO FROM SPJ WHERE SNO=‘S1; (4) 找出工程項(xiàng)目J2使用的各種零件的名稱及其數(shù)量。 SELECT P.PNAME, SPJ.QTY FROM P, SPJ WHERE P.PNO=SPJ.PNO AND SPJ.JNO=J2; (5) 找出上海廠商供應(yīng)的所有零件號(hào)碼。
22、 SELECT DISTINCT PNO FROM SPJ WHERE SNO IN ( SELECT SNO FROM S WHERE CITY=上海); (6) 找出使用上海產(chǎn)的零件的工程名稱。 SELECT JNAME FROM J, SPJ, S WHERE J. JNO=SPJ. JNO AND SPJ. SNO=S.SNO AND S.CITY=上海; (7) 找出沒(méi)有使用天津產(chǎn)的零件的工程號(hào)碼。 略 (8) 把全部紅色零件的顏色改成藍(lán)色。 UPDATE P SET COLOR=藍(lán) WHERE CO
23、LOR=紅 ; (9) 由S5供給J4的零件P6改為由S3供應(yīng),請(qǐng)作必要的修改。 UPDATE SPJ SET SNO=S3 WHERE SNO=S5 AND JNO=J4 AND PNO=P6; (10) 從供應(yīng)商關(guān)系中刪除S2的記錄,并從供應(yīng)情況關(guān)系中刪除相應(yīng)的記錄。 解析:注意刪除順序,應(yīng)該先從 SPJ表中刪除供應(yīng)商S2所供應(yīng)零件的記錄,然后從從S表中刪除S2。 (11) 請(qǐng)將 (S2,J6,P4,200) 插入供應(yīng)情況關(guān)系。 INSERT INTO SPJ(SNO, JNO, PNO, QTY) VALUES (S2,J6,P4,200);
24、6. 什么是基本表?什么是視圖??jī)烧叩膮^(qū)別和聯(lián)系是什么? 答:基本表是本身獨(dú)立存在的表,在 SQL中一個(gè)關(guān)系就對(duì)應(yīng)一個(gè)表。 視圖是從一個(gè)或幾個(gè)基本表導(dǎo)出的表。視圖本身不獨(dú)立存儲(chǔ)在數(shù)據(jù)庫(kù)中,是一個(gè)虛表。即數(shù)據(jù)庫(kù)中只存放視圖的定義而不存放視圖對(duì)應(yīng)的數(shù)據(jù),這些數(shù)據(jù)仍存放在導(dǎo)出視圖的基本表中。視圖在概念上與基本表等同,用戶可以如同基本表那樣使用視圖,可以在視圖上再定義視圖。 7. 試述視圖的優(yōu)點(diǎn)。 答: (1)視圖能夠簡(jiǎn)化用戶的操作。 (2)視圖使用戶能以多種角度看待同一數(shù)據(jù)。 (3)視圖對(duì)重構(gòu)數(shù)據(jù)庫(kù)提供了一定程度的邏輯獨(dú)立性。 (4)視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全
25、保護(hù)。 8. 所有的視圖是否都可以更新?為什么? 答:不是。視圖是不實(shí)際存儲(chǔ)數(shù)據(jù)的虛表,因此對(duì)視圖的更新,最終要轉(zhuǎn)換為對(duì)基本表的更新。因?yàn)橛行┮晥D的更新不能唯一地有意義地轉(zhuǎn)換成對(duì)相應(yīng)基本表的更新,所以,并不是所有的視圖都是可更新的。 9. 哪類視圖是可以更新的,哪類視圖是不可更新的? 各舉一例說(shuō)明。 答:基本表的行列子集視圖一般是可更新的。如教材 3.5.3中的例1。 若視圖的屬性來(lái)自集函數(shù)、表達(dá)式,則該視圖肯定是不可以更新的。 如教材 3.5.3中的S_G視圖。 11. 請(qǐng)為三建工程項(xiàng)目建立一個(gè)供應(yīng)情況的視圖,包括供應(yīng)商代碼(SNO)、零件
26、 代碼( PNO)、供應(yīng)數(shù)量(QTY)。針對(duì)該視圖完成下列查詢: ( 1)找出三建工程項(xiàng)目使用的各種零件代碼及其數(shù)量。 ( 2)找出供應(yīng)商S1的供應(yīng)情況。 答:建視圖: CREATE VIEW V_SPJ AS SELECT SNO, PNO, QTY FROM SPJ WHERE JNO= ( SELECT JNO FROM J WHERE JNAME=三建); 對(duì)該視圖查詢: (1) 找出三建工程項(xiàng)目使用的各種零件代碼及其數(shù)量。 SELECT PNO, QTY FROM V_SPJ; (2) 找出供應(yīng)商
27、S1的供應(yīng)情況。 SELECT PNO, QTY /* S1供應(yīng)三建工程的零件號(hào)和對(duì)應(yīng)的數(shù)量*/ FROM V_SPJ WHERE SNO=S1; 第五章 關(guān)系數(shù)據(jù)理論 (教材 196頁(yè)) 1.理解并給出下列術(shù)語(yǔ)的定義: 函數(shù)依賴、部分函數(shù)依賴、完全函數(shù)依賴、候選碼、主碼、 外碼、全碼。 答: 函數(shù)依賴:設(shè) R (U)是一個(gè)關(guān)系模式,U是R的屬性集合,X和Y是U的子集。對(duì)于R (U)的任意一個(gè)可能的關(guān)系r,如果r中不存在兩個(gè)元組,它們?cè)赬上的屬性值相同, 而在Y上的屬性值不同, 則稱"X函數(shù)確定Y"或"Y函數(shù)依賴于X",記作X→Y。 完全函數(shù)
28、依賴、部分函數(shù)依賴:在 R(U)中,如果X→Y,并且對(duì)于X的任何一個(gè)真子集X,都有X′→Y,則稱Y對(duì)X完全函數(shù)依賴;若X→Y,但Y不完全函數(shù)依賴于X,則稱Y對(duì)X部分函數(shù)依賴; 候選碼、主碼: 設(shè) K為R(U,F(xiàn))中的屬性或?qū)傩越M合,若K → U則K為R的候選碼。若候選碼多于一個(gè),則選定其中的一個(gè)為主碼。 外碼:關(guān)系模式 R中屬性或?qū)傩越MX并非R的碼,但X是另一個(gè)關(guān)系模式的碼,則稱X是R的外部碼也稱外碼。 全碼:整個(gè)屬性組是碼,稱為全碼( All-key)。 2.建立一個(gè)關(guān)于系、學(xué)生、班級(jí)、學(xué)會(huì)等諸信息的關(guān)系數(shù)據(jù)庫(kù)。 描述學(xué)生的屬性有:學(xué)號(hào)、姓名、出生年月、系名、
29、班號(hào)、宿舍區(qū)。 描述班級(jí)的屬性有:班號(hào)、專業(yè)名、系名、人數(shù)、入校年份。 描述系的屬性有:系名、系號(hào)、系辦公室地點(diǎn)、人數(shù)。 描述學(xué)會(huì)的屬性有:學(xué)會(huì)名、成立年份、地點(diǎn)、人數(shù)。 有關(guān)語(yǔ)義如下:一個(gè)系有若干專業(yè),每個(gè)專業(yè)每年只招一個(gè)班,每個(gè)班有若干學(xué)生。一個(gè)系的學(xué)生住在同一宿舍區(qū)。每個(gè)學(xué)生可參加若干學(xué)會(huì),每個(gè)學(xué)會(huì)有若干學(xué)生。學(xué)生參加某學(xué)會(huì)有一個(gè)入會(huì)年份。 請(qǐng)給出關(guān)系模式,寫出每個(gè)關(guān)系模式的極小函數(shù)依賴集,指出是否存在傳遞函數(shù)依賴,對(duì)于函數(shù)依賴左部是多屬性的情況討論函數(shù)依賴是完全函數(shù)依賴,還是部分函數(shù)依賴。 指出各關(guān)系的候選碼、外部碼,有沒(méi)有全碼存在?
30、 答: 關(guān)系模式: 學(xué)生 S(S#,SN,SB,DN,C#,SA) 班級(jí) C(C#,CS,DN,CNUM,CDATE) 系 D(D#,DN,DA,DNUM) 學(xué)會(huì) P(PN,DATE1,PA,PNUM) 學(xué)生 --學(xué)會(huì)SP(S#,PN,DATE2) 其中, S#—學(xué)號(hào),SN—姓名,SB—出生年月,SA—宿舍區(qū) C#—班號(hào),CS—專業(yè)名,CNUM—班級(jí)人數(shù),CDATE—入校年份 D#—系號(hào),DN—系名,DA—系辦公室地點(diǎn),DNUM—系人數(shù) PN—學(xué)會(huì)名,DATE1—成立年月,PA—地點(diǎn),PNUM—學(xué)會(huì)人數(shù),DATE2—入
31、會(huì)年份 每個(gè)關(guān)系模式的極小函數(shù)依賴集: S:S#→SN,S#→SB,S#→C#,C#→DN,DN→SA C:C#→CS,C#→CNUM,C#→CDATE,CS→DN,(CS,CDATE)→C# D:D#→DN,DN→D#,D#→DA,D#→DNUM P:PN→DATE1,PN→PA,PN→PNUM SP:(S#,PN)→DATE2 S中存在傳遞函數(shù)依賴: S#→DN, S#→SA, C#→SA C中存在傳遞函數(shù)依賴:C#→DN ( S#,PN)→DATE2 和(CS,CDATE)→C# 均為SP中的函數(shù)依賴,是完全函數(shù)依賴 關(guān)系 候選碼 外部
32、碼 全碼 S S# C#,DN 無(wú) C C#,(CS,CDATE) DN 無(wú) D D#和DN 無(wú) 無(wú) P PN 無(wú) 無(wú) SP (S#,PN) S#,PN 無(wú) 4. 試舉出三個(gè)多值依賴的實(shí)例。 答: ( 1)關(guān)系模式MSC(M,S,C)中,M表示專業(yè),S表示學(xué)生,C表示該專業(yè)的必修課。假設(shè)每個(gè)專業(yè)有多個(gè)學(xué)生,有一組必修課。設(shè)同專業(yè)內(nèi)所有學(xué)生的選修的必修課相同,實(shí)例關(guān)系如下。按照語(yǔ)義對(duì)于M的每一個(gè)值M i,S有一個(gè)完整的集合與之對(duì)應(yīng)而不問(wèn)C取何值,所以M→→S。由于C與S的完全對(duì)稱性,必然有M→→C成立。 M S C M 1 S1 C1 M 1
33、S1 C2 M 1 S2 C1 M 1 S2 C2 …… …… …… ?。?2)關(guān)系模式ISA(I,S,A)中,I表示學(xué)生興趣小組,S表示學(xué)生,A表示某興趣小組 的活動(dòng)項(xiàng)目。假設(shè)每個(gè)興趣小組有多個(gè)學(xué)生,有若干活動(dòng)項(xiàng)目。每個(gè)學(xué)生必須參加所 在興趣小組的所有活動(dòng)項(xiàng)目,每個(gè)活動(dòng)項(xiàng)目要求該興趣小組的所有學(xué)生參加。 按照語(yǔ)義有 I→→S,I→→A成立。 ?。?3)關(guān)系模式RDP(R,D,P)中,R表示醫(yī)院的病房,D表示責(zé)任醫(yī)務(wù)人員,P表示病人。假設(shè)每個(gè)病房住有多個(gè)病人,有多個(gè)責(zé)任醫(yī)務(wù)人員負(fù)責(zé)醫(yī)治和護(hù)理該病房的所有病人。按照語(yǔ)義有R→→D,R→→P
34、成立。 第六章 數(shù)據(jù)庫(kù)設(shè)計(jì) (教材241頁(yè)) 1. 試述數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程。 1) 需求分析 2) 概念結(jié)構(gòu)設(shè)計(jì) 3) 邏輯結(jié)構(gòu)設(shè)計(jì) 4) 數(shù)據(jù)庫(kù)物理設(shè)計(jì) 5) 數(shù)據(jù)庫(kù)實(shí)施 6) 數(shù)據(jù)庫(kù)運(yùn)行和維護(hù) 這是一個(gè)完整的實(shí)際數(shù)據(jù)庫(kù)及其應(yīng)用系統(tǒng)的設(shè)計(jì)過(guò)程。不僅包括設(shè)計(jì)數(shù)據(jù)庫(kù)本身,還包括數(shù)據(jù)庫(kù)的實(shí)施、數(shù)據(jù)庫(kù)運(yùn)行和維護(hù)。 設(shè)計(jì)一個(gè)完善的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)往往是上述六個(gè)階段的不斷反復(fù)。 2. 試述數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程的各個(gè)階段上的設(shè)計(jì)描述。 答:各階段的設(shè)計(jì)要點(diǎn)如下: 1) 需求分析:準(zhǔn)確了解與分析用戶需求(包括數(shù)據(jù)與處理)。 2) 概念結(jié)構(gòu)設(shè)計(jì):通過(guò)對(duì)用戶
35、需求進(jìn)行綜合、歸納與抽象,形成一個(gè)獨(dú)立于具體DBMS的概念模型。 3) 邏輯結(jié)構(gòu)設(shè)計(jì):將概念結(jié)構(gòu)轉(zhuǎn)換為某個(gè)DBMS所支持的數(shù)據(jù)模型,并對(duì)其進(jìn)行優(yōu)化。 4) 數(shù)據(jù)庫(kù)物理設(shè)計(jì):為邏輯數(shù)據(jù)模型選取一個(gè)最適合應(yīng)用環(huán)境的物理結(jié)構(gòu)(包括存儲(chǔ)結(jié)構(gòu)和存取方法)。 5) 數(shù)據(jù)庫(kù)實(shí)施:設(shè)計(jì)人員運(yùn)用DBMS提供的數(shù)據(jù)語(yǔ)言、工具及宿主語(yǔ)言,根據(jù)邏輯設(shè)計(jì)和物理設(shè)計(jì)的結(jié)果建立數(shù)據(jù)庫(kù),編制與調(diào)試應(yīng)用程序,組織數(shù)據(jù)入庫(kù),并進(jìn)行試運(yùn)行。 6) 數(shù)據(jù)庫(kù)運(yùn)行和維護(hù):在數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行過(guò)程中對(duì)其進(jìn)行評(píng)價(jià)、調(diào)整與修改。 3. 試述數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中結(jié)構(gòu)設(shè)計(jì)部分形成的數(shù)據(jù)庫(kù)模式。 答:數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的不同階段形成
36、數(shù)據(jù)庫(kù)的各級(jí)模式,即: 在概念設(shè)計(jì)階段形成獨(dú)立于機(jī)器特點(diǎn),獨(dú)立于各個(gè) DBMS產(chǎn)品的概念模式,在本篇中就是E-R圖; 在邏輯設(shè)計(jì)階段將 E-R圖轉(zhuǎn)換成具體的數(shù)據(jù)庫(kù)產(chǎn)品支持的數(shù)據(jù)模型,如關(guān)系模型,形成數(shù)據(jù)庫(kù)邏輯模式;然后在基本表的基礎(chǔ)上再建立必要的視圖(View),形成數(shù)據(jù)的外模式; 在物理設(shè)計(jì)階段,根據(jù) DBMS特點(diǎn)和處理的需要,進(jìn)行物理存儲(chǔ)安排,建立索引,形成數(shù)據(jù)庫(kù)內(nèi)模式。 概念模式是面向用戶和設(shè)計(jì)人員的,屬于概念模型的層次;邏輯模式、外模式、內(nèi)模式是 DBMS支持的模式,屬于數(shù)據(jù)模型的層次??梢栽贒BMS中加以描述和存儲(chǔ)。 4. 試述數(shù)據(jù)庫(kù)設(shè)計(jì)的特點(diǎn)。
37、 答:數(shù)據(jù)庫(kù)設(shè)計(jì)既是一項(xiàng)涉及多學(xué)科的綜合性技術(shù)又是一項(xiàng)龐大的工程項(xiàng)目。其主要特點(diǎn)有: 1) 數(shù)據(jù)庫(kù)建設(shè)是硬件、軟件和干件(技術(shù)與管理的界面)的結(jié)合。 2) 從軟件設(shè)計(jì)的技術(shù)角度看,數(shù)據(jù)庫(kù)設(shè)計(jì)應(yīng)該和應(yīng)用系統(tǒng)設(shè)計(jì)相結(jié)合,也就是說(shuō),整個(gè)設(shè)計(jì)過(guò)程中要把結(jié)構(gòu)(數(shù)據(jù))設(shè)計(jì)和行為(處理)設(shè)計(jì)密切結(jié)合起來(lái)。 5. 需求分析階段的設(shè)計(jì)目標(biāo)是什么?調(diào)查的內(nèi)容是什么? 答:需求分析階段的設(shè)計(jì)目標(biāo)是通過(guò)詳細(xì)調(diào)查現(xiàn)實(shí)世界要處理的對(duì)象(組織、部門、企業(yè)等),充分了解原系統(tǒng)(手工系統(tǒng)或計(jì)算機(jī)系統(tǒng))工作概況,明確用戶的各種需求,然后在此基礎(chǔ)上確定新系統(tǒng)的功能。 調(diào)查的內(nèi)容是 “數(shù)據(jù)”和“處理
38、”,即獲得用戶對(duì)數(shù)據(jù)庫(kù)的如下要求: ( 1)信息要求。指用戶需要從數(shù)據(jù)庫(kù)中獲得信息的內(nèi)容與性質(zhì)。由信息要求可以導(dǎo)出數(shù)據(jù)要求,即在數(shù)據(jù)庫(kù)中需要存儲(chǔ)哪些數(shù)據(jù)。 ( 2)處理要求。指用戶要完成什么處理功能,對(duì)處理的響應(yīng)時(shí)間有什么要求,處理方式是批處理還是聯(lián)機(jī)處理。 ?。?3)安全性與完整性要求。 6. 數(shù)據(jù)字典的內(nèi)容和作用是什么? 答:數(shù)據(jù)字典是系統(tǒng)中各類數(shù)據(jù)描述的集合。數(shù)據(jù)字典的內(nèi)容通常包括:數(shù)據(jù)項(xiàng)、數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)流、數(shù)據(jù)存儲(chǔ)、處理過(guò)程五個(gè)部分 其中數(shù)據(jù)項(xiàng)是數(shù)據(jù)的最小組成單位,若干個(gè)數(shù)據(jù)項(xiàng)可以組成一個(gè)數(shù)據(jù)結(jié)構(gòu)。數(shù)據(jù)字典通過(guò)對(duì)數(shù)據(jù)項(xiàng)和數(shù)據(jù)結(jié)構(gòu)的定義來(lái)描述數(shù)據(jù)
39、流、數(shù)據(jù)存儲(chǔ)的邏輯內(nèi)容。 數(shù)據(jù)字典的作用:數(shù)據(jù)字典是關(guān)于數(shù)據(jù)庫(kù)中數(shù)據(jù)的描述,在需求分析階段建立,是下一步進(jìn)行概念設(shè)計(jì)的基礎(chǔ),并在數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中不斷修改、充實(shí)、完善。 (注意,數(shù)據(jù)庫(kù)設(shè)計(jì)階段形成的數(shù)據(jù)字典與后面講到的數(shù)據(jù)字典不同,后者是 DBMS關(guān)于數(shù)據(jù)庫(kù)中數(shù)據(jù)的描述,當(dāng)然兩者是有聯(lián)系的)。 7. 什么是數(shù)據(jù)庫(kù)的概念結(jié)構(gòu)?試述其特點(diǎn)和設(shè)計(jì)策略。 答: 概念結(jié)構(gòu)是信息世界的結(jié)構(gòu),即概念模型,其主要特點(diǎn)是: ?。?1)能真實(shí)、充分地反映現(xiàn)實(shí)世界,包括事物和事物之間的聯(lián)系,能滿足用戶對(duì)數(shù)據(jù)的處理要求。是對(duì)現(xiàn)實(shí)世界的一個(gè)真實(shí)模型。 ?。?2)易于理解,從而可以用
40、它和不熟悉計(jì)算機(jī)的用戶交換意見(jiàn),用戶的積極參與是數(shù)據(jù)庫(kù)的設(shè)計(jì)成功的關(guān)鍵。 ( 3)易于更改,當(dāng)應(yīng)用環(huán)境和應(yīng)用要求改變時(shí),容易對(duì)概念模型修改和擴(kuò)充。 ( 4)易于向關(guān)系、網(wǎng)狀、層次等各種數(shù)據(jù)模型轉(zhuǎn)換。 概念結(jié)構(gòu)的設(shè)計(jì)策略通常有四種: 自頂向下。即首先定義全局概念結(jié)構(gòu)的框架,然后逐步細(xì)化; 自底向上。即首先定義各局部應(yīng)用的概念結(jié)構(gòu),然后將它們集成起來(lái),得到全局概念 結(jié)構(gòu); 逐步擴(kuò)張。首先定義最重要的核心概念結(jié)構(gòu),然后向外擴(kuò)充,以滾雪球的方式逐步生成其他概念結(jié)構(gòu),直至總體概念結(jié)構(gòu); 混合策略。即將自頂向下和自底向上相結(jié)合,用自頂
41、向下策略設(shè)計(jì)一個(gè)全局概念結(jié)構(gòu)的框架,以它為骨架集成由自底向上策略中設(shè)計(jì)的各局部概念結(jié)構(gòu)。 8. 什么叫數(shù)據(jù)抽象?試舉例說(shuō)明。 答: 數(shù)據(jù)抽象是對(duì)實(shí)際的人、物、事和概念進(jìn)行人為處理,抽取所關(guān)心的共同特性,忽略非本質(zhì)的細(xì)節(jié),并把這些特性用各種概念精確地加以描述,這些概念組成了某種模型。 如分類這種抽象是:定義某一類概念作為現(xiàn)實(shí)世界中一組對(duì)象的類型。這些對(duì)象具有某些共同的特性和行為。它抽象了對(duì)象值和型之間的 “is member of”的語(yǔ)義。在E-R模型中,實(shí)體型就是這種抽象。例如在學(xué)校環(huán)境中,李英是老師,表示李英是教師類型中的一員,則教師是實(shí)體型,李英是教師實(shí)體型中的一個(gè)實(shí)體
42、值,具有教師共同的特性和行為:在某個(gè)系某個(gè)專業(yè)教學(xué),講授某些課程,從事某個(gè)方向的科研。 9.試述數(shù)據(jù)庫(kù)概念結(jié)構(gòu)設(shè)計(jì)的重要性和設(shè)計(jì)步驟。 答: 重要性: 數(shù)據(jù)庫(kù)概念設(shè)計(jì)是整個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)的關(guān)鍵,將在需求分析階段所得到的應(yīng)用需求首先抽象為概念結(jié)構(gòu),以此作為各種數(shù)據(jù)模型的共同基礎(chǔ),從而能更好地、更準(zhǔn)確地用某一 DBMS實(shí)現(xiàn)這些需求。 設(shè)計(jì)步驟: 概念結(jié)構(gòu)的設(shè)計(jì)方法有多種,其中最經(jīng)常采用的策略是自底向上方法,該方法的設(shè)計(jì)步驟通常分為兩步:第 1步是抽象數(shù)據(jù)并設(shè)計(jì)局部視圖,第2步是集成局部視圖,得到全局的概念結(jié)構(gòu) 10.什么是E-R圖?構(gòu)成E-R圖的基本要素
43、是什么? 答: E-R圖為實(shí)體-聯(lián)系圖,提供了表示實(shí)體型、屬性和聯(lián)系的方法,用來(lái)描述現(xiàn)實(shí)世界的概念模型。 構(gòu)成 E-R圖的基本要素是實(shí)體型、屬性和聯(lián)系,其表示方法為: 實(shí)體型:用矩形表示,矩形框內(nèi)寫明實(shí)體名; 屬性:用橢圓形表示,并用無(wú)向邊將其與相應(yīng)的實(shí)體連接起來(lái); 聯(lián)系:用菱形表示,菱形框內(nèi)寫明聯(lián)系名,并用無(wú)向邊分別與有關(guān)實(shí)體連接起來(lái),同時(shí)在無(wú)向邊旁標(biāo)上聯(lián)系的類型( 1 : 1,1 : n或m : n)。 11. 為什么要視圖集成?視圖集成的方法是什么? 答:在對(duì)數(shù)據(jù)庫(kù)系統(tǒng)進(jìn)行概念結(jié)構(gòu)設(shè)計(jì)時(shí)一般采用自底向上的設(shè)計(jì)方法,把繁雜的大系統(tǒng)分
44、解子系統(tǒng)。首先設(shè)計(jì)各個(gè)子系統(tǒng)的局部視圖,然后通過(guò)視圖集成的方式將各子系統(tǒng)有機(jī)的融合起來(lái),綜合成一個(gè)系統(tǒng)的總視圖。這樣設(shè)計(jì)清晰,由簡(jiǎn)到繁。由于數(shù)據(jù)庫(kù)系統(tǒng)是從整體角度看待和描述數(shù)據(jù)的,因此數(shù)據(jù)不再面向某個(gè)應(yīng)用而是整個(gè)系統(tǒng)。因此必須進(jìn)行視圖集成,使得數(shù)據(jù)庫(kù)能被全系統(tǒng)的多個(gè)用戶、多個(gè)應(yīng)用共享使用。 一般說(shuō)來(lái),視圖集成可以有兩種方式: 多個(gè)分 E-R圖一次集成; 逐步集成,用累加的方式一次集成兩個(gè)分 E-R圖。 無(wú)論采用哪種方式,每次集成局部 E-R圖時(shí)都需要分兩步走: ( 1)合并。解決各分E-R圖之間的沖突,將各分E-R圖合并起來(lái)生成初步E-R圖。
45、?。?2)修改和重構(gòu)。消除不必要的冗余,生成基本E-R圖。 12. 什么是數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)設(shè)計(jì)?試述其設(shè)計(jì)步驟。 答:數(shù)據(jù)庫(kù)的邏輯結(jié)構(gòu)設(shè)計(jì)就是把概念結(jié)構(gòu)設(shè)計(jì)階段設(shè)計(jì)好的基本 E-R圖轉(zhuǎn)換為與選用的DBMS產(chǎn)品所支持的數(shù)據(jù)模型相符合的邏輯結(jié)構(gòu)。 設(shè)計(jì)步驟為: ( 1)將概念結(jié)構(gòu)轉(zhuǎn)換為一般的關(guān)系、網(wǎng)狀、層次模型; ( 2)將轉(zhuǎn)換來(lái)的關(guān)系、網(wǎng)狀、層次模型向特定DBMS支持下的數(shù)據(jù)模型轉(zhuǎn)換; ( 3)對(duì)數(shù)據(jù)模型進(jìn)行優(yōu)化。 第七章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù) (教材261頁(yè)) 1.試述事務(wù)的概念及事務(wù)的四個(gè)特性。 答:事務(wù)是用戶定義的一個(gè)數(shù)據(jù)庫(kù)操作序列,這
46、些操作要么全做要么全不做 ,是一個(gè)不可分割的工作單位。 事務(wù)具有四個(gè)特性:原子性( Atomicity)、一致性(Consistency)、隔離性(Isolation)和持續(xù)性(Durability)。這個(gè)四個(gè)特性也簡(jiǎn)稱為ACID特性。 原子性:事務(wù)是數(shù)據(jù)庫(kù)的邏輯工作單位,事務(wù)中包括的諸操作要么都做,要么都不做。 一致性:事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。 隔離性:一個(gè)事務(wù)的執(zhí)行不能被其他事務(wù)干擾。即一個(gè)事務(wù)內(nèi)部的操作及使用的數(shù)據(jù)對(duì)其他并發(fā)事務(wù)是隔離的,并發(fā)執(zhí)行的各個(gè)事務(wù)之間不能互相干擾。 持續(xù)性:持續(xù)性也稱永久性( Pe
47、rmanence),指一個(gè)事務(wù)一旦提交,它對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的改變就應(yīng)該是永久性的。接下來(lái)的其他操作或故障不應(yīng)該對(duì)其執(zhí)行結(jié)果有任何影響。 2.為什么事務(wù)非正常結(jié)束時(shí)會(huì)影響數(shù)據(jù)庫(kù)數(shù)據(jù)的正確性,請(qǐng)列舉一例說(shuō)明之。 答:事務(wù)執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫(kù)從一個(gè)一致性狀態(tài)變到另一個(gè)一致性狀態(tài)。如果數(shù)據(jù)庫(kù)系統(tǒng)運(yùn)行中發(fā)生故障,有些事務(wù)尚未完成就被迫中斷,這些未完成事務(wù)對(duì)數(shù)據(jù)庫(kù)所做的修改有一部分已寫入物理數(shù)據(jù)庫(kù),這時(shí)數(shù)據(jù)庫(kù)就處于一種不正確的狀態(tài),或者說(shuō)是不一致的狀態(tài)。 例如某工廠的庫(kù)存管理系統(tǒng)中,要把數(shù)量為 Q的某種零件從倉(cāng)庫(kù)1移到倉(cāng)庫(kù)2存放。 則可以定義一個(gè)事務(wù) T,T包括兩個(gè)操作;Q1
48、=Q1-Q,Q2=Q2+Q。如果T非正常終止時(shí)只做了第一個(gè)操作,則數(shù)據(jù)庫(kù)就處于不一致性狀態(tài),庫(kù)存量無(wú)緣無(wú)故少了Q。 3.數(shù)據(jù)庫(kù)中為什么要有恢復(fù)子系統(tǒng)?它的功能是什么? 答:因?yàn)橛?jì)算機(jī)系統(tǒng)中硬件的故障、軟件的錯(cuò)誤、操作員的失誤以及惡意的破壞是不可避免的,這些故障輕則造成運(yùn)行事務(wù)非正常中斷,影響數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性,重則破壞數(shù)據(jù)庫(kù),使數(shù)據(jù)庫(kù)中全部或部分?jǐn)?shù)據(jù)丟失,因此必須要有恢復(fù)子系統(tǒng)。 恢復(fù)子系統(tǒng)的功能是:把數(shù)據(jù)庫(kù)從錯(cuò)誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài)(亦稱為一致?tīng)顟B(tài)或完整狀態(tài))。 4.?dāng)?shù)據(jù)庫(kù)運(yùn)行中可能產(chǎn)生的故障有哪幾類?哪些故障影響事務(wù)的正常執(zhí)行?哪些故障破壞數(shù)據(jù)庫(kù)數(shù)據(jù)?
49、 答:數(shù)據(jù)庫(kù)系統(tǒng)中可能發(fā)生各種各樣的故障,大致可以分以下幾類: ( 1)事務(wù)內(nèi)部的故障; ( 2)系統(tǒng)故障; ( 3)介質(zhì)故障; ( 4)計(jì)算機(jī)病毒。 事務(wù)故障、系統(tǒng)故障和介質(zhì)故障影響事務(wù)的正常執(zhí)行;介質(zhì)故障和計(jì)算機(jī)病毒破壞數(shù)據(jù)庫(kù)數(shù)據(jù)。 5.據(jù)庫(kù)恢復(fù)的基本技術(shù)有哪些? 答:數(shù)據(jù)轉(zhuǎn)儲(chǔ)和登錄日志文件是數(shù)據(jù)庫(kù)恢復(fù)的基本技術(shù)。 當(dāng)系統(tǒng)運(yùn)行過(guò)程中發(fā)生故障,利用轉(zhuǎn)儲(chǔ)的數(shù)據(jù)庫(kù)后備副本和日志文件就可以將數(shù)據(jù)庫(kù)恢復(fù)到故障前的某個(gè)一致性狀態(tài)。 6. 數(shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)的意義是什么? 試比較各種數(shù)據(jù)轉(zhuǎn)儲(chǔ)方法。 答:數(shù)據(jù)轉(zhuǎn)儲(chǔ)是數(shù)據(jù)庫(kù)恢復(fù)中采用的基本技術(shù)。所謂
50、轉(zhuǎn)儲(chǔ)即 DBA定期地將數(shù)據(jù)庫(kù)復(fù)制到磁帶或另一個(gè)磁盤上保存起來(lái)的過(guò)程。當(dāng)數(shù)據(jù)庫(kù)遭到破壞后可以將后備副本重新裝入,將數(shù)據(jù)庫(kù)恢復(fù)到轉(zhuǎn)儲(chǔ)時(shí)的狀態(tài)。 靜態(tài)轉(zhuǎn)儲(chǔ):在系統(tǒng)中無(wú)運(yùn)行事務(wù)時(shí)進(jìn)行的轉(zhuǎn)儲(chǔ)操作。靜態(tài)轉(zhuǎn)儲(chǔ)簡(jiǎn)單,但必須等待正運(yùn)行的用戶事務(wù)結(jié)束才能進(jìn)行。同樣,新的事務(wù)必須等待轉(zhuǎn)儲(chǔ)結(jié)束才能執(zhí)行。顯然,這會(huì)降低數(shù)據(jù)庫(kù)的可用性。 動(dòng)態(tài)轉(zhuǎn)儲(chǔ):指轉(zhuǎn)儲(chǔ)期間允許對(duì)數(shù)據(jù)庫(kù)進(jìn)行存取或修改。動(dòng)態(tài)轉(zhuǎn)儲(chǔ)可克服靜態(tài)轉(zhuǎn)儲(chǔ)的缺點(diǎn),它不用等待正在運(yùn)行的用戶事務(wù)結(jié)束,也不會(huì)影響新事務(wù)的運(yùn)行。但是,轉(zhuǎn)儲(chǔ)結(jié)束時(shí)后援副本上的數(shù)據(jù)并不能保證正確有效。因?yàn)檗D(zhuǎn)儲(chǔ)期間運(yùn)行的事務(wù)可能修改了某些數(shù)據(jù),使得后援副本上的數(shù)據(jù)不是數(shù)據(jù)庫(kù)的一致版本。
51、 為此,必須把轉(zhuǎn)儲(chǔ)期間各事務(wù)對(duì)數(shù)據(jù)庫(kù)的修改活動(dòng)登記下來(lái),建立日志文件( log file)。這樣,后援副本加上日志文件就能得到數(shù)據(jù)庫(kù)某一時(shí)刻的正確狀態(tài)。 轉(zhuǎn)儲(chǔ)還可以分為海量轉(zhuǎn)儲(chǔ)和增量轉(zhuǎn)儲(chǔ)兩種方式。 海量轉(zhuǎn)儲(chǔ)是指每次轉(zhuǎn)儲(chǔ)全部數(shù)據(jù)庫(kù)。增量轉(zhuǎn)儲(chǔ)則指每次只轉(zhuǎn)儲(chǔ)上一次轉(zhuǎn)儲(chǔ)后更新過(guò)的數(shù)據(jù)。從恢復(fù)角度看,使用海量轉(zhuǎn)儲(chǔ)得到的后備副本進(jìn)行恢復(fù)一般說(shuō)來(lái)更簡(jiǎn)單些。但如果數(shù)據(jù)庫(kù)很大,事務(wù)處理又十分頻繁,則增量轉(zhuǎn)儲(chǔ)方式更實(shí)用更有效。 7. 什么是日志文件?為什么要設(shè)立日志文件? 答:( 1)日志文件是用來(lái)記錄事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新操作的文件。 ?。?2)設(shè)立日志文件的目的是: 進(jìn)行
52、事務(wù)故障恢復(fù);進(jìn)行系統(tǒng)故障恢復(fù);協(xié)助后備副本進(jìn)行介質(zhì)故障恢復(fù)。 8. 登記日志文件時(shí)為什么必須先寫日志文件,后寫數(shù)據(jù)庫(kù)? 答:把對(duì)數(shù)據(jù)的修改寫到數(shù)據(jù)庫(kù)中和把表示這個(gè)修改的日志記錄寫到日志文件中是兩個(gè)不同的操作。有可能在這兩個(gè)操作之間發(fā)生故障,即這兩個(gè)寫操作只完成了一個(gè)。 如果先寫了數(shù)據(jù)庫(kù)修改,而在運(yùn)行記錄中沒(méi)有登記這個(gè)修改,則以后就無(wú)法恢復(fù)這個(gè)修改了。如果先寫日志,但沒(méi)有修改數(shù)據(jù)庫(kù),在恢復(fù)時(shí)只不過(guò)是多執(zhí)行一次 UNDO操作,并不會(huì)影響數(shù)據(jù)庫(kù)的正確性。所以一定要先寫日志文件,即首先把日志記錄寫到日志文件中,然后寫數(shù)據(jù)庫(kù)的修改。 9. 針對(duì)不同的故障,試給出恢復(fù)的策略和方法
53、。(即如何進(jìn)行事務(wù)故障的恢復(fù)?系統(tǒng)故障的恢復(fù)?介質(zhì)故障恢復(fù)?) 答:事務(wù)故障的恢復(fù): 事務(wù)故障的恢復(fù)是由 DBMS自動(dòng)完成的,對(duì)用戶是透明的。 DBMS執(zhí)行恢復(fù)步驟是: ?。?1)反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作。 ?。?2)對(duì)該事務(wù)的更新操作執(zhí)行逆操作。即將日志記錄中“更新前的值”寫入數(shù)據(jù)庫(kù)。 ( 3)繼續(xù)反向掃描日志文件,做同樣處理。 ?。?4)如此處理下去,直至讀到此事務(wù)的開(kāi)始標(biāo)記,該事務(wù)故障的恢復(fù)就完成了。 系統(tǒng)故障的恢復(fù): 系統(tǒng)故障可能會(huì)造成數(shù)據(jù)庫(kù)處于不一致?tīng)顟B(tài): 一是未完成事務(wù)對(duì)
54、數(shù)據(jù)庫(kù)的更新可能已寫入數(shù)據(jù)庫(kù); 二是已提交事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能還留在緩沖區(qū),沒(méi)來(lái)得及寫入數(shù)據(jù)庫(kù)。 因此恢復(fù)操作就是要撤銷 (UNDO)故障發(fā)生時(shí)未完成的事務(wù),重做(REDO)已完成的事務(wù)。 系統(tǒng)的恢復(fù)步驟是: ?。?1)正向掃描日志文件,找出在故障發(fā)生前已經(jīng)提交的事務(wù)隊(duì)列(REDO隊(duì)列)和未完成的事務(wù)隊(duì)列(UNDO隊(duì)列)。 ( 2)對(duì)撤銷隊(duì)列中的各個(gè)事務(wù)進(jìn)行UNDO處理。 進(jìn)行 UNDO處理的方法是,反向掃描日志文件,對(duì)每個(gè)UNDO事務(wù)的更新操作執(zhí)行逆操作,即將日志記錄中“更新前的值”(Before Image)寫入數(shù)據(jù)庫(kù)。 ( 3)對(duì)重
55、做隊(duì)列中的各個(gè)事務(wù)進(jìn)行REDO處理。 進(jìn)行 REDO處理的方法是:正向掃描日志文件,對(duì)每個(gè)REDO事務(wù)重新執(zhí)行日志文件登記的操作。即將日志記錄中“更新后的值”(After Image)寫入數(shù)據(jù)庫(kù)。 介質(zhì)故障的恢復(fù): 介質(zhì)故障是最嚴(yán)重的一種故障。 恢復(fù)方法是重裝數(shù)據(jù)庫(kù),然后重做已完成的事務(wù)。具體過(guò)程是: ?。?1)DBA裝入最新的數(shù)據(jù)庫(kù)后備副本(離故障發(fā)生時(shí)刻最近的轉(zhuǎn)儲(chǔ)副本),使數(shù)據(jù)庫(kù)恢復(fù)到轉(zhuǎn)儲(chǔ)時(shí)的一致性狀態(tài)。 ( 2)DBA裝入轉(zhuǎn)儲(chǔ)結(jié)束時(shí)刻的日志文件副本 ?。?3)DBA啟動(dòng)系統(tǒng)恢復(fù)命令,由DBMS完成恢復(fù)功能,即重做已完成的事務(wù)。 10
56、. 具有檢查點(diǎn)的恢復(fù)技術(shù)有什么優(yōu)點(diǎn)? 答:利用日志技術(shù)進(jìn)行數(shù)據(jù)庫(kù)恢復(fù)時(shí),恢復(fù)子系統(tǒng)必須搜索日志,確定哪些事務(wù)需要 REDO,哪些事務(wù)需要UNDO。一般來(lái)說(shuō),需要檢查所有日志記錄。這樣做有兩個(gè)問(wèn)題: 一是搜索整個(gè)日志將耗費(fèi)大量的時(shí)間。 二是很多需要 REDO處理的事務(wù)實(shí)際上已經(jīng)將它們的更新操作結(jié)果寫到數(shù)據(jù)庫(kù)中了,恢復(fù)子系統(tǒng)又重新執(zhí)行了這些操作,浪費(fèi)了大量時(shí)間。 檢查點(diǎn)技術(shù)就是為了解決這些問(wèn)題。 11. 試述使用檢查點(diǎn)方法進(jìn)行恢復(fù)的步驟。 答:① 從重新開(kāi)始文件中找到最后一個(gè)檢查點(diǎn)記錄在日志文件中的地址,由該地址在日志文件中找到最后一個(gè)檢查點(diǎn)記錄。
57、 ?、?由該檢查點(diǎn)記錄得到檢查點(diǎn)建立時(shí)刻所有正在執(zhí)行的事務(wù)清單 ACTIVE-LIST。 這里建立兩個(gè)事務(wù)隊(duì)列 : UNDO-LIST: 需要執(zhí)行undo操作的事務(wù)集合; REDO-LIST: 需要執(zhí)行redo操作的事務(wù)集合; 把 ACTIVE-LIST暫時(shí)放入U(xiǎn)NDO-LIST隊(duì)列,REDO隊(duì)列暫為空。 ?、?從檢查點(diǎn)開(kāi)始正向掃描日志文件 如有新開(kāi)始的事務(wù) Ti,把Ti暫時(shí)放入U(xiǎn)NDO-LIST隊(duì)列; 如有提交的事務(wù) Tj,把Tj從UNDO-LIST隊(duì)列移到REDO-LIST隊(duì)列,直到日志文件結(jié)束; ?、?對(duì) UNDO-LI
58、ST中的每個(gè)事務(wù)執(zhí)行UNDO操作, 對(duì)REDO-LIST中的每個(gè)事務(wù)執(zhí)行REDO操作。 12. 什么是數(shù)據(jù)庫(kù)鏡像?它有什么用途? 答:數(shù)據(jù)庫(kù)鏡像即根據(jù) DBA的要求,自動(dòng)把整個(gè)數(shù)據(jù)庫(kù)或者其中的部分關(guān)鍵數(shù)據(jù)復(fù)制到另一個(gè)磁盤上。每當(dāng)主數(shù)據(jù)庫(kù)更新時(shí),DBMS自動(dòng)把更新后的數(shù)據(jù)復(fù)制過(guò)去,即DBMS自動(dòng)保證鏡像數(shù)據(jù)與主數(shù)據(jù)的一致性。 數(shù)據(jù)庫(kù)鏡像的用途有: 一是用于數(shù)據(jù)庫(kù)恢復(fù)。當(dāng)出現(xiàn)介質(zhì)故障時(shí),可由鏡像磁盤繼續(xù)提供使用,同時(shí) DBMS自動(dòng)利用鏡像磁盤數(shù)據(jù)進(jìn)行數(shù)據(jù)庫(kù)的恢復(fù),不需要關(guān)閉系統(tǒng)和重裝數(shù)據(jù)庫(kù)副本。 二是提高數(shù)據(jù)庫(kù)的可用性。在沒(méi)有出現(xiàn)故障時(shí),當(dāng)一個(gè)用戶對(duì)某個(gè)數(shù)據(jù)加排
59、它鎖進(jìn)行修改時(shí),其他用戶可以讀鏡像數(shù)據(jù)庫(kù)上的數(shù)據(jù),而不必等待該用戶釋放鎖。 第八章 數(shù)據(jù)庫(kù)并發(fā)控制 (教材280頁(yè)) 1. 在數(shù)據(jù)庫(kù)中為什么要并發(fā)控制? 答:數(shù)據(jù)庫(kù)是共享資源,通常有許多個(gè)事務(wù)同時(shí)在運(yùn)行。 當(dāng)多個(gè)事務(wù)并發(fā)地存取數(shù)據(jù)庫(kù)時(shí)就會(huì)產(chǎn)生同時(shí)讀取和 /或修改同一數(shù)據(jù)的情況。若對(duì)并發(fā)操作不加控制就可能會(huì)存取和存儲(chǔ)不正確的數(shù)據(jù),破壞數(shù)據(jù)庫(kù)的一致性。所以數(shù)據(jù)庫(kù)管理系統(tǒng)必須提供并發(fā)控制機(jī)制。 2. 并發(fā)操作可能會(huì)產(chǎn)生哪幾類數(shù)據(jù)不一致?用什么方法能避免各種不一致的情況? 答:并發(fā)操作帶來(lái)的數(shù)據(jù)不一致性包括三類:丟失修改、不可重復(fù)讀和讀 “臟”數(shù)據(jù)。 ( 1
60、)丟失修改(Lost Update) 兩個(gè)事務(wù) T1和T2讀入同一數(shù)據(jù)并修改,T2提交的結(jié)果破壞了(覆蓋了)T1提交的結(jié)果,導(dǎo)致T1的修改被丟失。 ( 2)不可重復(fù)讀(Non-Repeatable Read) 不可重復(fù)讀是指事務(wù) T1讀取數(shù)據(jù)后,事務(wù)T2執(zhí)行更新操作,使T1無(wú)法再現(xiàn)前一次讀取結(jié)果。 ?。?3)讀“臟”數(shù)據(jù)(Dirty Read) 讀 “臟”數(shù)據(jù)是指事務(wù)T1修改某一數(shù)據(jù),并將其寫回磁盤,事務(wù)T2讀取同一數(shù)據(jù)后,T1由于某種原因被撤銷,這時(shí)T1已修改過(guò)的數(shù)據(jù)恢復(fù)原值,T2讀到的數(shù)據(jù)就與數(shù)據(jù)庫(kù)中的數(shù)據(jù)不一致,則T2讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正
61、確的數(shù)據(jù)。 避免不一致性的方法和技術(shù)就是并發(fā)控制。最常用的并發(fā)控制技術(shù)是封鎖技術(shù)。 也可以用其他技術(shù),例如在分布式數(shù)據(jù)庫(kù)系統(tǒng)中可以采用時(shí)間戳方法來(lái)進(jìn)行并發(fā)控制。 3. 什么是封鎖? 答:封鎖就是事務(wù) T在對(duì)某個(gè)數(shù)據(jù)對(duì)象例如表、記錄等操作之前,先向系統(tǒng)發(fā)出請(qǐng)求,對(duì)其加鎖。加鎖后事務(wù)T就對(duì)該數(shù)據(jù)對(duì)象有了一定的控制,在事務(wù)T釋放它的鎖之前,其他的事務(wù)不能更新此數(shù)據(jù)對(duì)象。 封鎖是實(shí)現(xiàn)并發(fā)控制的一個(gè)非常重要的技術(shù)。 4. 基本的封鎖類型有幾種?試述它們的含義。 答:基本的封鎖類型有兩種 : 排它鎖(Exclusive Locks,簡(jiǎn)稱X鎖) 和共享鎖(Sh
62、are Locks,簡(jiǎn)稱S鎖)。 排它鎖又稱為寫鎖。若事務(wù) T對(duì)數(shù)據(jù)對(duì)象A加上X鎖,則只允許T讀取和修改A,其他任何事務(wù)都不能再對(duì)A加任何類型的鎖,直到T釋放A上的鎖。這就保證了其他事務(wù)在T釋放A上的鎖之前不能再讀取和修改A。 共享鎖又稱為讀鎖。若事務(wù) T對(duì)數(shù)據(jù)對(duì)象A加上S鎖,則事務(wù)T可以讀A但不能修改A,其他事務(wù)只能再對(duì)A加S鎖,而不能加X(jué)鎖,直到T釋放A上的S鎖。這就保證了其他事務(wù)可以讀A,但在T釋放A上的S鎖之前不能對(duì)A做任何修改。 5. 什么是封鎖協(xié)議?不同級(jí)別的封鎖協(xié)議的主要區(qū)別是什么? 答:在運(yùn)用封鎖技術(shù)對(duì)數(shù)據(jù)加鎖時(shí),要約定一些規(guī)則。例如,在運(yùn)用 X鎖和
63、S鎖對(duì)數(shù)據(jù)對(duì)象加鎖時(shí),要約定何時(shí)申請(qǐng)X鎖或S鎖、何時(shí)釋放封鎖等。這些約定或者規(guī)則稱為封鎖協(xié)議(Locking Protocol)。對(duì)封鎖方式約定不同的規(guī)則,就形成了各種不同的封鎖協(xié)議。不同級(jí)別的封鎖協(xié)議,例如《概論》中介紹的三級(jí)封鎖協(xié)議,三級(jí)協(xié)議的主要區(qū)別在于什么操作需要申請(qǐng)封鎖,何時(shí)申請(qǐng)封鎖以及何時(shí)釋放鎖(即持鎖時(shí)間的長(zhǎng)短)。 一級(jí)封鎖協(xié)議:事務(wù) T在修改數(shù)據(jù)R之前必須先對(duì)其加X(jué)鎖,直到事務(wù)結(jié)束才釋放。 二級(jí)封鎖協(xié)議:一級(jí)封鎖協(xié)議加上事務(wù) T在讀取數(shù)據(jù)R之前必須先對(duì)其加S鎖,讀完后即可釋放S鎖。 三級(jí)封鎖協(xié)議:一級(jí)封鎖協(xié)議加上事務(wù) T在讀取數(shù)據(jù)R之前必須先對(duì)其加
64、S鎖,直到事務(wù)結(jié)束才釋放。 6. 不同封鎖協(xié)議與系統(tǒng)一致性級(jí)別的關(guān)系是什么? 答:不同的封鎖協(xié)議對(duì)應(yīng)不同的一致性級(jí)別。 一級(jí)封鎖協(xié)議可防止丟失修改,并保證事務(wù) T是可恢復(fù)的。在一級(jí)封鎖協(xié)議中,對(duì)讀數(shù)據(jù)是不加S鎖的,所以它不能保證可重復(fù)讀和不讀“臟”數(shù)據(jù)。 二級(jí)封鎖協(xié)議除防止了丟失修改,還可進(jìn)一步防止讀 “臟”數(shù)據(jù)。在二級(jí)封鎖協(xié)議中,由于讀完數(shù)據(jù)后立即釋放S鎖,所以它不能保證可重復(fù)讀。 在三級(jí)封鎖協(xié)議中,無(wú)論是讀數(shù)據(jù)還是寫數(shù)據(jù)都加長(zhǎng)鎖,即都要到事務(wù)結(jié)束時(shí)才釋放封鎖。所以三級(jí)封鎖協(xié)議除防止了丟失修改和不讀 “臟”數(shù)據(jù)外,還進(jìn)一步防止了不可重復(fù)讀。 7.
65、試述活鎖的產(chǎn)生原因和解決方法。 答:活鎖產(chǎn)生的原因:當(dāng)一系列封鎖不能按照其先后順序執(zhí)行時(shí),就可能導(dǎo)致一些事務(wù)無(wú)限期等待某個(gè)封鎖,從而導(dǎo)致活鎖。 避免活鎖的簡(jiǎn)單方法是采用先來(lái)先服務(wù)的策略。當(dāng)多個(gè)事務(wù)請(qǐng)求封鎖同一數(shù)據(jù)對(duì)象時(shí),封鎖子系統(tǒng)按請(qǐng)求封鎖的先后次序?qū)κ聞?wù)排隊(duì),數(shù)據(jù)對(duì)象上的鎖一旦釋放就批準(zhǔn)申請(qǐng)隊(duì)列中第一個(gè)事務(wù)獲得鎖。 8. 請(qǐng)給出預(yù)防死鎖的若干方法。 答:在數(shù)據(jù)庫(kù)中,產(chǎn)生死鎖的原因是兩個(gè)或多個(gè)事務(wù)都已封鎖了一些數(shù)據(jù)對(duì)象,然后又都請(qǐng)求已被其他事務(wù)封鎖的數(shù)據(jù)加鎖,從而出現(xiàn)死等待。 防止死鎖的發(fā)生其實(shí)就是要破壞產(chǎn)生死鎖的條件。預(yù)防死鎖通常有兩種方法: ?。?
66、1)一次封鎖法 要求每個(gè)事務(wù)必須一次將所有要使用的數(shù)據(jù)全部加鎖,否則就不能繼續(xù)執(zhí)行。 ?。?2)順序封鎖法 預(yù)先對(duì)數(shù)據(jù)對(duì)象規(guī)定一個(gè)封鎖順序,所有事務(wù)都按這個(gè)順序?qū)嵭蟹怄i。 不過(guò),預(yù)防死鎖的策略不大適合數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)。 9. 請(qǐng)給出檢測(cè)死鎖發(fā)生的一種方法,當(dāng)發(fā)生死鎖后如何解除死鎖? 答:數(shù)據(jù)庫(kù)系統(tǒng)一般采用允許死鎖發(fā)生, DBMS檢測(cè)到死鎖后加以解除的方法。 DBMS中診斷死鎖的方法與操作系統(tǒng)類似,一般使用超時(shí)法或事務(wù)等待圖法。 超時(shí)法是:如果一個(gè)事務(wù)的等待時(shí)間超過(guò)了規(guī)定的時(shí)限,就認(rèn)為發(fā)生了死鎖。超時(shí)法實(shí)現(xiàn)簡(jiǎn)單,但有可能誤判死鎖,事務(wù)因其他原因長(zhǎng)時(shí)間等待超過(guò)時(shí)限時(shí),系統(tǒng)會(huì)誤認(rèn)為發(fā)生了死鎖。若時(shí)限設(shè)置得太長(zhǎng),又不能及時(shí)發(fā)現(xiàn)死鎖發(fā)生。 DBMS并發(fā)控制子系統(tǒng)檢測(cè)到死鎖后,就要設(shè)法解除。通常采用的方法是選擇一個(gè)處理死鎖代價(jià)最小的事務(wù),將其撤消,釋放此事務(wù)持有的所有鎖,使其他事務(wù)得以繼續(xù)運(yùn)行下去。當(dāng)然,對(duì)撤銷的事務(wù)所執(zhí)行的數(shù)據(jù)修改操作必須加
- 溫馨提示:
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. 裝配圖網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024《增值稅法》全文學(xué)習(xí)解讀(規(guī)范增值稅的征收和繳納保護(hù)納稅人的合法權(quán)益)
- 2024《文物保護(hù)法》全文解讀學(xué)習(xí)(加強(qiáng)對(duì)文物的保護(hù)促進(jìn)科學(xué)研究工作)
- 銷售技巧培訓(xùn)課件:接近客戶的套路總結(jié)
- 20種成交的銷售話術(shù)和技巧
- 銷售技巧:接近客戶的8種套路
- 銷售套路總結(jié)
- 房產(chǎn)銷售中的常見(jiàn)問(wèn)題及解決方法
- 銷售技巧:值得默念的成交話術(shù)
- 銷售資料:讓人舒服的35種說(shuō)話方式
- 汽車銷售績(jī)效管理規(guī)范
- 銷售技巧培訓(xùn)課件:絕對(duì)成交的銷售話術(shù)
- 頂尖銷售技巧總結(jié)
- 銷售技巧:電話營(yíng)銷十大定律
- 銷售逼單最好的二十三種技巧
- 銷售最常遇到的10大麻煩