碼迷,www.tparu.icu
吉利平特名人堂 > 數據庫 > 詳細

084期平特一码:數據庫的基本常識

時間:2016-06-19 18:24:04      閱讀:6732      評論:0      收藏:0      [點我收藏+]

吉利平特名人堂 www.tparu.icu 標簽:

數據庫第四版答案(王珊 薩師煊)

 

 

 

 

 

1 .試述數據、數據庫、數據庫系統、數據庫管理系統的概念。

答:

( l )數據( Data ) :描述事物的符號記錄稱為數據。數據的種類有數字、文字、圖形、圖像、聲音、正文等。數據與其語義是不可分的。解析在現代計算機系統中數據的概念是廣義的。早期的計算機系統主要用于科學計算,處理的數據是整數、實數、浮點數等傳統數學中的數據。現代計算機能存儲和處理的對象十分廣泛,表示這些對象的數據也越來越復雜。數據與其語義是不可分的。 500 這個數字可以表示一件物品的價格是 500 元,也可以表示一個學術會議參加的人數有 500 人,還可以表示一袋奶粉重 500 克。

( 2 )數據庫( DataBase ,簡稱 DB ) :數據庫是長期儲存在計算機內的、有組織的、可共享的數據集合。數據庫中的數據按一定的數據模型組織、描述和儲存,具有較小的冗余度、較高的數據獨立性和易擴展性,并可為各種用戶共享。

( 3 )數據庫系統( DataBas 。 Sytem ,簡稱 DBS ) :數據庫系統是指在計算機系統中引入數據庫后的系統構成,一般由數據庫、數據庫管理系統(及其開發工具)、應用系統、數據庫管理員構成。解析數據庫系統和數據庫是兩個概念。數據庫系統是一個人一機系統,數據庫是數據庫系統的一個組成部分。但是在日常工作中人們常常把數據庫系統簡稱為數據庫。希望讀者能夠從人們講話或文章的上下文中區分“數據庫系統”和“數據庫”,不要引起混淆。

( 4 )數據庫管理系統( DataBase Management sytem ,簡稱 DBMs ) :數據庫管理系統是位于用戶與操作系統之間的一層數據管理軟件,用于科學地組織和存儲數據、高效地獲取和維護數據。 DBMS 的主要功能包括數據定義功能、數據操縱功能、數據庫的運行管理功能、數據庫的建立和維護功能。解析 DBMS 是一個大型的復雜的軟件系統,是計算機中的基礎軟件。目前,專門研制 DBMS 的廠商及其研制的 DBMS 產品很多。著名的有美國 IBM 公司的 DBZ 關系數據庫管理系統和 IMS 層次數據庫管理系統、美國 Oracle 公司的 orade 關系數據庫管理系統、 s ase 公司的 s ase 關系數據庫管理系統、美國微軟公司的 SQL Serve ,關系數據庫管理系統等。

 

2 .使用數據庫系統有什么好處?

答:

使用數據庫系統的好處是由數據庫管理系統的特點或優點決定的。使用數據庫系統的好處很多,例如,可以大大提高應用開發的效率,方便用戶的使用,減輕數據庫系統管理人員維護的負擔,等等。使用數據庫系統可以大大提高應用開發的效率。因為在數據庫系統中應用程序不必考慮數據的定義、存儲和數據存取的具體路徑,這些工作都由 DBMS 來完成。用一個通俗的比喻,使用了 DBMS 就如有了一個好參謀、好助手,許多具體的技術工作都由這個助手來完成??⑷嗽本涂梢宰ㄗ⒂謨τ寐嘸納杓?,而不必為數據管理的許許多多復雜的細節操心?;褂?,當應用邏輯改變,數據的邏輯結構也需要改變時,由于數據庫系統提供了數據與程序之間的獨立性,數據邏輯結構的改變是 DBA 的責任,開發人員不必修改應用程序,或者只需要修改很少的應用程序,從而既簡化了應用程序的編制,又大大減少了應用程序的維護和修改。使用數據庫系統可以減輕數據庫系統管理人員維護系統的負擔。因為 DBMS 在數據庫建立、運用和維護時對數據庫進行統一的管理和控制,包括數據的完整性、安全性、多用戶并發控制、故障恢復等,都由 DBMS 執行。總之,使用數據庫系統的優點是很多的,既便于數據的集中管理,控制數據冗余,提高數據的利用率和一致性,又有利于應用程序的開發和維護。讀者可以在自己今后的工作中結合具體應用,認真加以體會和總結。

 

 3 .試述文件系統與數據庫系統的區別和聯系。

答:

文件系統與數據庫系統的區別是:文件系統面向某一應用程序,共享性差,冗余度大,數據獨立性差,記錄內有結構,整體無結構,由應用程序自己控制。數據庫系統面向現實世界,共享性高,冗余度小,具有較高的物理獨立性和一定的邏輯獨立性,整體結構化,用數據模型描述,由數據庫管理系統提供數據的安全性、完整性、并發控制和恢復能力。

文件系統與數據庫系統的聯系是:文件系統與數據庫系統都是計算機系統中管理數據的軟件。解析文件系統是操作系統的重要組成部分;而 DBMS 是獨立于操作系統的軟件。但是 DBMS 是在操作系統的基礎上實現的;數據庫中數據的組織和存儲是通過操作系統中的文件系統來實現的。

 

4 .舉出適合用文件系統而不是數據庫系統的例子;再舉出適合用數據庫系統的應用例子。答 :

( l )適用于文件系統而不是數據庫系統的應用例子數據的備份、軟件或應用程序使用過程中的臨時數據存儲一般使用文件比較合適。早期功能比較簡單、比較固定的應用系統也適合用文件系統。

 ( 2 )適用于數據庫系統而非文件系統的應用例子目前,幾乎所有企業或部門的信息系統都以數據庫系統為基礎,都使用數據庫。例如,一個工廠的管理信息系統(其中會包括許多子系統,如庫存管理系統、物資采購系統、作業調度系統、設備管理系統、人事管理系統等),學校的學生管理系統,人事管理系統,圖書館的圖書管理系統,等等,都適合用數據庫系統。希望讀者能舉出自己了解的應用例子。

 

5 .試述數據庫系統的特點。

答:

數據庫系統的主要特點有:

 ( l )數據結構化數據庫系統實現整體數據的結構化,這是數據庫的主要特征之一,也是數據庫系統與文件系統的本質區別。解析注意這里的“整體’夕兩個字。在數據庫系統中,數據不再針對某一個應用,而是面向全組織,具有整體的結構化。不僅數據是結構化的,而且數據的存取單位即一次可以存取數據的大小也很靈活,可以小到某一個數據項(如一個學生的姓名),大到一組記錄(成千上萬個學生記錄)。而在文件系統中,數據的存取單位只有一個:記錄,如一個學生的完整記錄。

 ( 2 )數據的共享性高,冗余度低,易擴充數據庫的數據不再面向某個應用而是面向整個系統,因此可以被多個用戶、多個應用以多種不同的語言共享使用。由于數據面向整個系統,是有結構的數據,不僅可以被多個應用共享使用,而且容易增加新的應用,這就使得數據庫系統彈性大,易于擴充。解析數據共享可以大大減少數據冗余,節約存儲空間,同時還能夠避免數據之間的不相容性與不一致性。所謂“數據面向某個應用”是指數據結構是針對某個應用設計的,只被這個應用程序或應用系統使用,可以說數據是某個應用的“私有資源”。所謂“彈性大”是指系統容易擴充也容易收縮,即應用增加或減少時不必修改整個數據庫的結構,只需做很少的改動??梢勻≌迨蕕母髦腫蛹糜誆煌撓τ孟低?,當應用需求改變或增加時,只要重新選取不同的子集或加上一部分數據,便可以滿足新的需求。

 ( 3 )數據獨立性高數據獨立性包括數據的物理獨立性和數據的邏輯獨立性。數據庫管理系統的模式結構和二級映像功能保證了數據庫中的數據具有很高的物理獨立性和邏輯獨立性。

( 4 )數據由 DBMS 統一管理和控制數據庫的共享是并發的共享,即多個用戶可以同時存取數據庫中的數據甚至可以同時存取數據庫中同一個數據。為此, DBMS 必須提供統一的數據控制功能,包括數據的安全性?;?、數據的完整性檢查、并發控制和數據庫恢復。解析 DBMS 數據控制功能包括四個方面:數據的安全性?;ぃ罕;な菀苑樂共緩戲ǖ氖褂迷斐傻氖蕕男姑芎推蘋?;數據的完整性檢查:將數據控制在有效的范圍內,或保證數據之間滿足一定的關系;并發控制:對多用戶的并發操作加以控制和協調,保證并發操作的正確性;數據庫恢復:當計算機系統發生硬件故障、軟件故障,或者由于操作員的失誤以及故意的破壞影響數據庫中數據的正確性,甚至造成數據庫部分或全部數據的丟失時,能將數據庫從錯誤狀態恢復到某一已知的正確狀態(亦稱為完整狀態或一致狀態)。下面可以得到“什么是數據庫”的一個定義:數據庫是長期存儲在計算機內有組織的大量的共享的數據集合,它可以供各種用戶共享,具有最小冗余度和較高的數據獨立性。 DBMS 在數據庫建立、運用和維護時對數據庫進行統一控制,以保證數據的完整性、安全性,并在多用戶同時使用數據庫時進行并發控制,在發生故障后對系統進行恢復。數據庫系統的出現使信息系統從以加工數據的程序為中心轉向圍繞共享的數據庫為中心的新階段。

 

6 .數據庫管理系統的主要功能有哪些?

答:

( l )數據庫定義功能;

( 2 )數據存取功能;

( 3 )數據庫運行管理;

( 4 )數據庫的建立和維護功能。

 

7 .試述數據模型的概念、數據模型的作用和數據模型的三個要素。

答:

數據模型是數據庫中用來對現實世界進行抽象的工具,是數據庫中用于提供信息表示和操作手段的形式構架。一般地講,數據模型是嚴格定義的概念的集合。這些概念精確描述了系統的靜態特性、動態特性和完整性約束條件。因此數據模型通常由數據結構、數據操作和完整性約束三部分組成。

 ( l )數據結構:是所研究的對象類型的集合,是對系統靜態特性的描述。

 ( 2 )數據操作:是指對數據庫中各種對象(型)的實例(值)允許進行的操作的集合,包括操作及有關的操作規則,是對系統動態特性的描述。

 ( 3 )數據的約束條件:是一組完整性規則的集合。完整性規則是給定的數據模型中數據及其聯系所具有的制約和依存規則,用以限定符合數據模型的數據庫狀態以及狀態的變化,以保證數據的正確、有效、相容。解析數據模型是數據庫系統中最重要的概念之一。必須通過 《 概論 》 的學習真正掌握數據模型的概念和作用。數據模型是數據庫系統的基礎。任何一個 DBMS 都以某一個數據模型為基礎,或者說支持某一個數據模型。數據庫系統中,模型有不同的層次。根據模型應用的不同目的,可以將模型分成兩類或者說兩個層次:一類是概念模型,是按用戶的觀點來對數據和信息建模,用于信息世界的建模,強調語義表達能力,概念簡單清晰;另一類是數據模型,是按計算機系統的觀點對數據建模,用于機器世界,人們可以用它定義、操縱數據庫中的數據,一般需要有嚴格的形式化定義和一組嚴格定義了語法和語義的語言,并有一些規定和限制,便于在機器上實現。

 

