數據庫全冊簡答題

2020-08-13 11:35:26

第一章 緒論

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

正確答案: 數據: 描述事物的符號記錄稱爲數據。數據的種類有文字、圖形、圖象、聲音、正文等等。數據與其語意是不可分的。 *解析: 在現代計算機系統中數據的概念是廣義的。早期的計算機系統主要用於科學計算,處理的數據是整數、實數、浮點數等傳統數學中的數據等。現在計算機能儲存和處理的物件十分廣泛,表示這些物件的 數據也越來越複雜。 數據與其語意是不可分的。500這個數位可以表示一件物品的價格是500元,也可以表示一個學術會議參加的人數有500人。還可以表示一袋奶粉重500克。 數據庫: 數據庫是長期儲存在計算機內、有組織的、可共用的數據集合。數據庫中的數據按一定的數據模型組織、描述和儲存,具有較小的冗餘度、較高的數據獨立性和易擴充套件性,並可爲各種使用者共用。 *解析: 簡單地講,數據數據庫數據具有永久儲存、有組織和可共用三個特點。 數據模型是數據庫的核心概念。每個數據庫中數據的都是按照某一種數據模型來組織的。 數據庫系統: 數據庫系統(DBS)是指在計算機系統中引入數據庫後的系統構成。數據庫系統由數據庫、數據庫管理系統(及其開發工具)、應用系統、數據庫管理員構成。 *解析: 數據庫系統和數據庫是兩個概念。數據庫系統是一個人-機系統,數據庫是數據庫系統的一個組成部分。但是在日常工作中人們常常把把數據庫系統簡稱爲數據庫。希望讀者能夠從人們講話或文章的上下文中區分「數據庫系統」和「數據庫」。 不要引起混淆。 數據庫管理系統: 數據庫管理系統(DBMS)是位於使用者與操作系統之間的一層數據管理軟體。用於科學地組織和儲存數據、高效地獲取和維護數據。DBMS主要功能包括數據定義功能、數據操縱功能、數據庫的執行管理功能、數據庫的建立和維護功能。 *解析: DBMS是一個大型複雜的軟件系統。是計算機中的基礎軟體。目前,專門研製DBMS的廠商及其研製的DBMS產品很多。著名的有美國IBM公司的DB2關係數據庫管理系統、IMS層次數據庫管理系統;美國ORACLE公司的ORACLE關係數據庫管理系統;SYBASE公司的SYBASE關係數據庫管理系統;美國微軟公司的SQL SERVER關係數據庫管理系統等等。

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

正確答案: 使用數據庫系統的好處是由數據庫管理系統的特點或優點決定的。 使用數據庫系統的好處很多,例如可以大大提高應用開發的效率,方便使用者的使用,減輕數據庫系統管理人員維護的負擔等。 爲什麼有這些好處,可以結合第5題來回答。 使用數據庫系統可以大大提高應用開發的效率。因爲在數據庫系統中應用程式不必考慮數據的定義、儲存和數據存取的具體路徑,這些工作都由DBMS來完成。用一個通俗的比喻,使用了DBMS就如有了一個好參謀好助手,許多具體的技術工作都由這個助手來完成。開發人員就可以專注於應用邏輯的設計而不必爲管理數據的許許多多複雜的細節操心。 還有,當應用邏輯改變,數據的邏輯結構需要改變時,由於數據庫系統提供了數據與程式之間的獨立性。數據邏輯結構的改變是DBA的責任,開發人員不必修改應用程式,或者只需要修改很少的應用程式。從而既簡化了應用程式的編制 編製,又大大減少了應用程式的維護和修改。 使用數據庫系統可以減輕數據庫系統管理人員維護系統的負擔。因爲DBMS在數據庫建立、運用和維護時對數據庫進行統一的管理和控制,包括數據的完整性、安全性,多使用者併發控制,故障恢復等等都由DBMS執行。 總之,使用數據庫系統的優點是很多的,既便於數據的集中管理,控制數據冗餘,可以提高數據的利用率和一致性,又有利於應用程式的開發和維護。讀者可以在自己今後的工作中結合具體應用,認真加以體會和總結。

3.試述檔案系統與數據庫系統的區別和聯繫。

正確答案: 檔案系統與數據庫系統的區別: 檔案系統面向某一應用程式,共用性差、冗餘度大,獨立性差,紀錄內有結構、整體無結構,應用程式自己控制。 數據庫系統面向現實世界,共用性高、冗餘度小,具有高度的物理獨立性和一定的邏輯獨立性,整體結構化,用數據模型描述,由數據庫管理系統提供數據安全性、完整性、併發控制和恢復能力。 讀者可以參考《概論》書中表1.1 中的有關內容。 檔案系統與數據庫系統的聯繫是: 檔案系統與數據庫系統都是計算機系統中管理數據的軟體。 *解析: 檔案系統是操作系統的重要組成部分,而DBMS是獨立於操作系統的軟體。但是DBMS是在操作系統的基礎上實現的。數據庫中數據的組織和儲存是通過操作系統中檔案系統來實現的。 讀者可以參考書中第十一章《數據庫管理系統》。或者說,讀者進一步學習數據庫管理系統實現的有關課程(第十一章只是DBMS實現技術的概述)後可以對本題有深入的理解和全面的解答。因爲DBMS的實現與操作系統中的檔案系統是緊密相關的。例如,數據庫實現的基礎是檔案,對數據庫的任何操作最終要轉化爲對檔案的操作。所以在DBMS實現中數據庫物理組織的基本問題是如何利用或如何選擇操作系統提供的基本的檔案組織方法。這裏我們就不具體展開了。

4.舉出適合用檔案系統而不是數據庫系統的例子;再舉出適合用數據庫系統的應用例子。

正確答案: •適用於檔案系統而不是數據庫系統的應用例子 數據的備份,軟體或應用程式使用過程中的臨時數據儲存一般使用檔案比較合適。 早期功能比較簡單、比較固定的應用系統也適合用檔案系統。 •適用於數據庫系統而非檔案系統的應用例子 目前,幾乎所有企業或部門的資訊系統都以數據庫系統爲基礎,都使用數據庫。如一個工廠的管理資訊系統(其中會包括許多子系統,如庫存管理系統、物資採購系統、作業排程系統、裝置管理系統、人事管理系統等等),還比如學校的學生管理系統,人事管理系統,圖書館的圖書管理系統等等都適合用數據庫系統。

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

正確答案: 數據庫系統的主要特點有: 一、數據結構化 數據庫系統實現整體數據的結構化,這是數據庫的主要特徵之一,也是數據庫系統與檔案系統的本質區別。 *解析:注意這裏「整體」兩個字。在數據庫系統中,數據不再針對某一個應用,而是面向全組織,具有整體的結構化。不僅數據是結構化的,而且數據的存取單位即一次可以存取數據的大小也很靈活。可以小到某一個數據項(如一個學生的姓名),大到一組記錄(成千上萬個學生記錄)。而在檔案系統中,數據的存取單位只有一個:記錄。如一個學生的完整記錄。 二、數據的共用性高,冗餘度低,易擴充 數據庫的數據不再面向某個應用而是面向整個系統,因此可以被多個使用者、多個應用、用多種不同的語言共用使用。由於數據面向整個系統,是有結構的數據,不僅可以被多個應用共用使用,而且容易增加新的應用,這就使得數據庫系統彈性大,易於擴充。 *解析: 數據共用可以大大減少數據冗餘,節約儲存空間,同時還能夠避免數據之間的不相容性與不一致性。 所謂「數據面向某個應用」是指數據結構是針對某個應用設計的,只被這個應用程式或應用系統使用。可以說數據是某個應用的「私有資源」。 所謂「彈性大」是指系統容易擴充也容易收縮,即應用增加或減少時不必修改整個數據庫的結構,或者只要做很少的修改。 我們可以取整體數據的各種子集用於不同的應用系統,當應用需求改變或增加時,只要重新選取不同的子集或加上一部分數據便可以滿足新的需求。 三、數據獨立性高 數據獨立性包括數據的物理獨立性和數據的邏輯獨立性。 數據庫管理系統的模式結構和二級映象功能保證了數據庫中的數據具有很高的物理獨立性和邏輯獨立性。 *解析: 所謂「獨立性」即相互不依賴。數據獨立性是指數據和程式相互不依賴。即數據的邏輯結構或物理結構改變了,程式不會跟着改變。數據與程式的獨立,把數據的定義從程式中分離出去,加上數據的存取又由DBMS負責,簡化了應用程式的編制 編製,大大減少了應用程式的維護和修改。 四、數據由DBMS統一管理和控制 數據庫的共用是併發的共用,即多個使用者可以同時存取數據庫中的數據甚至可以同時存取數據庫中同一個數據。爲此,DBMS必須提供統一的數據控制功能,包括數據的安全性保護,數據的完整性檢查,併發控制和數據庫恢復。 *解析: DBMS數據控制功能包括四個方面: 數據的安全性保護:保護數據以防止不合法的使用造成的數據的泄密和破壞; 數據的完整性檢查:將數據控制在有效的範圍內或保證數據之間滿足一定的關係; 併發控制:對多使用者的併發操作加以控制和協調,保證併發操作的正確性; 數據庫恢復:當計算機系統發生硬體故障、軟體故障,或者由於操作員的失誤以及故意的破壞影響數據庫中數據的正確性,甚至造成數據庫部分或全部數據的丟失時,能將數據庫從錯誤狀態恢復到某一已知的正確狀態(亦稱爲完整狀態或一致狀態)。 下面 下麪我們可以得到「什麼是數據庫」的一個定義: 數據庫是長期儲存在計算機內有組織的大量的共用的數據集合。它可以供各種使用者共用,具有最小冗餘度和較高的數據獨立性。DBMS在數據庫建立、運用和維護時對數據庫進行統一控制,以保證數據的完整性、安全性,並在多使用者同時使用數據庫時進行併發控制,在發生故障後對系統進行恢復。 數據庫系統的出現使資訊系統從以加工數據的程式爲中心轉向圍繞共用的數據庫爲中心的新階段。

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

正確答案: ① 數據庫定義功能; ② 數據存取功能; ③ 數據庫執行管理; ④ 數據庫的建立和維護功能。

7.定義並解釋以下術語:DDL、DML

正確答案: DDL:數據定義語言。用來定義數據庫模式、外模式、內模式的語言。 DML:數據操縱語言。用來對數據庫中的數據進行查詢、插入、刪除和修改的語句。

8.什麼叫數據與程式的物理獨立性?什麼叫數據與程式的邏輯獨立性? 爲什麼數據庫系統具有數據與程式的獨立性?

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

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

正確答案: 數據庫系統一般由數據庫、數據庫管理系統(及其開發工具)、應用系統、數據庫管理員和使用者構成。

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

正確答案: 數據模型是數據庫中用來對現實世界進行抽象的工具,是數據庫中用於提供資訊表示和操作手段的形式構架。 一般地講,數據模型是嚴格定義的概唸的集合。這些概念精確地描述系統的靜態特性、動態特性和完整性約束條件。因此數據模型通常由數據結構、數據操作和完整性約束三部分組成。 ① 數據結構:是所研究的物件型別的集合,是對系統的靜態特性的描述。 ② 數據操作:是指對數據庫中各種物件(型)的範例(值)允許進行的操作的集合,包括操作及有關的操作規則,是對系統動態特性的描述。 ③ 數據的約束條件:是完整性規則的集合,完整性規則是給定的數據模型中數據及其聯繫所具有的制約和依存規則,用以限定符合數據模型的數據庫狀態以及狀態的變化,以保證數據的正確、有效、相容。 *解析: 數據模型是數據庫系統中最重要的概念之一。同學們必須通過《概論》的學習真正掌握 數據模型的概念和作用。 數據模型是數據庫系統的基礎。任何一個DBMS都以某一個數據模型爲基礎,或者說支援某一個數據模型。 數據庫系統中模型有不同的層次。根據模型應用的不同目的,可以將模型分成兩類或說兩個層次:一是概念模型,是按使用者的觀點來對數據和資訊建模,用於資訊世界的建模,強調語意表達能力,概念簡單清晰;另一是數據模型,是按計算機系統的觀點對數據建模,用於機器世界,人們可以用它定義、操縱數據庫中的數據。一般需要有嚴格的形式化定義和一組嚴格定義了語法和語意的語言,並有一些規定和限制,便於在機器上實現。

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

正確答案: 概念模型實際上是現實世界到機器世界的一箇中間層次。概念模型用於資訊世界的建模,是現實世界到資訊世界的第一層抽象,是數據庫設計人員進行數據庫設計的有力工具,也是數據庫設計人員和使用者之間進行交流的語言。

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

正確答案: 實體:客觀存在並可以相互區分的事物叫實體。 實體型:具有相同屬性的實體具有相同的特徵和性質,用實體名及其屬性名集合來抽象和刻畫同類實體稱爲實體型。 實體集:同型實體的集合稱爲實體集。 屬性:實體所具有的某一特性,一個實體可由若幹個屬性來刻畫。 碼:唯一標識實體的屬性集稱爲碼。 實體聯繫圖:E-R圖提供了表示實體型、屬性和聯繫的方法: • 實體型:用矩形表示,矩形框內寫明實體名。 • 屬性:用橢圓形表示,並用無向邊將其與相應的實體連線起來。 •聯繫:用菱形表示,菱形框內寫明聯繫名,並用無向邊分別與有關實體連線起來,同時在無向邊旁標上聯繫的型別(1 : 1,1 : n或m : n)。

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

正確答案: 層次模型的優點主要有: 1)模型簡單,對具有一對多的層次關係的部門描述非常自然、直觀,容易理解,這是層次數據庫的突出優點; 2) 用層次模型的應用系統效能好,特別是對於那些實體間聯繫是固定的預先定義好的應用,採用層次模型來實現,其效能優於關係模型; 3) 次數據模型提供了良好的完整性支援。 層次模型的缺點主要有: 1) 現實世界中很多聯繫是非層次性的,如多對多聯繫、一個結點具有多個雙親等,層次模型不能自然地表示這類聯繫。只能通過引入冗餘數據或引入虛擬結點來解決。 2 )對插入和刪除操作的限制比較多。 3)查詢子女結點必須通過雙親結點。 網狀模型: 網狀數據模型的優點主要有: 1) 能夠更爲直接地描述現實世界,如一個結點可以有多個雙親。 2)具有良好的效能,存取效率較高。 網狀數據模型的缺點主要有: 1) 結構比較複雜,而且隨着應用環境的擴大,數據庫的結構就變得越來越複雜,不利於終端使用者掌握。 2)其DDL,DML語言複雜,使用者不容易使用。 由於記錄之間聯繫是通過存取路徑實現的,應用程式在存取數據時必須選擇適當的存取路徑。因此,使用者必須瞭解系統結構的細節,加重了編寫應用程式的負擔。

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

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

15.試述關係數據庫的特點。

正確答案: 關係數據模型具有下列優點: • 關係模型與非關係模型不同,它是建立在嚴格的數學概唸的基礎上的。 • 關係模型的概念單一。無論實體還是實體之間的聯繫都用關係表示。操作的物件和操作的結果都是關係。所以其數據結構簡單、清晰,使用者易懂易用。 • 關係模型的存取路徑對使用者透明,從而具有更高的數據獨立性、更好的安全保密性,也簡化了程式設計師的工作和數據庫開發建立的工作。 當然,關係數據模型也有缺點,其中最主要的缺點是,由於存取路徑對使用者透明,查詢效率往往不如非關係數據模型。因此爲了提高效能,必須對使用者的查詢請求進行優化,增加了開發數據庫管理系統軟體的難度。

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

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

17.DBA的職責是什麼?

正確答案: 負責全面地管理和控制數據庫系統。具體職責包括: ① 決定數據庫的資訊內容和結構; ② 決定數據庫的儲存結構和存取策略; ③ 定義數據的安全性要求和完整性約束條件; ④ 監督和控制數據庫的試用和執行; ⑤ 數據庫系統的改進和重組。

18.系統分析員、數據庫設計人員、應用程式設計師的職責是什麼?

正確答案: 系統分析員負責應用系統的需求分析和規範說明,系統分析員要和使用者及DBA相結合,確定系統的硬體軟體設定,並參與數據庫系統的概要設計。 數據庫設計人員負責數據庫中數據的確定、數據庫各級模式的設計。數據庫設計人員必須參加使用者需求調查和系統分析,然後進行數據庫設計。在很多情況下,數據庫設計人員就由數據庫管理員擔任。 應用程式設計師負責設計和編寫應用系統的程式模組,並進行偵錯和安裝。

19.數據庫數據具有__________、__________和__________三個基本特點。

正確答案: 永久儲存 有組織 可共用

20.數據庫管理系統是數據庫系統的一個重要組成部分,它的功能包括__________ 、_________。

正確答案: 數據定義功能 數據操縱功能 數據庫的執行管理 數據庫的建立和維護功能

21.數據庫系統是指在計算機系統中引入數據庫後的系統,一般由__________、__________、__________和__________構成。

正確答案: 數據庫 數據庫管理系統(及其開發工具) 應用系統 數據庫管理員

22.數據庫管理技術的發展是與計算機技術及其應用的發展聯繫在一起的,它經歷了三個階段:__________階段,__________階段和__________階段。

正確答案: 人工管理 檔案系統 數據庫系統

23.數據庫具有數據結構化、最小的__________、較高的__________等特點 。

正確答案: 冗餘度 數據獨立性

24.DBMS還必須提供__________保護__________檢查、__________、__________等數據控制功能。

正確答案: 數據的安全性 數據的完整性 併發控制 數據庫恢復

25.模式(Schema)是數據庫中全體數據的__________和__________的描述,它僅僅涉及到__________的描述,不涉及到具體的值。

正確答案: 邏輯結構 特徵 型

26.三級模式之間的兩層映象保證了數據庫系統中的數據能夠具有較高的__________和__________。

正確答案: 邏輯獨立性 物理獨立性

27.根據模型應用的不同目的,可以將這些模型劃分爲兩類,它們分別屬於兩個不同的層次。第一類是__________,第二類是__________。

正確答案: 概念模型 數據模型

28.數據模型的三要素是指__________,。實際數據庫系統中所支援的主要數據模型是__________,

正確答案: 數據結構 數據操作 完整性約束 關係模型 層次模型 網狀模型

29.數據模型中的__________是對數據系統的靜態特徵描述,包括數據結構和數據間聯繫的描述,__________是對數據庫系統的動態特徵描述,是一組定義在數據上的操作,包括操作的涵義、操作符、運算規則及其語言等。

正確答案: 數據結構 數據操作

30.用樹型結構表示實體型別及實體間聯繫的數據模型稱爲__________模型,上一層的父結點和下一層的子結點之間的聯繫是 的聯繫。

正確答案: 層次 一對多

31.用有向圖結構表示實體型別及實體間聯繫的數據模型稱爲__________模型,數據之間的聯繫通常通過__________實現。

正確答案: 網狀 指針

