數據庫的基本常識

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

 

 

 

 

 

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 圖,要求實體型之間具備一對1、一對多、多對多各類不一樣的聯繫。

答:

 

 

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數據庫,包括SPJSPJ四個關係模式:

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

πJnoPno(SPJ)÷ πPno(σSno=S1 SPJ))

 

6.試述等值鏈接與天然鏈接的區別和聯繫。

答:鏈接運算符是「=」的鏈接運算稱爲等值鏈接。它是從關係RS的廣義笛卡爾積中選取AB屬性值相等的那些元組

天然鏈接是一種特殊的等值鏈接,它要求兩個關係中進行比較的份量必須是相同的屬性組,而且在結果中把重複的屬性列去掉。

 

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) UNIQUESname C(6) Status  C(2)City C(4));

 

對於 P 表: P ( PNO , PNAME , COLOR , WEIGHT );

P 表 :

CREATE TABLE P(Pno  C(2)  UNIQUEPname  C(6)COLOR  C(2),  WEIGHT INT);

 

對於 J 表: J ( JNO , JNAME , CITY;

J 表:

CREATE  TABLE  J(Jno  C(2) UNlQUEJNAME  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的記錄,並從供應狀況關係中刪除相應的記錄。

    ADELETE  FROM  S  WHERE  SNO=S2

    BDELETE  FROM  SPJ  WHERE  SNO=S2

(11)請將(S2J6P4200)插入供應狀況關係。

     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上的關係模式。XY是屬性集U的子集。若對於R(U)的任意一個可能的關係rr中不可能存在兩個元組在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àYYà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<UF> 中若不存在這樣的碼X、屬性組Y及非主屬性Z(Z不是Y的子集)使得XàYY à XY à Z成立,則稱R<UF>3NF

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

定義7:關係模式R<UF>1NF,若是對於R的每一個非平凡多值依賴XààY(Y不是X的子集,Z=U-X-Y不爲空)X都含有碼,則稱R<UF>4NF

 

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

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

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

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

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

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

    請給出關係模式,寫出每一個關係模式的極小函數依賴集,指出是否存在傳遞函數依賴,對於函數依賴左部是多屬性的狀況討論函數依賴是徹底函數依賴,仍是部分函數依賴。指出各關係模式的候選碼、外部碼,有沒有全碼存在?

解:(1)關係模式以下:

  學生:S(SnoSnameSbirthDeptClassRno)

  班級:C(ClassPnameDeptCnumCyear)

  系:D(DeptDnoOfficeDnum)

  學會:M(MnameMyearMaddrMnum)

  (2)每一個關係模式的最小函數依賴集以下:

  A、學生S (SnoSnameSbirthDeptClassRno) 的最小函數依賴集以下:SnoàSnameSnoàSbirthSnoàClassClassàDeptDEPTàRno

    傳遞依賴以下:

因爲SnoàDept,而DeptàSno DeptàRno(宿舍區)

 

因此SnoRno之間存在着傳遞函數依賴。

    因爲ClassàDeptDept à ClassDeptàRno

         因此ClassRno之間存在着傳遞函數依賴。

    因爲SnoàClassClassàSnoClassàDept

         因此SnoDept之間存在着傳遞函數依賴。

  B、班級C(ClassPnameDeptCnumCyear)的最小函數依賴集以下:

    ClassàPnameClassàCnumClassàCyearPnameàDept.

    因爲ClassàPnamePnameàClassPnameàDept

        因此C1assDept之間存在着傳遞函數依賴。

 C、系D(DeptDnoOfficeDnum)的最小函數依賴集以下:

    DeptàDnoDnoàDeptDnoàOfficeDnoàDnum

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

 D、學會M(MnameMyearMaddrMnum)的最小函數依賴集以下:

    MnameàMyearMnameàMaddrMnameàMnum

     該模式不存在傳遞依賴。

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

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

  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(A1A2),則屬性A1A2之間可能存在如下幾種依賴關係:

AA1àA2,但A2àA1,則關係R的碼爲A1,決定因素都包含碼,因此,RBCNF

BA1àA2A2àA1,則關係R的碼爲A2,因此決定因素都包含碼,RBCNF

包含碼。RBCNFCR的碼爲(A1A2)(即A1 àA2A2 à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 T2T3Tl T3T2T2T1T3T2T3Tl T3T1T2T3T2 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訪問的潛在衝突的公共對象爲{A1A2 … , 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 的併發控制機制。)

相關文章
相關標籤/搜索