8 .試述概念模型的作用。

答:

概念模型實際上是現實世界到機器世界的一個中間層次。概念模型用于信息世界的建模,是現實世界到信息世界的第一層抽象,是數據庫設計人員進行數據庫設計的有力工具,也是數據庫設計人員和用戶之間進行交流的語言。

 

9 .定義并解釋概念模型中以下術語:實體,實體型,實體集,屬性,碼,實體聯系圖( E R 圖)

答:

實體:客觀存在并可以相互區分的事物叫實體。實體型:具有相同屬性的實體具有相同的特征和性質,用實體名及其屬性名集合來抽象和刻畫同類實體,稱為實體型。實體集:同型實體的集合稱為實體集。屬性:實體所具有的某一特性,一個實體可由若干個屬性來刻畫。碼:惟一標識實體的屬性集稱為碼。實體聯系圖( E R 圖):提供了表示實體型、屬性和聯系的方法: · 實體型:用矩形表示,矩形框內寫明實體名; · 屬性:用橢圓形表示,并用無向邊將其與相應的實體連接起來; · 聯系:用菱形表示,菱形框內寫明聯系名,并用無向邊分別與有關實體連接起來,同時在無向邊旁標上聯系的類型( 1 : 1 , 1 : n m : n )。

 

10 .試給出 3 個實際部門的 E R 圖,要求實體型之間具有一對一、一對多、多對多各種不同的聯系。

答:

 

 

11 .試給出一個實際部門的 E R 圖,要求有三個實體型,而且 3 個實體型之間有多對多聯系。 3 個實體型之間的多對多聯系和三個實體型兩兩之間的三個多對多聯系等價嗎?為什么?

答:

 

3 個實體型之間的多對多聯系和 3 個實體型兩兩之間的 3 個多對多聯系是不等價,因為它們擁有不同的語義。 3 個實體型兩兩之間的三個多對多聯系如下圖所示。

 

 

12 .學校中有若干系,每個系有若干班級和教研室,每個教研室有若干教員,其中有的教授和副教授每人各帶若干研究生;每個班有若干學生,每個學生選修若干課程,每門課可由若干學生選修。請用 E R 圖畫出此學校的概念模型。

答:

 

 

13 .某工廠生產若干產品,每種產品由不同的零件組成,有的零件可用在不同的產品上。這些零件由不同的原材料制成,不同零件所用的材料可以相同。這些零件按所屬的不同產品分別放在倉庫中,原材料按照類別放在若干倉庫中。請用 E R 圖畫出此工廠產品、零件、材料、倉庫的概念模型。

答:

 

 

14 .試述層次模型的概念,舉出三個層次模型的實例。

答:

 ( l )教員學生層次數據庫模型

 

( 2 )行政機構層次數據庫模型

 

( 3 )行政區域層次數據庫模型

 

 

15.今有一個層次數據庫實例,試用子女一兄弟鏈接法和層次序列鏈接法畫出它的存儲結構示意圖。

答:

子女兄弟鏈接法:

 

層次序列鏈接法:

 

 

16 .試述網狀模型的概念,舉出三個網狀模型的實例。

答:

滿足下面兩個條件的基本層次聯系集合為網狀模型。

 ( l )允許一個以上的結點無雙親; ( 2 )一個結點可以有多于一個的雙親。

實例 1 : 

 

實例 2 : 

 

實例 3 : 

 

 

17 .試述網狀、層次數據庫的優缺點。

答:

層次模型的優點主要有: ( l )模型簡單,對具有一對多層次關系的部門描述非常自然、直觀,容易理解,這是層次數據庫的突出優點; ( 2 )用層次模型的應用系統性能好,特別是對于那些實體間聯系是固定的且預先定義好的應用,采用層次模型來實現,其性能優于關系模型; ( 3 )層次數據模型提供了良好的完整性支持。

層次模型的缺點主要有: ( l )現實世界中很多聯系是非層次性的,如多對多聯系、一個結點具有多個雙親等,層次模型不能自然地表示這類聯系,只能通過引入冗余數據或引入虛擬結點來解決; ( 2 )對插入和刪除操作的限制比較多; ( 3 )查詢子女結點必須通過雙親結點。

網狀數據模型的優點主要有: ( l )能夠更為直接地描述現實世界,如一個結點可以有多個雙親; ( 2 )具有良好的性能,存取效率較高。

網狀數據模型的缺點主要有: ( l )結構比較復雜,而且隨著應用環境的擴大,數據庫的結構就變得越來越復雜,不利于最終用戶掌握; ( 2 )其 DDL 、 DML 語言復雜,用戶不容易使用。由于記錄之間聯系是通過存取路徑實現的,應用程序在訪問數據時必須選擇適當的存取路徑。因此,用戶必須了解系統結構的細節,加重了編寫應用程序的負擔。

 

18 .試述關系模型的概念,定義并解釋以下術語: ( l )關系( 2 )屬性( 3 )域( 4 )元組 ( 5 )主碼( 6 )分量( 7 )關系模式

答:

關系模型由關系數據結構、關系操作集合和關系完整性約束三部分組成。在用戶觀點下,關系模型中數據的邏輯結構是一張二維表,它由行和列組成。 ( l )關系:一個關系對應通常說的一張表; ( 2 )屬性:表中的一列即為一個屬性; ( 3 )域:屬性的取值范圍; ( 4 )元組:表中的一行即為一個元組; ( 5 )主碼:表中的某個屬性組,它可以惟一確定一個元組; ( 6 )分量:元組中的一個屬性值; ( 7 )關系模式:對關系的描述,一般表示為關系名(屬性 1 ,屬性 2 , … ,屬性 n )

 

19 .試述關系數據庫的特點。

答:

關系數據模型具有下列優點: ( l )關系模型與非關系模型不同,它是建立在嚴格的數學概念的基礎上的。 ( 2 )關系模型的概念單一,無論實體還是實體之間的聯系都用關系表示,操作的對象和操作的結果都是關系,所以其數據結構簡單、清晰,用戶易懂易用。 ( 3 )關系模型的存取路徑對用戶透明,從而具有更高的數據獨立性、更好的安全保密性,也簡化了程序員的工作和數據庫開發建立的工作。當然,關系數據模型也有缺點,其中最主要的缺點是,由于存取路徑對用戶透明,查詢效率往往不如非關系數據模型。因此為了提高性能,必須對用戶的查詢請求進行優化,增加了開發數據庫管理系統的難度。

 

20 .試述數據庫系統三級模式結構,這種結構的優點是什么?

答:

數據庫系統的三級模式結構由外模式、模式和內模式組成。(參見書上圖 1 . 29 ) 外模式,亦稱子模式或用戶模式,是數據庫用戶(包括應用程序員和最終用戶)能夠看見和使用的局部數據的邏輯結構和特征的描述,是數據庫用戶的數據視圖,是與某一應用有關的數據的邏輯表示。模式,亦稱邏輯模式,是數據庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共數據視圖。模式描述的是數據的全局邏輯結構。外模式涉及的是數據的局部邏輯結構,通常是模式的子集。內模式,亦稱存儲模式,是數據在數據庫系統內部的表示,即對數據的物理結構和存儲方式的描述。數據庫系統的三級模式是對數據的三個抽象級別,它把數據的具體組織留給 DBMs 管理,使用戶能邏輯抽象地處理數據,而不必關心數據在計算機中的表示和存儲。為了能夠在內部實現這三個抽象層次的聯系和轉換,數據庫系統在這三級模式之間提供了兩層映像:外模式/模式映像和模式/內模式映像。正是這兩層映像保證了數據庫系統中的數據能夠具有較高的邏輯獨立性和物理獨立性。

 

21 .定義并解釋以下術語:模式、外模式、內模式、 DDL 、 DML 模式、外模式、內模式,亦稱邏輯模式,是數據庫中全體數據的邏輯結構和特征的描述,是所有用戶的公共數據視圖。模式描述的是數據的全局邏輯結構。外模式涉及的是數據的局部邏輯結構,通常是模式的子集。內模式,亦稱存儲模式,是數據在數據庫系統內部的表示,即對數據的物理結構和存儲方式的描述。 DDL :數據定義語言,用來定義數據庫模式、外模式、內模式的語言。 DML :數據操縱語言,用來對數據庫中的數據進行查詢、插入、刪除和修改的語句。

 

22 .什么叫數據與程序的物理獨立性?什么叫數據與程序的邏輯獨立性?為什么數據庫系統具有數據與程序的獨立性?

答:

數據與程序的邏輯獨立性:當模式改變時(例如增加新的關系、新的屬性、改變屬性的數據類型等),由數據庫管理員對各個外模式/模式的映像做相應改變,可以使外模式保持不變。應用程序是依據數據的外模式編寫的,從而應用程序不必修改,保證了數據與程序的邏輯獨立性,簡稱數據的邏輯獨立性。數據與程序的物理獨立性:當數據庫的存儲結構改變了,由數據庫管理員對模式/內模式映像做相應改變,可以使模式保持不變,從而應用程序也不必改變,保證了數據與程序的物理獨立性,簡稱數據的物理獨立性。數據庫管理系統在三級模式之間提供的兩層映像保證了數據庫系統中的數據能夠具有較高的邏輯獨立性和物理獨立性。

 

23 .試述數據庫系統的組成。

答:

數據庫系統一般由數據庫、數據庫管理系統(及其開發工具)、應用系統、數據庫管理員和用戶構成。

 

24 . DBA 的職責是什么?

答:

負責全面地管理和控制數據庫系統。具體職責包括: ① 決定數據庫的信息內容和結構; ② 決定數據庫的存儲結構和存取策略; ③ 定義數據的安全性要求和完整性約束條件; ④ 監督和控制數據庫的使用和運行; ⑤ 改進和重組數據庫系統。 25 .系統分析員、數據庫設計人員、應用程序員的職責是什么?答系統分析員負責應用系統的需求分析和規范說明,系統分析員要和用戶及 DBA 相結合,確定系統的硬件、軟件配置,并參與數據庫系統的概要設計。數據庫設計人員負責數據庫中數據的確定、數據庫各級模式的設計。數據庫設計人員必須參加用戶需求調查和系統分析,然后進行數據庫設計。在很多情況下,數據庫設計人員就由數據庫管理員擔任。應用程序員負責設計和編寫應用系統的程序???,并進行調試和安裝。

 

 

 

 

 

 

 

 

 

 

2章 關系數據庫

1 .試述關系模型的三個組成部分。
答:關系模型由關系數據結構、關系操作集合和關系完整性約束三部分組成。

 

2 .試述關系數據語言的特點和分類。

答:關系數據語言可以分為三類:

關系代數語言。

關系演算語言:元組關系演算語言和域關系演算語言。

SQL:具有關系代數和關系演算雙重特點的語言。

這些關系數據語言的共同特點是,語言具有完備的表達能力,是非過程化的集合操作語言,功能強,能夠嵌入高級語言中使用。

 

4 .試述關系模型的完整性規則。在參照完整性中,為什么外部碼屬性的值也可以為空?什么情況下才可以為空?

答:實體完整性規則是指若屬性A是基本關系R的主屬性,則屬性A不能取空值。