32.是目前最常用也是最重要的一種數據模型。採用該模型作爲數據的組織方式的數據庫系統稱爲

正確答案: 關係模型 關係數據庫系統

33.關係的完整性約束條件包括三大類:__________、

正確答案: 實體完整性 參照完整性 使用者定義的完整性

第二章 關係數據庫

1.關係數據模型中,二維表的列稱爲________,二維表的行稱爲________。

正確答案: 屬性 記錄或元組

2.使用者選作元組標識的一個候選碼爲________,其屬性不能取________。

正確答案: 主碼 空值

3.關係代數運算中,傳統的集合運算有_____,,_____。

正確答案: 笛卡爾積 並 交 差

4.關係代數運算中,基本的運算是________,

正確答案: 並 差 笛卡爾積 選擇 投影

5.關係代數運算中,專門的關係運算有________,

正確答案: 選擇 投影 連線

6.關係數據庫中基於數學上的兩類運算是________和________。

正確答案: 關係代數 關係演算

7.關係代數中,從兩個關係中找出相同元組的運算稱爲________運算。

正確答案: 交

8.R S表示R與S的________。

正確答案: 自然連線

9.設有學生關係:S(XH,XM,XB,NL,DP)。在這個關係中,XH表示學號,XM表示姓名,XB表示性別,NL表示年齡,DP表示系部。查詢學生姓名和所在系的投影操作的關係運算式是________________。

正確答案: π2,5(S) 或 πXM,DP(S)

10.在「學生-選課-課程」數據庫中的3個關係如下:S(S#,SNAME,SEX,AGE);SC(S#,C#,GRADE); C(C#,CNAME,TEACHER),查詢選修「數據庫技術」這門課程學生的學生名和成績,若用關係代數表達式來表示爲________________。

正確答案: πSNAME,GRADE(S(SC(σCNAME=’數據庫技術’©)))

11.已知系(系編號,系名稱,系主任,電話,地點)和學生(學號,姓名,性別,入學日期,專業,系編號)兩個關係,系關係的主碼是________,系關係的外碼是________,學生關係的主碼是________,學生關係的外碼是________。

正確答案: 系編號 沒有 學號 系編號

  1. 試述關係模型的三個組成部分。

正確答案: 關係模型由關係數據結構、關係操作集合和關係完整性約束三部分組成。

  1. 試述關係數據語言的特點和分類。

正確答案: 關係數據語言可以分爲三類: 關係代數語言,例如ISBL 關係演算語言,包括:元組關係演算語言,例如APLHA,QUEL 域關係演算語言,例如QBE 具有關係代數和關係演算雙重特點的語言 例如SQL 這些關係數據語言的共同特點是,具有完備的表達能力,是非過程化的集合操作語言,功能強,能夠嵌入高階語言中使用。

14.定義並理解下列術語,說明它們之間的聯繫與區別: (1) 域,笛卡爾積,關係,元組,屬性 (2)主碼,候選碼,外部碼 (3)關係模式,關係,關係數據庫

正確答案: 域:域是一組具有相同數據型別的值的集合。 笛卡爾積: 給定一組域D1,D2,…,Dn,這些域中可以有相同的。這組域的笛卡爾積爲: D1×D2×…×Dn={ (d1,d2,…,dn)|diDi,i=1,2,…,n } 其中每一個元素(d1,d2,…,dn)叫作一個n元組(n-tuple)或簡稱元組(Tuple)。 元素中的每一個值di叫作一個分量(Component)。 關係:在域D1,D2,…,Dn上笛卡爾積D1×D2×…×Dn的子集稱爲關係,表示爲 R(D1,D2,…,Dn) 元組:關係中的每個元素是關係中的元組。 屬性:關係也是一個二維表,表的每行對應一個元組,表的每列對應一個域。由於域可 以相同,爲了加以區分,必須對每列起一個名字,稱爲屬性(Attribute)。 候選碼:若關係中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組爲候選碼(Candidate key)。 主碼:若一個關係有多個候選碼,則選定其中一個爲主碼(Primary key)。 外部碼:設F是基本關係R的一個或一組屬性,但不是關係R的碼,如果F與基本關係S的主碼Ks相對應,則稱F是基本關係R的外部碼(Foreign key),簡稱外碼。 基本關係R稱爲參照關係(Referencing relation),基本關係S稱爲被參照關係(Referenced relation)或目標關係(Target relation)。關係R和S可以是相同的關係。 關係模式:關係的描述稱爲關係模式(Relation Schema)。它可以形式化地表示爲: R(U,D,dom,F) 其中R爲關係名,U爲組成該關係的屬性名集合,D爲屬性組U中屬性所來自的域,dom爲屬性向域的映象集合,F爲屬性間數據的依賴關係集合。 關係:在域D1,D2,…,Dn上笛卡爾積D1×D2×…×Dn的子集稱爲關係,表示爲 R(D1,D2,…,Dn) 關係是關係模式在某一時刻的狀態或內容。關係模式是靜態的、穩定的,而關係是動態的、隨時間不斷變化的,因爲關係操作在不斷地更新着數據庫中的數據。 關係數據庫:關係數據庫也有型和值之分。關係數據庫的型也稱爲關係數據庫模式,是對關係數據庫的描述,它包括若幹域的定義以及在這些域上定義的若幹關係模式。關係數據庫的值是這些關係模式在某一時刻對應的關係的集合,通常就稱爲關係數據庫。

15.試述關係模型的完整性規則。在參照完整性中,爲什麼外部碼屬性的值也可以爲空?什麼情況下纔可以爲空?

正確答案: 關係模型的完整性規則是對關係的某種約束條件。關係模型中可以有三類完整性約束:實體完整性、參照完整性和使用者定義的完整性。 其中實體完整性和參照完整性是關係模型必須滿足的完整性約束條件,被稱作是關係的兩個不變性,應該由關係系統自動支援。 1) 實體完整性規則:若屬性A是基本關係R的主屬性,則屬性A不能取空值。 2) 參照完整性規則:若屬性(或屬性組)F是基本關係R的外碼,它與基本關係S的主碼Ks相對應(基本關係R和S不一定是不同的關係),則對於R中每個元組在F上的值必 须爲: • 或者取空值(F的每個屬性值均爲空值); • 或者等於S中某個元組的主碼值。 3) 使用者定義的完整性是針對某一具體關係數據庫的約束條件。它反映某一具體應用所涉及的數據必須滿足的語意要求。    在參照完整性中,外部碼屬性的值可以爲空,它表示該屬性的值尚未確定。但前提條件是該外部碼屬性不是其所在關係的主屬性。 例如,在下面 下麪的「學生」表中,「專業號」是一個外部碼,不是學生表的主屬性,可以爲空。其語意是,該學生的專業尚未確定。 學生(學號,姓名,性別,專業號,年齡) 專業(專業號,專業名) 而在下面 下麪的「選修」表中的「課程號」雖然也是一個外部碼屬性,但它又是「選修」表的主屬性,所以不能爲空。因爲關係模型必須滿足實體完整性。 課程(課程號,課程名,學分) 選修(學號,課程號,成績)

  1. 等值連線與自然連線的區別是什麼?

正確答案: 連線運算中有兩種最爲重要也最爲常用的連線,一種是等值連線(equi-join),另一種是自然連線(Natural join)。 Θ爲「=」的連線運算稱爲等值連線。 它是從關係R與S的笛卡爾積中選取A、B屬性值相等的那些元組。即等值連線爲: R A=B S = { tr ts| tr∈R ∧ ts∈S ∧ tr[A] = ts[B] }   自然連線(Natural join)是一種特殊的等值連線,它要求兩個關係中進行比較的分量必須是相同的屬性組,並且要在結果中把重複的屬性去掉。即若R和S具有相同的屬性組B,則自然連線可記作: R S = { tr ts| tr∈R ∧ ts∈S ∧ tr[B] = ts[B] }

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

正確答案: 在八種關係代數運算中,並、差、笛卡爾積、投影和選擇五種運算爲基本的運算。其他三種運算,即交、連線和除,均可以用五種基本運算來表達。 交運算: R  S = R-(R-S) 連線運算 R S = AB(RS) AB 除運算:R(X,Y) S(Y,Z) = X® - X ( X®  Y(S) R ) X、Y、Z 爲屬性組,R中的Y和S中的Y可以有不同的屬性名,但必須出自相同的域集。

第三章 關係數據庫標準語言SQL

1.SQL的中文全稱是________________。

正確答案: 結構化查詢語言

2.SQL語言除了具有數據查詢和數據操縱功能之外,還具有________和________的功能,它是一個綜合性的功能強大的語言。

正確答案: 數據定義 數據控制

3.在關係數據庫標準語言SQL中,實現數據檢索的語句命令是________。

正確答案: SELECT

4.在SQL語言的結構中,________有對應的物理儲存,而________沒有對應的物理儲存。

正確答案: 基本表 檢視

5.關係R(A,B,C)和S(A,D,E,F),R和S有相同屬性A,若將關係代數表達式:πR.A,R.B,S.D,S.F(R∞ S)用SQL語言的查詢語句表示,則爲: SELECT R.A,R.B,S.D,S.F FROM R,S WHERE________________。

正確答案: R.A=S.A

6.檢視是從________中導出的表,數據庫中實際存放的是檢視的________。

正確答案: 基本表或檢視 定義

7.關係數據操作語言(DML)的特點是:操作物件與結果均爲關係、操作的________、語言一體化並且是建立在數學理論基礎之上。

正確答案: 非過程性強

8.設有如下關係表R、S、T: R(BH,XM,XB,DWH) S(DWH,DWM) T(BH,XM,XB,DWH) (1) 實現R∪T的SQL語句是__。 (2) 實現σ DWH=’100’ ® 的SQL語句是__。 (3) 實現πXM,XB ® 的SQL語句是__。 (4) 實現πXM,DWH (σ XB=’女’ ®) 的SQL語句是__。 (5) 實現R∞S的SQL語句是__。 (6) 實現πXM,XB,DWH (σ XB=’男’ (R∞S)) 的SQL語句是__。

正確答案: (1) SELECT * FROM R UNION SELECT * FROM T (2) SELECT * FROM R WHERE DWH=’100’ (3) SELECT XM , XB FROM R (4) SELECT XM,DWH FROM R WHERE XB=’女’ (5) SELECT R.BH , R.XM , R.XB , R.DWH , S.DWM FROM R , S WHERE R.DWH=S.DWH (6) SELECT R.XM , R.XB , S.DWH FROM R , S WHERE R.DWH=S.DWH AND R.XB=’男’

9.設有如下關係表R:R(NO,NAME,SEX,AGE,CLASS),主碼是NO (1) 插入一個記錄(25,「李明」,「男」,21,「95031」);。 (2) 插入「95031」班學號爲30,姓名爲「鄭和」的學生記錄;。 (3) 將學號爲10的學生姓名改爲「王華」;。 (4) 將所有「95101」班號改爲「95091」;。 (5) 刪除學號爲20的學生記錄;。 (6) 刪除姓「王」的學生記錄;

正確答案: (1) INSERT INTO R VALUES(25,「李明」,「男」,21,「95031」) (2) INSERT INTO R(NO,NAME,CLASS) VALUES(30,「鄭和」,「95031」) (3) UPDATE R SET NAME=「王華」 WHERE NO=10 (4) UPDATE R SET CLASS=「95091」 WHERE CLASS=「95101」 (5) DELETE FROM R WHERE NO=20 (6) DELETE FROM R WHERE NAME LIKE 「王%

10.試述SQL語言的特點。

正確答案: (1)綜合統一。 SQL語言集數據定義語言DDL、數據操縱語言DML、數據控制語言DCL的功能於一體。 (2)高度非過程化。用SQL語言進行數據操作,只要提出「做什麼」,而無須指明「怎麼做」,因此無需瞭解存取路徑,存取路徑的選擇以及SQL語句的操作過程由系統自動完成。 (3)面向集合的操作方式。SQL語言採用集合操作方式,不僅操作物件、查詢結果可以是元組的集合,而且一次插入、刪除、更新操作的物件也可以是元組的集合。 (4)以同一種語法結構提供兩種使用方式。SQL語言既是自含式語言,又是嵌入式語言。作爲自含式語言,它能夠獨立地用於聯機互動的使用方式,也能夠嵌入到高階語言程式中,供程式設計師設計程式時使用。 (5)語言簡捷,易學易用。

11.試述SQL的定義功能。

正確答案: SQL的數據定義功能包括定義表、定義檢視和定義索引。 SQL語言使用CREATE TABLE語句建立基本表,ALTER TABLE語句修改基本表定義,DROP TABLE語句刪除基本表; 使用CREATE INDEX語句建立索引, DROP INDEX語句刪除索引; 使用CREATE VIEW命令建立檢視,DROP VIEW語句刪除檢視。

12.用SQL語句建立第2章習題5中的四個表。

正確答案: 對於S表:S( SNO,SNAME,STATUS,CITY); 建S表 CREATE TABLE S (SNO CHAR(3), SNAME CHAR(10), STATUS CHAR(2), CITY CHAR(10)); P(PNO,PNAME,COLOR,WEIGHT); 建P表 CREATE TABLE P (PNO CHAR(3), PNAME CHAR(10), COLOR CHAR(4), WEIGHT INT); J(JNO,JNAME,CITY); 建J表 CREATE TABLE J (JNO CHAR(3), JNAME CHAR(10), CITY CHAR(10)); SPJ(SNO,PNO,JNO,QTY); 建SPJ表 CREATE TABLE SPJ (SNO CHAR(3), PNO CHAR(3), JNO CHAR(3), QTY INT);

13.針對上題中建立的四個表試用SQL語言完成第2章習題5中的查詢。

