《數(shù)據(jù)庫(kù)原理》課后練習(xí)答案整理.doc
《《數(shù)據(jù)庫(kù)原理》課后練習(xí)答案整理.doc》由會(huì)員分享,可在線閱讀,更多相關(guān)《《數(shù)據(jù)庫(kù)原理》課后練習(xí)答案整理.doc(22頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
第1章 緒論 1 .試述數(shù)據(jù)、數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)系統(tǒng)、數(shù)據(jù)庫(kù)管理系統(tǒng)的概念。 答: ( l )數(shù)據(jù)( Data ) :描述事物的符號(hào)記錄稱為數(shù)據(jù)。數(shù)據(jù)的種類有數(shù)字、文字、圖形、圖像、聲音、正文等。數(shù)據(jù)與其語(yǔ)義是不可分的。解析在現(xiàn)代計(jì)算機(jī)系統(tǒng)中數(shù)據(jù)的概念是廣義的。早期的計(jì)算機(jī)系統(tǒng)主要用于科學(xué)計(jì)算,處理的數(shù)據(jù)是整數(shù)、實(shí)數(shù)、浮點(diǎn)數(shù)等傳統(tǒng)數(shù)學(xué)中的數(shù)據(jù)?,F(xiàn)代計(jì)算機(jī)能存儲(chǔ)和處理的對(duì)象十分廣泛,表示這些對(duì)象的數(shù)據(jù)也越來(lái)越復(fù)雜。數(shù)據(jù)與其語(yǔ)義是不可分的。 500 這個(gè)數(shù)字可以表示一件物品的價(jià)格是 500 元,也可以表示一個(gè)學(xué)術(shù)會(huì)議參加的人數(shù)有 500 人,還可以表示一袋奶粉重 500 克。 ( 2 )數(shù)據(jù)庫(kù)( DataBase ,簡(jiǎn)稱 DB ) :數(shù)據(jù)庫(kù)是長(zhǎng)期儲(chǔ)存在計(jì)算機(jī)內(nèi)的、有組織的、可共享的數(shù)據(jù)集合。數(shù)據(jù)庫(kù)中的數(shù)據(jù)按一定的數(shù)據(jù)模型組織、描述和儲(chǔ)存,具有較小的冗余度、較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并可為各種用戶共享。 ( 3 )數(shù)據(jù)庫(kù)系統(tǒng)( DataBas 。 Sytem ,簡(jiǎn)稱 DBS ) :數(shù)據(jù)庫(kù)系統(tǒng)是指在計(jì)算機(jī)系統(tǒng)中引入數(shù)據(jù)庫(kù)后的系統(tǒng)構(gòu)成,一般由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)(及其開(kāi)發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)管理員構(gòu)成。解析數(shù)據(jù)庫(kù)系統(tǒng)和數(shù)據(jù)庫(kù)是兩個(gè)概念。數(shù)據(jù)庫(kù)系統(tǒng)是一個(gè)人一機(jī)系統(tǒng),數(shù)據(jù)庫(kù)是數(shù)據(jù)庫(kù)系統(tǒng)的一個(gè)組成部分。但是在日常工作中人們常常把數(shù)據(jù)庫(kù)系統(tǒng)簡(jiǎn)稱為數(shù)據(jù)庫(kù)。希望讀者能夠從人們講話或文章的上下文中區(qū)分“數(shù)據(jù)庫(kù)系統(tǒng)”和“數(shù)據(jù)庫(kù)”,不要引起混淆。 ( 4 )數(shù)據(jù)庫(kù)管理系統(tǒng)( DataBase Management sytem ,簡(jiǎn)稱 DBMs ) :數(shù)據(jù)庫(kù)管理系統(tǒng)是位于用戶與操作系統(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ù)功能。解析 DBMS 是一個(gè)大型的復(fù)雜的軟件系統(tǒng),是計(jì)算機(jī)中的基礎(chǔ)軟件。目前,專門研制 DBMS 的廠商及其研制的 DBMS 產(chǎn)品很多。著名的有美國(guó) IBM 公司的 DBZ 關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)和 IMS 層次數(shù)據(jù)庫(kù)管理系統(tǒng)、美國(guó) Oracle 公司的 orade 關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)、 s 油 ase 公司的 s 油 ase 關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)、美國(guó)微軟公司的 SQL Serve ,關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)等。 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),等等。使用數(shù)據(jù)庫(kù)系統(tǒng)可以大大提高應(yīng)用開(kāi)發(fā)的效率。因?yàn)樵跀?shù)據(jù)庫(kù)系統(tǒng)中應(yīng)用程序不必考慮數(shù)據(jù)的定義、存儲(chǔ)和數(shù)據(jù)存取的具體路徑,這些工作都由 DBMS 來(lái)完成。用一個(gè)通俗的比喻,使用了 DBMS 就如有了一個(gè)好參謀、好助手,許多具體的技術(shù)工作都由這個(gè)助手來(lái)完成。開(kāi)發(fā)人員就可以專注于應(yīng)用邏輯的設(shè)計(jì),而不必為數(shù)據(jù)管理的許許多多復(fù)雜的細(xì)節(jié)操心。還有,當(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í)行。總之,使用數(shù)據(jù)庫(kù)系統(tǒng)的優(yōu)點(diǎn)是很多的,既便于數(shù)據(jù)的集中管理,控制數(shù)據(jù)冗余,提高數(shù)據(jù)的利用率和一致性,又有利于應(yīng)用程序的開(kāi)發(fā)和維護(hù)。讀者可以在自己今后的工作中結(jié)合具體應(yīng)用,認(rèn)真加以體會(huì)和總結(jié)。 3 .試述文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng)的區(qū)別和聯(lián)系。 答: 文件系統(tǒng)與數(shù)據(jù)庫(kù)系統(tǒng)的區(qū)別是:文件系統(tǒng)面向某一應(yīng)用程序,共享性差,冗余度大,數(shù)據(jù)獨(dú)立性差,記錄內(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ù)據(jù)的軟件。解析文件系統(tǒng)是操作系統(tǒng)的重要組成部分;而 DBMS 是獨(dú)立于操作系統(tǒng)的軟件。但是 DBMS 是在操作系統(tǒng)的基礎(chǔ)上實(shí)現(xiàn)的;數(shù)據(jù)庫(kù)中數(shù)據(jù)的組織和存儲(chǔ)是通過(guò)操作系統(tǒng)中的文件系統(tǒng)來(lái)實(shí)現(xiàn)的。 4.試述數(shù)據(jù)庫(kù)系統(tǒng)的特點(diǎn)。 答: 數(shù)據(jù)庫(kù)系統(tǒng)的主要特點(diǎn)有: ( l )數(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ū)別。解析注意這里的“整體’夕兩個(gè)字。在數(shù)據(jù)庫(kù)系統(tǒng)中,數(shù)據(jù)不再針對(duì)某一個(gè)應(yīng)用,而是面向全組織,具有整體的結(jié)構(gòu)化。不僅數(shù)據(jù)是結(jié)構(gòu)化的,而且數(shù)據(jù)的存取單位即一次可以存取數(shù)據(jù)的大小也很靈活,可以小到某一個(gè)數(shù)據(jù)項(xiàng)(如一個(gè)學(xué)生的姓名),大到一組記錄(成千上萬(wàn)個(gè)學(xué)生記錄)。而在文件系統(tǒng)中,數(shù)據(jù)的存取單位只有一個(gè):記錄,如一個(gè)學(xué)生的完整記錄。 ( 2 )數(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ù)共享可以大大減少數(shù)據(jù)冗余,節(jié)約存儲(chǔ)空間,同時(shí)還能夠避免數(shù)據(jù)之間的不相容性與不一致性。所謂“數(shù)據(jù)面向某個(gè)應(yīng)用”是指數(shù)據(jù)結(jié)構(gòu)是針對(duì)某個(gè)應(yīng)用設(shè)計(jì)的,只被這個(gè)應(yīng)用程序或應(yīng)用系統(tǒng)使用,可以說(shuō)數(shù)據(jù)是某個(gè)應(yīng)用的“私有資源”。所謂“彈性大”是指系統(tǒng)容易擴(kuò)充也容易收縮,即應(yīng)用增加或減少時(shí)不必修改整個(gè)數(shù)據(jù)庫(kù)的結(jié)構(gòu),只需做很少的改動(dòng)??梢匀≌w數(shù)據(jù)的各種子集用于不同的應(yīng)用系統(tǒng),當(dāng)應(yīng)用需求改變或增加時(shí),只要重新選取不同的子集或加上一部分?jǐn)?shù)據(jù),便可以滿足新的需求。 ( 3 )數(shù)據(jù)獨(dú)立性高數(shù)據(jù)獨(dú)立性包括數(shù)據(jù)的物理獨(dú)立性和數(shù)據(jù)的邏輯獨(dú)立性。數(shù)據(jù)庫(kù)管理系統(tǒng)的模式結(jié)構(gòu)和二級(jí)映像功能保證了數(shù)據(jù)庫(kù)中的數(shù)據(jù)具有很高的物理獨(dú)立性和邏輯獨(dú)立性。 ( 4 )數(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ù)。解析 DBMS 數(shù)據(jù)控制功能包括四個(gè)方面:數(shù)據(jù)的安全性保護(hù):保護(hù)數(shù)據(jù)以防止不合法的使用造成的數(shù)據(jù)的泄密和破壞;數(shù)據(jù)的完整性檢查:將數(shù)據(jù)控制在有效的范圍內(nèi),或保證數(shù)據(jù)之間滿足一定的關(guān)系;并發(fā)控制:對(duì)多用戶的并發(fā)操作加以控制和協(xié)調(diào),保證并發(fā)操作的正確性;數(shù)據(jù)庫(kù)恢復(fù):當(dāng)計(jì)算機(jī)系統(tǒng)發(fā)生硬件故障、軟件故障,或者由于操作員的失誤以及故意的破壞影響數(shù)據(jù)庫(kù)中數(shù)據(jù)的正確性,甚至造成數(shù)據(jù)庫(kù)部分或全部數(shù)據(jù)的丟失時(shí),能將數(shù)據(jù)庫(kù)從錯(cuò)誤狀態(tài)恢復(fù)到某一已知的正確狀態(tài)(亦稱為完整狀態(tài)或一致?tīng)顟B(tài))。下面可以得到“什么是數(shù)據(jù)庫(kù)”的一個(gè)定義:數(shù)據(jù)庫(kù)是長(zhǎng)期存儲(chǔ)在計(jì)算機(jī)內(nèi)有組織的大量的共享的數(shù)據(jù)集合,它可以供各種用戶共享,具有最小冗余度和較高的數(shù)據(jù)獨(dú)立性。 DBMS 在數(shù)據(jù)庫(kù)建立、運(yùn)用和維護(hù)時(shí)對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一控制,以保證數(shù)據(jù)的完整性、安全性,并在多用戶同時(shí)使用數(shù)據(jù)庫(kù)時(shí)進(jìn)行并發(fā)控制,在發(fā)生故障后對(duì)系統(tǒng)進(jìn)行恢復(fù)。數(shù)據(jù)庫(kù)系統(tǒng)的出現(xiàn)使信息系統(tǒng)從以加工數(shù)據(jù)的程序?yàn)橹行霓D(zhuǎn)向圍繞共享的數(shù)據(jù)庫(kù)為中心的新階段。 5 .?dāng)?shù)據(jù)庫(kù)管理系統(tǒng)的主要功能有哪些? 答: ( l )數(shù)據(jù)庫(kù)定義功能; ( 2 )數(shù)據(jù)存取功能; ( 3 )數(shù)據(jù)庫(kù)運(yùn)行管理; ( 4 )數(shù)據(jù)庫(kù)的建立和維護(hù)功能。 6 .試述數(shù)據(jù)庫(kù)系統(tǒng)三級(jí)模式結(jié)構(gòu),這種結(jié)構(gòu)的優(yōu)點(diǎn)是什么? 答: 數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式結(jié)構(gòu)由外模式、模式和內(nèi)模式組成。(參見(jiàn)書(shū)上圖 1 . 29 ) 外模式,亦稱子模式或用戶模式,是數(shù)據(jù)庫(kù)用戶(包括應(yīng)用程序員和最終用戶)能夠看見(jiàn)和使用的局部數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是數(shù)據(jù)庫(kù)用戶的數(shù)據(jù)視圖,是與某一應(yīng)用有關(guān)的數(shù)據(jù)的邏輯表示。模式,亦稱邏輯模式,是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖。模式描述的是數(shù)據(jù)的全局邏輯結(jié)構(gòu)。外模式涉及的是數(shù)據(jù)的局部邏輯結(jié)構(gòu),通常是模式的子集。內(nèi)模式,亦稱存儲(chǔ)模式,是數(shù)據(jù)在數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部的表示,即對(duì)數(shù)據(jù)的物理結(jié)構(gòu)和存儲(chǔ)方式的描述。數(shù)據(jù)庫(kù)系統(tǒng)的三級(jí)模式是對(duì)數(shù)據(jù)的三個(gè)抽象級(jí)別,它把數(shù)據(jù)的具體組織留給 DBMs 管理,使用戶能邏輯抽象地處理數(shù)據(jù),而不必關(guān)心數(shù)據(jù)在計(jì)算機(jī)中的表示和存儲(chǔ)。為了能夠在內(nèi)部實(shí)現(xiàn)這三個(gè)抽象層次的聯(lián)系和轉(zhuǎn)換,數(shù)據(jù)庫(kù)系統(tǒng)在這三級(jí)模式之間提供了兩層映像:外模式/模式映像和模式/內(nèi)模式映像。正是這兩層映像保證了數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨(dú)立性和物理獨(dú)立性。 7.定義并解釋以下術(shù)語(yǔ):模式、外模式、內(nèi)模式、 DDL 、 DML 模式、外模式、內(nèi)模式,亦稱邏輯模式,是數(shù)據(jù)庫(kù)中全體數(shù)據(jù)的邏輯結(jié)構(gòu)和特征的描述,是所有用戶的公共數(shù)據(jù)視圖。模式描述的是數(shù)據(jù)的全局邏輯結(jié)構(gòu)。外模式涉及的是數(shù)據(jù)的局部邏輯結(jié)構(gòu),通常是模式的子集。內(nèi)模式,亦稱存儲(chǔ)模式,是數(shù)據(jù)在數(shù)據(jù)庫(kù)系統(tǒng)內(nèi)部的表示,即對(duì)數(shù)據(jù)的物理結(jié)構(gòu)和存儲(chǔ)方式的描述。 DDL :數(shù)據(jù)定義語(yǔ)言,用來(lái)定義數(shù)據(jù)庫(kù)模式、外模式、內(nèi)模式的語(yǔ)言。 DML :數(shù)據(jù)操縱語(yǔ)言,用來(lái)對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢、插入、刪除和修改的語(yǔ)句。 8 .什么叫數(shù)據(jù)與程序的物理獨(dú)立性?什么叫數(shù)據(jù)與程序的邏輯獨(dú)立性?為什么數(shù)據(jù)庫(kù)系統(tǒng)具有數(shù)據(jù)與程序的獨(dú)立性? 答: 數(shù)據(jù)與程序的邏輯獨(dú)立性:當(dāng)模式改變時(shí)(例如增加新的關(guān)系、新的屬性、改變屬性的數(shù)據(jù)類型等),由數(shù)據(jù)庫(kù)管理員對(duì)各個(gè)外模式/模式的映像做相應(yīng)改變,可以使外模式保持不變。應(yīng)用程序是依據(jù)數(shù)據(jù)的外模式編寫(xiě)的,從而應(yīng)用程序不必修改,保證了數(shù)據(jù)與程序的邏輯獨(dú)立性,簡(jiǎn)稱數(shù)據(jù)的邏輯獨(dú)立性。數(shù)據(jù)與程序的物理獨(dú)立性:當(dāng)數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)改變了,由數(shù)據(jù)庫(kù)管理員對(duì)模式/內(nèi)模式映像做相應(yīng)改變,可以使模式保持不變,從而應(yīng)用程序也不必改變,保證了數(shù)據(jù)與程序的物理獨(dú)立性,簡(jiǎn)稱數(shù)據(jù)的物理獨(dú)立性。數(shù)據(jù)庫(kù)管理系統(tǒng)在三級(jí)模式之間提供的兩層映像保證了數(shù)據(jù)庫(kù)系統(tǒng)中的數(shù)據(jù)能夠具有較高的邏輯獨(dú)立性和物理獨(dú)立性。 9.試述數(shù)據(jù)庫(kù)系統(tǒng)的組成。 答: 數(shù)據(jù)庫(kù)系統(tǒng)一般由數(shù)據(jù)庫(kù)、數(shù)據(jù)庫(kù)管理系統(tǒng)(及其開(kāi)發(fā)工具)、應(yīng)用系統(tǒng)、數(shù)據(jù)庫(kù)管理員和用戶構(gòu)成。 10 . DBA 的職責(zé)是什么? 答: 負(fù)責(zé)全面地管理和控制數(shù)據(jù)庫(kù)系統(tǒng)。具體職責(zé)包括: ① 決定數(shù)據(jù)庫(kù)的信息內(nèi)容和結(jié)構(gòu); ② 決定數(shù)據(jù)庫(kù)的存儲(chǔ)結(jié)構(gòu)和存取策略; ③ 定義數(shù)據(jù)的安全性要求和完整性約束條件; ④ 監(jiān)督和控制數(shù)據(jù)庫(kù)的使用和運(yùn)行; ⑤ 改進(jìn)和重組數(shù)據(jù)庫(kù)系統(tǒng)。 25 .系統(tǒng)分析員、數(shù)據(jù)庫(kù)設(shè)計(jì)人員、應(yīng)用程序員的職責(zé)是什么?答系統(tǒng)分析員負(fù)責(zé)應(yīng)用系統(tǒng)的需求分析和規(guī)范說(shuō)明,系統(tǒng)分析員要和用戶及 DBA 相結(jié)合,確定系統(tǒng)的硬件、軟件配置,并參與數(shù)據(jù)庫(kù)系統(tǒng)的概要設(shè)計(jì)。數(shù)據(jù)庫(kù)設(shè)計(jì)人員負(fù)責(zé)數(shù)據(jù)庫(kù)中數(shù)據(jù)的確定、數(shù)據(jù)庫(kù)各級(jí)模式的設(shè)計(jì)。數(shù)據(jù)庫(kù)設(shè)計(jì)人員必須參加用戶需求調(diào)查和系統(tǒng)分析,然后進(jìn)行數(shù)據(jù)庫(kù)設(shè)計(jì)。在很多情況下,數(shù)據(jù)庫(kù)設(shè)計(jì)人員就由數(shù)據(jù)庫(kù)管理員擔(dān)任。應(yīng)用程序員負(fù)責(zé)設(shè)計(jì)和編寫(xiě)應(yīng)用系統(tǒng)的程序模塊,并進(jìn)行調(diào)試和安裝。 第2章 數(shù)據(jù)模型 1 – 2-- 3.試述數(shù)據(jù)模型的概念、數(shù)據(jù)模型的作用和數(shù)據(jù)模型的三個(gè)要素。 答: 數(shù)據(jù)模型是數(shù)據(jù)庫(kù)中用來(lái)對(duì)現(xiàn)實(shí)世界進(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ù)操作和完整性約束三部分組成。 ( l )數(shù)據(jù)結(jié)構(gòu):是所研究的對(duì)象類型的集合,是對(duì)系統(tǒng)靜態(tài)特性的描述。 ( 2 )數(shù)據(jù)操作:是指對(duì)數(shù)據(jù)庫(kù)中各種對(duì)象(型)的實(shí)例(值)允許進(jìn)行的操作的集合,包括操作及有關(guān)的操作規(guī)則,是對(duì)系統(tǒng)動(dòng)態(tài)特性的描述。 ( 3 )數(shù)據(jù)的約束條件:是一組完整性規(guī)則的集合。完整性規(guī)則是給定的數(shù)據(jù)模型中數(shù)據(jù)及其聯(lián)系所具有的制約和依存規(guī)則,用以限定符合數(shù)據(jù)模型的數(shù)據(jù)庫(kù)狀態(tài)以及狀態(tài)的變化,以保證數(shù)據(jù)的正確、有效、相容。解析數(shù)據(jù)模型是數(shù)據(jù)庫(kù)系統(tǒng)中最重要的概念之一。必須通過(guò) 《 概論 》 的學(xué)習(xí)真正掌握數(shù)據(jù)模型的概念和作用。數(shù)據(jù)模型是數(shù)據(jù)庫(kù)系統(tǒng)的基礎(chǔ)。任何一個(gè) DBMS 都以某一個(gè)數(shù)據(jù)模型為基礎(chǔ),或者說(shuō)支持某一個(gè)數(shù)據(jù)模型。數(shù)據(jù)庫(kù)系統(tǒng)中,模型有不同的層次。根據(jù)模型應(yīng)用的不同目的,可以將模型分成兩類或者說(shuō)兩個(gè)層次:一類是概念模型,是按用戶的觀點(diǎn)來(lái)對(duì)數(shù)據(jù)和信息建模,用于信息世界的建模,強(qiáng)調(diào)語(yǔ)義表達(dá)能力,概念簡(jiǎn)單清晰;另一類是數(shù)據(jù)模型,是按計(jì)算機(jī)系統(tǒng)的觀點(diǎn)對(duì)數(shù)據(jù)建模,用于機(jī)器世界,人們可以用它定義、操縱數(shù)據(jù)庫(kù)中的數(shù)據(jù),一般需要有嚴(yán)格的形式化定義和一組嚴(yán)格定義了語(yǔ)法和語(yǔ)義的語(yǔ)言,并有一些規(guī)定和限制,便于在機(jī)器上實(shí)現(xiàn)。 4 .試述層次模型的概念,舉出三個(gè)層次模型的實(shí)例。 答: ( l )教員學(xué)生層次數(shù)據(jù)庫(kù)模型 ( 2 )行政機(jī)構(gòu)層次數(shù)據(jù)庫(kù)模型 ( 3 )行政區(qū)域?qū)哟螖?shù)據(jù)庫(kù)模型 5.試述網(wǎng)狀模型的概念,舉出三個(gè)網(wǎng)狀模型的實(shí)例。 答: 滿足下面兩個(gè)條件的基本層次聯(lián)系集合為網(wǎng)狀模型。 ( l )允許一個(gè)以上的結(jié)點(diǎn)無(wú)雙親; ( 2 )一個(gè)結(jié)點(diǎn)可以有多于一個(gè)的雙親。 實(shí)例 1 : 實(shí)例 2 : 實(shí)例 3 : 6.試述網(wǎng)狀、層次數(shù)據(jù)庫(kù)的優(yōu)缺點(diǎn)。 答: 層次模型的優(yōu)點(diǎn)主要有: ( l )模型簡(jiǎn)單,對(duì)具有一對(duì)多層次關(guān)系的部門描述非常自然、直觀,容易理解,這是層次數(shù)據(jù)庫(kù)的突出優(yōu)點(diǎn); ( 2 )用層次模型的應(yīng)用系統(tǒng)性能好,特別是對(duì)于那些實(shí)體間聯(lián)系是固定的且預(yù)先定義好的應(yīng)用,采用層次模型來(lái)實(shí)現(xiàn),其性能優(yōu)于關(guān)系模型; ( 3 )層次數(shù)據(jù)模型提供了良好的完整性支持。 層次模型的缺點(diǎn)主要有: ( l )現(xiàn)實(shí)世界中很多聯(lián)系是非層次性的,如多對(duì)多聯(lián)系、一個(gè)結(jié)點(diǎn)具有多個(gè)雙親等,層次模型不能自然地表示這類聯(lián)系,只能通過(guò)引入冗余數(shù)據(jù)或引入虛擬結(jié)點(diǎn)來(lái)解決; ( 2 )對(duì)插入和刪除操作的限制比較多; ( 3 )查詢子女結(jié)點(diǎn)必須通過(guò)雙親結(jié)點(diǎn)。 網(wǎng)狀數(shù)據(jù)模型的優(yōu)點(diǎn)主要有: ( l )能夠更為直接地描述現(xiàn)實(shí)世界,如一個(gè)結(jié)點(diǎn)可以有多個(gè)雙親; ( 2 )具有良好的性能,存取效率較高。 網(wǎng)狀數(shù)據(jù)模型的缺點(diǎn)主要有: ( l )結(jié)構(gòu)比較復(fù)雜,而且隨著應(yīng)用環(huán)境的擴(kuò)大,數(shù)據(jù)庫(kù)的結(jié)構(gòu)就變得越來(lái)越復(fù)雜,不利于最終用戶掌握; ( 2 )其 DDL 、 DML 語(yǔ)言復(fù)雜,用戶不容易使用。由于記錄之間聯(lián)系是通過(guò)存取路徑實(shí)現(xiàn)的,應(yīng)用程序在訪問(wèn)數(shù)據(jù)時(shí)必須選擇適當(dāng)?shù)拇嫒÷窂?。因此,用戶必須了解系統(tǒng)結(jié)構(gòu)的細(xì)節(jié),加重了編寫(xiě)應(yīng)用程序的負(fù)擔(dān)。 7 .試述關(guān)系模型的概念,定義并解釋以下術(shù)語(yǔ): ( l )關(guān)系( 2 )屬性( 3 )域( 4 )元組 ( 5 )主碼( 6 )分量( 7 )關(guān)系模式 答: 關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。在用戶觀點(diǎn)下,關(guān)系模型中數(shù)據(jù)的邏輯結(jié)構(gòu)是一張二維表,它由行和列組成。 ( l )關(guān)系:一個(gè)關(guān)系對(duì)應(yīng)通常說(shuō)的一張表; ( 2 )屬性:表中的一列即為一個(gè)屬性; ( 3 )域:屬性的取值范圍; ( 4 )元組:表中的一行即為一個(gè)元組; ( 5 )主碼:表中的某個(gè)屬性組,它可以惟一確定一個(gè)元組; ( 6 )分量:元組中的一個(gè)屬性值; ( 7 )關(guān)系模式:對(duì)關(guān)系的描述,一般表示為關(guān)系名(屬性 1 ,屬性 2 , … ,屬性 n ) 8 .試述關(guān)系數(shù)據(jù)庫(kù)的特點(diǎn)。 答: 關(guān)系數(shù)據(jù)模型具有下列優(yōu)點(diǎn): ( l )關(guān)系模型與非關(guān)系模型不同,它是建立在嚴(yán)格的數(shù)學(xué)概念的基礎(chǔ)上的。 ( 2 )關(guān)系模型的概念單一,無(wú)論實(shí)體還是實(shí)體之間的聯(lián)系都用關(guān)系表示,操作的對(duì)象和操作的結(jié)果都是關(guān)系,所以其數(shù)據(jù)結(jié)構(gòu)簡(jiǎn)單、清晰,用戶易懂易用。 ( 3 )關(guān)系模型的存取路徑對(duì)用戶透明,從而具有更高的數(shù)據(jù)獨(dú)立性、更好的安全保密性,也簡(jiǎn)化了程序員的工作和數(shù)據(jù)庫(kù)開(kāi)發(fā)建立的工作。當(dāng)然,關(guān)系數(shù)據(jù)模型也有缺點(diǎn),其中最主要的缺點(diǎn)是,由于存取路徑對(duì)用戶透明,查詢效率往往不如非關(guān)系數(shù)據(jù)模型。因此為了提高性能,必須對(duì)用戶的查詢請(qǐng)求進(jìn)行優(yōu)化,增加了開(kāi)發(fā)數(shù)據(jù)庫(kù)管理系統(tǒng)的難度。 第3章 關(guān)系數(shù)據(jù)庫(kù) 1 .試述關(guān)系模型的三個(gè)組成部分。 答:關(guān)系模型由關(guān)系數(shù)據(jù)結(jié)構(gòu)、關(guān)系操作集合和關(guān)系完整性約束三部分組成。 2 .試述關(guān)系數(shù)據(jù)語(yǔ)言的特點(diǎn)和分類。 答:關(guān)系數(shù)據(jù)語(yǔ)言可以分為三類: 關(guān)系代數(shù)語(yǔ)言。 關(guān)系演算語(yǔ)言:元組關(guān)系演算語(yǔ)言和域關(guān)系演算語(yǔ)言。 SQL:具有關(guān)系代數(shù)和關(guān)系演算雙重特點(diǎn)的語(yǔ)言。 這些關(guān)系數(shù)據(jù)語(yǔ)言的共同特點(diǎn)是,語(yǔ)言具有完備的表達(dá)能力,是非過(guò)程化的集合操作語(yǔ)言,功能強(qiáng),能夠嵌入高級(jí)語(yǔ)言中使用。 4.試述關(guān)系模型的完整性規(guī)則。在參照完整性中,為什么外部碼屬性的值也可以為空?什么情況下才可以為空? 答:實(shí)體完整性規(guī)則是指若屬性A是基本關(guān)系R的主屬性,則屬性A不能取空值。 若屬性(或?qū)傩越M)F是基本關(guān)系R的外碼,它與基本關(guān)系S的主碼Ks相對(duì)應(yīng)(基本關(guān)系R和S不一定是不同的關(guān)系),則對(duì)于R中每個(gè)元組在F上的值必須為:或者取空值(F的每個(gè)屬性值均為空值);或者等于S中某個(gè)元組的主碼值。即屬性F本身不是主屬性,則可以取空值,否則不能取空值。 5.設(shè)有一個(gè)SPJ數(shù)據(jù)庫(kù),包括S,P,J,SPJ四個(gè)關(guān)系模式: 1)求供應(yīng)工程J1零件的供應(yīng)商號(hào)碼SNO: πSno(σSno=‘J1’(SPJ)) 2)求供應(yīng)工程J1零件P1的供應(yīng)商號(hào)碼SNO: πSno(σSno=‘J1’∧Pno=‘P1‘(SPJ)) 3)求供應(yīng)工程J1零件為紅色的供應(yīng)商號(hào)碼SNO: πSno(σPno=‘P1‘ (σCOLOR=’紅‘ (P)∞SPJ)) 4)求沒(méi)有使用天津供應(yīng)商生產(chǎn)的紅色零件的工程號(hào)JNO: πJno(SPJ)- πJNO(σcity=‘天津’∧Color=‘紅‘ (S∞SPJ∞P) 5)求至少用了供應(yīng)商S1所供應(yīng)的全部零件的工程號(hào)JNO: πJno,Pno(SPJ) πPno(σSno=‘S1‘ (SPJ)) 6.試述等值連接與自然連接的區(qū)別和聯(lián)系。 答:連接運(yùn)算符是“=”的連接運(yùn)算稱為等值連接。它是從關(guān)系R與S的廣義笛卡爾積中選取A,B屬性值相等的那些元組 自然連接是一種特殊的等值連接,它要求兩個(gè)關(guān)系中進(jìn)行比較的分量必須是相同的屬性組,并且在結(jié)果中把重復(fù)的屬性列去掉。 7.關(guān)系代數(shù)的基本運(yùn)算有哪些 ? 如何用這些基本運(yùn)算來(lái)表示其他運(yùn)算? 答:并、差、笛卡爾積、投影和選擇5種運(yùn)算為基本的運(yùn)算。其他3種運(yùn)算,即交、連接和除,均可以用這5種基本運(yùn)算來(lái)表達(dá)。 第4章 關(guān)系數(shù)據(jù)庫(kù)標(biāo)準(zhǔn)語(yǔ)言SQL 1 .試述 sQL 語(yǔ)言的特點(diǎn)。 答: (l)綜合統(tǒng)一。 sQL 語(yǔ)言集數(shù)據(jù)定義語(yǔ)言 DDL 、數(shù)據(jù)操縱語(yǔ)言 DML 、數(shù)據(jù)控制語(yǔ)言 DCL 的功能于一體。 (2)高度非過(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ī)交互的使用方式;作為嵌入式語(yǔ)言,它能夠嵌入到高級(jí)語(yǔ)言程序中,供程序員設(shè)計(jì)程序時(shí)使用。 (5)語(yǔ)言簡(jiǎn)捷,易學(xué)易用。 2 .試述 sQL 的定義功能。 sQL 的數(shù)據(jù)定義功能包括定義表、定義視圖和定義索引。 SQL 語(yǔ)言使用 cREATE TABLE 語(yǔ)句建立基本表, ALTER TABLE 語(yǔ)句修改基本表定義, DROP TABLE 語(yǔ)句刪除基本表;使用 CREATE INDEX 語(yǔ)句建立索引, DROP INDEX 語(yǔ)句刪除索引;使用 CREATE VIEW 語(yǔ)句建立視圖, DROP VIEW 語(yǔ)句刪除視圖。 3 .用 sQL 語(yǔ)句建立第二章習(xí)題 5 中的 4 個(gè)表。 答: 對(duì)于 S 表: S ( SNO , SNAME , STATUS , CITY ) ; 建 S 表: CREATE TABLE S ( Sno C(2) UNIQUE,Sname C(6) ,Status C(2),City C(4)); 對(duì)于 P 表: P ( PNO , PNAME , COLOR , WEIGHT ); 建 P 表 : CREATE TABLE P(Pno C(2) UNIQUE,Pname C(6),COLOR C(2), WEIGHT INT); 對(duì)于 J 表: J ( JNO , JNAME , CITY) ; 建 J 表: CREATE TABLE J(Jno C(2) UNlQUE,JNAME C(8), CITY C(4)) 對(duì)于 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.針對(duì)上題中建立的 4 個(gè)表試用 sQL 語(yǔ)言完成第二章習(xí)題 5 中的查詢。 ( l )求供應(yīng)工程 Jl 零件的供應(yīng)商號(hào)碼 SNO ; SELECT DIST SNO FROM SPJ WHERE JNO=’J1’ ( 2 )求供應(yīng)工程 Jl 零件 Pl 的供應(yīng)商號(hào)碼 SNO ; SELECT DIST SNO FROM SPJ WHERE JNO=J1 AND PNO=P1 ( 3 )求供應(yīng)工程 Jl 零件為紅色的供應(yīng)商號(hào)碼 SNO ; SELECT SNO FROM SPJ,P WHERE JNO=J1 AND SPJ.PNO=P.PNO AND COLOR=紅 ( 4 )求沒(méi)有使用天津供應(yīng)商生產(chǎn)的紅色零件的工程號(hào) 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)的全部零件的工程號(hào) JNO ; 由于VFP不允許子查詢嵌套太深,將查詢分為兩步 A、查詢S1供應(yīng)商供應(yīng)的零件號(hào) SELECT DIST PNO FROM SPJ WHERE SNO=S1結(jié)果是(P1,P2) B、查詢哪一個(gè)工程既使用P1零件又使用P2零件。 SELECT JNO FROM SPJ WHERE PNO=P1 AND JNO IN (SELECT JNO FROM SPJ WHERE PNO=P2) 5.針對(duì)習(xí)題3中的四個(gè)表試用SQL語(yǔ)言完成以下各項(xiàng)操作: (1)找出所有供應(yīng)商的姓名和所在城市。 SELECT SNAME,CITY FROM S (2)找出所有零件的名稱、顏色、重量。 SELECT PNAME,COLOR,WEIGHT FROM P (3)找出使用供應(yīng)商S1所供應(yīng)零件的工程號(hào)碼。 SELECT DIST JNO FROM SPJ WHERE SNO=S1 (4)找出工程項(xiàng)目J2使用的各種零件的名稱及其數(shù)量。 SELECT PNAME,QTY FROM SPJ,P WHERE P.PNO=SPJ.PNO AND SPJ.JNO=J2 (5)找出上海廠商供應(yīng)的所有零件號(hào)碼。 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)找出沒(méi)有使用天津產(chǎn)的零件的工程號(hào)碼。 注意: 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)商號(hào)是S2的記錄,并從供應(yīng)情況關(guān)系中刪除相應(yīng)的記錄。 A、DELETE FROM S WHERE SNO=’S2’ B、DELETE FROM SPJ WHERE SNO=‘S2’ (11)請(qǐng)將(S2,J6,P4,200)插入供應(yīng)情況關(guān)系。 INSERT INTO SPJ VALUES(‘S2’,‘J6’,‘P4’,200) 6 .什么是基本表?什么是視圖? 答 兩者的區(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)。 答 ( l )視圖能夠簡(jiǎn)化用戶的操作; ( 2 )視圖使用戶能以多種角度看待同一數(shù)據(jù); ( 3 )視圖對(duì)重構(gòu)數(shù)據(jù)庫(kù)提供了一定程度的邏輯獨(dú)立性; ( 4 )視圖能夠?qū)C(jī)密數(shù)據(jù)提供安全保護(hù)。 8 .所有的視圖是否都可以更新?為什么? 答: 不是。視圖是不實(shí)際存儲(chǔ)數(shù)據(jù)的虛表,因此對(duì)視圖的更新,最終要轉(zhuǎn)換為對(duì)基本表的更新。因?yàn)橛行┮晥D的更新不能惟一有意義地轉(zhuǎn)換成對(duì)相應(yīng)基本表的更新,所以,并不是所有的視圖都是可更新的. 9 .哪類視圖是可以更新的?哪類視圖是不可更新的?各舉一例說(shuō)明。 答:基本表的行列子集視圖一般是可更新的。若視圖的屬性來(lái)自集函數(shù)、表達(dá)式,則該視圖肯定是不可以更新的。 10 .試述某個(gè)你熟悉的實(shí)際系統(tǒng)中對(duì)視圖更新的規(guī)定。 答 VFP 11.請(qǐng)為三建工程項(xiàng)目建立一個(gè)供應(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=三建 針對(duì)該視圖VSP完成下列查詢: (1)找出三建工程項(xiàng)目使用的各種零件代碼及其數(shù)量。 SELECT DIST PNO,QTY FROM VSP (2)找出供應(yīng)商S1的供應(yīng)情況。 SELECT DIST * FROM VSP WHERE SNO=S1 這里是第7、8、9、11章課本的答案,里面有少部分沒(méi)有的,請(qǐng)大家自己對(duì)照一下原來(lái)郵箱里面的答案,有疏忽的地方,請(qǐng)?jiān)彛? 另一部分等整理好就發(fā)上去…… 第7章 數(shù)據(jù)庫(kù)恢復(fù)技術(shù) 1.試述事務(wù)的概念及事務(wù)的4 個(gè)特性。 答: 事務(wù)是用戶定義的一個(gè)數(shù)據(jù)庫(kù)操作序列,這些操作要么全做要么全不做,是一個(gè)不可分割的工作單位。 事務(wù)具有4 個(gè)特性:原子性(Atomicity )、一致性(consistency )、隔離性( Isolation )和持續(xù)性(Durability )。這4 個(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ù)性也稱永久性(Perfnanence ) ,指一個(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ù)所做的修改有一部分已寫(xiě)入物理數(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è)操作;Ql = Ql 一Q , Q2= Q2 + Q。 如果T 非正常終止時(shí)只做了第一個(gè)操作,則數(shù)據(jù)庫(kù)就處于不一致性狀態(tài),庫(kù)存量無(wú)緣無(wú)故少了Q 。 3 .?dāng)?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ù)? 答: 數(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 .?dāng)?shù)據(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 .?dāng)?shù)據(jù)庫(kù)轉(zhuǎn)儲(chǔ)的意義是什么?試比較各種數(shù)據(jù)轉(zhuǎn)儲(chǔ)方法。 答: 數(shù)據(jù)轉(zhuǎn)儲(chǔ)是數(shù)據(jù)庫(kù)恢復(fù)中采用的基本技術(shù)。所謂轉(zhuǎn)儲(chǔ)即DBA 定期地將數(shù)據(jù)庫(kù)復(fù)制到磁帶或另一個(gè)磁盤(pán)上保存起來(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ù)的一致版本。為此,必須把轉(zhuǎn)儲(chǔ)期間各事務(wù)對(duì)數(shù)據(jù)庫(kù)的修改活動(dòng)登記下來(lái),建立日志文件( 109 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)行事務(wù)故障恢復(fù);進(jìn)行系統(tǒng)故障恢復(fù);協(xié)助后備副本進(jìn)行介質(zhì)故障恢復(fù)。 8 .登記日志文件時(shí)為什么必須先寫(xiě)日志文件,后寫(xiě)數(shù)據(jù)庫(kù)? 答: 把對(duì)數(shù)據(jù)的修改寫(xiě)到數(shù)據(jù)庫(kù)中和把表示這個(gè)修改的日志記錄寫(xiě)到日志文件中是兩個(gè)不同的操作。有可能在這兩個(gè)操作之間發(fā)生故障,即這兩個(gè)寫(xiě)操作只完成了一個(gè)。 如果先寫(xiě)了數(shù)據(jù)庫(kù)修改,而在運(yùn)行記錄中沒(méi)有登記這個(gè)修改,則以后就無(wú)法恢復(fù)這個(gè)修改了。如果先寫(xiě)日志,但沒(méi)有修改數(shù)據(jù)庫(kù),在恢復(fù)時(shí)只不過(guò)是多執(zhí)行一次UNDO 操作,并不會(huì)影響數(shù)據(jù)庫(kù)的正確性。所以一定要先寫(xiě)日志文件,即首先把日志記錄寫(xiě)到日志文件中,然后寫(xiě)數(shù)據(jù)庫(kù)的修改。 9 .針對(duì)不同的故障,試給出恢復(fù)的策略和方法。(即如何進(jìn)行事務(wù)故障的恢復(fù)?系統(tǒng)故障的恢復(fù)?介質(zhì)故障恢復(fù)?) 答: 事務(wù)故障的恢復(fù): 事務(wù)故障的恢復(fù)是由DBMS DBMs 執(zhí)行恢復(fù)步驟是: 自動(dòng)完成的,對(duì)用戶是透明的。 (1)反向掃描文件日志(即從最后向前掃描日志文件),查找該事務(wù)的更新操作; (2)對(duì)該事務(wù)的更新操作執(zhí)行逆操作,即將日志記錄中“更新前的值”寫(xiě)入數(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ì)數(shù)據(jù)庫(kù)的更新可能已寫(xiě)入數(shù)據(jù)庫(kù);二是已提交事務(wù)對(duì)數(shù)據(jù)庫(kù)的更新可能還留在緩沖區(qū),沒(méi)來(lái)得及寫(xiě)入數(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 )寫(xiě)入數(shù)據(jù)庫(kù)。( 3 )對(duì)重做隊(duì)列中的各個(gè)事務(wù)進(jìn)行REDO 處理。 進(jìn)行REDO 處理的方法是:正向掃描日志文件,對(duì)每個(gè)REDO 事務(wù)重新執(zhí)行日志文件登記的操作。即將日志記錄中“更新后的值”Afte , Image )寫(xiě)入數(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、11缺 第8章 并發(fā)控制 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ù)。 ( l )丟失修改(lost update ) 兩個(gè)事務(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 無(wú)法再現(xiàn)前一次讀取結(jié)果。( 3 )讀“臟”數(shù)據(jù)( Dirty Read ) 讀“臟’夕數(shù)據(jù)是指事務(wù) Tl 修改某一數(shù)據(jù),并將其寫(xiě)回磁盤(pán),事務(wù)幾讀取同一數(shù)據(jù)后, Tl 由于某種原因被撤銷,這時(shí) Tl 已修改過(guò)的數(shù)據(jù)恢復(fù)原值,幾讀到的數(shù)據(jù)就與數(shù)據(jù)庫(kù)中的數(shù)據(jù)不一致,則幾讀到的數(shù)據(jù)就為“臟”數(shù)據(jù),即不正確的數(shù)據(jù)。避免不一致性的方法和技術(shù)就是并發(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 鎖)和共享鎖 ( Share Locks,簡(jiǎn)稱 S 鎖)。排它鎖又稱為寫(xiě)鎖。若事務(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 鎖,直到 T 釋放 A 上的 S 鎖。這就保證了其他事務(wù)可以讀 A ,但在 T 釋放 A 上的 S 鎖之前不能對(duì) A 做任何修改。 5、如何用封鎖機(jī)制保證數(shù)據(jù)的一致性? 答: DBMS 在對(duì)數(shù)據(jù)進(jìn)行讀、寫(xiě)操作之前首先對(duì)該數(shù)據(jù)執(zhí)行封鎖操作,例如下圖中事務(wù) Tl 在對(duì) A 進(jìn)行修改之前先對(duì) A 執(zhí)行 xock ( A ) ,即對(duì) A 加 x 鎖。這樣,當(dāng)幾請(qǐng)求對(duì) A 加 x 鎖時(shí)就被拒絕,幾只能等待 Tl 釋放 A 上的鎖后才能獲得對(duì) A 的 x 鎖,這時(shí)它讀到的 A 是 Tl 更新后的值,再按此新的 A 值進(jìn)行運(yùn)算。這樣就不會(huì)丟失 Tl 的更新。 DBMS 按照一定的封鎖協(xié)議,對(duì)并發(fā)操作進(jìn)行控制,使得多個(gè)并發(fā)操作有序地執(zhí)行,就可以避免丟失修改、不可重復(fù)讀和讀“臟’夕數(shù)據(jù)等數(shù)據(jù)不一致性。 8.什么是活鎖?什么是死鎖? 答: 如果事務(wù) Tl 封鎖了數(shù)據(jù) R ,事務(wù)幾又請(qǐng)求封鎖 R ,于是幾等待。幾也請(qǐng)求封鎖 R ,當(dāng) Tl 釋放了 R 上的封鎖之后系統(tǒng)首先批準(zhǔn)了幾的請(qǐng)求,幾仍然等待。然后幾又請(qǐng)求封鎖 R ,當(dāng)幾釋放了 R 上的封鎖之后系統(tǒng)又批準(zhǔn)了幾的請(qǐng)求 … … 幾有可能永遠(yuǎn)等待,這就是活鎖的情形。活鎖的含義是該等待事務(wù)等待時(shí)間太長(zhǎng),似乎被鎖住了,實(shí)際上可能被激活。如果事務(wù) Tl 封鎖了數(shù)據(jù) Rl ,幾封鎖了數(shù)據(jù)凡,然后 Tl 又請(qǐng)求封鎖幾,因幾已封鎖了幾,于是 Tl 等待幾釋放幾上的鎖。接著幾又申請(qǐng)封鎖 Rl ,因 Tl 已封鎖了 Rl ,幾也只能等待 Tl 釋放 Rl 上的鎖。這樣就出現(xiàn)了 Tl 在等待幾,而幾又在等待 T }的局面, T }和幾兩個(gè)事務(wù)永遠(yuǎn)不能結(jié)束,形成死鎖。 9.試述活鎖的產(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ù)獲得鎖。 11 .請(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ù)修改操作必須加以恢復(fù)。 12 .什么樣的并發(fā)調(diào)度是正確的調(diào)度? 答:可串行化( Serializable )的調(diào)度是正確的調(diào)度??纱谢恼{(diào)度的定義:多個(gè)事務(wù)的并發(fā)執(zhí)行是正確的,當(dāng)且僅當(dāng)其結(jié)果與按某一次序串行執(zhí)行它們時(shí)的結(jié)果相同,稱這種調(diào)度策略為可串行化的調(diào)度。 13 .設(shè) Tl ,幾,幾是如下的 3 個(gè)事務(wù): Tl :A : = A + 2 ; T2:A : = A * 2 ; T3:A : = A **2 ; ( A <-A*A) 設(shè) A 的初值為 0 。 ( l )若這 3 個(gè)事務(wù)允許并行執(zhí)行,則有多少可能的正確結(jié)果,請(qǐng)一一列舉出來(lái)。 答 :A 的最終結(jié)果可能有 2 、 4 、 8 、 16 。因?yàn)榇袌?zhí)行次序有 Tl T2T3、 Tl T3T2、T2T1T3、T2T3Tl 、T3T1T2、T3T2 Tl 。對(duì)應(yīng)的執(zhí)行結(jié)果是 16 、 8 4 2 4 2 。 ( 2 )請(qǐng)給出一個(gè)可串行化的調(diào)度,并給出執(zhí)行結(jié)果 答: 最后結(jié)果 A 為 16 ,是可串行化的調(diào)度。 ( 3 )請(qǐng)給出一個(gè)非串行化的調(diào)度,并給出執(zhí)行結(jié)果。 答: 最后結(jié)果 A 為 0 ,為非串行化的調(diào)度。 ( 4 )若這 3 個(gè)事務(wù)都遵守兩段鎖協(xié)議,請(qǐng)給出一個(gè)不產(chǎn)生死鎖的可串行化調(diào)度。 答: ( 5 )若這 3 個(gè)事務(wù)都遵守兩段鎖協(xié)議,請(qǐng)給出一個(gè)產(chǎn)生死鎖的調(diào)度。 答: 15.試證明,若并發(fā)事務(wù)遵守兩段鎖協(xié)議,則對(duì)這些事務(wù)的并發(fā)調(diào)度是可串行化的。 證明:首先以兩個(gè)并發(fā)事務(wù) Tl 和T2為例,存在多個(gè)并發(fā)事務(wù)的情形可以類推。根據(jù)可串行化定義可知,事務(wù)不可串行化只可能發(fā)生在下列兩種情況: ( l )事務(wù) Tl 寫(xiě)某個(gè)數(shù)據(jù)對(duì)象 A ,T2讀或?qū)?A ; ( 2 )事務(wù) Tl 讀或?qū)懩硞€(gè)數(shù)據(jù)對(duì)象 A ,T2寫(xiě) A 。 下面稱 A 為潛在沖突對(duì)象。 設(shè) Tl 和T2訪問(wèn)的潛在沖突的公共對(duì)象為{A1,A2 … , An }。不失一般性,假設(shè)這組潛在沖突對(duì)象中 X =(A 1 , A2 , … , Ai }均符合情況 1 。 Y ={A i + 1 , … , An }符合所情況( 2 )。 VX ∈ x , Tl 需要 XlockX ① T2 需要 Slockx 或 Xlockx ② 1 )如果操作 ① 先執(zhí)行,則 Tl 獲得鎖,T2等待 由于遵守兩段鎖協(xié)議, Tl 在成功獲得 x 和 Y 中全部對(duì)象及非潛在沖突對(duì)象的鎖后,才會(huì)釋放鎖。 這時(shí)如果存在 w ∈ x 或 Y ,T2已獲得 w 的鎖,則出現(xiàn)死鎖;否則, Tl 在對(duì) x 、 Y 中對(duì)象全部處理完畢后,T2才能執(zhí)行。這相當(dāng)于按 Tl 、T2的順序串行執(zhí)行,根據(jù)可串行化定義, Tl 和幾的調(diào)度是可串行化的。 2 )操作 ② 先執(zhí)行的情況與( l )對(duì)稱因此,若并發(fā)事務(wù)遵守兩段鎖協(xié)議,在不發(fā)生死鎖的情況下,對(duì)這些事務(wù)的并發(fā)調(diào)度一定是可串行化的。證畢。 16 .舉例說(shuō)明,對(duì)并發(fā)事務(wù)的一個(gè)調(diào)度是可串行化的,而這些并發(fā)事務(wù)不一定遵守兩段鎖協(xié)議。 答: 其他的缺! 第9章 數(shù)據(jù)庫(kù)設(shè)計(jì)概論 1 .試述數(shù)據(jù)庫(kù)設(shè)計(jì)的特點(diǎn)。 答:數(shù)據(jù)庫(kù)設(shè)計(jì)既是一項(xiàng)涉及多學(xué)科的綜合性技術(shù)又是一項(xiàng)龐大的工程項(xiàng)目。其主要特點(diǎn)有: ( l )數(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)。 2.(缺) 3.試述數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程。 答:這里只概要列出數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程的六個(gè)階段: ( l )需求分析; ( 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í)施、運(yùn)行和維護(hù)。設(shè)計(jì)一個(gè)完善的數(shù)據(jù)庫(kù)應(yīng)用系統(tǒng)往往是上述六個(gè)階段的不斷反復(fù)。 4 .試述數(shù)據(jù)庫(kù)設(shè)計(jì)過(guò)程中結(jié)構(gòu)設(shè)計(jì)部分形成的數(shù)據(jù)庫(kù)模式。 答:數(shù)據(jù)庫(kù)結(jié)構(gòu)設(shè)計(jì)的不同階段形成數(shù)據(jù)庫(kù)的各級(jí)模式,即: ( l )在概念設(shè)計(jì)階段形成獨(dú)立于機(jī)器特點(diǎn),獨(dú)立于各個(gè) DBMS 產(chǎn)品的概念模式,在本篇中就是 E 一 R 圖; ( 2 )在邏輯設(shè)計(jì)階段將 E 一 R 圖轉(zhuǎn)換成具體的數(shù)據(jù)庫(kù)產(chǎn)品支持的數(shù)據(jù)模型,如關(guān)系模型,形成數(shù)據(jù)庫(kù)邏輯模式,然后在基本表的基礎(chǔ)上再建立必要的視圖 ( Vi 娜),形成數(shù)據(jù)的外模式; ( 3 )在物理設(shè)計(jì)階段,根據(jù) DBMS 特點(diǎn)和處理的需要,進(jìn)行物理存儲(chǔ)安排,建立索引,形成數(shù)據(jù)庫(kù)內(nèi)模式。 第11章 關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)理論 1 .理解并給出下列術(shù)語(yǔ)的定義: 函數(shù)依賴、部分函數(shù)依賴、完全函數(shù)依賴、傳遞依賴、候選碼、主碼、外碼、全碼(All 一key )、1 NF 、ZNF 、3NF 、BcNF 、多值依賴、4NF 。 定義1:設(shè)R(U)是屬性集U上的關(guān)系模式。X,Y是屬性集U的子集。若對(duì)于R(U)的任意一個(gè)可能的關(guān)系r,r中不可能存在兩個(gè)元組在X上的屬性值相等,而在Y上的屬性值不等,則稱X函數(shù)確定Y或Y函數(shù)依賴于X,記作XY。(即只要X上的屬性值相等,Y上的值一定相等。) 術(shù)語(yǔ)和記號(hào): XY,但Y不是X的子集,則稱XY是非平凡的函數(shù)依賴。若不特別聲明,總是討論非平凡的函數(shù)依賴。 XY,但Y是X的子集,則稱XY是平凡的函數(shù)依賴。 若XY,則X叫做決定因素(Determinant)。 若XY,YX,則記作XY。 若Y不函數(shù)依賴于X,則記作X Y。 定義2:在R(U)中,如果 XY,并且對(duì)于X的任何一個(gè)真子集X’,都有X’ Y,則稱Y對(duì)X完全函數(shù)依賴 若XY,但Y不完全函數(shù)依賴于X,則稱Y對(duì)X部分函數(shù)依賴 定義3:若關(guān)系模式R的每一個(gè)分量是不可再分的數(shù)據(jù)項(xiàng),則關(guān)系模式R屬于第一范式(1NF)。 定義4:若關(guān)系模式R∈1NF,且每一個(gè)非主屬性完全函數(shù)依賴于碼,則關(guān)系模式R∈2NF 。(即1NF消除了非主屬性對(duì)碼的部分函數(shù)依賴則成為2NF)。 定義5:關(guān)系模式R 中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z不是Y的子集)使得XY,Y X,Y Z成立,則稱R∈3NF。 定義6:關(guān)系模式R∈1NF 。若XY且Y不是X的子集時(shí),X必含有碼,則R∈BCNF。 定義7:關(guān)系模式R∈1NF,如果對(duì)于R的每個(gè)非平凡多值依賴XY(Y不是X的子集,Z=U-X-Y不為空),X都含有碼,則稱R∈4NF。 2.建立一個(gè)關(guān)于系、學(xué)生、班級(jí)、學(xué)會(huì)等諸信息的關(guān)系數(shù)據(jù)庫(kù)。 學(xué)生:學(xué)號(hào)、姓名、出生年月、系名、班號(hào)、宿舍區(qū)。 班級(jí):班號(hào)、專業(yè)名、系名、人數(shù)、入校年份。 系:系名、系號(hào)、系辦公地點(diǎn)、人數(shù)。 學(xué)會(huì):學(xué)會(huì)名、成立年份、辦公地點(diǎn)、人數(shù)。 語(yǔ)義如下:一個(gè)系有若干專業(yè),每個(gè)專業(yè)每年只招一個(gè)班,每個(gè)班有若干學(xué)生。一個(gè)系的學(xué)生住在同一宿舍區(qū)。每個(gè)學(xué)生可參加若干學(xué)會(huì),每個(gè)學(xué)會(huì)有若干學(xué)生。學(xué)生參加某學(xué)會(huì)有一個(gè)入會(huì)年份。- 1.請(qǐng)仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來(lái)的問(wèn)題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請(qǐng)點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
5 積分
下載 |
- 配套講稿:
如PPT文件的首頁(yè)顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開(kāi)word文檔。
- 特殊限制:
部分文檔作品中含有的國(guó)旗、國(guó)徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)庫(kù)原理 數(shù)據(jù)庫(kù) 原理 課后 練習(xí) 答案 整理
鏈接地址:http://m.zhongcaozhi.com.cn/p-13123613.html