若屬性(或屬性組)F是基本關系R的外碼,它與基本關系S的主碼Ks相對應(基本關系RS不一定是不同的關系),則對于R中每個元組在F上的值必須為:或者取空值(F的每個屬性值均為空值);或者等于S中某個元組的主碼值。即屬性F本身不是主屬性,則可以取空值,否則不能取空值。

 

5.設有一個SPJ數據庫,包括S,P,J,SPJ四個關系模式:

1)求供應工程J1零件的供應商號碼SNO

πSno(σSno=J1’(SPJ)

2)求供應工程J1零件P1的供應商號碼SNO

πSno(σSno=J1’∧Pno=P1(SPJ))

3)求供應工程J1零件為紅色的供應商號碼SNO

πSno(σPno=P1 (σCOLOR=’紅‘ (P)∞SPJ)

4)求沒有使用天津供應商生產的紅色零件的工程號JNO

πJno(SPJ)- πJNO(σcity=‘天津Color=‘紅‘ SSPJP

5)求至少用了供應商S1所供應的全部零件的工程號JNO

πJno,Pno(SPJ)÷ πPno(σSno=S1 SPJ))

 

6.試述等值連接與自然連接的區別和聯系。

答:連接運算符是“=”的連接運算稱為等值連接。它是從關系RS的廣義笛卡爾積中選取A,B屬性值相等的那些元組

自然連接是一種特殊的等值連接,它要求兩個關系中進行比較的分量必須是相同的屬性組,并且在結果中把重復的屬性列去掉。

 

7.關系代數的基本運算有哪些 ? 如何用這些基本運算來表示其他運算? 

答:并、差、笛卡爾積、投影和選擇5種運算為基本的運算。其他3種運算,即交、連接和除,均可以用這5種基本運算來表達。

 

 

3章 關系數據庫標準語言SQL

1 .試述 sQL 語言的特點。

答:

(l)綜合統一。 sQL 語言集數據定義語言 DDL 、數據操縱語言 DML 、數據控制語言 DCL 的功能于一體。

(2)高度非過程化。用 sQL 語言進行數據操作,只要提出“做什么”,而無需指明“怎么做”,因此無需了解存取路徑,存取路徑的選擇以及 sQL 語句的操作過程由系統自動完成。

(3)面向集合的操作方式。 sQL 語言采用集合操作方式,不僅操作對象、查找結果可以是元組的集合,而且一次插入、刪除、更新操作的對象也可以是元組的集合。

(4)以同一種語法結構提供兩種使用方式。 sQL 語言既是自含式語言,又是嵌入式語言。作為自含式語言,它能夠獨立地用于聯機交互的使用方式;作為嵌入式語言,它能夠嵌入到高級語言程序中,供程序員設計程序時使用。

(5)語言簡捷,易學易用。

 

2 .試述 sQL 的定義功能。

sQL 的數據定義功能包括定義表、定義視圖和定義索引。 SQL 語言使用 cREATE TABLE 語句建立基本表, ALTER TABLE 語句修改基本表定義, DROP TABLE 語句刪除基本表;使用 CREATE INDEX 語句建立索引, DROP INDEX 語句刪除索引;使用 CREATE VIEW 語句建立視圖, DROP VIEW 語句刪除視圖。

 

3 .用 sQL 語句建立第二章習題 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 語言完成第二章習題 5 中的查詢。

 ( l )求供應工程 Jl 零件的供應商號碼 SNO ;

SELECT DIST SNO FROM SPJ WHERE  JNO=J1

 ( 2 )求供應工程 Jl 零件 Pl 的供應商號碼 SNO ;

SELECT  DIST SNO FROM SPJ WHERE JNO=‘J1‘ AND PNO=‘P1‘

( 3 )求供應工程 Jl 零件為紅色的供應商號碼 SNO ;

SELECT SNO FROM SPJ,P WHERE JNO=‘J1‘ AND SPJ.PNO=P.PNO AND COLOR=‘紅‘

( 4 )求沒有使用天津供應商生產的紅色零件的工程號 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 )求至少用了供應商 Sl 所供應的全部零件的工程號 JNO ;

由于VFP不允許子查詢嵌套太深,將查詢分為兩步

A、查詢S1供應商供應的零件號

SELECT DIST PNO FROM SPJ WHERE SNO=‘S1‘結果是(P1,P2)

B、查詢哪一個工程既使用P1零件又使用P2零件。

SELECT JNO FROM SPJ WHERE PNO=‘P1‘

AND JNO IN (SELECT JNO FROM SPJ WHERE PNO=‘P2‘)

 

5.針對習題3中的四個表試用SQL語言完成以下各項操作:

(1)找出所有供應商的姓名和所在城市。

       SELECT SNAME,CITY FROM S

(2)找出所有零件的名稱、顏色、重量。

SELECT PNAME,COLOR,WEIGHT FROM P

(3)找出使用供應商S1所供應零件的工程號碼。

        SELECT  DIST JNO FROM SPJ WHERE SNO=‘S1‘

(4)找出工程項目J2使用的各種零件的名稱及其數量。

SELECT PNAME,QTY FROM SPJ,P

WHERE P.PNO=SPJ.PNO AND SPJ.JNO=‘J2‘

(5)找出上海廠商供應的所有零件號碼。

SELECT PNO FROM SPJ,S WHERE S.SNO=SPJ.SNO AND CITY=‘上海

(6)出使用上海產的零件的工程名稱。

SELECT JNAME FROM SPJ,S,J

WHERE S.SNO=SPJ.SNO AND S.CITY=‘上海‘ AND J.JNO=SPJ.JNO

(7)找出沒有使用天津產的零件的工程號碼。

注意: 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)把全部紅色零件的顏色改成藍色。

UPDATE P SET COLOR=‘‘  WHERE COLOR=‘

(9)S5供給J4的零件P6改為由S3供應。

    UPDATE  SPJ  SET SNO=‘S3‘ WHERE SNO=‘S5‘ AND JNO=‘J4‘ AND PNO=‘P6‘

(10)從供應商關系中刪除供應商號是S2的記錄,并從供應情況關系中刪除相應的記錄。

    A、DELETE  FROM  S  WHERE  SNO=S2

    B、DELETE  FROM  SPJ  WHERE  SNO=S2