正確答案: (1) 求供應工程J1零件的供應商號碼SNO; SELECT SNO FROM SPJ WHERE JNO=‘J1’; (2) 求供應工程J1零件P1的供應商號碼SNO; SELECT SNO FROM SPJ WHERE JNO=‘J1’ AND PNO=‘P1’; (3) 求供應工程J1零件爲紅色的供應商號碼SNO; SELECT SNO /這是巢狀查詢/ FROM SPJ WHERE JNO=‘J1’ AND PNO IN /*找出紅色的零件的零件號碼PNO */ (SELECT PNO FROM P /從P表中找/ WHERE COLOR=‘紅’); 或 SELECT SNO FROM SPJ,P /這是兩表連線查詢/ WHERE JNO=‘J1’ /這是複合條件連線查詢/ AND SPJ.PNO=P.PNO AND COLOR=‘紅’; (4) 求沒有使用天津供應商生產的紅色零件的工程號JNO; *解析: 讀者可以對比第2章習題5中用ALPHA語言來完成該查詢的解答。如果大家理解了有關該題的解析說明,那麼本題的解答可以看成是把關係演算用SQL來表示的過程。 GET W (J.JNO): SPJX( SPJX .JNO=J.JNO  SX ( SX.SNO=SPJX .SNO  SX .CITY=‘天津’  PX(PX .PNO=SPJX .PNO  PX .COLOR=’ 紅’ )) 這裏的第一種解法是使用多重巢狀查詢,第二種方法的子查詢是一個多表連線。 注意:從J表入手,以包含那些尚未使用任何零件的工程號。 SELECT JNO FROM J WHERE NOT EXISTS (SELECT * FROM SPJ WHERE SPJ.JNO=J.JNO AND SNO IN /天津供應商的SNO/ (SELECT SNO FROM S WHERE CITY=‘天津’) AND PNO IN /紅色零件的PNO/ (SELECT PNO FROM P WHERE COLOR=‘紅’)); 或 SELECT JNO FROM J WHERE NOT EXISTS (SELECT * FROM SPJ, S, P WHERE SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO AND SPJ.PNO=P.PNO AND S.CITY=‘天津’ AND P. COLOR=‘紅’); //刪除: 本例中父查詢和子查詢均參照了Student表,可以像自身連線那樣用別名將父查詢中的Student表與子查詢中的Student表區分開:// (5) 求至少用了供應商S1所供應的全部零件的工程號JNO (類似於P113例44)。 *解析: 本查詢的解析可以參考第二章第5題,用ALPHA語言的邏輯蘊函來表達。 上述查詢可以抽象爲: 要求這樣的工程x,使 (y) p  q爲真。 即: 對於所有的零件y,滿足邏輯蘊函 p  q: P表示謂詞:「供應商S1供應了零件y」 q表示謂詞:「工程x選用了零件y」 即 只要「供應商S1供應了零件y」爲真,則「工程x選用了零件y」爲真。 邏輯蘊函可以轉換爲等價形式: (y)p  q≡  (y ((p  q ))≡ (y (( p∨ q)≡ y(p∧q) 它所表達的語意爲:不存在這樣的零件y,供應商S1供應了y,而工程x沒有選用y。 用SQL語言表示如下: SELECT DISTINCT JNO FROM SPJ SPJZ WHERE NOT EXISTS /*這是一個相關子查詢 */ (SELECT * /父查詢和子查詢均參照了SPJ表/ FROM SPJ SPJX /用別名將父查詢與子查詢中的SPJ表區分開/ WHERE SNO=‘S1’ AND NOT EXISTS (SELECT * FROM SPJ SPJY WHERE SPJY.PNO=SPJX.PNO AND SPJY.JNO=SPJZ.JNO AND SPJY.SNO=’S1’));

14.針對習題3中的四個表試用SQL語言完成以下各項操作: (1) 找出所有供應商的姓名和所在城市。 (2) 找出所有零件的名稱、顏色、重量。 (3) 找出使用供應商S1所供應零件的工程號碼。 (4) 找出工程專案J2使用的各種零件的名稱及其數量。 (5) 找出上海廠商供應的所有零件號碼。 (6) 找出使用上海產的零件的工程名稱。 (7) 找出沒有使用天津產的零件的工程號碼。 (8) 把全部紅色零件的顏色改成藍色。 (9) 由S5供給J4的零件P6改爲由S3供應,請作必要的修改。

正確答案: (1) 找出所有供應商的姓名和所在城市。 SELECT SNAME, CITY FROM S; (2) 找出所有零件的名稱、顏色、重量。 SELECT PNAME, COLOR, WEIGHT FROM P; (3) 找出使用供應商S1所供應零件的工程號碼。 SELECT JNO FROM SPJ WHERE SNO=‘S1’; (4) 找出工程專案J2使用的各種零件的名稱及其數量。 SELECT P.PNAME, SPJ.QTY FROM P, SPJ WHERE P.PNO=SPJ.PNO AND SPJ.JNO=‘J2’; (5) 找出上海廠商供應的所有零件號碼。 SELECT DISTINCT PNO FROM SPJ WHERE SNO IN (SELECT SNO FROM S WHERE CITY=‘上海’); (6) 找出使用上海產的零件的工程名稱。 SELECT JNAME FROM J, SPJ, S WHERE J. JNO=SPJ. JNO AND SPJ. SNO=S.SNO AND S.CITY=‘上海’; 或 SELECT JNAME FROM J WHERE JNO IN (SELECT JNO FROM SPJ, S WHERE SPJ. SNO=S.SNO AND S.CITY=‘上海’); (7) 找出沒有使用天津產的零件的工程號碼。 SELECT JNO FROM J WHERE NOT EXISTS (SELECT * FROM SPJ WHERE SPJ.JNO=J.JNO AND SNO IN (SELECT SNO FROM S WHERE CITY=‘天津’)); 或 SELECT JNO FROM J WHERE NOT EXISTS (SELECT * FROM SPJ, S WHERE SPJ.JNO=J.JNO AND SPJ.SNO=S.SNO AND S.CITY=‘天津’); (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的記錄,並從供應情況關係中刪除相應的記錄。 DELETE FROM SPJ WHERE SNO=‘S2’; DELETE FROM S WHERE SNO=‘S2’; *解析:注意刪除順序,應該先從SPJ表中刪除供應商S2所供應零件的記錄,然後從從S表中刪除S2。(11) 請將 (S2,J6,P4,200) 插入供應情況關係。 INSERT INTO SPJ(SNO, JNO, PNO, QTY) /INTO子句中指明列名/ VALUES (S2,J6,P4,200); /插入的屬性值與指明列要對應/ 或 INSERT INTO SPJ /INTO子句中沒有指明列名/ VALUES (S2,P4,J6,200); /插入的記錄在每個屬性列上有值/ /並且屬性列要和表定義中的次序對應/

15.什麼是基本表?什麼是檢視?兩者的區別和聯繫是什麼?

正確答案: 基本表是本身獨立存在的表,在SQL中一個關係就對應一個表。 檢視是從一個或幾個基本表導出的表。檢視本身不獨立儲存在數據庫中,是一個虛表。即數據庫中只存放檢視的定義而不存放檢視對應的數據,這些數據仍存放在導出檢視的基本表中。檢視在概念上與基本表等同,使用者可以如同基本表那樣使用檢視,可以在檢視上再定義檢視。

16.試述檢視的優點。

正確答案: (1)檢視能夠簡化使用者的操作。 (2)檢視使使用者能以多種角度看待同一數據。 (3)檢視對重構數據庫提供了一定程度的邏輯獨立性。 (4)檢視能夠對機密數據提供安全保護。

17.所有的檢視是否都可以更新?爲什麼?

正確答案: 不是。檢視是不實際儲存數據的虛表,因此對檢視的更新,最終要轉換爲對基本表的更新。因爲有些檢視的更新不能唯一地有意義地轉換成對相應基本表的更新,所以,並不是所有的檢視都是可更新的。如《概論》3.5.1中的檢視S_G(學生的學號及他的平均成績) CREAT VIEW S_G(Sno,Gavg) AS SELECT Sno,AVG(Grade) /設SC表中「成績」列Grade爲數位型/ FROM SC GROUP BY Sno; 要修改平均成績,必須修改各科成績,而我們無法知道哪些課程成績的變化導致了平均成績的變化。

18.哪類檢視是可以更新的,哪類檢視是不可更新的? 各舉一例說明。

正確答案: 基本表的行列子集檢視一般是可更新的。如《概論》3.5.3中的例1。 若檢視的屬性來自集函數、表達式,則該檢視肯定是不可以更新的。 如《概論》3.5.3中的S_G檢視。

19.請爲三建工程專案建立一個供應情況的檢視,包括供應商程式碼(SNO)、零件程式碼(PNO)、供應數量(QTY)。針對該檢視完成下列查詢: (1) 找出三建工程專案使用的各種零件程式碼及其數量。 (2) 找出供應商S1的供應情況。

正確答案: 建檢視: CREATE VIEW V_SPJ AS SELECT SNO, PNO, QTY FROM SPJ WHERE JNO= (SELECT JNO FROM J WHERE JNAME=‘三建’); 對該檢視查詢: (1) 找出三建工程專案使用的各種零件程式碼及其數量。 SELECT PNO, QTY FROM V_SPJ; (2) 找出供應商S1的供應情況。 SELECT PNO, QTY /* S1供應三建工程的零件號和對應的數量*/ FROM V_SPJ WHERE SNO=‘S1’;

20.針對習題3建立的表,用SQL語言完成以下各項操作: (1) 把對錶S的INSERT許可權授予使用者張勇,並允許他再將此許可權授予其他使用者。 (2) 把查詢SPJ表和修改QTY屬性的許可權授給使用者李天明。

正確答案: (1) 把對錶S的INSERT許可權授予使用者張勇,並允許他再將此許可權授予其他使用者。 GRANT INSERT ON TABLE S TO 張勇 WITH GRANT OPTION; (2) 把查詢SPJ表和修改QTY屬性的許可權授給使用者李天明。 GRANT SELECT, UPDATE(QTY) ON TABLE SPJ TO 李天明;

21.在嵌入式SQL中是如何區分SQL語句和主語言語句的?

正確答案: 在SQL語句前加上字首EXEC SQL。SQL語句的結束標誌則隨主語言的不同而不同。 例如在PL/1和C中以分號(;)結束,在COBOL中以END-EXEC結束。

22.在嵌入式SQL中是如何解決數據庫工作單元與源程式工作單元之間通訊的?

正確答案: 數據庫工作單元與源程式工作單元之間的通訊主要包括: (1)SQL通訊區SQLCA,用來向主語言傳遞SQL語句的執行狀態資訊,使主語言能夠根據此資訊控製程式流程。 (2)主變數(Host Variable),1)用來實現主語言向SQL語句提供參數。 2)將SQL語句查詢數據庫的結果交主語言進一步處理 (3)遊標(Cursor),解決集合性操作語言與過程性操作語言的不匹配通過遊標逐一獲取記錄,並賦給主變數,交由主語言進一步處理。 (詳細解釋參見《概論》3.7.2 )

23.在嵌入式SQL中是如何協調SQL語言的集合處理方式和主語言的單記錄處理方式的?

正確答案: 用遊標來協調這兩種不同的處理方式。遊標區是系統爲使用者開設的一個數據緩衝區,存放SQL語句的執行結果,每個遊標區都有一個名字。使用者可以通過遊標逐一獲取記錄,並賦給主變數,交由主語言進一步處理。

第四章 關係系統及其查詢優化

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

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

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

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

3.試給出各類關係系統的定義:最小關係系統;關係上完備的系統;全關係型的關係系統。

正確答案: 最小關係系統: 一個系統可定義爲最小關係系統,當且僅當它: (1)支援關係數據庫(關係數據結構)。 從使用者觀點看,關係數據庫由表構成,並且只有表這一種結構。 (2)支援選擇、投影和(自然)連線運算,對這些運算不必要求定義任何物理存取路徑。 關係上完備的系統: 這類系統支援關係數據結構和所有的關係代數操作(或者功能上與關係代數等價的操作)。 全關係型的關係系統: 這類系統支援關係模型的所有特徵。即不僅是關係上完備的而且支援數據結構中域的概念,支援實體完整性和參照完整性。

4.試述全關係型系統應滿足的十二條準則,以及十二條基本準則的實際意義和理論意義。

正確答案: 關係模型的奠基人E.F.Codd具體地給出了全關係型的關係系統應遵循的十二條基本準則。從實際意義上看,這十二條準則可以作爲評價或購買關係型產品的標準。從理論意義上看,它是對關係數據模型的具體而又深入的論述,是從理論和實際緊密結合的高度對關係型DBMS的評述。 準則0 一個關係型的DBMS必須能完全通過它的關係能力來管理數據庫。 準則1 資訊準則。關係型DBMS的所有資訊都應在邏輯一級上用一種方法即表中的值顯式地表示。 準則2 保證存取準則。依靠表名、主碼和列名的組合,保證能以邏輯方式存取關係數據庫中的每個數據項(分量值)。 準則3 空值的系統化處理。全關係型的DBMS應支援空值的概念,並用系統化的方式處理空值。 準則4 基於關係模型的動態的聯機數據字典。數據庫的描述在邏輯級上應該和普通數據採用同樣的表示方式,使得授權使用者可以使用查詢一般數據所用的關係語言來查詢數據庫的描述資訊。 準則5 統一的數據子語言準則。 準則6 檢視更新準則。所有理論上可更新的檢視也應該允許由系統更新。 準則7 高階的插入、修改和刪除操作。 準則8 數據物理獨立性。無論數據庫的數據在儲存表示或存取方法上作任何變化,應用程式和終端活動都保持邏輯上的不變性。 準則9 數據邏輯獨立性。當對基本關係進行理論上資訊不受損害的任何改變時,應用程式和終端活動都保持邏輯上的不變性。 準則l0 數據完整性的獨立性。關係數據庫的完整性約束條件必須是用數據庫語言定義並儲存在數據字典中的,而不是在應用程式中加以定義的。 準則11 分佈獨立性。關係型DBMS具有分佈獨立性。 準則12 無破壞準則。如果一個關係系統具有一個低階(指一次一個記錄)語言,則這個低階語言不能違背或繞過完整性準則。

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

正確答案: 重要性:關係系統的查詢優化既是RDBMS實現的關鍵技術又是關係系統的優點所在。它減輕了使用者選擇存取路徑的負擔。使用者只要提出「幹什麼」,不必指出「怎麼幹」。 查詢優化的優點不僅在於使用者不必考慮如何最好地表達查詢以獲得較好的效率,而且在於系統可以比使用者程式的「優化」做得更好。 可能性: 這是因爲: (1)優化器可以從數據字典中獲取許多統計資訊,例如各個關係中的元組數、關係中每個屬性值的分佈情況、這些屬性上是否有索引、是什麼索引,B+樹索引還是HASH索引?唯一索引?組合索引?等等。優化器可以根據這些資訊選擇有效的執行計劃,而使用者程式則難以獲得這些資訊。 (2)如果數據庫的物理統計資訊改變了,系統可以自動對查詢進行重新優化以選擇相適應的執行計劃。在非關係系統中必須重寫程式,而重寫程式在實際應用中往往是不太可能的。 (3)優化器可以考慮數十甚至數百種不同的執行計劃,從中選出較優的一個,而程式設計師一般只能考慮有限的幾種可能性。 (4)優化器中包括了很多複雜的優化技術,這些優化技術往往只有最好的程式設計師才能 纔能掌握。系統的自動優化相當於使得所有人都擁有這些優化技術。

第五章 關係數據理論

  1. 在關係模式R(D,E,G)中,存在函數依賴關係{E→D,(D,G)→E},則候選碼是__________,關係模式R(D,E,G)屬於____________。

正確答案: (E,G),(D,G) 3NF

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

正確答案: 函數依賴:設R (U)是一個關係模式,U是R的屬性集合,X和Y是U的子集。對於R (U)的任意一個可能的關係r,如果r中不存在兩個元組,它們在X上的屬性值相同, 而在Y上的屬性值不同, 則稱「X函數確定Y"或「Y函數依賴於X",記作X→Y。 *解析: 1)函數依賴是最基本的一種數據依賴,也是最重要的一種數據依賴。 2)函數依賴是屬性之間的一種聯繫,體現在屬性值是否相等。由上面的定義可以知道,如果X→Y,則r中任意兩個元組,若它們在X上的屬性值相同,那麼在Y上的屬性值一定也相同。 3)我們要從屬性間實際存在的語意來確定他們之間的函數依賴,即函數依賴反映了(描述了)現實世界的一種語意。 4)函數依賴不是指關係模式R的在某個時刻的關係(值)滿足的約束條件,而是指R任何時刻的一切關係均要滿足的約束條件。 答: 完全函數依賴、部分函數依賴:在R(U)中,如果X→Y,並且對於X的任何一個真子集X,都有X′→Y,則稱Y對X完全函數依賴,記作: 若X→Y,但Y不完全函數依賴於X,則稱Y對X部分函數依賴,記作: 傳遞依賴:在R(U)中,如果X →Y,(Y  X),Y →X,Y→Z,則稱Z對X傳遞函數依賴。 候選碼、主碼: 設K爲R中的屬性或屬性組合,若K → U則K爲R的候選碼(Candidate key)。若候選碼多於一個,則選定其中的一個爲主碼(Primary key)。 *解析: 1) 這裏我們用函數依賴來嚴格定義碼的概念。在第二章中我們只是描述性地定義碼(可以複習2.2.1):若關係中的某一屬性組的值能唯一地標識一個元組,則稱該屬性組爲候選碼(Candidate key)。 2)因爲碼有了嚴格定義,同學在學習了《概論》5.3數據依賴的公理系統後就可以從R的函數依賴集F出發,用演算法來求候選碼。 答: 外碼:關係模式R中屬性或屬性組X並非R的碼,但X是另一個關係模式的碼,則稱X是R的外部碼(Foreign key)也稱外碼。 全碼:整個屬性組是碼,稱爲全碼(All-key)。 答: 1NF:如果一個關係模式R的所有屬性都是不可分的基本數據項,則R∈1NF。 *解析:第一範式是對關係模式的最起碼的要求。不滿足第一範式的數據庫模式不能稱爲關係數據庫。 答: 2NF:若關係模式R∈1NF,並且每一個非主屬性都完全函數依賴於R的碼,則R∈2NF。 3NF:關係模式R 中若不存在這樣的碼X,屬性組Y及非主屬性Z(Z  Y)使得X→Y,(Y → X)Y→Z,成立,則稱R  3NF。 BCNF:關係模式R 1NF。若X→Y且Y  X時X必含有碼,則R  BCNF。 *解析: 同學們要真正理解這些範式的內涵。各種範式之間的聯繫:5NF 4NF BCNF 3NF 2NF lNF(《概論》上圖5.2)。能夠理解爲什麼有這種包含關係。 答: 多值依賴:設R(U)是屬性集U上的一個關係模式。X,Y,Z是U的子集,並且Z=U-X-Y。關係模式R(U)中多值依賴X→→Y成立,當且僅當對R(U)的任一關係r,給定的一對(x,z)值,有一組Y的值,這組值僅僅決定於x值而與z值無關。 4NF:關係模式R  lNF,如果對於R的每個非平凡多值依賴X→→Y(Y  X),X都含有碼,則稱R  4NF。 *解析: 對於多值依賴的定義有多種。《概論》上定義 5.9後面又給出了一種等價的定義。習題中的第4題是另一種等價的定義。同學們可以對比不同的定義來理解多值依賴。選擇自己容易理解的一種定義來掌握多值依賴概念。

  1. 在關係模式R(A,C,D)中,存在函數依賴關係{ A→C,A→D },則候選碼是___________ ,關係模式R(A,C,D)最高可以達到_____________ 。

正確答案: A BCNF

4.試由Armostrong公理系統推導出下面 下麪三條推理規則: (1) 合併規則:若X→Z,X→Y,則有X→YZ (2) 僞傳遞規則:由X→Y,WY→Z有XW→Z (3) 分解規則:X→Y,Z Y,有X→Z

正確答案: (1) 已知X→Z,由增廣律知XY→YZ,又因爲X→Y,可得XX→XY→YZ,最後根據傳遞律得X→YZ。 (2) 已知X→Y,據增廣律得XW→WY,因爲WY→Z,所以XW→WY→Z,通過傳遞律可知XW→Z。 (3) 已知Z Y,根據自反律知Y→Z,又因爲X→Y,所以由傳遞律可得X→Z。

5.關於多值依賴的另一種定義是: 給定一個關係模式R(X,Y,Z),其中X,Y,Z可以是屬性或屬性組合。 設x∈X,y∈Y,z∈Z,xz在R中的像集爲: Yx z = {r.Y | r.X=x ∧ r.Z = z ∧ rR} 定義 R(X,Y,Z)當且僅當Yxz =Yxz′對於每一組(x,z,z′)都成立,則Y對X多值依賴,記作X→→Y。這裏,允許Z爲空集,在Z爲空集時,稱爲平凡的多值依賴。 請證明這裏的定義和《概論》5.2.7節中定義5.9是等價的。

正確答案: 設Yxz=Yxz’對於每一組(x,z,z′)都成立,現證其能推出定義5.9的條件: 設s、t是關係r中的兩個元組,s[X]= t[X],由新定義的條件知對於每一個z值,都對應相同的一組y值。這樣一來,對相同的x值,交換y值後所得的元組仍然屬於關係r,即定義5.9的條件成立; 如果定義5.9的條件成立,則對相同的x值,交換y值後所得的元組仍然屬於關係r,由於任意性及其對稱性,可知每個z值對應相同的一組y值,所以Yxz=Yxz’對於每一組(x,z,z′)都成立。 綜上可知,新定義和定義5.9的條件是等價的,所以新定義和定義5.9是等價的。

6.試舉出三個多值依賴的範例。

正確答案: (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表示病人。假設每個病房住有多個病人,有多個責任醫務人員負責醫治和護理該病房的所有病人。按照語意有R→→D,R→→P成立。

7.試證明《概論》上給出的關於FD和MVD公理系統的A4,A6和A8。

正確答案: A4:若X→→Y,VWU,則XW→→YV 設Z=U-X-Y 已知X→→Y,設r是R上的任一關係,s、t∈r,且t[X]=s[X],則存在元組p、q∈r,使p[X]=q[X]=t[X],而p[Y]=t[Y],p[Z]=s[Z],q[Y]=s[Y],q[Z]=t[Z]。 設t[XW]=s[XW],我們以上構造的元組p和q,是某部分屬性在s和t上翻轉而成,所以p[W]=q[W],可知p[XW]=q[XW],同理p[YV]=t[YV](由VW知t[V]=s[V]),q[YV]=s[YV],p[U-YV-XW]=sU-YV-XW,q[U-YV-XW]=t[U-YV-XW]。所以XW→→YV。 A6:若X→→Y,Y→→Z則X→→Z-Y 由Y→→Z容易證得Y→→Z-Y。 設R1=U-X-Y,R2=U-Y-Z,R3=U-X-Z+Y。 已知X→→Y,設r是R上的任一關係,s、t∈r,且t[X]=s[X],則存在元組p、q∈r,使p[X]=q[X]=t[X],而p[Y]=t[Y],p[R1]=s[R1],q[Y]=s[Y],q[R1]=t[R1]。 對元組t、p,已知t[Y]=p[Y],t[X]=p[X],由Y→→Z-Y知:存在元組m∈r,使m[Z-Y]=p[Z-Y],m[R2]=t[R2]。因爲(Z-Y)R1,又p[R1]=s[R1],所以m[Z-Y]=s[Z-Y]。因爲元組p和s在除屬性Y之外的屬性上值相等,所以m[R2]=t[R2],另外元組m是由元組t和p交換某些屬性上的值而產生的,而t和p在屬性X上值相等,顯然m[X]=t[X],所以m[U-(Z-Y)]=t[U-(Z-Y)],即m[R3]=t[R3]。 對元組s、q,同理可知s[Y]=q[Y],存在元組n,使n[Z-Y]=t[Z-Y],即n[R3]=s[R3]。 綜上所述,對t、s∈r,t[X]=s[X],存在元組m、n∈r,使m[X]=n[X]=t[X],而m[Z-Y]=s[Z-Y],m[R3]=t[R3],n[Z-Y]=t[Z-Y],n[R3]=s[R3]。 A8:若X→→Y,W→Z,W∩Y=Φ,ZY,則X→Z。 設r是R上的任一關係,對任意s、t∈r,若t[X]=s[X],設R1=U-X-Y,則根據X→→Y知:存在元組p、q∈r,使p[X]=q[X]=t[X],而p[Y]=t[Y],p[R1]=s[R1],q[Y]=s[Y],q[R1]=t[R1]。因爲W∩Y=Φ,所以s[W]=p[W],又W→Z,所以s[Z]=p[Z];因爲ZY,且p[Y]=t[Y],所以p[Z]=t[Z];所以可得t[Z]=s[Z],即X→Z。

8.設關係模式爲R(U,F),X,Y爲屬性集,X,YU。證明: (1)XXF+ (2)(XF+)F+=XF+ (3)若XY則XF+YF+ (4)UF+=U

正確答案: (1)因爲X→X 所以XXF+ (根據XF+的定義) (2) *解析 1 要證明(XF+)F+=XF+ 只要證明 XF+ (XF+)F+ 並且(XF+)F+  XF+ 而XF+ (XF+)F+ 是顯然的,因此只要證明(XF+)F+  XF+ 2 這裏的證明要用集合論的基本知識,同學們應該複習一下有關集合論中的有關概念和證明方法。 證明:下面 下麪求證(XF+)F+XF+ 任意A∈(XF+)F+,(由題意知)存在B∈XF+,使B→A能由F根據Armstrong公理導出,而從B∈XF+ 可知X→B能由F根據Armstrong公理導出,根據公理中的傳遞律可知X→A能由F根據Armstrong公理導出,所以A∈XF+,因此(XF+)F+  XF+。 所以(XF+)F+=XF+。 (3)對任意A∈XF+ ,可知X→A能由F根據Armstrong公理導出,因爲XY,由自反律可以得Y→X,由傳遞律得Y→A,所以A∈YF+ 。 XF+YF+ 得證。 (4) *解析 要證明UF+=U 只要證明 U UF+ 並且 UF+ U U UF+ 是顯然的; 下面 下麪證明UF+ U,即證U由F據Armstrong公理推出的集合仍屬於U: 自反律:Y  U,U→Y爲F所蘊含。顯然U由F據Armstrong公理的自反律推出的Y仍屬於U; 增廣律:U→Y爲F所蘊含,且ZU,則U Z→YZ爲F所蘊含,YZU。 傳遞律:U→Y 和Y→Z都爲F所蘊含,則U→Z爲F所蘊含。ZU。

9.設關係模式爲R(U,F),若XF+=X,則稱X相對於F是飽和的。 定義飽和集F={X | X=XF+}, 試證明F = {XF+ | XU }。

正確答案: 證:1)證 F  {XF+|XU} 對任意A∈F ,由已知條件得A=AF+ ,因爲AU,A=AF+ 所以A∈{XF+|XU}。 2)證 {XF+| XU}  F 對任意A∈{AF+|AU},因爲(AF+)F+ = AF+(見習題7),令B=AF+,有BF+ =B 所以 B∈F 即AF+∈F ,A∈F 得證。

  1. 在一個關係R中,若每個數據項都是不可再分割的,那麼R一定屬於__________ 。

正確答案: 第一範式(1NF)

  1. 若關係爲1NF,且它的每一非主屬性都__________ 候選碼,則該關係爲2NF。

正確答案: 完全函數依賴於

  1. 如果X→Y和X→Z成立,那麼X→YZ也成立,這個推理規則稱爲___________ 。

正確答案: 合併規則

  1. 如果關係模式R是第二範式,且每個非主屬性都不傳遞依賴於R的候選碼,則稱R爲________ 關係模式。

正確答案: 3NF

  1. 在函數依賴中,平凡函數依賴是可以根據Armstrong推理規則中的__________ 律推出的。

正確答案: 自反

  1. 關係模式規範化需要考慮數據間的依賴關係,人們已經提出了多種型別的數據依賴,其中最重要的是_____________和___________。

正確答案: 函數依賴 多值依賴

  1. 設關係R(U),X,Y∈U,X→Y是R的一個函數依賴,如果存在X′∈X,使X′→Y成立,則稱函數依賴X→Y是___________ 函數依賴。

正確答案: 部分

  1. 在關係模式R(A,B,C,D)中,存在函數依賴關係{A→B,A→C,A→D,(B,C)→A},則候選碼是___________,關係模式R(A,B,C,D)屬於____________ 。

正確答案: A,(B,C) 2NF

第六章 數據庫設計

1.「三分________,七分________,十二分________」是數據庫建設的基本規律。

正確答案: 技術 管理 基礎數據

  1. 十二分基礎數據強調了數據的________ 、________、________和________是數據庫建設中的重要的環節。

正確答案: 整理 收集 組織 不斷更新

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

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

  1. 規範化理論對數據庫設計有什麼指導意義?

正確答案: 規範化理論爲數據庫設計人員判斷關係模式優劣提供了理論標準,可用以指導關係數據模型的優化,用來預測模式可能出現的問題,爲設計人員提供了自動產生各種模式的演算法工具,使數據庫設計工作有了嚴格的理論基礎。(可參考《概論》書上P231-232數據模型的優化)。

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

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

  1. 規範設計法從本質上看仍然是手工設計方法,其基本思想是________ 和________。

正確答案: 過程迭代 逐步求精

  1. 數據庫的生命週期可分爲兩個階段:一是數據庫需求分析和________ ;二是數據庫實現和________。

正確答案: 設計階段 執行階段

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

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

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

正確答案: 數據庫結構設計的不同階段形成數據庫的各級模式,即:  在概念設計階段形成獨立於機器特點,獨立於各個DBMS產品的概念模式,在本篇中就是E-R圖;  在邏輯設計階段將E-R圖轉換成具體的數據庫產品支援的數據模型,如關係模型,形成數據庫邏輯模式;然後在基本表的基礎上再建立必要的檢視(View),形成數據的外模式;  在物理設計階段,根據DBMS特點和處理的需要,進行物理儲存安排,建立索引,形成數據庫內模式。 同學們可以參考《概論》上圖6.4(P.209)。 圖中概念模式是面向使用者和設計人員的,屬於概念模型的層次;邏輯模式、外模式、內模式是DBMS支援的模式,屬於數據模型的層次。可以在DBMS中加以描述和儲存。

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

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

  1. 數據字典的內容和作用是什麼?

正確答案: 數據字典是系統中各類數據描述的集合。數據字典的內容通常包括:  數據項  數據結構  數據流  數據儲存  處理過程五個部分 其中數據項是數據的最小組成單位,若幹個數據項可以組成一個數據結構。數據字典通過對數據項和數據結構的定義來描述數據流、數據儲存的邏輯內容。 數據字典的作用: 數據字典是關於數據庫中數據的描述,在需求分析階段建立,是下一步進行概念設計的基礎,並在數據庫設計過程中不斷修改、充實、完善。 (詳細參考《概論》書上6.2.3。注意,數據庫設計階段形成的數據字典與第十一章DBMS中的數據字典不同,後者是DBMS關於數據庫中數據的描述,當然兩者是有聯繫的)。

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

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

13.什麼叫數據抽象?試舉例說明。

正確答案: 數據抽象是對實際的人、物、事和概念進行人爲處理,抽取所關心的共同特性,忽略非本質的細節,並把這些特性用各種概念精確地加以描述,這些概念組成了某種模型。 如分類這種抽象是:定義某一類概唸作爲現實世界中一組物件的型別。這些物件具有某些共同的特性和行爲。它抽象了物件值和型之間的「is member of」的語意。在E-R模型中,實體型就是這種抽象。例如在學校環境中,李英是老師,表示李英是教師型別中的一員,則教師是實體型,李英是教師實體型中的一個實體值,具有教師共同的特性和行爲:在某個系某個專業教學,講授某些課程,從事某個方向的科研。

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

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

15.什麼是E-R圖?構成E-R圖的基本要素是什麼?

正確答案: E-R圖爲實體-聯繫圖,提供了表示實體型、屬性和聯繫的方法,用來描述現實世界的概念模型。 構成E-R圖的基本要素是實體型、屬性和聯繫,其表示方法爲: • 實體型:用矩形表示,矩形框內寫明實體名; • 屬性:用橢圓形表示,並用無向邊將其與相應的實體連線起來; • 聯繫:用菱形表示,菱形框內寫明聯繫名,並用無向邊分別與有關實體連線起來,同時在無向邊旁標上聯繫的型別(1 : 1,1 : n或m : n)。

  1. 數據庫設計分爲以下六個階段_______、、________、

正確答案: 需求分析 概念結構設計 邏輯結構設計 物理設計階段 數據庫實施階段 數據庫執行和維護階段

17.爲什麼要檢視整合?檢視整合的方法是什麼?

正確答案: 在對數據庫系統進行概念結構設計時一般採用自底向上的設計方法,把繁雜的大系統分解子系統。首先設計各個子系統的區域性檢視,然後通過檢視整合的方式將各子系統有機的融合起來,綜合成一個系統的總檢視。這樣設計清晰,由簡到繁。由於數據庫系統是從整體角度看待和描述數據的,因此數據不再面向某個應用而是整個系統。因此必須進行檢視整合,使得數據庫能被全系統的多個使用者、多個應用共用使用。 一般說來,檢視整合可以有兩種方式: • 多個分E-R圖一次整合,如《概論》書上圖6.25(a)(P.224); • 逐步整合,用累加的方式一次整合兩個分E-R圖,如圖6.25(b)。 無論採用哪種方式,每次整合區域性E-R圖時都需要分兩步走: (1)合併。解決各分E-R圖之間的衝突,將各分E-R圖合併起來生成初步E-R圖。 (2)修改和重構。消除不必要的冗餘,生成基本E-R圖。

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

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

19.試述把E-R圖轉換爲DBTG模型和關係模型的轉換規則。

正確答案: E-R圖向DBTG模型的轉換規則: 1) 每個實體型轉換爲記錄型,實體的屬性轉換爲記錄的數據項; 2) 實體型之間1:n(n≥1)的聯繫轉換爲一個系,沒有任何聯繫的實體型轉換爲奇異系; 3) K(K≥2)個實體型之間多對多的聯繫,引入一個連結記錄,形成K個實體型和連結記錄之間的K個系。連結記錄的屬性由諸首記錄的碼及聯繫屬性所組成; 4) 同一實體型內的1:n,n:m聯繫,引入連結記錄,轉換爲兩個系。

20.你能給出由E-R圖轉換爲IMS模型的轉換規則嗎?

正確答案: E-R圖向IMS模型的轉換規則: 1) 每個實體型轉換爲記錄型,實體的屬性轉換爲記錄的數據項; 2) 實體型之間1:n(n≥1)的聯繫轉換記錄型之間的有向邊; 3) 實體型之間m:n(m>1,n>1)的聯繫則分解成一對多聯繫,再根據2)轉換; 4) K(K≥2)個實體型之間多對多的聯繫,可先轉換成多對兩個實體型之間的聯繫,再根據3)轉換。

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

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

  1. 你能給出關係數據庫物理設計的主要內容嗎?例如ORACLE數據庫物理設計的內容。

正確答案: 對於關係數據庫物理設計的內容主要包括 : • 爲關係模式選擇存取方法; • 設計關係、索引等數據庫檔案的物理儲存結構。 詳細參考《概論》書上6.5.2 和6.5.3。 有關ORACLE數據庫物理設計的內容請參考其技術資料,根據上述內容進行總結。

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

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

  1. 什麼是數據庫的再組織和重構造?爲什麼要進行數據庫的再組織和重構造?

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

  1. 數據庫實施階段包括兩項重要的工作,一項是________ ,另一項是應用程式的________和________。

正確答案: 組織數據入庫 編碼 偵錯

  1. 根據模型應用的不同目的,可以將這些模型劃分爲兩類,它們分別屬於兩個不同的層次。第一類是________,第二類是________。

正確答案: 概念模型 數據模型

  1. 用________ 方法來設計數據庫的概念模型是數據庫概念設計階段廣泛採用的方法。

正確答案: 實體—聯繫方法(E-R)

  1. 概念模型有以下特點:、 ________ 、 、________。

正確答案: 真實性 易理解性 易修改性 易轉換性

  1. 在E-R模型向關係模型轉換時,M:N的聯繫轉換爲關係模式時,其碼包括________ 。

正確答案: M、N端實體的碼

  1. 關係數據庫的規範化理論是數據庫________ 的一個有力工具;ER模型是數據庫的________設計的一個有力工具。

正確答案: 邏輯設計 概念結構

  1. 數據庫的物理設計通常分爲兩步:(1)確定數據庫的________ ,(2)對其進行評價,評價的重點是________和________。

正確答案: 物理結構 時間 空間效率

  1. 任何DBMS都提供多種存取方法。常用的存取方法有________ 、________ 、________ 等。

正確答案: 索引(index)方法 HASH方法 聚簇(Cluster)方法

  1. 確定數據庫儲存結構主要指確定________ 、________ 、________ 、________ 、________等數據的儲存安排和儲存結構,確定系統設定參數等。

正確答案: 關係 索引 聚簇 日誌 備份

34.________ 是數據庫中存放數據的基本單位。

正確答案: 表

  1. 在數據庫執行階段,對數據庫經常性的維護工作主要是由________ 完成的。

正確答案: 數據庫管理員 (DBA)

  1. 客觀存在並可相互區別的事物稱爲________ ,它可以是具體的人、事、物,也可以是抽象的概念或聯繫。

正確答案: 實體

  1. 唯一標識實體的屬性集稱爲________ 。

正確答案: 碼

  1. 實體之間的聯繫有________ 、________ 、________三種。

正確答案: 一對一 一對多 多對多

  1. 如果兩個實體之間具有M:N聯繫,則將它們轉換爲關係模型的結果是________ 個關係。

正確答案: 3

  1. ER模型是對現實世界的一種抽象,它的主要成分是________ 、聯繫和 ________。

正確答案: 實體 屬性

  1. 需求調查和分析的結果最終形成________ ,提交給應用部門,通過________後作爲以後各個設計階段的依據。

正確答案: 需求分析說明書 評審

42.________ 表達了數據和處理的關係, ________則是系統中各類數據描述的集合,是進行詳細的數據收集和數據分析所獲得的主要成果。

正確答案: 數據流圖 數據字典

  1. 數據字典中應包括對以下幾部分數據的描述:________ 、________ 、________ 。

正確答案: 數據項 數據結構 數據流

  1. 各分E-R圖之間的衝突主要有三類:________ 、

正確答案: 屬性衝突 命名衝突 結構衝突

第七章 數據庫恢復技術

  1. 數據庫系統中可能發生各種各樣的故障,大致可以分爲________ 、________ 、________ 和 ________ 等。

正確答案: 事務故障 系統故障 媒介故障 計算機病毒

  1. 數據庫中爲什麼要有恢復子系統?它的功能是什麼?

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

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

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

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

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

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

正確答案: 數據庫系統中可能發生各種各樣的故障,大致可以分以下幾類: (1) 事務內部的故障; (2) 系統故障; (3) 媒介故障; (4) 計算機病毒。 事務故障、系統故障和媒介故障影響事務的正常執行;媒介故障和計算機病毒破壞數據 庫數據。

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

正確答案: 數據轉儲和登錄日誌檔案是數據庫恢復的基本技術。 當系統執行過程中發生故障,利用轉儲的數據庫後備副本和日誌檔案就可以將數據庫恢復到故障前的某個一致性狀態。

  1. 事務具有四個特性:它們是________ 、________ 、________ 和 ________ 。這個四個特性也簡稱爲________特性。

正確答案: 原子性(Atomicity) 一致性(Consistency) 隔離性(Isolation) 持續性(Durability) ACID

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

正確答案: 數據轉儲是數據庫恢復中採用的基本技術。所謂轉儲即DBA定期地將數據庫複製到磁帶或另一個磁碟上儲存起來的過程。當數據庫遭到破壞後可以將後備副本重新裝入,將數據庫恢復到轉儲時的狀態。 靜態轉儲:在系統中無執行事務時進行的轉儲操作。如上圖所示。靜態轉儲簡單,但必須等待正執行的使用者事務結束才能 纔能進行。同樣,新的事務必須等待轉儲結束才能 纔能執行。顯然,這會降低數據庫的可用性。 動態轉儲:指轉儲期間允許對數據庫進行存取或修改。動態轉儲可克服靜態轉儲的缺點,它不用等待正在執行的使用者事務結束,也不會影響新事務的執行。但是,轉儲結束時後援副本上的數據並不能保證正確有效。因爲轉儲期間執行的事務可能修改了某些數據,使得後援副本上的數據不是數據庫的一致版本。 爲此,必須把轉儲期間各事務對數據庫的修改活動登記下來,建立日誌檔案(log file)。這樣,後援副本加上日誌檔案就能得到數據庫某一時刻的正確狀態。 轉儲還可以分爲海量轉儲和增量轉儲兩種方式。 海量轉儲是指每次轉儲全部數據庫。增量轉儲則指每次只轉儲上一次轉儲後更新過的數據。從恢復角度看,使用海量轉儲得到的後備副本進行恢復一般說來更簡單些。但如果數據庫很大,事務處理又十分頻繁,則增量轉儲方式更實用更有效。

9.什麼是日誌檔案?爲什麼要設立日誌檔案?

正確答案: (1) 日誌檔案是用來記錄事務對數據庫的更新操作的檔案。 (2) 設立日誌檔案的目的是: 進行事務故障恢復;進行系統故障恢復;協助後備副本進行媒介故障恢復。

10.登記日誌檔案時爲什麼必須先寫日誌檔案,後寫數據庫?

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

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