(11)請將(S2,J6,P4,200)插入供應情況關系。

     INSERT  INTO  SPJ  VALUES(‘S2’,‘J6’,‘P4’,200

 

6 .什么是基本表?什么是視圖?

兩者的區別和聯系是什么?基本表是本身獨立存在的表,在 sQL 中一個關系就對應一個表。視圖是從一個或幾個基本表導出的表。視圖本身不獨立存儲在數據庫中,是一個虛表。即數據庫中只存放視圖的定義而不存放視圖對應的數據,這些數據仍存放在導出視圖的基本表中。視圖在概念上與基本表等同,用戶可以如同基本表那樣使用視圖,可以在視圖上再定義視圖。

 

7 .試述視圖的優點。

( l )視圖能夠簡化用戶的操作; ( 2 )視圖使用戶能以多種角度看待同一數據; ( 3 )視圖對重構數據庫提供了一定程度的邏輯獨立性; ( 4 )視圖能夠對機密數據提供安全?;?。

 

8 .所有的視圖是否都可以更新?為什么?

:

不是。視圖是不實際存儲數據的虛表,因此對視圖的更新,最終要轉換為對基本表的更新。因為有些視圖的更新不能惟一有意義地轉換成對相應基本表的更新,所以,并不是所有的視圖都是可更新的.

 

9 .哪類視圖是可以更新的?哪類視圖是不可更新的?各舉一例說明。

答:基本表的行列子集視圖一般是可更新的。若視圖的屬性來自集函數、表達式,則該視圖肯定是不可以更新的。

 

10 .試述某個你熟悉的實際系統中對視圖更新的規定。

VFP

 

11.請為三建工程項目建立一個供應情況的視圖,包括供應商代碼(SNO)、零件代碼(PNO)、供應數量(QTY)。

CREATE VIEW VSP AS SELECT SNO,PNO,QTY FROM SPJ,J

 WHERE SPJ.JNO=J.JNO AND J.JNAME=‘三建

針對該視圖VSP完成下列查詢:

(1)找出三建工程項目使用的各種零件代碼及其數量。

SELECT  DIST  PNO,QTY  FROM  VSP

(2)找出供應商S1的供應情況。

SELECT  DIST * FROM VSP WHERE SNO=‘S1‘

 

 

 

 

 

4章 數據庫安全性

1 .什么是數據庫的安全性?

答:數據庫的安全性是指?;な菘庖苑樂共緩戲ǖ氖褂盟斐傻氖菪孤?、更改或破壞。


2 .數據庫安全性和計算機系統的安全性有什么關系?
答:安全性問題不是數據庫系統所獨有的,所有計算機系統都有這個問題。只是在數據庫系統中大量數據集中存放,而且為許多最終用戶直接共享,從而使安全性問題更為突出。
系統安全?;ご朧┦欠裼行鞘菘庀低車鬧饕副曛?。
數據庫的安全性和計算機系統的安全性,包括操作系統、網絡系統的安全性是緊密聯系、相互支持的,


3 .試述可信計算機系統評測標準的情況,試述TDI / TCSEC 標準的基本內容。

答:各個國家在計算機安全技術方面都建立了一套可信標準。目前各國引用或制定的一系列安全標準中,最重要的是美國國防部(DoD )正式頒布的《 DoD 可信計算機系統評估標準》 (伽sted Co uter system Evaluation criteria ,簡稱TcsEc ,又稱桔皮書)。(TDI / TCSEC 標準是將TcsEc 擴展到數據庫管理系統,即《 可信計算機系統評估標準關于可信數據庫系統的解釋》 (Tmsted Database Interpretation 簡稱TDI , 又稱紫皮書)。在TDI 中定義了數據庫管理系統的設計與實現中需滿足和用以進行安全性級別評估的標準。
TDI TcsEc 一樣,從安全策略、責任、保證和文檔四個方面來描述安全性級別劃分的指標。每個方面又細分為若干項。

 

4 .試述TcsEC ( TDI )將系統安全級別劃分為4 7 個等級的基本內容。

答:根據計算機系統對安全性各項指標的支持情況,TCSEC ( TDI )將系統劃分為四組(division ) 7 個等級,依次是D 、C ( CI , CZ )、B ( BI , BZ , B3 )、A ( AI ) ,按系統可靠或可信程度逐漸增高。


這些安全級別之間具有一種偏序向下兼容的關系,即較高安全性級別提供的安全?;ぐ系圖侗鸕乃斜;ひ?,同時提供更多或更完善的?;つ芰?。各個等級的基本內容為:
D D 級是最低級別。一切不符合更高標準的系統,統統歸于D 組。

Cl 級只提供了非常初級的自主安全?;?。能夠實現對用戶和數據的分離,進行自主存取控制(DAC ) ,?;せ螄拗樸沒ㄏ薜拇?。
C2 級實際是安全產品的最低檔次,提供受控的存取?;?,即將Cl 級的DAC 進一步細化,以個人身份注冊負責,并實施審計和資源隔離。
Bl 級標記安全?;?。對系統的數據加以標記,并對標記的主體和客體實施強制存取控制(MAC )以及審計等安全機制。
B2 級結構化?;?。建立形式化的安全策略模型并對系統內的所有主體和客體實施DAC MACo
B3 級安全域。該級的TCB 必須滿足訪問監控器的要求,審計跟蹤能力更強,并提供系統恢復過程。
Al 級驗證設計,即提供B3 級?;さ耐備魷低車男問交杓撲得骱脫櫓ひ勻沸鷗靼踩;ふ嬲迪?。

 

5 .試述實現數據庫安全性控制的常用方法和技術。

答:實現數據庫安全性控制的常用方法和技術有:
( l )用戶標識和鑒別:該方法由系統提供一定的方式讓用戶標識自己的名字或身份。每次用戶要求進入系統時,由系統進行核對,通過鑒定后才提供系統的使用權。
( 2 )存取控制:通過用戶權限定義和合法權檢查確保只有合法權限的用戶訪問數據庫,所有未被授權的人員無法存取數據。例如CZ 級中的自主存取控制( DAC ) , Bl 級中的強制存取控制(MAC )。
( 3 )視圖機制:為不同的用戶定義視圖,通過視圖機制把要保密的數據對無權存取的用戶隱藏起來,從而自動地對數據提供一定程度的安全?;?。

( 4 )審計:建立審計日志,把用戶對數據庫的所有操作自動記錄下來放入審計日志中,DBA 可以利用審計跟蹤的信息,重現導致數據庫現有狀況的一系列事件,找出非法存取數據的人、時間和內容等。
( 5 )數據加密:對存儲和傳輸的數據進行加密處理,從而使得不知道解密算法的人無法獲知數據的內容。

 

6 .什么是數據庫中的自主存取控制方法和強制存取控制方法? 

答:

自主存取控制方法:定義各個用戶對不同數據對象的存取權限。當用戶對數據庫訪問時首先檢查用戶的存取權限。防止不合法用戶對數據庫的存取。

強制存取控制方法:每一個數據對象被(強制地)標以一定的密級,每一個用戶也被(強制地)授予某一個級別的許可證。系統規定只有具有某一許可證級別的用戶才能存取某一個密級的數據對象。

 

7 .SQL 語言中提供了哪些數據控制(自主存取控制)的語句?請試舉幾例說明它們的使用方法。

答:

SQL 中的自主存取控制是通過GRANT語句和REVOKE語句來實現的。如:

GRANT SELECT , INSERT ON Student  

TO 王平
WITH GRANT  OPTION ;

就將Student 表的SELECT INSERT 權限授予了用戶王平,后面的“WITH GRANT OPTION ”子句表示用戶王平同時也獲得了“授權”的權限,即可以把得到的權限繼續授予其他用戶。
REVOKE INSERT ON Student FROM 王平CASCADE ;
就將Student 表的INSERT 權限從用戶王平處收回,選項CASCADE 表示,如果用戶王平將Student INSERT 權限又轉授給了其他用戶,那么這些權限也將從其他用戶處收回。

 

 

8.請用SQLGRANT REVOKE語句(加上視圖機制)完成以下授權定義或存取控制功能:

( a )用戶王明對兩個表有SELECT 權力。

GRANT SELECT ON 職工,部門

TO 王明

( b )用戶李勇對兩個表有INSERT DELETE 權力。

GRANT INSERT,DELETE ON 職工,部門

TO 李勇

( c ) 每個職工只對自己的記錄有SELECT 權力。

GRANT SELECT ON 職工

WHEN USER()=NAME

TO ALL;

( d )用戶劉星對職工表有SELECT 權力,對工資字段具有更新權力。

GRANT SELECT,UPDATE(工資) ON 職工

TO 劉星

 ( e )用戶張新具有修改這兩個表的結構的權力。

GRANT ALTER TABLE ON 職工,部門

TO 張新;

 ( f )用戶周平具有對兩個表所有權力(讀,插,改,刪數據),并具有給其他用戶授權的權力。

GRANT ALL PRIVILIGES ON 職工,部門

TO 周平

WITH GRANT OPTION;

( g )用戶楊蘭具有從每個部門職工中SELECT 最高工資、最低工資、平均工資的權力,他不能查看每個人的工資。

CREATE VIEW 部門工資 AS

SELECT 部門.名稱,MAX(工資),MIN(工資),AVG(工資)

FROM 職工,部門

WHERE 職工.部門號=部門.部門號

GROUP BY 職工.部門號

GRANT SELECT ON 部門工資

TO 楊蘭;

 

9 .把習題8 中(1---7)的每一種情況,撤銷各用戶所授予的權力

(1) REVOKE SELECT ON 職工,部門 FROM 王明;

(2) REVOKE INSERT , DELETE ON 職工,部門 FROM 李勇;

(3) REOVKE SELECT ON 職工
WHEN USER ( ) =NAME
FROM ALI ;

(4) REVOKE SELECT , UPDATE ON 職工
FROM 劉星;

(5) REVOKE ALTER TABLE ON 職工,部門
FROM 張新;

(6) REVOKE ALL PRIVILIGES ON 職工,部門
FROM 周平;

(7) REVOKE SELECT ON 部門工資
FROM 楊蘭;
DROP VIEW 部門工資;

 

10. 為什么強制存取控制提供了更高級別的數據庫安全性?

答:強制存取控制(MAC )是對數據本身進行密級標記,無論數據如何復制,標記與數據是一個不可分的整體,只有符合密級標記要求的用戶才可以操縱數據,從而提供了更高級別的安全性。

 

11 .理解并解釋MAC 機制中主體、客體、敏感度標記的含義。

答:

主體是系統中的活動實體,既包括DBMS 所管理的實際用戶,也包括代表用戶的各進程。
客體是系統中的被動實體,是受主體操縱的,包括文件、基表、索引、視圖等。對于主體和 客體,DBMS 為它們每個實例(值)指派一個敏感度標記(Label )。

敏感度標記被分成若干級別,例如絕密(Top Secret )、機密(Secret )· 可信( Confidential )、公開(PubliC )等。主體的敏感度標記稱為許可證級別(ClearanCe vel ) ,客體的敏感度標記稱為密級(Classification Level )。

 

13 .什么是數據庫的審計功能,為什么要提供審計功能?

答:審計功能是指DBMS 的審計??樵謨沒Ф允菘庵蔥脅僮韉耐卑閹脅僮髯遠鍬嫉較低車納蠹迫罩局?。
因為任何系統的安全?;ご朧┒疾皇峭昝牢奕鋇?,蓄意盜竊破壞數據的人總可能存在。利用數據庫的審計功能,DBA 可以根據審計跟蹤的信息,重現導致數據庫現有狀況的一系列事件,找出非法存取數據的人、時間和內容等。

 

14 .統計數據庫中存在何種特殊的安全性問題?

答:統計數據庫允許用戶查詢聚集類型的信息,如合計、平均值、最大值、最小值等,不允許查詢單個記錄信息。但是,人們可以從合法的查詢中推導出不合法的信息,即可能存在隱蔽的信息通道,這是統計數據庫要研究和解決的特殊的安全性問題。

 

 

 

 

 

 

 

 

5章 數據庫完整性

1什么是數據庫的完整性?

:

數據庫的完整性是指數據的正確性和相容性。

 

2 .數據庫的完整性概念與數據庫的安全性概念有什么區別和聯系?

:

數據的完整性和安全性是兩個不同的概念,但是有一定的聯系。前者是為了防止數據庫中存在不符合語義的數據,防止錯誤信息的輸入和輸出,即所謂垃圾進垃圾出( Garba : e In Garba : e out )所造成的無效操作和錯誤結果。后者是?;な菘夥樂茍褚獾鈉蘋島頭欠ǖ拇嬡?。也就是說,安全性措施的防范對象是非法用戶和非法操作,完整性措施的防范對象是不合語義的數據。

 

3 .什么是數據庫的完整性約束條件?可分為哪幾類?

完整性約束條件是指數據庫中的數據應該滿足的語義約束條件。一般可以分為六類:靜態列級約束、靜態元組約束、靜態關系約束、動態列級約束、動態元組約束、動態關系約束。靜態列級約束是對一個列的取值域的說明,包括以下幾個方面: ( l )對數據類型的約束,包括數據的類型、長度、單位、精度等; ( 2 )對數據格式的約束; ( 3 )對取值范圍或取值集合的約束; ( 4 )對空值的約束; ( 5 )其他約束。靜態元組約束就是規定組成一個元組的各個列之間的約束關系,靜態元組約束只局限在單個元組上。靜態關系約束是在一個關系的各個元組之間或者若干關系之間常常存在各種聯系或約束。

常見的靜態關系約束有: ( l )實體完整性約束; ( 2 )參照完整性約束; ( 3 )函數依賴約束。

動態列級約束是修改列定義或列值時應滿足的約束條件,包括下面兩方面: ( l )修改列定義時的約束; ( 2 )修改列值時的約束。動態元組約束是指修改某個元組的值時需要參照其舊值,并且新舊值之間需要滿足某種約束條件。動態關系約束是加在關系變化前后狀態上的限制條件,例如事務一致性、原子性等約束條件。

 

4 . DBMS 的完整性控制機制應具有哪些功能?

:

DBMS 的完整性控制機制應具有三個方面的功能: ( l )定義功能,即提供定義完整性約束條件的機制; ( 2 )檢查功能,即檢查用戶發出的操作請求是否違背了完整性約束條件;( 3 )違約反應:如果發現用戶的操作請求使數據違背了完整性約束條件,則采取一定的動作來保證數據的完整性。

 

 5 . RDBMS 在實現參照完整性時需要考慮哪些方面?

RDBMs 在實現參照完整性時需要考慮以下幾個方面: ( l )外碼是否可以接受空值。 ( 2 )冊 l 除被參照關系的元組時的考慮,這時系統可能采取的作法有三種: l )級聯刪除( CASCADES ) ; 2 )受限刪除( RESTRICTED ) ; 3 )置空值刪除( NULLIFIES )。 ( 3 )在參照關系中插入元組時的問題,這時系統可能采取的作法有: l )受限插入; 2 )遞歸插入。 ( 4 )修改關系中主碼的問題。一般是不能用 UPDATE 語句修改關系主碼的。如果需要修改主碼值,只能先刪除該元組,然后再把具有新主碼值的元組插入到關系中。如果允許修改主碼,首先要保證主碼的惟一性和非空,否則拒絕修改。然后要區分是參照關系還是被參照關系。

 

6 .假設有下面兩個關系模式:職工(職工號,姓名,年齡,職務,工資,部門號),其中職工號為主碼;部門(部門號,名稱,經理名,電話),其中部門號為主碼。用 sQL 語言定義這兩個關系模式,要求在模式中完成以下完整性約束條件的定義:定義每個模式的主碼;定義參照完整性;定義職工年齡不得超過 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 .關系系統中,當操作違反實體完整性、參照完整性和用戶定義的完整性約束條件時,一般是如何分別進行處理的?

:

對于違反實體完整性和用戶定義的完整性的操作一般都采用拒絕執行的方式進行處理。而對于違反參照完整性的操作,并不都是簡單地拒絕執行,有時要根據應用語義執行一些附加的操作,以保證數據庫的正確性。

 


6章 關系數據庫理論

1 .理解并給出下列術語的定義:
函數依賴、部分函數依賴、完全函數依賴、傳遞依賴、候選碼、主碼、外碼、全碼(All key )、1 NF 、ZNF 、3NF 、BcNF 、多值依賴、4NF 。