正確答案: 答: 事務故障的恢復: 事務故障的恢復是由DBMS自動完成的,對使用者是透明的。 DBMS執行恢復步驟是: (1)反向掃描檔案日誌(即從最後向前掃描日誌檔案),查詢該事務的更新操作。 (2)對該事務的更新操作執行逆操作。即將日誌記錄中「更新前的值」寫入數據庫。 (3)繼續反向掃描日誌檔案,做同樣處理。 (4)如此處理下去,直至讀到此事務的開始標記,該事務故障的恢復就完成了。 答: 系統故障的恢復: 系統故障可能會造成數據庫處於不一致狀態: 一是未完成事務對數據庫的更新可能已寫入數據庫; 二是已提交事務對數據庫的更新可能還留在緩衝區,沒來得及寫入數據庫。 因此恢復操作就是要復原(UNDO)故障發生時未完成的事務,重做(REDO)已完成的事務。 系統的恢復步驟是: (1)正向掃描日誌檔案,找出在故障發生前已經提交的事務佇列(REDO佇列)和未完成的事務佇列(UNDO佇列)。 (2)對復原佇列中的各個事務進行UNDO處理。 進行UNDO處理的方法是,反向掃描日誌檔案,對每個UNDO事務的更新操作執行逆操作,即將日誌記錄中「更新前的值」(Before Image)寫入數據庫。 (3)對重做佇列中的各個事務進行REDO處理。 進行REDO處理的方法是:正向掃描日誌檔案,對每個REDO事務重新執行日誌檔案登記的操作。即將日誌記錄中「更新後的值」(After Image)寫入數據庫。 *解析: 在第(1)步中如何找出REDO佇列和UNDO佇列?請大家思考一下。 下面 下麪給出一個演算法: 1) 建立兩個事務佇列: • UNDO-LIST: 需要執行undo操作的事務集合; • REDO-LIST: 需要執行redo操作的事務集合; 兩個事務佇列初始均爲空。 2) 從日誌檔案頭開始,正向掃描日誌檔案 • 如有新開始(遇到Begin Transaction)的事務Ti,把Ti暫時放入UNDO-LIST佇列; • 如有提交的事務(遇到End Transaction)Tj,把Tj從UNDO-LIST佇列移到REDO-LIST佇列; 直到日誌檔案結束 答: 媒介故障的恢復: 媒介故障是最嚴重的一種故障。 恢復方法是重灌數據庫,然後重做已完成的事務。具體過程是: (1) DBA裝入最新的數據庫後備副本(離故障發生時刻最近的轉儲副本),使數據庫恢復到轉儲時的一致性狀態。 (2) DBA裝入轉儲結束時刻的日誌檔案副本 (3) DBA啓動系統恢復命令,由DBMS完成恢復功能,即重做已完成的事務。 *解析 1)我們假定採用的是靜態轉儲,因此第(1)步裝入數據庫後備副本便可以了。 2)如果採用的是動態轉儲,第(1)步裝入數據庫後備副本還不夠,還需同時裝入轉儲開始時刻的日誌檔案副本,經過處理後才能 纔能得到正確的數據庫後備副本。 3)第(2)步重做已完成的事務的演算法是: a. 正向掃描日誌檔案,找出故障發生前已提交的事務的標識,將其記入重做佇列 b. 再一次正向掃描日誌檔案,對重做佇列中的所有事務進行重做處理。即將日誌記錄中「更新後的值」寫入數據庫。

12.什麼是檢查點記錄,檢查點記錄包括哪些內容?

正確答案: 檢查點記錄是一類新的日誌紀錄。它的內容包括: ① 建立檢查點時刻所有正在執行的事務清單。 ② 這些事務的最近一個日誌記錄的地址。

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

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

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

正確答案: ① 從重新開始檔案中找到最後一個檢查點記錄在日誌檔案中的地址,由該地址在日誌檔案中找到最後一個檢查點記錄。 ② 由該檢查點記錄得到檢查點建立時刻所有正在執行的事務清單ACTIVE-LIST。 這裏建立兩個事務佇列: • UNDO-LIST: 需要執行undo操作的事務集合; • REDO-LIST: 需要執行redo操作的事務集合; 把ACTIVE-LIST暫時放入UNDO-LIST佇列,REDO佇列暫爲空。 ③ 從檢查點開始正向掃描日誌檔案 • 如有新開始的事務Ti,把Ti暫時放入UNDO-LIST佇列; • 如有提交的事務Tj,把Tj從UNDO-LIST佇列移到REDO-LIST佇列,直到日誌檔案結束; ④ 對UNDO-LIST中的每個事務執行UNDO操作, 對REDO-LIST中的每個事務執行REDO操作。

15.什麼是數據庫映象?它有什麼用途?

正確答案: 數據庫映象即根據DBA的要求,自動把整個數據庫或者其中的部分關鍵數據複製到另一個磁碟上。每當主數據庫更新時,DBMS自動把更新後的數據複製過去,即DBMS自動保證映象數據與主數據的一致性。 數據庫映象的用途有: 一是用於數據庫恢復。當出現媒介故障時,可由映象磁碟繼續提供使用,同時DBMS自動利用映象磁碟數據進行數據庫的恢復,不需要關閉系統和重灌數據庫副本。 二是提高數據庫的可用性。在沒有出現故障時,當一個使用者對某個數據加排它鎖進行修改時,其他使用者可以讀映象數據庫上的數據,而不必等待該使用者釋放鎖。

  1. 把數據庫從錯誤狀態恢復到某一已知的正確狀態(亦稱爲一致狀態)的功能,這就是________ 。

正確答案: 數據庫的恢復

17.________ 是一系列的數據庫操作,是數據庫應用程式的基本邏輯單元。

正確答案: 事務

  1. 事務處理技術主要包括________ 技術和________技術。

正確答案: 數據庫恢復 併發控制

  1. 在SQL語言中,定義事務控制的語句主要有________ 、________ 和 ________ 。

正確答案: BEGIN TRANSACTION COMMIT ROLLBACK

  1. 建立冗餘數據最常用的技術是________ 和________ 。通常在一個數據庫系統中,這兩種方法是一起使用的。

正確答案: 數據轉儲 登錄日誌檔案

  1. 轉儲可分爲________ 和________,轉儲方式可以有________和 ________。

正確答案: 靜態轉儲 動態轉儲 海量轉儲 增量轉儲

22.________ 是用來記錄事務對數據庫的更新操作的檔案。主要有兩種格式:以________爲單位的日誌檔案和以________爲單位的日誌檔案。

正確答案: 日誌檔案 記錄 數據塊

第八章 併發控制

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

正確答案: 併發操作帶來的數據不一致性包括三類:丟失修改、不可重複讀和讀「髒」數據。 (1)丟失修改(Lost Update) 兩個事務T1和T2讀入同一數據並修改,T2提交的結果破壞了(覆蓋了)T1提交的結果,導致T1的修改被丟失。 (2)不可重複讀(Non-Repeatable Read) 不可重複讀是指事務T1讀取數據後,事務T2執行更新操作,使T1無法再現前一次讀取結果。不可重複讀包括三種情況:詳見《概論》8.1 p266。 (3)讀「髒」數據(Dirty Read) 讀「髒」數據是指事務T1修改某一數據,並將其寫回磁碟,事務T2讀取同一數據後,T1由於某種原因被復原,這時T1已修改過的數據恢復原值,T2讀到的數據就與數據庫中的數據不一致,則T2讀到的數據就爲「髒」數據,即不正確的數據。 避免不一致性的方法就是併發控制。最常用的併發控制技術是封鎖技術。 也可以用其他技術,例如在分佈式數據庫系統中可以採用時間戳方法來進行併發控制。

2.在數據庫中爲什麼要併發控制?

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

3.什麼是封鎖?

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

4.基本的封鎖型別有幾種?試述它們的含義。

正確答案: 基本的封鎖型別有兩種: 排它鎖(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做任何修改。

5.什麼是封鎖協定?不同級別的封鎖協定的主要區別是什麼?

正確答案: 在運用封鎖技術對數據加鎖時,要約定一些規則。例如,在運用X鎖和S鎖對數據物件加鎖時,要約定何時申請X鎖或S鎖、何時釋放封鎖等。這些約定或者規則稱爲封鎖協定(Locking Protocol)。對封鎖方式約定不同的規則,就形成了各種不同的封鎖協定。不同級別的封鎖協定,例如《概論》8.3中介紹的三級封鎖協定,三級協定的主要區別在於什麼操作需要申請封鎖,何時申請封鎖以及何時釋放鎖(即持鎖時間的長短)。 一級封鎖協定:事務T在修改數據R之前必須先對其加X鎖,直到事務結束才釋放。 二級封鎖協定:一級封鎖協定加上事務T在讀取數據R之前必須先對其加S鎖,讀完後即可釋放S鎖。 三級封鎖協定:一級封鎖協定加上事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。

6.不同封鎖協定與系統一致性級別的關係是什麼?

正確答案: 不同的封鎖協定對應不同的一致性級別。 一級封鎖協定可防止丟失修改,並保證事務T是可恢復的。在一級封鎖協定中,對讀數據是不加S鎖的,所以它不能保證可重複讀和不讀「髒」數據。 二級封鎖協定除防止了丟失修改,還可進一步防止讀「髒」數據。在二級封鎖協定中,由於讀完數據後立即釋放S鎖,所以它不能保證可重複讀。 在三級封鎖協定中,無論是讀數據還是寫數據都加長鎖,即都要到事務結束時才釋放封鎖。所以三級封鎖協定除防止了丟失修改和不讀「髒」數據外,還進一步防止了不可重複讀。

7.什麼是活鎖?什麼是死鎖 ?

正確答案: 如果事務T1封鎖了數據R,事務T2又請求封鎖R,於是T2等待。T3也請求封鎖R,當T1釋放了R上的封鎖之後系統首先批準了T3的請求,T2仍然等待。然後T4又請求封鎖R,當T3釋放了R上的封鎖之後系統又批準了T4的請求……T2有可能永遠等待,這就是活鎖的情形。活鎖的含義是該等待事務等待時間太長,似乎被鎖住了,實際上可能被啓用。 如果事務T1封鎖了數據R1,T2封鎖了數據R2,然後T1又請求封鎖R2,因T2已封鎖了R2,於是T1等待T2釋放R2上的鎖。接着T2又申請封鎖R1,因T1已封鎖了R1,T2也只能等待T1釋放R1上的鎖。這樣就出現了T1在等待T2,而T2又在等待T1的局面,T1和T2兩個事務永遠不能結束,形成死鎖。

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

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

9.請給出預防死鎖的若幹方法。

正確答案: 在數據庫中,產生死鎖的原因是兩個或多個事務都已封鎖了一些數據物件,然後又都請求已被其他事務封鎖的數據加鎖,從而出現死等待。 防止死鎖的發生其實就是要破壞產生死鎖的條件。預防死鎖通常有兩種方法: (1)一次封鎖法 要求每個事務必須一次將所有要使用的數據全部加鎖,否則就不能繼續執行。 (2)順序封鎖法 預先對數據物件規定一個封鎖順序,所有事務都按這個順序實行封鎖。

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

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

11.什麼樣的併發排程是正確的排程?

正確答案: 可序列化(Serializable)的排程是正確的排程。 可序列化的排程的定義:多個事務的併發執行是正確的,當且僅當其結果與按某一次序序列地執行它們時的結果相同,我們稱這種排程策略爲可序列化的排程。

12.試述兩段鎖協定的概念。

正確答案: 兩段鎖協定是指所有事務必須分兩個階段對數據項加鎖和解鎖。 • 在對任何數據進行讀、寫操作之前,首先要申請並獲得對該數據的封鎖; • 在釋放一個封鎖之後,事務不再申請和獲得任何其他封鎖。 「兩段」的含義是,事務分爲兩個階段: 第一階段是獲得封鎖,也稱爲擴充套件階段。在這階段,事務可以申請獲得任何數據項上的任何型別的鎖,但是不能釋放任何鎖。 第二階段是釋放封鎖,也稱爲收縮階段。在這階段,事務釋放已經獲得的鎖,但是不能再申請任何鎖。

13.試證明,若併發事務遵守兩段鎖協定,則對這些事務的併發排程是可序列化的。

正確答案: 首先以兩個併發事務T1和T2爲例,存在多個併發事務的情形可以類推。 根據可序列化定義可知,事務不可序列化只可能發生在下列兩種情況: 1.事務T1寫某個數據物件A,T2讀或寫A; 2.事務T1讀或寫某個數據物件A,T2寫A。 下面 下麪稱A爲潛在衝突物件。 設T1和T2存取的潛在衝突的公共物件爲{A1, A2, …, An}。 不失一般性,假設這組潛在衝突物件中X={A1,A2, …, Ai}均符合情況1。 Y={Ai+1, …,An}符合所情況2。 xX,T1需要Xlock x ① T2需要Slock x或Xlockx ② (1) 如果操作①先執行,則T1獲得鎖,T2等待 由於遵守兩段鎖協定,T1在成功獲得X和Y中全部物件及非潛在衝突物件的鎖後,纔會釋放鎖 這時如果wX或Y,T2已獲得w的鎖,則出現死鎖 否則,T1在對X、Y中物件全部處理完畢後,T2才能 纔能執行 這相當於按T1、T2的順序序列執行 根據可序列化定義,T1和T2的排程是可序列化的。 (2) 操作②先執行的情況與(1)對稱 因此,若併發事務遵守兩段鎖協定,在不發生死鎖的情況下,對這些事務的併發排程一定是可序列化的。

14.爲什麼要引進意向鎖? 意向鎖的含義是什麼?

正確答案: 引進意向鎖是爲了提高封鎖子系統的效率。該封鎖子系統支援多種封鎖粒度。 原因是:在多粒度封鎖方法中一個數據物件可能以兩種方式加鎖—顯式封鎖和隱式封鎖(有關概念參見《概論》8.7.1)。因此係統在對某一數據物件加鎖時不僅要檢查該數據物件上有無(顯式和隱式)封鎖與之衝突;還要檢查其所有上級結點和所有下級結點,看申請的封鎖是否與這些結點上的(顯式和隱式)封鎖衝突;顯然,這樣的檢查方法效率很低。爲此引進了意向鎖。 意向鎖的含義是:對任一結點加鎖時,必須先對它的上層結點加意向鎖。 例如事務T要對某個元組加X鎖,則首先要對關係和數據庫加IX鎖。換言之,對關係和數據庫加IX鎖,表示它的後裔結點—某個元組擬(意向)加X鎖。 引進意向鎖後,系統對某一數據物件加鎖時不必逐個檢查與下一級結點的封鎖衝突了。例如,事務T要對關係R加X鎖時,系統只要檢查根結點數據庫和R本身是否已加了不相容的鎖(如發現已經加了IX,則與X衝突),而不再需要搜尋和檢查R中的每一個元組是否加了X鎖或S鎖。

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

正確答案: IS鎖 如果對一個數據物件加IS鎖,表示它的後裔結點擬(意向)加S鎖。例如,要對某個元組加S鎖,則要首先對關係和數據庫加IS鎖 IX鎖 如果對一個數據物件加IX鎖,表示它的後裔結點擬(意向)加X鎖。例如,要對某個元組加X鎖,則要首先對關係和數據庫加IX鎖。 SIX鎖 如果對一個數據物件加SIX鎖,表示對它加S鎖,再加IX鎖,即SIX = S + IX。

  1. 併發操作帶來的數據不一致性包括:________ 、________ 和 ________ 。

正確答案: 丟失修改 不可重複讀 讀「髒」數據

  1. 多個事務的併發執行是正確的,當且僅當其結果與按某一次序序列地執行它們時的結果相同,我們稱這種排程策略爲________的排程。

正確答案: 可序列化

  1. 基本的封鎖型別有兩種:________ 和________ 。

正確答案: 排它鎖(Exclusive Locks,簡稱X鎖) 共用鎖(Share Locks,簡稱S鎖)

  1. 在數據庫併發控制中,兩個或多個事務同時處在相互等待狀態,稱爲________ 。

正確答案: 死鎖

20.________ 被稱爲封鎖的粒度。

正確答案: 封鎖物件的大小

第九章 數據庫安全性

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

正確答案: 數據庫的安全性是指保護數據庫以防止不合法的使用所造成的數據泄露、更改或破壞。

  1. 數據庫安全性和計算機系統的安全性有什麼關係?

正確答案: 安全性問題不是數據庫系統所獨有的,所有計算機系統都有這個問題。只是在數據庫系統中大量數據集中存放,而且爲許多終端使用者直接共用,從而使安全性問題更爲突出。 系統安全保護措施是否有效是數據庫系統的主要指標之一。 數據庫的安全性和計算機系統的安全性,包括操作系統、網路系統的安全性是緊密聯繫、相互支援的,

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

正確答案: 各個國家在電腦保安技術方面都建立了一套可信標準。目前各國參照或制定的一系列安全標準中,最重要的是美國國防部(DoD)正式頒佈的《 DoD可信計算機系統評估標準》(Trusted Computer System Evaluation Criteria,簡稱TCSEC,又稱桔皮書)。 TDI/TCSEC標準是將TCSEC擴充套件到數據庫管理系統,即《可信計算機系統評估標準關於可信數據庫系統的解釋》( Trusted Database Interpretation 簡稱TDI,又稱紫皮書)。在TDI中定義了數據庫管理系統的設計與實現中需滿足和用以進行安全性級別評估的標準。 TDI與TCSEC一樣,從安全策略、責任、保證和文件四個方面來描述安全性級別劃分的指標。每個方面又細分爲若幹項。

  1. 試述TCSEC(TDI)將系統安全級別劃分爲四組七個等級的基本內容。

正確答案: 根據計算機系統對安全性各項指標的支援情況,TCSEC(TDI)將系統劃分爲四組(division)七個等級,依次是D;C(C1,C2);B(B1,B2,B3);A(A1),按系統可靠或可信程度逐漸增高。 這些安全級別之間具有一種偏序向下相容的關係,即較高安全性級別提供的安全保護包含較低級別的所有保護要求,同時提供更多或更完善的保護能力。 各個等級的基本內容爲: D級 D級是最低級別。一切不符合更高標準的系統,統統歸於D組。 C1級 只提供了非常初級的自主安全保護。能夠實現對使用者和數據的分離,進行自主記憶體取控制(DAC),保護或限制使用者許可權的傳播。 C2級 實際是安全產品的最低檔次,提供受控的存取保護,即將C1級的DAC進一步細化,以個人身份註冊負責,並實施審計和資源隔離。 B1級 標記安全保護。對系統的數據加以標記,並對標記的主體和客體實施強制存取控制(MAC)以及審計等安全機制 機製。 B2級 結構化保護。建立形式化的安全策略模型並對系統內的所有主體和客體實施DAC和MAC。 B3級 安全域。該級的TCB必須滿足存取監控器的要求,審計跟蹤能力更強,並提 供系統恢復過程。 A1級 驗證設計,即提供B3級保護的同時給出系統的形式化設計說明和驗證以確信 各安全保護真正實現。

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

正確答案: 實現數據庫安全性控制的常用方法和技術有: 1) 使用者標識和鑑別:該方法由系統提供一定的方式讓使用者標識自己的名字或身份。每次使用者要求進入系統時,由系統進行覈對,通過鑑定後才提供系統的使用權。 2) 存取控制:通過使用者許可權定義和合法權檢查確保只有合法許可權的使用者存取數據庫,所有未被授權的人員無法存取數據。例如C2級中的自主記憶體取控制(DAC),B1級中的強制存取控制(MAC); 3) 檢視機制 機製:爲不同的使用者定義檢視,通過檢視機制 機製把要保密的數據對無權存取的使用者隱藏起來,從而自動地對數據提供一定程度的安全保護。 4) 審計:建立審計日誌,把使用者對數據庫的所有操作自動記錄下來放入審計日誌中, DBA可以利用審計跟蹤的資訊,重現導致數據庫現有狀況的一系列事件,找出非法存取數據的人、時間和內容等。 5) 數據加密:對儲存和傳輸的數據進行加密處理,從而使得不知道解密演算法的人無法獲知數據的內容。

  1. 什麼是數據庫中的自主記憶體取控制方法和強制存取控制方法?

正確答案: 自主記憶體取控制方法:定義各個使用者對不同數據物件的存取許可權。當使用者對數據庫存取時首先檢查使用者的存取許可權。防止不合法使用者對數據庫的存取。 強制存取控制方法:每一個數據物件被(強制地)標以一定的密級,每一個使用者也被(強制地)授予某一個級別的許可證。系統規定只有具有某一許可證級別的使用者才能 纔能存取某一個密級的數據物件。 *解析:自主記憶體取控制中自主的含義是:使用者可以將自己擁有的存取許可權「自主」地授予別人。即使用者具有一定的「自主」權。

  1. 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 許可權又轉授給了其他使用者,那麼這些許可權也將從其他使用者處收回。

  1. 爲什麼強制存取控制提供了更高級別的數據庫安全性?

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

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

正確答案: 主體是系統中的活動實體,既包括DBMS所管理的實際使用者,也包括代表使用者的各進程。 客體是系統中的被動實體,是受主體操縱的,包括檔案、基表、索引、檢視等。 對於主體和客體,DBMS爲它們每個範例(值)指派一個敏感度標記(Label)。敏感度標記被分成若幹級別,例如絕密(Top Secret)、機密(Secret)、可信(Confidential)、公開(Public)等。主體的敏感度標記稱爲許可證級別(Clearance Level),客體的敏感度標記稱爲密級(Classification Level)。

  1. 什麼是數據庫的審計功能,爲什麼要提供審計功能?

正確答案: 審計功能是指DBMS的審計模組在使用者對數據庫執行操作的同時把所有操作自動記錄到系統的審計日誌中。 因爲任何系統的安全保護措施都不是完美無缺的,蓄意盜竊破壞數據的人總可能存在。利用數據庫的審計功能,DBA可以根據審計跟蹤的資訊,重現導致數據庫現有狀況的一系列事件,找出非法存取數據的人、時間和內容等。

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

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

  1. 數據庫的安全性是指保護數據庫以防止不合法的使用所造成的_______、_

正確答案: 數據泄漏 更改 破壞

  1. 計算機系統有三類安全性問題,即________ 、_________和 ________。

正確答案: 技術安全類 管理安全類 政策法律類

  1. 使用者標識和鑑別的方法有很多種,而且在一個系統中往往是多種方法並舉,以獲得更強的安全性。常用的方法有通過輸入________和 ________來鑑別使用者。

正確答案: 使用者名稱 口令

15.________ 和 ________ 一起組成了DBMS的安全子系統。

正確答案: 使用者許可權定義 合法權檢查機制 機製

  1. 當前大型的DBMS一般都支援________ ,有些DBMS同時還支援________ 。

正確答案: 自主記憶體取控制(DAC) 強制存取控制(MAC)

  1. 使用者許可權是由兩個要素組成的:________ 和 ________ 。

正確答案: 數據物件 操作型別

  1. 在數據庫系統中,定義存取許可權稱爲________ 。SQL語言用________語句向使用者授予對數據的操作許可權,用________語句收回授予的許可權。

正確答案: 授權 GRANT REVOKE

  1. 對數據庫模式的授權由DBA在________ 時實現。

正確答案: 建立使用者

  1. 一個DBA使用者可以擁有________ 、________ 和________ 許可權,一個RESOURCE使用者可以擁有________許可權。

正確答案: CREATE USER CREATE SCHEMA CREATE TABLE CREATE TABLE

  1. 數據庫角色是被命名的一組與________ 相關的許可權,角色是________的集合。

正確答案: 數據庫操作 許可權

  1. 通過________ 可以把要保密的數據對無權存取的使用者隱藏起來,從而自動地對數據提供一定程度的安全保護。

正確答案: 檢視機制 機製

  1. 審計一般可以分爲________ 審計和 ________審計。

正確答案: 使用者級 系統級

第十章 數據庫完整性

  1. 什麼是數據庫的完整性?

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

  1. 數據庫的完整性概念與數據庫的安全性概念有什麼區別和聯繫?

正確答案: 數據的完整性和安全性是兩個不同的概念,但是有一定的聯繫。 前者是爲了防止數據庫中存在不符合語意的數據,防止錯誤資訊的輸入和輸出,即所謂垃圾進垃圾出(Garbage In Garbage Out)所造成的無效操作和錯誤結果。 後者是保護數據庫防止惡意的破壞和非法的存取。 也就是說,安全性措施的防範物件是非法使用者和非法操作,完整性措施的防範物件是不合語意的數據。

  1. 什麼是數據庫的完整性約束條件?可分爲哪幾類?

正確答案: 完整性約束條件是指數據庫中的數據應該滿足的語意約束條件。 一般可以分爲六類: 靜態列級約束、靜態元組約束、靜態關係約束、動態列級約束、動態元組約束、動態關係約束。 靜態列級約束是對一個列的取值域的說明,包括以下幾方面: 1. 對數據型別的約束,包括數據的型別、長度、單位、精度等 2. 對數據格式的約束 3. 對取值範圍或取值集合的約束。 4. 對空值的約束 5. 其他約束 靜態元組約束就是規定組成一個元組的各個列之間的約束關係,靜態元組約束只侷限在單個元組上。 靜態關係約束是在一個關係的各個元組之間或者若幹關係之間常常存在各種聯繫或約束。常見的靜態關係約束有: 1. 實體完整性約束。 2. 參照完整性約束。 3. 函數依賴約束。 動態列級約束是修改列定義或列值時應滿足的約束條件,包括下面 下麪兩方面: 1. 修改列定義時的約束 2. 修改列值時的約束 動態元組約束是指修改某個元組的值時需要參照其舊值,並且新舊值之間需要滿足某種約束條件。 動態關係約束是加在關係變化前後狀態上的限制條件,例如事務一致性、原子性等約束條件。

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

正確答案: DBMS的完整性控制機制 機製應具有三個方面的功能: 1. 定義功能,即提供定義完整性約束條件的機制 機製。 2. 檢查功能,即檢查使用者發出的操作請求是否違背了完整性約束條件。 3. 違約反應:如果發現使用者的操作請求使數據違背了完整性約束條件,則採取一定的動作來保證數據的完整性。

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

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

6.假設有下面 下麪兩個關係模式: 職工(職工號,姓名,年齡,職務,工資,部門號),其中職工號爲主碼; 部門(部門號,名稱,經理名,電話),其中部門號爲主碼; 用SQL語言定義這兩個關係模式,要求在模式中完成以下完整性約束條件的定義: 定義每個模式的主碼;定義參照完整性;定義職工年齡不得超過60歲。

正確答案: CREATE TABLE DEPT (Deptno NUMBER(2), Deptname VARCHAR(10), Manager VARCHAR(10), PhoneNumber Char(12) CONSTRAINT PK_SC PRIMARY 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) REFERENCES DEPT(Deptno));

  1. 關係系統中,當操作違反實體完整性、參照完整性和使用者定義的完整性約束條件時,一般是如何分別進行處理的?

正確答案: 對於違反實體完整性和使用者定義的完整性的操作一般都採用拒絕執行的方式進行處理。而對於違反參照完整性的操作,並不都是簡單地拒絕執行,有時要根據應用語意執行一些附加的操作,以保證數據庫的正確性。具體的處理可以參見上面第5題或《概論》10.2中相應部分。

  1. 數據庫的完整性是指數據的________ 和 ________。

正確答案: 正確性 相容性

  1. SQL標準使用了一系列概念來描述完整性,包括關係模型的________ 、________和 ________完整性。

正確答案: 實體完整性 參照完整性 使用者定義

  1. 數據庫完整性的定義一般由SQL的________ 語句來實現。它們作爲數據庫模式的一部分存入 中。

正確答案: DDL 數據字典

  1. 關係模型的實體完整性在________ 中用________定義。

正確答案: CREATE TABLE PRIMARY KEY

  1. 爲了避免對基本表進行全表掃描,RDBMS核心一般都對________ 自動建立一個________ 。

正確答案: 主碼 索引

13.關係模型的參照完整性在________中用________短語定義哪些列爲外碼列,用________短語指明這些外碼參照哪些表的主碼。

正確答案: CREATE TABLE FOREIGN KEY REFERENCES

第十一章 數據庫管理系統

1.DBMS由哪些主要的程式模組組成?

正確答案: DBMS主要的程式模組有: 1. 數據定義模組 2. 數據操縱模組 3. 數據庫執行管理方面的程式模組 4. 數據庫組織、儲存和管理方面的程式模組 5. 數據庫建立、維護和其他方面的程式模組

2.DBMS的語言翻譯層是如何處理一個DDL語句的?

正確答案: 語言翻譯處理層首先要對DDL語句進行語法檢查、語意檢查和使用者許可權檢查。語意檢查的內容具體做法是,DBMS讀取數據字典,檢查是否存在與該語句中的表,或檢視,或索引等要建立的物件名相同的物件名,檢查該使用者是否具有建立數據庫物件的許可權。 然後把DDL語句翻譯成內部表示,把它儲存在系統的數據字典中。例如新建立一個表,就要把關係名、建立者、屬性個數、記錄長度等等資訊記入數據字典中。

3.試述DBMS的語言翻譯層處理一個DML語句的大致過程。

正確答案: 首先,對DML語句進行詞法分析和語法分析,並把外部關係名、屬性名轉換爲內部名。詞法和語法分析通過後生成語法分析樹。 接着,根據數據字典中的內容進行查詢檢查,包括審覈使用者的存取許可權、檢視轉換和完整性檢查。 然後,對查詢進行優化。優化分爲兩類,一類爲代數優化,另一類爲存取路徑優化。並把選中的查詢執行方案描述出來。 DBMS語言翻譯層處理一個DML語句的過程稱爲一個逐步束縛的過程。

4.試述DBMS的基本功能?

正確答案: DBMS主要是實現對共用數據有效的組織、管理和存取。DBMS的基本功能有: (1)數據庫定義功能; (2)數據存取功能; (3)數據庫執行管理功能; (4)數據組織、儲存和管理功能; (5)數據庫的建立和維護功能; (6)其他功能

5.試述DBMS 四種行程羣組織方案,並分析各種方案的特點和優缺點。

正確答案: DBMS 四種行程羣組織方案是: N方案:N個DB使用者應用程式對應 N個使用者進程,DBMS作爲應用程式的子程式被 連入使用者應用程式中。因此這種方案也稱爲連入式方案。數據庫系統中共有N個進程。 2N方案:每個使用者進程有一個DBMS進程爲之服務,因此N個使用者進程就有N個DBMS 進程,共2N個進程。 N+1方案:N個使用者進程僅有一個DBMS進程爲它們服務,因此共N+1個進程,共 N+1個進程。 N+M方案:用M個DBMS進程爲N個使用者進程提供服務,一般M < N。 這四個方案各自的特點和優缺點請參見《概論》11.2.1、11.2.2、11.2.3、11.2.4。

6.理解並解釋下列術語的含義: 進程、任務、「輕權」進程、執行緒、線索。

正確答案: 進程:操作系統中的核心概念,進程是程式的一次執行過程。進程既是資源分配的最小單 位也是操作系統排程的基本單位。 任務:在單處理器系統中任務與進程是類似的概念。隨着多處理器系統以及並行計算技術 的發展,進程概念被進一步細劃爲任務(Task)與執行緒(Thread)的概念。任務是 申請資源的基本單位,而執行緒是排程和執行的基本單位。 輕權進程:執行緒又被稱爲「輕權」或「輕量」 進程。 線索:是數據庫系統中的概念,它借鑑了操作系統中「執行緒」的概念:整個DBMS可以看 作是一個Task,當有一個使用者申請數據庫服務時,Task分配多個Thread爲之服務, 多個Thread並行工作,共用資源。一般地講,DBMS中的線索是DBMS的一個執 行流。

7.什麼是DBMS的多線索機制 機製?有什麼優點?

正確答案: DBMS借鑑了操作系統中「執行緒」的概念和技術,在DBMS的實現中採用多線索機制 機製。 一般地講,DBMS中的線索是DBMS的一個執行流,它服務於整個DBMS系統或DBMS中的某個使用者;DBMS伺服器響應客戶請求是通過爲每個使用者建立線索(而不是建立進程)來完成的。DBMS的各個線索能在邏輯上並行執行;它們共存於一個伺服器進程中,共用DBMS的所有資源,如數據庫緩衝區和CPU時間;線索是DBMS的排程單位,伺服器進程能按一定的排程演算法排程使用者請求。 與進程相比,線索具有以下優點: 1)線索比進程佔用較少的系統資源,如記憶體 2)線索排程比較靈活,可控制性強 3)線索切換開銷較小 4)線索間通訊簡便

8.什麼是處理DML語句的解釋方法和預編譯方法?試述二者的區別,聯繫,比較各自的優缺點。

正確答案: 解釋執行DML語句的方法是:執行語句前,該語句都以原始字串的形式儲存。當執行到該語句時,才利用解釋程式去完成束縛的全部過程,同時予以執行。 解釋方法的優點是:應變性強,能適應在解釋過程中發生的數據結構、儲存結構等的變化,因此能保持較高的數據獨立性。缺點是:每次執行一次DML語句時都要經過所有解釋步驟,尤其當這樣的語句位於一個回圈體內時,就要多次重複解釋一個DML語句,顯然效率比較低。 預編譯方法是:在使用者提交DML語句之後對它進行翻譯處理,儲存產生的可執行程式碼。當需要執行時,取出儲存的可執行程式碼加以執行。 優點是:效率高。但是,使用這種方法會遇到這樣的問題:在束縛過程中進行優化所依據的條件可能在執行前已不存在,導致已作出的應用規劃在執行時不再有效。爲了解決這類問題,可以採用自動重編譯技術。

9.試述數據存取層主要的子系統及其功能。

正確答案: 數據存取層中包括記錄存取子系統,事務管理子系統,封鎖子系統,恢復子系統,存取路徑維護子系統,排序/合併模組等等。主要功能有: 1. 記錄存取、事務管理子系統: 記錄存取子系統提供按某個屬性值直接取一個元組和順序取一個元組的存取原語。事務管理子系統提供定義和控制事務的操作。 2. 封鎖子系統,執行併發控制。 3. 恢復子系統:主要是日誌登記子系統把事務開始、滾回、提交;對元組的插入、刪除、修改;對索引記錄的插入、刪除、修改等每一個操作作爲一個日誌記錄存入日誌檔案中, 對不同的故障恢復策略執行恢復。 4. 控制資訊管理模組: 該模組利用專門的數據區(記憶體中)登記不同記錄型別以及不同存取路徑的說明資訊(取自數據字典)和控制資訊。 5. 存取路徑維護子系統:對數據執行插入、刪除、修改操作的同時要對相應的存取路徑進行維護。 6. 排序/合併子系統: 在語言翻譯處理層中,描述性語言表達的集合級操作被轉換成一系列的對數據存取層所提供的存取原語的呼叫。爲了得到使用者所要求的有序輸出,爲了加速關係運算(如自然連線)的中間步驟,爲了提高效率,常常需要對關係元組重新排序。這一工作由排序/合併子系統來完成

10.在操作系統中也有併發控制問題,爲什麼DBMS還要併發控制機制 機製?

正確答案: 操作系統提供的封鎖機制 機製和DBMS的封鎖機制 機製在封鎖物件,封鎖物件的狀態,封鎖的粒度,及封鎖的型別上存在很大的差別,操作系統的封鎖機制 機製不能直接應用在DBMS中,DBMS必須重新設計,來滿足複雜的封鎖需求。

11.DBMS中爲什麼要設定系統緩衝區?

正確答案: 設立系統緩衝區的原因: 一是爲了把儲存層以上DBMS各系統成分和實在的外存裝置隔離,外存裝置的變更不會影響這些系統,使DBMS具有裝置獨立性。 二是爲了提高效率。DBMS利用系統緩衝區滯留數據。當需要讀取數據時系統首先到緩衝區中查詢。只有當緩衝區中不存在該數據時才真正從外存讀入該數據所在的頁面。當要寫回一元組到數據庫中時,系統並不把它立即寫回外存,僅把該元組所在的緩衝區頁面作一標誌,表示可以釋放。只有當該使用者事務結束或緩衝區已滿需要調入新頁時才按一定的淘汰策略把緩衝區中已有釋放標誌的頁面寫回外存。這樣可以減少I/O次數,提高系統效率。

12.數據庫中要儲存和管理的數據內容包括哪些方面?

正確答案: 數據庫中儲存四個方面的數據: 1.數據描述,即數據的外模式、模式、內模式; 2.數據本身; 3.數據之間的聯繫; 4.存取路徑。 這四個方面的數據內容都要採用一定的方式組織、儲存起來。

第十二章 數據庫技術新發展

1.試述數據庫技術的發展過程。

正確答案: 答案要點: 1) 數據模型是數據庫系統的核心和基礎。數據庫技術的三個發展階段應該按照數據模型的進展來界定。按照數據模型的進展,數據庫技術可以相應地分爲三個發展階段。 2) 數據模型的發展經歷了格式化數據模型(包括層次數據模型和網狀數據模型)、關係數據模型兩個階段,以物件導向數據模型爲代表的非傳統數據模型的階段。 3) 同學們可以從每一代數據庫系統的主要特徵、代表性系統、主要成就、優點和不足來了解數據庫技術的發展過程。 層次數據庫系統和網狀數據庫系統的數據模型雖然分別爲層次模型和網狀模型,但實質上層次模型是網狀模型的特例。它們都是格式化模型。它們從體系結構、數據庫語言到數據儲存管理均具有共同特徵,是第一代數據庫系統。 關係數據庫系統支援關係模型。關係模型不僅簡單、清晰,而且有關係代數作爲語言模型,有關係數據理論作爲理論基礎。因此,關係數據庫系統具有形式基礎好、數據獨立性強、數據庫語言非過程化等特色,標誌着數據庫技術發展到了第二代。 第二代數據庫系統的數據模型雖然描述了現實世界數據的結構和一些重要的相互聯繫,但是仍不能捕捉和表達數據物件所具有的豐富而重要的語意,因此尚只能屬於語法模型。 第三代的數據庫系統將以更加豐富的數據模型和更強大的數據管理功能爲特徵,從而滿足傳統數據庫系統難以支援的新的應用要求。

2.當前數據庫技術發展的主要特徵是什麼?