定義1:設R(U)是屬性集U上的關系模式。X,Y是屬性集U的子集。若對于R(U)的任意一個可能的關系r,r中不可能存在兩個元組在X上的屬性值相等,而在Y上的屬性值不等,則稱X函數確定YY函數依賴于X,記作XàY。(即只要X上的屬性值相等,Y上的值一定相等。)

術語和記號:

XàY,但Y不是X的子集,則稱XàY是非平凡的函數依賴。若不特別聲明,總是討論非平凡的函數依賴。

XàY,但YX的子集,則稱XàY是平凡的函數依賴。

XàY,則X叫做決定因素(Determinant)。

XàY,YàX,則記作XßàY。

Y不函數依賴于X,則記作X à Y。

定義2:在R(U)中,如果 XàY,并且對于X的任何一個真子集X,都有X à Y,則稱YX完全函數依賴

       若XàY,但Y不完全函數依賴于X,則稱YX部分函數依賴

定義3:若關系模式R的每一個分量是不可再分的數據項,則關系模式R屬于第一范式(1NF)。

定義4:若關系模式R1NF,且每一個非主屬性完全函數依賴于碼,則關系模式R2NF 。(即1NF消除了非主屬性對碼的部分函數依賴則成為2NF)。

定義5:關系模式R<U,F> 中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z不是Y的子集)使得XàY,Y à X,Y à Z成立,則稱R<U,F>3NF。

定義6:關系模式R<U,F>1NF 。若XàYY不是X的子集時,X必含有碼,則R<U,F>BCNF。

定義7:關系模式R<U,F>1NF,如果對于R的每個非平凡多值依賴XààY(Y不是X的子集,Z=U-X-Y不為空),X都含有碼,則稱R<U,F>4NF。

 

2.建立一個關于系、學生、班級、學會等諸信息的關系數據庫。

學生:學號、姓名、出生年月、系名、班號、宿舍區。

班級:班號、專業名、系名、人數、入校年份。

系:系名、系號、系辦公地點、人數。

學會:學會名、成立年份、辦公地點、人數。

    語義如下:一個系有若干專業,每個專業每年只招一個班,每個班有若干學生。一個系的學生住在同一宿舍區。每個學生可參加若干學會,每個學會有若干學生。學生參加某學會有一個入會年份。

    請給出關系模式,寫出每個關系模式的極小函數依賴集,指出是否存在傳遞函數依賴,對于函數依賴左部是多屬性的情況討論函數依賴是完全函數依賴,還是部分函數依賴。指出各關系模式的候選碼、外部碼,有沒有全碼存在?

解:(1)關系模式如下:

  學生:S(Sno,Sname,Sbirth,Dept,Class,Rno)

  班級:C(Class,Pname,Dept,Cnum,Cyear)

  系:D(Dept,Dno,Office,Dnum)

  學會:M(Mname,Myear,Maddr,Mnum)

  (2)每個關系模式的最小函數依賴集如下:

  A、學生S (Sno,Sname,Sbirth,Dept,Class,Rno) 的最小函數依賴集如下:SnoàSname,SnoàSbirth,SnoàClass,ClassàDept,DEPTàRno

    傳遞依賴如下:

由于SnoàDept,而DeptàSno ,DeptàRno(宿舍區)

 

所以SnoRno之間存在著傳遞函數依賴。

    由于ClassàDept,Dept à Class,DeptàRno

         所以ClassRno之間存在著傳遞函數依賴。

    由于SnoàClass,ClassàSno,ClassàDept

         所以SnoDept之間存在著傳遞函數依賴。

  B、班級C(Class,Pname,Dept,Cnum,Cyear)的最小函數依賴集如下:

    ClassàPname,ClassàCnum,ClassàCyear,PnameàDept.

    由于ClassàPname,PnameàClass,PnameàDept

        所以C1assDept之間存在著傳遞函數依賴。

 C、系D(Dept,Dno,Office,Dnum)的最小函數依賴集如下:

    DeptàDno,DnoàDept,DnoàOffice,DnoàDnum

    根據上述函數依賴可知,DeptOffice,DeptDnum之間不存在傳遞依賴。

 D、學會M(Mname,Myear,Maddr,Mnum)的最小函數依賴集如下:

    MnameàMyear,MnameàMaddr,MnameàMnum

     該模式不存在傳遞依賴。

  (3)各關系模式的候選碼、外部碼,全碼如下:

  A、學生S候選碼:Sno;外部碼:Dept、Class;無全碼

  B、班級C候選碼:Class;外部碼:Dept;無全碼

  C、系D候選碼:DeptDno;無外部碼;無全碼

  D、學會M候選碼:Mname;無外部碼;無全碼

 

3 .試由amstrong 公理系統推導出下面三條推理規則:
( l )合并規則:若X Z , X Y ,則有X YZ
( 2 )偽傳遞規則:由x Y ,明吟z 有翔一z
( 3 )分解規則:x Y , zcy ,有x z
證明
( l )已知X Z ,由增廣律知喲,YZ ,又因為X Y ,可得獄一X 卜)YZ ,最后根據傳遞律得x YZ 。
( 2 )已知X Y ,據增廣律得翔一Wy ,因為陰幾)Z ,所以X 林協明,Z ,通過傳遞律可知翔一Z 。
( 3 )已知zcy ,根據自反律知、吟z ,又因為x Y ,所以由傳遞律可得x Z 。

 

5 .試舉出3 個多值依賴的實例。

答:

1)關系模式MSC ( M , S , C )中,M 表示專業,S 表示學生,C 表示該專業的必修課。假設每個專業有多個學生,有一組必修課。設同專業內所有學生選修的必修課相同,實例關系如下。按照語義對于M 的每一個值M i , s 有一個完整的集合與之對應而不問C 取何值,所以M 一一S 。由于C S 的完全對稱性,必然有M 一一C 成立。

2)關系模式ISA ( I , S , A )中,I 表示學生興趣小組,S 表示學生,A 表示某興趣小組的活動項目。假設每個興趣小組有多個學生,有若干活動項目。每個學生必須參加所在興趣小組的所有活動項目,每個活動項目要求該興趣小組的所有學生參加。
按照語義有I 一一S , I 一一A 成立。
3)關系模式RDP ( R , D , P )中,R 表示醫院的病房,D 表示責任醫務人員,P 表示病人。假設每個病房住有多個病人,有多個責任醫務人員負責醫治和護理該病房的所有病人。

 

12.下面的結論哪些是正確的? 哪些是錯誤的? 對于錯誤的請給一個反例說明之。

1)任何一個二目關系是屬于3NF。

答:正確。因為關系模式中只有兩個屬性,所以無傳遞。

2)任何一個二目關系是屬于BCNF.

:正確。按BCNF的定義,若XàY,Y不是X的子集時,每個決定因素都包含碼,對于二目關系決定因素必然包含碼。詳細證明如下:(任何二元關系模式必定是BCNF)。

證明:設R為一個二目關系R(A1,A2),則屬性A1A2之間可能存在以下幾種依賴關系:

A、A1àA2,但A2àA1,則關系R的碼為A1,決定因素都包含碼,所以,RBCNF。

B、A1àA2,A2àA1,則關系R的碼為A2,所以決定因素都包含碼,RBCNF。

包含碼。RBCNF。C、R的碼為(A1,A2)(即A1 àA2,A2 àA1),決定因素都

3)任何一個二目關系是屬于4NF.

:正確。因為只有兩個屬性,所以無非平凡的多值依賴。


7章 數據庫設計

1.試述數據庫設計過程。

答:這里只概要列出數據庫設計過程的六個階段: ( l )需求分析; ( 2 )概念結構設計; ( 3 )邏輯結構設計; ( 4 )數據庫物理設計; ( 5 )數據庫實施; ( 6 )數據庫運行和維護。這是一個完整的實際數據庫及其應用系統的設計過程。不僅包括設計數據庫本身,還包括數據庫的實施、運行和維護。設計一個完善的數據庫應用系統往往是上述六個階段的不斷反復。

 

2 .試述數據庫設計過程各個階段上的設計描述。

答:各階段的設計要點如下: ( l )需求分析:準確了解與分析用戶需求(包括數據與處理)。 ( 2 )概念結構設計:通過對用戶需求進行綜合、歸納與抽象,形成一個獨立于具體 DBMS 的概念模型。 ( 3 )邏輯結構設計:將概念結構轉換為某個 DBMS 所支持的數據模型,并對其進行優化。 ( 4 )數據庫物理設計:為邏輯數據模型選取一個最適合應用環境的物理結構(包括存儲結構和存取方法)。 ( 5 )數據庫實施:設計人員運用 DBMS 提供的數據語言、工具及宿主語言,根據邏輯設計和物理設計的結果建立數據庫,編制與調試應用程序,組織數據入庫,并進行試運行。 ( 6 )數據庫運行和維護:在數據庫系統運行過程中對其進行評價、調整與修改。

 

3 .試述數據庫設計過程中結構設計部分形成的數據庫模式。

答:數據庫結構設計的不同階段形成數據庫的各級模式,即: ( l )在概念設計階段形成獨立于機器特點,獨立于各個 DBMS 產品的概念模式,在本篇中就是 E R 圖; ( 2 )在邏輯設計階段將 E R 圖轉換成具體的數據庫產品支持的數據模型,如關系模型,形成數據庫邏輯模式,然后在基本表的基礎上再建立必要的視圖 ( Vi 娜),形成數據的外模式; ( 3 )在物理設計階段,根據 DBMS 特點和處理的需要,進行物理存儲安排,建立索引,形成數據庫內模式。

 

4 .試述數據庫設計的特點。

答:數據庫設計既是一項涉及多學科的綜合性技術又是一項龐大的工程項目。其主要特點有: ( l )數據庫建設是硬件、軟件和干件(技術與管理的界面)的結合。 ( 2 )從軟件設計的技術角度看,數據庫設計應該和應用系統設計相結合,也就是說,整個設計過程中要把結構(數據)設計和行為(處理)設計密切結合起來。

 

5 .需求分析階段的設計目標是什么?調查的內容是什么?

答:需求分析階段的設計目標是通過詳細調查現實世界要處理的對象(組織、部門、企業等),充分了解原系統(手工系統或計算機系統)工作概況,明確用戶的各種需求,然后在此基礎上確定新系統的功能。調查的內容是“數據’夕和“處理”,即獲得用戶對數據庫的如下要求: ( l )信息要求,指用戶需要從數據庫中獲得信息的內容與性質,由信息要求可以導出數據要求,即在數據庫中需要存儲哪些數據; ( 2 )處理要求,指用戶要完成什么處理功能,對處理的響應時間有什么要求,處理方式是批處理還是聯機處理; ( 3 )安全性與完整性要求。

 

6 .數據字典的內容和作用是什么?

答:數據字典是系統中各類數據描述的集合。數據字典的內容通常包括: ( l )數據項; ( 2 )數據結構; ( 3 )數據流; ( 4 )數據存儲; ( 5 )處理過程五個部分。其中數據項是數據的最小組成單位,若干個數據項可以組成一個數據結構。數據字典通過對數據項和數據結構的定義來描述數據流和數據存儲的邏輯內容。數據字典的作用:數據字典是關于數據庫中數據的描述,在需求分析階段建立,是下一步進行概念設計的基礎,并在數據庫設計過程中不斷修改、充實、完蓋。

 