正確答案: 答案要點: 新一代數據庫技術的特點是: (1)物件導向的方法和技術對數據庫發展的影響最爲深遠 數據庫研究人員借鑑和吸收了物件導向的方法和技術,提出了物件導向數據模型(簡稱物件模型)。該模型克服了傳統數據模型的侷限性,促進了數據庫技術在一個新的技術基礎上繼續發展。 (2)數據庫技術與多學科技術的有機結合 計算機領域中其他新興技術的發展對數據庫技術產生了重大影響。傳統的數據庫技術和其他計算機技術如,網路通訊技術、人工智慧技術、物件導向程式設計技術、並行計算技術移動計算技術等的互相結合、互相滲透,使數據庫中新的技術內容層出不窮。 (3)面嚮應用領域的數據庫技術的研究 在傳統數據庫系統基礎上,結合各個應用領域的特點,研究適合該應用領域的數據庫技術,如數據倉庫、工程數據庫、統計數據庫、科學數據庫、空間數據庫、地理數據庫等,這是當前數據庫技術發展的又一重要特徵。

3.試述第一、二代數據庫系統的主要成就。

正確答案: 答案要點: 第一代數據庫系統指層次和網狀數據庫系統,其代表是: (1) 1969年IBM公司研製的層次模型的數據庫管理系統IMS。 (2) 美國數據庫系統語言協商會CODASYL下屬的數據庫任務組DBTG對數據庫方法進行了系統的研究、探討,於20世紀60年代末70年代初提出了若幹DBTG報告。DBTG 報告確定並建立了數據庫系統的許多概念、方法和技術。DBTG所提議的方法是基於網狀結構的。它是數據庫網狀模型的典型代表。在DBTG方法和思想的指引下數據庫系統的實現技術不斷成熟,開發了許多商品化的數據庫管理系統,它們都是基於網狀模型或層次模型的。 可以說,層次數據庫是數據庫系統的先驅,而網狀數據庫則是數據庫概念、方法、技術的奠基。它們是數據庫技術中研究得最早的兩種數據庫系統。 支援關係數據模型的關係數據庫系統是第二代數據庫系統。 20世紀70年代是關係數據庫理論研究和原型開發的時代,其中以IBM San Jose研究室開發的System R和Berkeley大學研製的INGRES爲典型代表。經過大量的高層次的研究和開發取得了一系列的成果,主要是: (1)奠定了關係模型的理論基礎,給出了人們一致接受的關係模型的規範說明。 (2)研究了關係數據語言,有關係代數、關係演算、SQL語言及QBE等。這些描述性語言一改以往程式設計語言和網狀、層次數據庫系統中數據庫語言的風格,以其易學易懂的優點得到了終端使用者的喜愛,爲20世紀80年代數據庫語言標準化打下了基礎。 (3)研製了大量的RDBMS的原型,攻克了系統實現中查詢優化、併發控制、故障恢復等一系列關鍵技術。不僅大大豐富了DBMS實現技術和數據庫理論,更重要的是促進了RDBMS產品的蓬勃發展和廣泛應用。 在計算機領域中把20世紀70年代稱爲數據庫時代。20世紀80年代幾乎所有新開發的系統均是關係的。關係數據庫系統從實驗室走向了社會,數據庫技術日益廣泛地應用到企業管理、情報檢索、輔助決策等各個方面,成爲實現和優化資訊系統的基礎和基本技術。

4.第三代數據庫系統的主要特點是什麼?

正確答案: 經過多年的研究和討論,對第三代數據庫系統的基本特徵已有了共識。 (1)第三代數據庫系統應支援數據管理、物件管理和知識管理 除提供傳統的數據管理服務外,第三代數據庫系統將支援更加豐富的物件結構和規則,應該集數據管理、物件管理和知識管理爲一體。由此可以導出第三代數據庫系統必須支援OO數據模型。 (2)第三代數據庫系統必須保持或繼承第二代數據庫系統的技術 第三代數據庫系統應繼承第二代數據庫系統已有的技術,如第二代數據庫系統的非過程化數據存取方式和數據獨立性。不僅能很好的支援物件管理和規則管理,而且能更好地支援原有的數據管理,支援多數使用者需要的即席查詢等。 (3)第三代數據庫系統必須對其他系統開放 數據庫系統的開放性表現在:支援數據庫語言標準;在網路上支援標準網路協定;系統具有良好的可移植性、可連線性、可延伸性和可互操作性等。

5.試述數據模型在數據庫系統發展中的作用和地位。

正確答案: 答案要點: (1)數據模型是數據庫系統的核心和基礎。 (2)數據庫的發展集中表現在數據模型的發展。

6.請用範例闡述數據庫技術與其他學科的技術相結合的成果。

正確答案: 答案要點: 數據庫技術與其他學科的內容相結合,是新一代數據庫技術的一個顯著特徵,涌現出各種新型的數據庫系統(如圖所示)。例如: • 數據庫技術與分佈處理技術相結合,出現了分佈式數據庫系統; • 數據庫技術與並行處理技術相結合,出現了並行數據庫系統; • 數據庫技術與人工智慧技術相結合,出現了知識庫系統和主動數據庫系統; • 數據庫技術與多媒體技術相結合,出現了多媒體數據庫系統; • 數據庫技術與模糊技術相結合,出現了模糊數據庫系統; 等等。

7.請闡述以下數據庫系統的主要概念、研究的主要問題及其發展過程: 分佈式數據庫系統、並行數據庫系統、主動數據庫系統、多媒體數據庫系統、模糊數據庫系統。

正確答案: 答案要點: 下面 下麪僅僅給出有關概念,它們研究的主要問題及其發展過程請參見《概論》。 分佈式數據庫系統:分佈式數據庫是由一組數據組成的,這組數據分佈在計算機網路的不同計算機上,網路中的每個結點具有獨立處理的能力(稱爲場地自治),可以執行區域性應用。同時,每個結點也能通過網路通訊子系統執行全域性應用。(參見《概論》12.2.2與14.1.1) 並行數據庫系統:並行數據庫系統是在並行機上執行的具有並行處理能力的數據庫系統。並行數據庫系統是數據庫技術與並行計算技術相結合的產物。(參見《概論》12.2.2與15.1) 主動數據庫系統:主動數據庫是相對於傳統數據庫的被動性而言的。主動數據庫能根據數據庫的當前狀態,主動適時地做出反應,執行某些操作,向使用者提供有關資訊。主動數據庫是傳統數據庫技術與人工智慧技術、物件導向技術相結合的產物。(參見《概論》12.2.2) 多媒體數據庫系統:可實現對格式化和非格式化的多媒體數據的儲存、管理和查詢的數據庫系統。(參見《概論》12.2.2) 模糊數據庫系統:儲存、組織、管理和操作模糊數據的數據庫系統。(參見《概論》12.2.2)

8.試述數據倉庫的產生背景。

正確答案: 答案要點: 1) 數據庫技術的發展和廣泛應用使許多部門、企業積累了大量的原始數據,這些數據是寶貴的資源 2) 對這些數據的分析和利用可以瞭解企業執行的情況,發現存在的問題,預測未來的趨勢。 3) 數據庫系統作爲數據管理的先進技術已經成功用於事務處理。但是它對分析處理的支援一直不能令人滿意,具體表現在: (1)分析處理時效能低。 (2)分析的數據物件分散,而且不一致,即缺乏對數據的清洗、整合能力。 (3)事務處理系統不具備動態整合的能力。 (4)系統缺乏對歷史數據的有效組織和儲存能力,而分析方法必須以大量的歷史數據爲 依託。 (5)在事務處理系統中儲存的是細節數據,不適合進行分析處理,而事務處理系統又不 具備對數據的綜合能力。 總之,DSS對數據在空間和時間的廣度上都有了更高的要求,而事務處理環境難以滿足這些要求。在事務型環境中直接構建分析型應用是一種失敗的嘗試。數據倉庫正是爲了構建這種新的分析處理環境而出現的一種數據儲存和組織技術。但是數據倉庫的主要驅動力並不是過去的缺點,而是市場商業經營行爲的改變,市場競爭要求捕獲和分析事務級的業務數據。(詳細參見《概論》12.2.3)

9.數據倉庫數據的基本特徵是什麼?

正確答案: 答案要點:四個基本特徵是: • 數據倉庫的數據是面向主題的 • 數據倉庫的數據是整合的 • 數據倉庫的數據是不可更新的 • 數據倉庫的數據是隨時間不斷變化的 (參見《概論》12.2.3)

10.什麼是聯機分析處理?什麼是數據挖掘?

正確答案: 答案要點: 聯機分析處理OLAP是以海量數據爲基礎的複雜分析技術。 OLAP支援各級管理決策人員從不同的角度、快速靈活地對數據倉庫中的數據進行復雜查詢和多維分析處理,並且能以直觀易懂的形式將查詢和分析結果提供給決策人員,以方便他們及時掌握企業內外的情況,輔助各級領導進行正確決策,提高企業的競爭力 數據挖掘是從超大型數據庫(VLDB)或數據倉庫中發現並提取隱藏在內的模式的過程,這些模式是有效的、新穎的、有潛在使用價值的和易於理解的。目的是幫助決策者尋找數據間潛在的關聯,發現經營者忽略的要素,而這些要素對預測趨勢、決策行爲也許是十分有用的資訊。 (詳細參見《概論》12.2.3)

11.基於數據庫技術的DSS解決方案是什麼?

正確答案: 基於數據庫技術的DSS的解決方案是: DW+OLAP+DM DSS的可行方案 數據倉庫、聯機分析處理和數據挖掘是作爲三種獨立的資訊處理技術出現的。數據倉庫用於數據的儲存和組織,OLAP集中於數據的分析,數據挖掘則致力於知識的發現。由於這三種技術內在的聯繫性和互補性,將它們結合起來是一種新的DSS構架。是DSS有效而可操作的整體解決方案。 (詳細參見《概論》12.2.3)

12.什麼是工程數據庫?

正確答案: 工程數據庫是一種能儲存和管理各種工程設計圖形和工程設計文件,並能爲工程設計提供各種服務的數據庫。 主要應用於CAD/CAM,CIM,CASE等工程應用領域。 工程數據庫中,由於傳統的數據模型難以滿足工程應用的要求,需要運用新的模型技術,如擴充套件的關係模型、語意模型、物件導向的數據模型。 工程數據庫管理系統的功能與傳統數據庫管理系統有很大不同,詳細參見《概論》12.2.3。

13.什麼是統計數據庫?

正確答案: 統計數據庫是一種用來對統計數據進行儲存、統計、分析的數據庫系統。 統計數據具有層次型特點,但並不完全是層次型結構。統計數據也有關係型特點,但關係型也不完全滿足需要。統計數據具有一些特殊的性質,例如: (1) 分類屬性和統計屬性 (2) 多維性 (3) 分類屬性的層次結構 (4) 微數據和宏數據之分 統計數據庫中常用的操作有:抽樣、鄰近搜尋、估計與插值、轉置、聚集及複雜的分析操作。這些操作不同於關係數據庫中傳統的查詢、增加、刪除、修改操作。人們希望能從DMBS一級來支援以上的數據特性和操作。因此,研究和發展了統計數據庫技術。 統計數據庫在安全性方面有特殊的要求,要防止某些使用者在統計數據庫中利用對統計數據(如綜合數據)的合法查詢推導出該使用者無權瞭解的某一個體的具體數據。

14.什麼是空間數據庫?

正確答案: 空間數據庫系統是描述、儲存和處理空間數據及其屬性數據的數據庫系統。 空間數據是用於表示空間物體的位置、形狀、大小和分佈特徵等諸方面資訊的數據。 空間數據的特點是不僅包括物體本身的空間位置及狀態資訊,還包括表示物體的空間關係(即拓撲關係)的資訊。 空間數據庫是隨着地理資訊系統(GIS)的開發和應用而發展起來的數據庫新技術。目前,空間數據庫系統不是獨立存在的系統,它是和應用緊密結合,大多數作爲地理資訊系統的基礎和核心的形式出現。 空間數據庫的研究涉及電腦科學、地理學、地圖製圖學、攝影測量與遙感、影象處理等多個學科。空間數據庫技術研究的主要內容包括: (1)空間數據模型 (2)空間數據查詢語言 (3)空間數據庫管理系統 等等。

第十三章 物件導向數據庫系統

  1. 舉例說明超類和子類的概念。

正確答案: 在第4題例子中: 工人和幹部是人的子類,在職工人、退休工人、下崗工人是工人的子類, 行政幹部、技術幹部是幹部的子類; 人是工人和幹部的直接超類。人也是在職工人、退休工人、下崗工人、行政幹部、技術幹部的間接超類。

  1. 物件導向程式設計的基本思想是什麼? 它的主要特點是什麼?

正確答案: 答案要點: 物件導向程式設計的基本思想是封裝和可延伸性。 封裝的特點: 物件導向程式設計就是把數據結構和數據結構上的操作演算法封裝在一個物件之中。 物件是以物件名封裝的數據結構和可施加在這些數據上的私有操作。物件的數據結構 描述了物件的狀態,物件的操作是物件的行爲。 物件導向程式設計中,操作名列在封裝物件的介面上,當其他物件要啓動它的某個操作時,以操作名發一條訊息,該物件接受訊息,操作動作起來,完成對私有數據的加工。當一個物件導向的程式執行完畢時,各物件也就達到了各自的終態。輸入、輸出也由物件自己完成。 這種全封裝的計算實體給軟體帶來了模組性、安全性等顯著優點。因爲它基本沒有數據耦合,物件間沒有因操作而產生的邊界效應,出了錯可以很快找到原因,所以易於維護和修改。 可延伸性的特點: 物件導向程式設計的可延伸性體現在繼承性和行爲擴充套件兩個方面。 因爲物件具有一種層次關係。每個物件可以有子物件。子物件可以繼承父物件(及其祖先物件)的數據結構和操作,繼承的部分就可以重用。 另一方面子物件還可以增加新的數據結構和新的操作。新增加的部分就是子物件對父物件發展的部分。 物件導向程式設計的行爲擴充套件是指可以方便地增加程式程式碼來擴充套件物件的行爲而不會影響該物件上的其他操作。

  1. 定義並解釋OO模型中以下核心概念: 物件與物件標識、封裝、類、類層次。

正確答案: 答案要點:  物件與物件標識OID 現實世界的任一實體被模型化爲一個物件,每個物件有一個唯一的標識,稱爲物件標識。  封裝 每一個物件是其狀態與行爲的封裝,其中狀態是該物件一系列屬性值的集合,而行爲是在物件狀態上操作的集合,操作也稱爲方法。  類 共用同樣屬性和方法集的所有物件構成了一個物件類簡稱類,一個物件是某一類的一個範例。類的屬性的定義域可以是任何類,即可以是基本類也可以是包含屬性和方法的一般類,還也可是這個類自身。  類層次 在一個物件導向數據庫模式中,可以定義一個類(如C1)的子類(如C2),類C1稱爲類C2的超類(或父類別)。子類(如C2)還可以再定義子類(如C3)。這樣,物件導向數據庫模式的一組類形成一個有限的層次結構,稱爲類層次。

  1. OO模型中物件標識與關係模型中的「碼」有什麼區別?

正確答案: 答案要點: 物件標識具有永久永續性。一個物件一經產生系統就給它賦於一個在全系統中唯一的物件識別符號,直到它被刪除。物件標識是由系統統一分配的,使用者不能對物件識別符號進行修改。物件標識是穩定的,獨立於值的,它不會因爲物件中某個值的修改而改變。 關係模型中的「碼」是值標識,不具有永久永續性,只具有程式內永續性。碼是由使用者 建立的,用來區分關係的不同元組。

  1. 什麼是單繼承?什麼是多重繼承?繼承性有什麼優點?

正確答案: 答案要點: 若一個子類只能繼承一個超類的特性(包括屬性、方法和訊息),這種繼承稱爲單繼承;若一個子類能繼承多個超類的特性,這種繼承稱爲多重繼承。 繼承性優點:  它是建模的有力工具,提供了對現實世界簡明而精確的描述。  它提供了資訊重用機制 機製。由於子類可以繼承超類的特性,這就可以避免許多重複定義。 (詳細參見《概論》13.2.4)

  1. 什麼是操作的過載?在OODB中爲什麼要滯後聯編?

正確答案: 答案要點: 在OO模型中對於同一個操作,可以按照類的不同,重新定義操作的實現,這稱爲操作的過載。這樣,同一個操作名就與不同的實現方法,與不同的參數相聯繫。 爲了提供這個功能,OODBMS不能在編譯時就把操作名聯編到程式上,必須在執行時根據實際請求中的物件型別和操作來選擇相應的程式,把操作名與它聯編上(即把操作名轉換成該程式的地址),這個推遲的轉換稱爲滯後聯編。 (詳細參見《概論》13.2.5)

  1. 什麼是OODB模式演進?爲什麼物件導向數據庫模式的修改要比關係模式的修改複雜得多?

正確答案: 答案要點: 物件導向數據庫模式是類的集合。模式爲適應需求的變化會隨着時間而變化,這稱爲模式演進。模式演進包括建立新的類、刪除舊的類、修改類的屬性和操作等。 物件導向數據庫模式的修改要比關係模式的修改複雜的原因是:  模式改變頻繁 使用OODB系統的應用通常需要頻繁地改變OODB數據庫模式。例如OODB經常運用於工程設計環境中,設計環境特徵之一就是不斷變化。  模式修改複雜 OO模型具有很強的建模能力和豐富的語意,包括類本身的語意、類屬性之間和類之間豐富的語意聯繫,這使得模式修改操作的型別複雜多樣。  OODB中模式演進往往是動態的,使得實現技術更加複雜。 (詳細參見《概論》13.4)

  1. 什麼是物件-關係數據庫?它的主要特點是什麼?常用的實現方法有哪些?

正確答案: 答案要點: 物件-關係數據庫系統是將關係數據庫系統與物件導向數據庫系統兩方面的特徵相結合,不僅支援核心的物件導向數據模型,而且支援傳統數據庫系統所具有的特徵。 主要特點有: 1) 具有原來關係數據庫的各種特點; 2) 擴充數據型別; 3) 支援複雜物件; 4) 支援繼承的概念; 5) 提供通用的規則系統; 實現物件-關係數據庫系統的方法主要有以下五類。 1) 從頭開發物件-關係DBMS。 2) 在現有的關係型DBMS基礎上進行擴充套件。擴充套件方法有兩種:  對關係型DBMS核心進行擴充,逐漸增加物件特性。  不修改現有的關係型DBMS核心,而是在現有關係型DBMS外面加一個包裝層。 3) 將現有的關係型DBMS與其他廠商的物件-關係型DBMS連線在一起,使現有的關係型DBMS直接而迅速地具有了物件-關係特徵。連線方法主要有兩種:  關係型DBMS使用閘道器技術與其他廠商的物件-關係型DBMS連線。  將物件-關係型引擎與關係型儲存管理器結合起來,即以關係型DBMS作爲系統的最底層,物件-關係型系統作爲上層。 4) 將現有的OO型DBMS與其他廠商的物件-關係型DBMS連線在一起,使現有的物件導向型DBMS直接而迅速地具有了物件-關係特徵。 5) 擴充現有的物件導向的DBMS,使之成爲物件-關係型DBMS。

第十四章 分佈式數據庫系統

  1. 什麼樣的數據庫系統是分佈式數據庫系統?圖14.1的系統設定在什麼情況下只能算分散的數據庫系統?在什麼條件下纔是分佈式數據庫系統?

正確答案: 答案要點: 分佈式數據庫是由一組數據組成的,這組數據分佈在計算機網路的不同計算機上,網路中的每個結點具有獨立處理的能力(稱爲場地自治),可以執行區域性應用。同時,每個結點也能通過網路通訊子系統執行全域性應用。 分佈式數據庫定義的要點:分佈性、邏輯整體性、自治性和共同作業性。 *解析: (1)分佈性,數據庫中的數據不是儲存在同一場地上,這就可以和集中式數據庫相區別。 (2)邏輯整體性,這些數據邏輯上是互相聯繫的,是一個整體,邏輯上如同集中數據庫。 (3)自治性,分佈數據庫中每個結點上的DBMS具有獨立處理的能力(如果沒有連入網路,也是一個完整的DBMS)。 (4)共同作業性,分佈數據庫中各個結點上的DBMS能相互協調,執行全域性應用。 答案要點: 《概論》圖14.1中,如果使用者既可以通過客戶機對本地伺服器中的數據庫執行區域性應用,也可以對兩個或兩個以上結點中的數據庫執行全域性應用,這樣的系統是分佈式數據庫系統。不支援全域性應用的系統不能稱爲分佈式數據庫系統,即只是分散的數據庫系統。 (詳細說明參見《概論》14.1.1)

  1. 試述研製分佈式數據庫系統的目的和動機。

正確答案: 答案要點:研製分佈式數據庫系統的目的和動機,主要包括技術和組織兩方面。  適應部門分佈的組織結構,降低費用;  提高系統的可靠性和可用性;  充分利用數據庫資源,提高數據庫的利用率和共用程度;  逐步地擴充套件系統處理能力和系統規模。 (詳細說明參見《概論》14.1.3)。

  1. 試述分佈式數據庫系統的模式結構。

正確答案: 答案要點: 分佈式數據庫系統的模式結構可以分爲兩大部分:集中式數據庫系統的模式結構和分佈式數據庫系統增加的模式級別,其中包括: (1)全域性外模式,它們是全域性應用的使用者檢視,是全域性概念模式的子集。 (2)全域性概念模式,它定義分佈式數據庫中數據的整體邏輯結構,使得數據如同沒有分佈一樣。 (3)分片模式,定義片段以及全域性關係到片段的映象。 (4)分佈模式,定義片段的存放結點。分佈模式的映象型別確定了分佈式數據庫是冗餘的還是非冗餘的。 (詳細可參考《概論》圖14.3分佈式數據庫系統的模式結構)。

  1. 什麼是數據分片?有幾種分片方式?數據分片的目的是什麼?有什麼優點?

正確答案: 答案要點: 數據分片就是將數據表按照一定條件劃分成若乾子集,每個子集稱爲一個片段。 分片的方式有多種,水平分片和垂直分片是兩種基本的分片方式,混合分片和導出分片是較複雜的分片方式。 水平分片是指按一定的條件將關係表按行(水平方向)分爲若幹不相交的子集,每個子集爲關係的一個片段。 垂直分片是指將關係按列(垂直方向)分爲若乾子集。垂直分片的各個片段都要包含關係的碼。這樣才能 纔能從各個片段重構原來的關係。 導出分片是指導出水平分片,即水平分片的條件不是本身屬性的條件而是其他關係的屬性的條件。 混合分片是指按上述三種分片方式得到的片段繼續按另一種方式分片。 數據分片的優點是:數據不是按照關係而是按片段來存放,有利於更好地根據使用者需求來組織數據的分佈,也有利於控制數據的冗餘度。

5.試述分佈透明性的內容。

正確答案: 答案要點: 分佈透明性包括分片透明性、位置透明性和區域性數據模型透明性。 分片透明性指使用者或應用程式只對全域性關係進行操作而不必考慮關係的分片。當分片模式改變了,由於全域性模式到分片模式的映象,全域性模式不變,應用程式不必改寫。 位置透明性指使用者或應用程式不必瞭解片段的儲存場地,當儲存場地改變了,由於分片模式到分佈模式的映象,應用程式不必改變。同時,若片段的重複副本數目改變了,數據的冗餘度改變了,使用者也不必關心如何保持各副本的一致性,這就是重複副本的透明性。 區域性數據模型透明性指使用者或使用者程式不必瞭解區域性場地上使用的是哪種數據模型。

6.什麼是同構型D-DBMS? 什麼是異構型D-DBMS?

正確答案: 答案要點: D-DBMS的同構和異構可以有三級:硬體級、操作系統級和區域性DBMS級。其中最主要的是區域性DBMS這一級,因爲硬體和操作系統的不同將由通訊軟體處理和管理。所以,同構型D-DBMS定義爲:在分佈數據庫系統中若每個結點的區域性數據庫具有相同的DBMS則成爲同構型D-DBMS;若各結點的區域性數據庫具有不同的DBMS,則成爲異構型的D-DBMS。 (詳細說明參見《概論》14.2.4)

7.設在《概論》14.2.3節的分佈式數據庫系統例子中,還有全域性關係SC(SNO,CNO,G),它具有兩個導出分片SC_A,SC_B,分別儲存理學院和文學院學生的選課記錄。SC_A存放在場地4,SC_B存放在場地今有一個稍複雜的查詢,從終端輸入一個課程號,查詢選修該課程的學生學號和姓名,並把它們顯示在螢幕上。請寫出具有不同層次分佈透明性(類比例子中的三種情況)的應用程式。不必給出細節,只需寫出演算法思想。

正確答案: 情況1 若系統具有分片透明性,則 Scanf(″% s″,Scnumber); / * 從終端讀入課程號到變數Scnumber中 / EXEC SQL SELECT Sno,Sname INTO :SNO, :NAME / * SNO,NAME爲程式變數 * / FROM SC,Student / * 在全域性關係SC,Student中查詢 * / WHERE SC.Cno =:Scnumber AND SC.Sno=Student.Sno; Printf(″% s,% s″,SNO,NAME); / * 把SNO,NAME輸出在螢幕上 * / 情況2 若系統具有位置透明性,但不具有分片透明性,則 Scanf(″% s″,Scnumber); EXEC SQL SELECT Sno,Sname INTO :SNO, :NAME FROM SC_A,S_A WHERE SC_A.Cno =:Scnumber AND SC_A.Sno=S_A.Sno; If(! FOUND){ EXEC SQL SELECT Sno,Sname INTO :SNO, :NAME FROM SC_B,S_B WHERE SC_B.Cno =:Scnumber AND SC_B.Sno=S_B.Sno; } Printf(″% s,% s″,SNO,NAME); 情況3 若系統只具有區域性數據模型透明性,不具有位置透明性(當然也就不具有分片透明性),則 Scanf(″% s″,Scnumber); EXEC SQL SELECT Sno,Sname INTO :SNO,:NAME FROM SC_A AT Site4, S_A AT Site1 / * 先在場地4的片段SC_A和場地1的片段S_A中查詢 / WHERE SC_A.Cno =:Scnumber AND SC_A.Sno=S_A.Sno; If(! FOUND){ EXEC SQL SELECT Sno,Sname INTO :SNO,:NAME FROM SC_B AT Site5,S_B AT Site2 / * 再在場地5的片段SC_B和場地2的片段S_B中查詢*/ /也可以在場地5的片段SC_B和場地3的片段S_B中查詢 / WHERE SC_B.Cno =:Scnumber AND SC_B.Sno=S_B.Sno; } Printf(″% s,% s″,SNO,NAME);

8.對14.3.1節的例子中介紹的六種策略改用下列估算值後分別計算通訊時間: 紅色零件數=1000, 北京供應商的裝運單=10000。

正確答案: 策略1 把關係P傳送到場地A,在A地進行查詢處理,所以, T[1]=1+105×100/104 =103秒(16.7分) 策略2 把關係S,SP傳到場地B,在B地執行查詢處理,所以 T[2]=2+(104+106)×100/104≈10 100秒(2.8小時) 策略3 在場地A連線關係S和SP,選出城市爲北京的元組(104個)然後對這些元組中的每個元組的Pno,詢問場地B看此零件 是否紅色。所以共問答104次,由於不是傳送數據,只是訊息的問答,所以 T[3]=2×104s (5.6小時) 策略4 在場地B選出紅色零件的元組(103個),然後對每一個元組逐一檢查A站,看北京供應商的裝運單中是否有這個零件裝運單(若有則選出SNO)每做這樣一次檢查包括2次訊息,共問一答103次,所以 T[4]=2×103s (33.3分) 策略5 在場地A選出北京的供應商的裝運單把結果送到場地B,在場地B完成最後處理,所以 T[5]=1+(104×100)/104≈101秒 (1.68分) 策略6 在場地B的關係 P 中選出紅色的元組(1000個),把結果送到場地A完成最終處理。所以 T[6]=1+(1000×100)/104=11秒

9.試述下列概念:兩段提交協定(2PC);分佈事務的原子性;全域性死鎖。

正確答案: 答案要點: 2PC:2PC把一個分佈事務的事務管理分爲協調者和參與者。 2PC的第一階段:協調者向所有參與者發出「準備提交」資訊。如果某個參與者準備提交,就回答「就緒」資訊,否則回答「復原」資訊。參與者在回答前,應把有關資訊寫入自己的日誌中。協調者在發出準備提交資訊前也要把有關資訊寫入自己的日誌中。如果在規定時間內協調者收到了所有參與者「就緒」的資訊,則將作出提交的決定,否則將作出復原的決定。 2PC的第二階段:協調者將有關決定的資訊先寫入日誌,然後把這個決定發送給的所有的參與者。所有參與者收到命令之後首先往日誌中寫入「收到提交(或復原)」決定的資訊,並向協調者發送「應答(ACK)」訊息,最後執行有關決定。協調者收到所有參與者的應答訊息後,一個事務的執行到此結束,有關日誌資訊可以離線儲存。 分佈事務的原子性:分佈事務的原子性就應該是:組成一個全域性事務的所有子事務要麼一致地全部提交,要麼一致地全部滾回。 全域性死鎖:全域性事務執行時發生的涉及兩個以上場地上的死鎖。

10.在分佈式數據庫系統中,對多副本的封鎖有幾種解決方法?

正確答案: 處理多副本的封鎖可採取如下幾種方法: (1)對寫操作,要申請對所有副本的X鎖。對於讀操作,只要申請對某個副 本的S鎖。 (2)無論是寫操作還是讀操作都要對多數(大於半數)副本申請X鎖或S鎖。 (3)規定某個場地上的副本爲主副本,所有的讀寫操作均申請對主副本的封鎖。

  1. 分佈式數據庫系統有什麼特點?

正確答案: 答案要點: 分佈式數據庫系統是在集中式數據庫系統技術的基礎上發展起來的,但不是簡單地把集中式數據庫分散地實現,它是具有自己的性質和特徵的系統。  數據獨立性:除了數據的邏輯獨立性與物理獨立性外,還具有數據分佈獨立性亦稱分佈透明性。  集中與自治相結合的控制結構:各區域性的DBMS可以獨立地管理區域性數據庫,具有自治的功能。同時又有集中控制機制 機製,協調各區域性DBMS的工作,執行全域性應用。  數據可以適當冗餘以提高系統的可靠性、可用性和效能。  全域性的一致性、可序列性和可恢復性。分佈式數據庫系統中各區域性數據庫應滿足集中式數據庫的一致性、併發事務的可序列性和可恢復性。除此以外還應保證數據庫的全域性一致性、全域性併發事務的可序列性和系統的全域性可恢復性。 (詳細說明參見《概論》14.1.2)。

第十五章 並行數據庫系統

  1. 並行數據庫系統中有哪幾種常用的數據劃分方法?

正確答案: 答案要點: 劃分數據時可以依據一個屬性的值,也可以同時依據多個屬性的值,前者稱爲一維數據劃分,後者則稱爲多維數據劃分。 一維數據劃分方法相對比較簡單,常用的數據劃分方法有: •輪轉法 •Hash法 •值域劃分法 此外,還有使用者定義的劃分法、模式劃分法、Hybrid_Range劃分法等。 具體說明可參考《概論》15.5.1。

  1. 什麼是並行數據庫系統的伸縮比和加速比?

正確答案: 答案要點: 線性伸縮比是指當任務擴大N倍,系統處理和儲存能力也擴大N倍時系統效能不變。 線性伸縮比= (小任務在小系統上的執行時間)/(大(N倍)任務在大任務上的執行時間)=1 線性加速比是指當任務不變而系統處理和儲存能力擴大N倍時,系統效能也提高N倍。 線性加速比= (小系統上執行一個任務的時間)/(大(N倍)系統上執行同一任務的時間)=N

  1. 什麼是並行數據庫系統?

正確答案: 答案要點: 並行數據庫系統是在並行機上執行的具有並行處理能力的數據庫系統。並行數據庫系統是數據庫技術與並行計算技術相結合的產物。

  1. 試述並行數據庫系統的研製目標。

正確答案: 答案要點: 並行數據庫系統該實現如下目標:  高效能 並行數據庫系統通過將數據庫管理技術與並行處理技術有機結合,發揮多處理機結構 的優勢,提供比相應的大型電腦系統更高的效能價格比和可用性。  高可用性 並行數據庫系統可通過數據複製來增強數據庫的可用性。  可擴充性 系統通過增加處理和儲存能力來平滑地擴充套件效能,應具有線性伸縮比和線性加速比。 具體說明可參考《概論》15.2。

  1. 並行數據庫系統有哪幾種體系結構?試比較它們的特點。

正確答案: 答案要點:從硬體結構來看,根據處理機與磁碟、記憶體的相互關係可以將並行計算機分爲三種基本的體系結構: •共用記憶體結構(SM); •共用磁碟結構(SD); •無共用資源結構(SN)。 此外還有混合結構,即整個系統是Shared_Nothing結構而每個結點是Shared_Memory結構。這種結構綜合了SM與SN的優點。 (1) SM並行結構 SM並行結構由多個處理機、一個共用記憶體(主記憶體儲器)和多個磁碟記憶體構成。多處理機和共用記憶體由高速通訊網路連線,每個處理機可直接存取一個或多個磁碟,即所有記憶體與磁碟爲所有處理機共用。 (2) SD並行結構 SD並行結構由多個具有獨立記憶體的處理機和多個磁碟構成。每個處理機都可以讀寫任何磁碟。 (3) SN並行結構 SN並行結構由多個處理節點構成。每個處理節點具有自己獨立的處理機、記憶體和磁碟記憶體。多個處理機結點由高速通訊網路連線。 並行數據庫系統體系結構的詳細說明可參考《概論》15.3.1、15.3.2、15.3.3。

  1. 闡述並行數據庫系統中並行粒度的概念。

正確答案: 答案要點: 並行粒度是用來刻畫查詢執行的並行程度,有四種並行粒度: 不同使用者事務間的並行性、同一事務內不同查詢間的並行性、同一查詢內不同操作間的並行性和同一操作內的並行性。 具體說明可參考《概論》15.4.1。

  1. 舉例說明水平並行和垂直並行的概念。

正確答案: 水平並行化指:互相獨立的多個操作或者一個操作內互相獨立的多個子操作分別由不同的處理機並行執行的形式。 如果兩個操作OP1和OP2之間沒有數據的依賴關係,這兩個操作可以獨立地並行執行。例如圖(a)中對不同表的掃描操作Scan S和Scan P,由不同的處理機並行執行就是水平並行化的範例。 如果把操作的輸入數據分解爲多個子集,該操作就可以分成多個獨立的子操作,每個子操作只處理一部分數據,這種針對單個操作的並行被稱爲操作內並行。例如圖(c)中的Scan S和Sort S都被分解成三個子操作,每個子操作只對部分數據進行掃描和排序。 如果一個操作的輸出流是另一個操作的輸入流,這兩個操作之間就存在着流水線並行性,操作間流水線並行又被直觀地稱爲垂直並行。垂直並行化也就是指存在流水線方式依賴關係的操作分別由不同處理機並行執行的形式。例如圖(b)中的四個操作都可以採用流水線方式並行執行。 詳細說明可參考《概論》15.4.2。

  1. 並行數據庫系統中並行查詢優化的必要性和困難何在?

正確答案: 答案要點: 查詢優化始終是數據庫管理系統的重要組成部分,查詢優化的目標在於提高執行效率。由於並行數據庫環境中存在多個處理機,並行查詢優化應儘可能地使每個操作並行處理,充分利用系統資源提高並行度來達到提高系統效能的目的。 並行查詢優化面臨的兩大困難在於: (1) 執行計劃的搜尋空間十分龐大 (2) 執行時的某些系統參數比如CPU數目、記憶體大小在優化時是未知的。 具體說明可參考《概論》15.4.4。

  1. 試述數據劃分在並行查詢處理中的重要性。

正確答案: 答案要點: 數據劃分是並行查詢處理的重要基礎。研究和實際表明,數據劃分對於並行數據庫系統的效能具有很大的影響。 通過將每個關係的數據劃分爲小的片段,並把這些小片段均勻地分佈在系統的多個磁碟驅動器上可以降低數據的聚集度,使得每個操作能夠由多個處理機來承擔,從而減少查詢的響應時間並提高整個系統的吞吐量。若負載不均,往往會造成多個處理機結點能力的浪費。所以使用正確的數據分佈演算法以達到負載均衡是並行數據庫中數據分佈的關鍵問題。 具體說明可參考《概論》15.5.1。

  1. 試述並行數據庫系統與分佈式數據庫系統的區別。

正確答案: 答案要點: 分佈式數據庫系統與並行數據庫系統特別是與SN結構的並行數據庫系統具有很多相似點:  它們都是用網路連線各個數據處理結點;  整個網路中的所有結點構成一個邏輯上統一的整體;  使用者可以對各個結點上的數據進行透明存取等等。 分佈式數據庫系統和並行數據庫系統的應用目標和具體實現方法不同,使得它們具有很大的不同:  應用目標不同 並行數據庫系統的目標是充分發揮並行計算機的優勢,利用各個處理機結點並行地完成任務,提高系統的整體效能。 分佈式數據庫系統的目標是實現場地自治和數據的全域性透明共用,而不要求利用網路中的各個結點來提高系統處理效能。  實現方式不同 在並行數據庫系統中各結點間採用高速網路互連,結點間的數據傳輸代價相對較低,因此當某些結點處於空閒狀態時,可以將工作負載過大的結點上的部分任務通過高速網傳送給空閒結點處理,從而實現系統的負載平衡。 在分佈式數據庫系統中,各結點間一般採用區域網或廣域網相連,網路頻寬較低,點到點的通訊開銷較大,因此在查詢處理時一般應儘量減少結點間的數據傳輸量。  各結點的地位不同 在並行數據庫系統中,不存在全域性應用和區域性應用的概念。各結點是非獨立的。 而在分佈式數據庫系統中,各結點除了能通過網路協同完成全域性事務外,更重要的是各結點具有場地自治性。