7 .什么是數據庫的概念結構?試述其特點和設計策略。

答:概念結構是信息世界的結構,即概念模型,其主要特點是: ( l )能真實、充分地反映現實世界,包括事物和事物之間的聯系,能滿足用戶對數據的處理要求,是對現實世界的一個真實模型; ( 2 )易于理解,從而可以用它和不熟悉計算機的用戶交換意見,用戶的積極參與是數據庫設計成功的關鍵; ( 3 )易于更改,當應用環境和應用要求改變時,容易對概念模型修改和擴充; ( 4 )易于向關系、網狀、層次等各種數據模型轉換。概念結構的設計策略通常有四種: l )自頂向下,即首先定義全局概念結構的框架,然后逐步細化; 2 )自底向上,即首先定義各局部應用的概念結構,然后將它們集成起來,得到全局概念結構; 3 )逐步擴張,首先定義最重要的核心概念結構,然后向外擴充,以滾雪球的方式逐步生成其他概念結構,直至總體概念結構; 4 )混合策略,即將自頂向下和自底向上相結合,用自頂向下策略設計一個全局概念結構的框架,以它為骨架集成由自底向上策略中設計的各局部概念結構。

 

8 .什么叫數據抽象?試舉例說明。

答:數據抽象是對實際的人、物、事和概念進行人為處理,抽取所關心的共同特性,忽略非本質的細節,并把這些特性用各種概念精確地加以描述,這些概念組成了某種模型。如“分類’夕這種抽象是:定義某一類概念作為現實世界中一組對象的類型。這些對象具有某些共同的特性和行為。它抽象了對象值和型之間的, ‘ i 5 member of ”的語義。在 E R 模型中,實體型就是這種抽象。例如在學?;肪持?,李英是老師,表示李英是教師類型中的一員,則教師是實體型,李英是教師實體型中的一個實體值,具有教師共同的特性和行為:在某個系某個專業教學,講授某些課程,從事某個方向的科研。

 

 9 .試述數據庫概念結構設計的重要性和設計步驟。

答:重要性:數據庫概念設計是整個數據庫設計的關鍵,將在需求分析階段所得到的應用需求首先抽象為概念結構,以此作為各種數據模型的共同基礎,從而能更好地、更準確地用某一 DBMS 實現這些需求。設計步驟:概念結構的設計方法有多種,其中最經常采用的策略是自底向上方法,該方法的設計步驟通常分為兩步:第 1 步是抽象數據并設計局部視圖,第 2 步是集成局部視圖,得到全局的概念結構。

 

 

10 .為什么要視圖集成?視圖集成的方法是什么?

答:在對數據庫系統進行概念結構設計時一般采用自底向上的設計方法,把繁雜的大系統分解子系統。首先設計各個子系統的局部視圖,然后通過視圖集成的方式將各子系統有機地融合起來,綜合成一個系統的總視圖。這樣,設計清晰,由簡到繁。由于數據庫系統是從整體角度看待和描述數據的,因此數據不再面向某個應用而是整個系統。因此必須進行視圖集成,使得數據庫能被全系統的多個用戶、多個應用共享使用。一般說來,視圖集成可以有兩種方式: ( l )多個分 E R 圖一次集成; ( 2 )逐步集成,用累加的方式一次集成兩個分 E R 圖。無論采用哪種方式,每次集成局部 E R 圖時都需要分兩步走: ( l )合并,解決各分 E R 圖之間的沖突,將各分 E R 圖合并起來生成初步 E R 圖; ( 2 )修改和重構,消除不必要的冗余,生成基本 E R 圖。

 

11 .什么是數據庫的邏輯結構設計?試述其設計步驟。

答:數據庫的邏輯結構設計就是把概念結構設計階段設計好的基本 E R 圖轉換為與選用的 DBMS 產品所支持的數據模型相符合的邏輯結構。設計步驟為 : ( l )將概念結構轉換為一般的關系、網狀、層次模型; ( 2 )將轉換來的關系、網狀、層次模型向特定 DBMS 支持下的數據模型轉換; ( 3 )對數據模型進行優化。

 

14 .規范化理論對數據庫設計有什么指導意義?

答:規范化理論為數據庫設計人員判斷關系模式的優劣提供了理論標準,可用以指導關系數據模型的優化,用來預測模式可能出現的問題,為設計人員提供了自動產生各種模式的算法工具,使數據庫設計工作有了嚴格的理論基礎。

 

15 .試述數據庫物理設計的內容和步驟。

答:數據庫在物理設備上的存儲結構與存取方法稱為數據庫的物理結構,它依賴于給定的 DBMS 。為一個給定的邏輯數據模型選取一個最適合應用要求的物理結構,就是數據庫的物理設計的主要內容。數據庫的物理設計步驟通常分為兩步: ( l )確定數據庫的物理結構,在關系數據庫中主要指存取方法和存儲結構; ( 2 )對物理結構進行評價,評價的重點是時間效率和空間效率。

 

16 .數據輸入在實施階段的重要性是什么?如何保證輸入數據的正確性?

答:數據庫是用來對數據進行存儲、管理與應用的,因此在實施階段必須將原有系統中的歷史數據輸入到數據庫。數據量一般都很大,而且數據來源于部門中的各個不同的單位。數據的組織方式、結構和格式都與新設計的數據庫系統有相當的差距,組織數據錄入就要將各類源數據從各個局部應用中抽取出來,分類轉換,最后綜合成符合新設計的數據庫結構的形式,輸入數據庫。因此這樣的數據轉換、組織入庫的工作是相當費力費時的工作。特別是原系統是手工數據處理系統時,各類數據分散在各種不同的原始表格、憑證、單據之中,數據輸入工作量更大。保證輸入數據正確性的方法:為提高數據輸入工作的效率和質量,應該針對具體的應用環境設計一個數據錄入子系統,由計算機來完成數據入庫的任務。在源數據入庫之前要采用多種方法對它們進行檢驗,以防止不正確的數據入庫。

 

 17 .什么是數據庫的再組織和重構造?為什么要進行數據庫的再組織和重構造?

答:數據庫的再組織是指:按原設計要求重新安排存儲位置、回收垃圾、減少指針鏈等,以提高系統性能。數據庫的重構造則是指部分修改數據庫的模式和內模式,即修改原設計的邏輯和物理結構。數據庫的再組織是不修改數據庫的模式和內模式的。進行數據庫的再組織和重構造的原因:數據庫運行一段時間后,由于記錄不斷增、刪、改,會使數據庫的物理存儲情況變壞,降低了數據的存取效率,數據庫性能下降,這時 DBA 就要對數據庫進行重組織。 DBMS 一般都提供用于數據重組織的實用程序。數據庫應用環境常常發生變化,如增加新的應用或新的實體,取消了某些應用,有的實體與實體間的聯系也發生了變化等,使原有的數據庫設計不能滿足新的需求,需要調整數據庫的模式和內模式。這就要進行數據庫重構造。

 

18 .現有一局部應用,包括兩個實體:“出版社”和“作者”,這兩個實體是多對多的聯系,請讀者自己設計適當的屬性,畫出 E R 圖,再將其轉換為關系模型(包括關系名、屬性名、碼和完整性約束條件)。

答:

 

關系模型為:作者(作者號,姓名,年齡,性別,電話,地址)出版社(出版社號,名稱,地址,聯系電話)出版(作者號,出版社號,書的數量)出版關系的主碼作者號,出版社號分別參照作者關系的主碼作者號和出版社關系的主碼出版社號。

 

19 .請設計一個圖書館數據庫,此數據庫中對每個借閱者保存讀者記錄,包括:讀者號,姓名,地址,性別,年齡,單位。對每本書存有:書號,書名,作者,出版社。對每本被借出的書存有讀者號、借出日期和應還日期。要求:給出 E R 圖,再將其轉換為關系模型。

答 :E R 圖為:

 

關系模型為:讀者(讀者號,姓名,地址,性別書(書號,書名,作者,出版社)借書(讀者號,書號,借出日期,年齡,單位)應還日期)

 

 

9章 關系查詢處理和查詢優化

1 .試述查詢優化在關系數據庫系統中的重要性和可能性。

答:重要性:關系系統的查詢優化既是 RDBMS 實現的關鍵技術又是關系系統的優點所在。它減輕了用戶選擇存取路徑的負擔。用戶只要提出“干什么”,不必指出“怎么干”。查詢優化的優點不僅在于用戶不必考慮如何最好地表達查詢以獲得較好的效率,而且在于系統可以比用戶程序的“優化’夕做得更好。

可能性:這是因為: ( l )優化器可以從數據字典中獲取許多統計信息,例如關系中的元組數、關系中每個屬性值的分布情況、這些屬性上是否有索引、是什么索引( B +樹索引還是 HASH 索引或惟一索引或組合索引)等。優化器可以根據這些信息選擇有效的執行計劃,而用戶程序則難以獲得這些信息。 ( 2 )如果數據庫的物理統計信息改變了,系統可以自動對查詢進行重新優化以選擇相適應的執行計劃。在非關系系統中必須重寫程序,而重寫程序在實際應用中往往是不太可能的。 ( 3 )優化器可以考慮數十甚至數百種不同的執行計劃,從中選出較優的一個,而程序員一般只能考慮有限的幾種可能性。 ( 4 )優化器中包括了很多復雜的優化技術,這些優化技術往往只有最好的程序員才能掌握。系統的自動優化相當于使得所有人都擁有這些優化技術。

 

 

2 .對學生一課程數據庫有如下的查詢: SEI CT Cn ne FROM Student , Cou e , SC WHERE Student . Sno = SC . Sno AND SC . Cllo = Coll e . Cllo AND Stu nt . Sdept = ! 15 ! ; 此查詢要求信息系學生選修了的所有課程名稱。試畫出用關系代數表示的語法樹,并用關系代數表達式優化算法對原始的語法樹進行優化處理,畫出優化后的標準語法樹。

答:

 

 

 

 

3 .試述查詢優化的一般準則。

答:下面的優化策略一般能提高查詢效率: ( l )選擇運算應盡可能先做; ( 2 )把投影運算和選擇運算同時進行; ( 3 )把投影同其前或其后的雙目運算結合起來執行; ( 4 )把某些選擇同在它前面要執行的笛卡兒積結合起來成為一個連接運算; ( 5 )找出公共子表達式; ( 6 )選取合適的連接算法。

 

4 .試述查詢優化的一般步驟。

答:各個關系系統的優化方法不盡相同,大致的步驟可以歸納如下: ( l )把查詢轉換成某種內部表示,通常用的內部表示是語法樹。 ( 2 )把語法樹轉換成標準(優化)形式。即利用優化算法,把原始的語法樹轉換成優化的形式。 ( 3 )選擇低層的存取路徑。 ( 4 )生成查詢計劃,選擇代價最小的。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10章 數據庫恢復技術

1.試述事務的概念及事務的4 個特性。

答:

事務是用戶定義的一個數據庫操作序列,這些操作要么全做要么全不做,是一個不可分割的工作單位。
事務具有4 個特性:原子性(Atomicity )、一致性(consistency )、隔離性( Isolation )和持續性(Durability )。這4 個特性也簡稱為ACID 特性。
原子性:事務是數據庫的邏輯工作單位,事務中包括的諸操作要么都做,要么都不做。
一致性:事務執行的結果必須是使數據庫從一個一致性狀態變到另一個一致性狀態。
隔離性:一個事務的執行不能被其他事務干擾。即一個事務內部的操作及使用的數據對其他并發事務是隔離的,并發執行的各個事務之間不能互相干擾。持續性:持續性也稱永久性(Perfnanence ) ,指一個事務一旦提交,它對數據庫中數據的改變就應該是永久性的。接下來的其他操作或故障不應該對其執行結果有任何影響。

 

2 .為什么事務非正常結束時會影響數據庫數據的正確性,請列舉一例說明之。

答:

事務執行的結果必須是使數據庫從一個一致性狀態變到另一個一致性狀態。如果數據庫系統運行中發生故障,有些事務尚未完成就被迫中斷,這些未完成事務對數據庫所做的修改有一部分已寫入物理數據庫,這時數據庫就處于一種不正確的狀態,或者說是不一致的狀態。
例如某工廠的庫存管理系統中,要把數量為Q 的某種零件從倉庫1 移到倉庫2 存放。
則可以定義一個事務T , T 包括兩個操作;Ql = Ql Q , Q2= Q2 + Q。 如果T 非正常終止時只做了第一個操作,則數據庫就處于不一致性狀態,庫存量無緣無故少了Q 。

 

3 .數據庫中為什么要有恢復子系統?它的功能是什么?

答:

因為計算機系統中硬件的故障、軟件的錯誤、操作員的失誤以及惡意的破壞是不可避免的,這些故障輕則造成運行事務非正常中斷,影響數據庫中數據的正確性,重則破壞數據庫,使數據庫中全部或部分數據丟失,因此必須要有恢復子系統。
恢復子系統的功能是:把數據庫從錯誤狀態恢復到某一已知的正確狀態(亦稱為一致狀態或完整狀態)。

 

4 .數據庫運行中可能產生的故障有哪幾類?哪些故障影響事務的正常執行?哪些故障破壞數據庫數據?

答:

數據庫系統中可能發生各種各樣的故障,大致可以分以下幾類:

1)事務內部的故障;
2)系統故障;
3)介質故障;
4)計算機病毒。
事務故障、系統故障和介質故障影響事務的正常執行;介質故障和計算機病毒破壞數據庫數據。

 

 

 

5 .數據庫恢復的基本技術有哪些?

答:

數據轉儲和登錄日志文件是數據庫恢復的基本技術。
當系統運行過程中發生故障,利用轉儲的數據庫后備副本和日志文件就可以將數據庫恢復到故障前的某個一致性狀態。

 

 

6 .數據庫轉儲的意義是什么?試比較各種數據轉儲方法。

答:

數據轉儲是數據庫恢復中采用的基本技術。所謂轉儲即DBA 定期地將數據庫復制到磁帶或另一個磁盤上保存起來的過程。當數據庫遭到破壞后可以將后備副本重新裝入,將數據庫恢復到轉儲時的狀態。

靜態轉儲:在系統中無運行事務時進行的轉儲操作,如上圖所示。靜態轉儲簡單,但必須等待正運行的用戶事務結束才能進行。同樣,新的事務必須等待轉儲結束才能執行。顯然,這會降低數據庫的可用性。
動態轉儲:指轉儲期間允許對數據庫進行存取或修改。動態轉儲可克服靜態轉儲的缺點,它不用等待正在運行的用戶事務結束,也不會影響新事務的運行。但是,轉儲結束時后援副本上的數據并不能保證正確有效。因為轉儲期間運行的事務可能修改了某些數據,使得后援副本上的數據不是數據庫的一致版本。為此,必須把轉儲期間各事務對數據庫的修改活動登記下來,建立日志文件( 109 file )。這樣,后援副本加上日志文件就能得到數據庫某一時刻的正確狀態。轉儲還可以分為海量轉儲和增量轉儲兩種方式。
海量轉儲是指每次轉儲全部數據庫。增量轉儲則指每次只轉儲上一次轉儲后更新過的數據。從恢復角度看,使用海量轉儲得到的后備副本進行恢復一般說來更簡單些。但如果數據庫很大,事務處理又十分頻繁,則增量轉儲方式更實用更有效。

 

7 .什么是日志文件?為什么要設立日志文件?

答:

1)日志文件是用來記錄事務對數據庫的更新操作的文件。
2)設立日志文件的目的是:進行事務故障恢復;進行系統故障恢復;協助后備副本進行介質故障恢復。

 

8 .登記日志文件時為什么必須先寫日志文件,后寫數據庫?

答:

把對數據的修改寫到數據庫中和把表示這個修改的日志記錄寫到日志文件中是兩個不同的操作。有可能在這兩個操作之間發生故障,即這兩個寫操作只完成了一個。
如果先寫了數據庫修改,而在運行記錄中沒有登記這個修改,則以后就無法恢復這個修改了。如果先寫日志,但沒有修改數據庫,在恢復時只不過是多執行一次UNDO 操作,并不會影響數據庫的正確性。所以一定要先寫日志文件,即首先把日志記錄寫到日志文件中,然后寫數據庫的修改。

 

9 .針對不同的故障,試給出恢復的策略和方法。(即如何進行事務故障的恢復?系統故障的恢復?介質故障恢復?)

答:
事務故障的恢復:
事務故障的恢復是由DBMS DBMs 執行恢復步驟是:

自動完成的,對用戶是透明的。

1)反向掃描文件日志(即從最后向前掃描日志文件),查找該事務的更新操作;
2)對該事務的更新操作執行逆操作,即將日志記錄中“更新前的值”寫入數據庫;
3)繼續反向掃描日志文件,做同樣處理;
4)如此處理下去,直至讀到此事務的開始標記,該事務故障的恢復就完成了。

系統故障的恢復:
系統故障可能會造成數據庫處于不一致狀態:一是未完成事務對數據庫的更新可能已寫入數據庫;二是已提交事務對數據庫的更新可能還留在緩沖區,沒來得及寫入數據庫。因此恢復操作就是要撤銷(UNDO )故障發生時未完成的事務,重做(REDO )已完成的事務。
系統的恢復步驟是:
1)正向掃描日志文件,找出在故障發生前已經提交的事務隊列(REDO 隊列)和未完成的事務隊列(uNDO 隊列)。
2)對撤銷隊列中的各個事務進行UNDO 處理。
進行UNDO 處理的方法是,反向掃描日志文件,對每個UNDO 事務的更新操作執行逆操作,即將日志記錄中“更新前的值”Before Image )寫入數據庫。( 3 )對重做隊列中的各個事務進行REDO 處理。
進行REDO 處理的方法是:正向掃描日志文件,對每個REDO 事務重新執行日志文件登記的操作。即將日志記錄中“更新后的值”Afte , Image )寫入數據庫。

介質故障的恢復:
介質故障是最嚴重的一種故障。
恢復方法是重裝數據庫,然后重做已完成的事務。具體過程是:

( 1 ) DBA 裝入最新的數據庫后備副本(離故障發生時刻最近的轉儲副本), 使數據庫恢復到轉儲時的一致性狀態;
( 2 ) DBA 裝入轉儲結束時刻的日志文件副本;
( 3 ) DBA 啟動系統恢復命令,由DBMS 完成恢復功能,即重做已完成的事務。

 

10 .什么是檢查點記錄?檢查點記錄包括哪些內容?

答:
檢查點記錄是一類新的日志記錄。它的內容包括:
① 建立檢查點時刻所有正在執行的事務清單

② 這些事務的最近一個日志記錄的地址。

 

11 .具有檢查點的恢復技術有什么優點?試舉一個具體的例子加以說明。答

答:

利用日志技術進行數據庫恢復時,恢復子系統必須搜索日志,確定哪些事務需要REDO ,哪些事務需要uNDO 。一般來說,需要檢查所有日志記錄。這樣做有兩個問題:一是搜索整個日志將耗費大量的時間;二是很多需要REDO 處理的事務實際上已經將它們的更新操作結果寫到數據庫中了,恢復子系統又重新執行了這些操作,浪費了大量時間。
檢查點技術就是為了解決這些問題。

在采用檢查點技術之前,恢復時需要從頭掃描日志文件,而利用檢查點技術只需要從T ??忌樅罩?,這就縮短了掃描日志的時間。
事務Tl 的更新操作實際上已經寫到數據庫中了,進行恢復時沒有必要再REDO 處理,采用檢查點技術做到了這一點。

 

12 .試述使用檢查點方法進行恢復的步驟。

答:

1)從重新開始文件(見第11 題的圖)中找到最后一個檢查點記錄在日志文件中的地址,由該地址在日志文件中找到最后一個檢查點記錄。
2)由該檢查點記錄得到檢查點建立時刻所有正在執行的事務清單ACTIVE LIST 。
這里建立兩個事務隊列:
1 ) UNDO LIST :需要執行undo 操作的事務集合;
2 ) REDO LIST :需要執行redo 操作的事務集合。
ACTIVE LIST 暫時放入UNDO LIST 隊列,REDO 隊列暫為空。

3 )從檢查點開始正向掃描日志文件:
① 如有新開始的事務T * ,把T *暫時放入uNDO LlsT 隊列;
② 如有提交的事務毛,把毛從UNDO LIST 隊列移到REDO LIST 隊列,直到日志文件結束;
4 )對UNDO LIST 中的每個事務執行UNDO 操作,對REDO LIST 中的每個事務執行REDO 操作。

 

13 .什么是數據庫鏡像?它有什么用途?

答:

數據庫鏡像即根據DBA 的要求,自動把整個數據庫或者其中的部分關鍵數據復制到另一個磁盤上。每當主數據庫更新時,DBMS 自動把更新后的數據復制過去,即DBMS 自動保證鏡像數據與主數據的一致性。
數據庫鏡像的用途有:
一是用于數據庫恢復。當出現介質故障時,可由鏡像磁盤繼續提供使用,同時DBMS 自動利用鏡像磁盤數據進行數據庫的恢復,不需要關閉系統和重裝數據庫副本。

二是提高數據庫的可用性。在沒有出現故障時,當一個用戶對某個數據加排它鎖進行修改時,其他用戶可以讀鏡像數據庫上的數據,而不必等待該用戶釋放鎖。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11章 并發控制

1. 在數據庫中為什么要并發控制?

答:數據庫是共享資源,通常有許多個事務同時在運行。當多個事務并發地存取數據庫時就會產生同時讀取和/或修改同一數據的情況。若對并發操作不加控制就可能會存取和存儲不正確的數據,破壞數據庫的一致性。所以數據庫管理系統必須提供并發控制機制。

 

 2 .并發操作可能會產生哪幾類數據不一致?用什么方法能避免各種不一致的情況?

答:并發操作帶來的數據不一致性包括三類:丟失修改、不可重復讀和讀“臟’夕數據。 ( l )丟失修改(lost update ) 兩個事務 Tl T2讀入同一數據并修改,T2提交的結果破壞了(覆蓋了) Tl 提交的結果,導致 Tl 的修改被丟失。 ( 2 )不可重復讀( Non Repeatable Read ) 不可重復讀是指事務 Tl 讀取數據后,事務幾執行更新操作,使 Tl 無法再現前一次讀取結果。( 3 )讀“臟”數據( Dirty Read ) 讀“臟’夕數據是指事務 Tl 修改某一數據,并將其寫回磁盤,事務幾讀取同一數據后, Tl 由于某種原因被撤銷,這時 Tl 已修改過的數據恢復原值,幾讀到的數據就與數據庫中的數據不一致,則幾讀到的數據就為“臟”數據,即不正確的數據。避免不一致性的方法和技術就是并發控制。最常用的技術是封鎖技術。也可以用其他技術,例如在分布式數據庫系統中可以采用時間戳方法來進行并發控制。

 

3 .什么是封鎖?基本的封鎖類型有幾種?試述它們的含義。

答:封鎖就是事務 T 在對某個數據對象例如表、記錄等操作之前,先向系統發出請求,對其加鎖。加鎖后事務 T 就對該數據對象有了一定的控制,在事務 T 釋放它的鎖之前,其他的事務不能更新此數據對象。封鎖是實現并發控制的一個非常重要的技術。

基本的封鎖類型有兩種:排它鎖( Exclusive Locks ,簡稱 x 鎖)和共享鎖 ( Share Locks,簡稱 S 鎖)。排它鎖又稱為寫鎖。若事務 T 對數據對象 A 加上 X 鎖,則只允許 T 讀取和修改 A ,其他任何事務都不能再對 A 加任何類型的鎖,直到 T 釋放 A 上的鎖。這就保證了其他事務在 T 釋放 A 上的鎖之前不能再讀取和修改 A 。共享鎖又稱為讀鎖。若事務 T 對數據對象 A 加上 S 鎖,則事務 T 可以讀 A但不能修改 A ,其他事務只能再對 A S 鎖,而不能加 X 鎖,直到 T 釋放 A 上的 S 鎖。這就保證了其他事務可以讀 A ,但在 T 釋放 A 上的 S 鎖之前不能對 A 做任何修改。

 

4 .如何用封鎖機制保證數據的一致性?

答: DBMS 在對數據進行讀、寫操作之前首先對該數據執行封鎖操作,例如下圖中事務 Tl 在對 A 進行修改之前先對 A 執行 xock ( A ) ,即對 A x 鎖。這樣,當幾請求對 A x 鎖時就被拒絕,幾只能等待 Tl 釋放 A 上的鎖后才能獲得對 A x 鎖,這時它讀到的 A Tl 更新后的值,再按此新的 A 值進行運算。這樣就不會丟失 Tl 的更新。

 

DBMS 按照一定的封鎖協議,對并發操作進行控制,使得多個并發操作有序地執行,就可以避免丟失修改、不可重復讀和讀“臟’夕數據等數據不一致性。

 

5 .什么是活鎖?什么是死鎖?

答:

 

如果事務 Tl 封鎖了數據 R ,事務幾又請求封鎖 R ,于是幾等待。幾也請求封鎖 R ,當 Tl 釋放了 R 上的封鎖之后系統首先批準了幾的請求,幾仍然等待。然后幾又請求封鎖 R ,當幾釋放了 R 上的封鎖之后系統又批準了幾的請求 … … 幾有可能永遠等待,這就是活鎖的情形?;釧暮迨歉玫卻攣竦卻奔涮?,似乎被鎖住了,實際上可能被激活。如果事務 Tl 封鎖了數據 Rl ,幾封鎖了數據凡,然后 Tl 又請求封鎖幾,因幾已封鎖了幾,于是 Tl 等待幾釋放幾上的鎖。接著幾又申請封鎖 Rl ,因 Tl 已封鎖了 Rl ,幾也只能等待 Tl 釋放 Rl 上的鎖。這樣就出現了 Tl 在等待幾,而幾又在等待 T }的局面, T }和幾兩個事務永遠不能結束,形成死鎖。

 

 

6 .試述活鎖的產生原因和解決方法。

答:活鎖產生的原因:當一系列封鎖不能按照其先后順序執行時,就可能導致一些事務無限期等待某個封鎖,從而導致活鎖。避免活鎖的簡單方法是采用先來先服務的策略。當多個事務請求封鎖同一數據對象時,封鎖子系統按請求封鎖的先后次序對事務排隊,數據對象上的鎖一旦釋放就批準申請隊列中第一個事務獲得鎖。

 

11 .請給出檢測死鎖發生的一種方法,當發生死鎖后如何解除死鎖?

答:數據庫系統一般采用允許死鎖發生, DBMS 檢測到死鎖后加以解除的方法。 DBMS 中診斷死鎖的方法與操作系統類似,一般使用超時法或事務等待圖法。超時法是:如果一個事務的等待時間超過了規定的時限,就認為發生了死鎖。超時法實現簡單,但有可能誤判死鎖,事務因其他原因長時間等待超過時限時,系統會誤認為發生了死鎖。若時限設置得太長,又不能及時發現死鎖發生。 DBMS 并發控制子系統檢測到死鎖后,就要設法解除。通常采用的方法是選擇一個處理死鎖代價最小的事務,將其撤消,釋放此事務持有的所有鎖,使其他事務得以繼續運行下去。當然,對撤銷的事務所執行的數據修改操作必須加以恢復。

 

 12 .什么樣的并發調度是正確的調度?

答:可串行化( Serializable )的調度是正確的調度??紗謝牡鞫鵲畝ㄒ澹憾喔鍪攣竦牟⒎⒅蔥惺欽返?,當且僅當其結果與按某一次序串行執行它們時的結果相同,稱這種調度策略為可串行化的調度。

 

9 .設 Tl ,幾,幾是如下的 3 個事務:

Tl A : = A + 2 ;

T2A : = A * 2 ;

T3A : = A **2 ; ( A <-A*A

A 的初值為 0 。

( l )若這 3 個事務允許并行執行,則有多少可能的正確結果,請一一列舉出來。

答 :A 的最終結果可能有 2 、 4 、 8 、 16 。因為串行執行次序有 Tl T2T3、 Tl T3T2、T2T1T3、T2T3Tl 、T3T1T2、T3T2 Tl 。對應的執行結果是 16 、 8 · 4 · 2 · 4 · 2 。

( 2 )請給出一個可串行化的調度,并給出執行結果

答:

         

最后結果 A 16 ,是可串行化的調度。

( 3 )請給出一個非串行化的調度,并給出執行結果。

答:

         

      最后結果 A 0 ,為非串行化的調度。

( 4 )若這 3 個事務都遵守兩段鎖協議,請給出一個不產生死鎖的可串行化調度。

答:

         

     ( 5 )若這 3 個事務都遵守兩段鎖協議,請給出一個產生死鎖的調度。

答:

         

 

11.試證明,若并發事務遵守兩段鎖協議,則對這些事務的并發調度是可串行化的。

證明:首先以兩個并發事務 Tl T2為例,存在多個并發事務的情形可以類推。根據可串行化定義可知,事務不可串行化只可能發生在下列兩種情況:

 ( l )事務 Tl 寫某個數據對象 A ,T2讀或寫 A ;

( 2 )事務 Tl 讀或寫某個數據對象 A ,T2A 。

下面稱 A 為潛在沖突對象。

Tl T2訪問的潛在沖突的公共對象為{A1,A2 … , An }。不失一般性,假設這組潛在沖突對象中 X (A 1 , A2 , … , Ai }均符合情況 1 。 Y {A i + 1 , … , An }符合所情況( 2 )。

VX x , Tl 需要 XlockX

T2 需要 Slockx Xlockx

 1 )如果操作 ① 先執行,則 Tl 獲得鎖,T2等待

由于遵守兩段鎖協議, Tl 在成功獲得 x Y 中全部對象及非潛在沖突對象的鎖后,才會釋放鎖。

這時如果存在 w x Y ,T2已獲得 w 的鎖,則出現死鎖;否則, Tl 在對 x 、 Y 中對象全部處理完畢后,T2才能執行。這相當于按 Tl 、T2的順序串行執行,根據可串行化定義, Tl 和幾的調度是可串行化的。

2 )操作 ② 先執行的情況與( l )對稱因此,若并發事務遵守兩段鎖協議,在不發生死鎖的情況下,對這些事務的并發調度一定是可串行化的。證畢。

 

12 .舉例說明,對并發事務的一個調度是可串行化的,而這些并發事務不一定遵守兩段鎖協議。

答:

 

 

13 .為什么要引進意向鎖?意向鎖的含義是什么?

答:引進意向鎖是為了提高封鎖子系統的效率。該封鎖子系統支持多種封鎖粒度。原因是:在多粒度封鎖方法中一個數據對象可能以兩種方式加鎖 ― 顯式封鎖和隱式封鎖。因此系統在對某一數據對象加鎖時不僅要檢查該數據對象上有無(顯式和隱式)封鎖與之沖突,還要檢查其所有上級結點和所有下級結點,看申請的封鎖是否與這些結點上的(顯式和隱式)封鎖沖突,顯然,這樣的檢查方法效率很低。為此引進了意向鎖。意向鎖的含義是:對任一結點加鎖時,必須先對它的上層結點加意向鎖。例如事務 T 要對某個元組加 X 鎖,則首先要對關系和數據庫加 ix 鎖?;謊災?,對關系和數據庫加 ix 鎖,表示它的后裔結點 ― 某個元組擬(意向)加 X 鎖。引進意向鎖后,系統對某一數據對象加鎖時不必逐個檢查與下一級結點的封鎖沖突了。例如,事務 T 要對關系 R X 鎖時,系統只要檢查根結點數據庫和 R 本身是否已加了不相容的鎖(如發現已經加了 ix ,則與 X 沖突),而不再需要搜索和檢查 R 中的每一個元組是否加了 X 鎖或 S 鎖。

 

14 .試述常用的意向鎖: IS 鎖、 ix 鎖、 SIX 鎖,給出這些鎖的相容矩陣。

答: IS鎖:如果對一個數據對象加 IS 鎖,表示它的后裔結點擬(意向)加 S 鎖。例如,要對某個元組加 S 鎖,則要首先對關系和數據庫加 IS

IX 鎖:如果對一個數據對象加 ix 鎖,表示它的后裔結點擬(意向功口 X 鎖。例如,要對某個元組加 X 鎖,則要首先對關系和數據庫加 ix 鎖。

SIX 鎖:如果對一個數據對象加 SIX 鎖,表示對它加 S 鎖,再加 IX 鎖,即 SIX = S + IX 。

相容矩陣:

 

 

15 .理解并解釋下列術語的含義:封鎖、活鎖、死鎖、排它鎖、共享鎖、并發事務的調度、可串行化的調度、兩段鎖協議。

答:(略,已經在上面有關習題中解答)

 

16 .試述你了解的某一個實際的 DBMS 產品的并發控制機制。

答:(略,參見簡單介紹了有關 Oracle 的并發控制機制。)

 

數據庫的基本常識

標簽:

原文地址://www.cnblogs.com/coding4/p/5598349.html

(0)
(0)
   
舉報
評論 一句話評論(0
登錄后才能評論!
? 2014 吉利平特名人堂 版權所有 京ICP備13008772號-2
迷上了代碼!
大乐透100期的走势图 850游戏通比牛牛诀窍 pk10一天稳赚技巧 重庆时时彩到底有多假 欢乐打麻将 龙虎和刷流水教程视频 pt游戏厅 重庆时时开奖历史结果 手机棋牌游戏平台 世界杯混合投注 牌九至尊最新版下载 藏分出款有用吗 大富翁欢乐捕鱼 北京pk10现场视频直播 北京pk赛车平台玩 重庆时时开奖预测下期