數據庫系統概論(王珊 第五版)複習要點

本文整理了《數據庫系統概論》一書中的要點,並以問答的形式展示出來。
部分章節還未整理,會持續更新。

提示:右側導航欄有【目錄】
如果對您有幫助,請點個贊加個關注吶。

一、緒論

1、解釋下列定義

  • 數據:描述事物的符號記錄稱爲數據。
    數據與其語義是不可分的。
    數據是數據庫管理的基本對象。
  • 數據庫:數據庫是長期存儲在計算機內、有組織的、可共享的大量數據的集合。
  • 數據庫管理系統(DBMS):計算機的基礎軟件。
  • 數據庫系統:數據庫系統由數據庫、數據庫管理系統、應用程序和數據庫管理員組成的存儲、管理、處理和維護數據的系統。

2、數據庫管理系統的主要功能

  1. 數據定義功能:數據定義語言
  2. 數據組織、存儲和管理:如何實現數據之間的聯繫
  3. 數據操縱功能:數據操縱語言(增刪查改)
  4. 數據庫的事務管理和運行管理
  5. 數據庫的建立和維護功能:數據庫的轉儲、恢復功能
  6. 其它功能:安全性、完整性

3、什麼是數據庫?數據庫有什麼特點?
數據庫是長期存儲在計算機內、有組織的、可共享的大量數據的集合。
數據庫中的數據按一定的數據模型組織、描述和儲存,具有較小的冗餘度、較高的數據獨立性和易擴展性,並可爲各種用戶共享。

4、產生經歷的階段

  1. 人工管理階段
  2. 文件系統階段
  3. 數據庫系統階段

5、數據庫系統的特點

  1. 數據結構化
  2. 數據的共享性高,冗餘度低,以擴充
  3. 數據獨立性高。包括數據的物理獨立性和數據的邏輯獨立性
  4. 數據有DBMS同一管理和控制

6、數據模型的兩大類

  1. 概念模型:又稱信息模型,它是按照用戶的觀點來對數據和信息建模,主要用於數據庫設計。
  2. 邏輯模型:按照計算機系統的觀點對數據建模,主要用於數據管理系統的實現。

7、解釋下列定義

  • 實體:客觀存在並可互相區別的事物稱爲實體。
  • 屬性:實體所具有的某一特性稱爲屬性。
  • 碼:唯一標識實體的屬性集稱爲碼。
  • 實體型:用實體名及其屬性名集合來抽象和刻畫同類實體,稱爲實體型。
  • 實體集:同一類型實體的集合稱爲實體集。
  • 聯繫:實體之間的聯繫通常是指不同實體集之間的聯繫。實體之間的聯繫有一對一,一對多和多對多等多種類型。

8、常用的數據模型

  1. 層次模型
  2. 網狀模型
  3. 關係模型
  4. 面向對象數據模型
  5. 對象關係數據模型
  6. 半結構化數據模型

9、什麼是基本層次聯繫?
基本層次聯繫是指兩個記錄及其他們之間的一對多(或一對一)的聯繫。

10、關係模型的概念

關係模型由關係數據結構、關係操作集合和關係完整性約束三部分組成。關係模型中數據的邏輯結構石一張二維表,它由行和列組成。

11、關係模型的優點

  1. 關係模型與格式化模型不同,它是建立在嚴格的數學概念的基礎上的。
  2. 關係模型的概念單一,所以其數據結構簡單、清晰、用戶易懂易用。
  3. 關係模型的存取路徑對用戶透明,從而具有更高的數據獨立性、更好的安全保密性,也簡化了程序員的工作和數據開發建立的工作。

12、三級模式

  1. 模式:也稱邏輯模型,是數據庫中全體數據的邏輯結構和特徵的描述,是所有用戶的公共數據視圖。
  2. 外模式:也稱子模式或用戶模式,它是數據庫用戶能夠看見和使用的局部數據的邏輯結構和特徵的描述,是數據庫用戶的數據視圖,是與某一應用有關的數據的邏輯表示。
  3. 內模式:也稱存儲模式,一個數據庫只有一個內模式,它是數據物理結構和存儲方式的描述,是數據在數據庫內部的組織方式。
  4. DDL:數據定義語言,用來定義數據庫模式、外模式、內模式的語言。
  5. DML:數據操縱語言,用來對數據庫中的數據進行查詢、插入、刪除和修改的語句。

13、二級映像

  1. 外模式/模式映像:
  2. 模式/內模式映像:

14、兩種獨立性,爲什麼數據庫系統具有數據與程序的獨立性?

  1. 數據與程序的物理獨立性:當數據庫的存儲結構改變了,由數據庫管理員對模式/內模式映像做相應改變,可以使模式保持不變,從而應用程序也不必改變,這就是物理獨立性。
  2. 數據與程序的邏輯獨立性:當數據的邏輯結構即模式改變時,由數據庫管理員對各個外模式/模式的映像做相應改變,可以使外模式保持不變,從而應用程序不必修改,這就是邏輯獨立性。
  3. 數據庫管理系統在三級模式之間提供的兩層映像保證了數據庫系統中的數據能夠具有較高的邏輯獨立性和物理獨立性。

15、使用數據庫系統有什麼好處?
使用數據庫系統的好處是由數據庫管理系統的特點或優點決定的。使用數據庫系統的好處很多,例如,可以大大提高應用開發的效率,方便用戶的使用,減輕數據庫系統管理人員維護的負擔,等等。既便於數據的集中管理,控制數據冗餘,提高數據的利用率和一致性,又有利於應用程序的開發和維護。

16、試述文件系統與數據庫系統的區別和聯繫。
文件系統與數據庫系統的區別是:文件系統面向某一應用程序,共享性差,冗餘度大,數據獨立性差,記錄內有結構,整體無結構,由應用程序自己控制。數據庫系統面向現實世界,共享性高,冗餘度小,具有較高的物理獨立性和一定的邏輯獨立性,整體結構化,用數據模型描述,由數據庫管理系統提供數據的安全性、完整性、併發控制和恢復能力。
文件系統與數據庫系統的聯繫是:文件系統與數據庫系統都是計算機系統中管理數據的軟件。解析文件系統是操作系統的重要組成部分;而 DBMS 是獨立於操作系統的軟件。但是 DBMS 是在操作系統的基礎上實現的;數據庫中數據的組織和存儲是通過操作系統中的文件系統來實現的。

17、舉出適合用文件系統而不是數據庫系統的例子;再舉出適合用數據庫系統的應用例子。

  1. 適用於文件系統而不是數據庫系統的應用例子數據的備份、軟件或應用程序使用過程中的臨時數據存儲一般使用文件比較合適。早期功能比較簡單、比較固定的應用系統也適合用文件系統。
  2. 適用於數據庫系統而非文件系統的應用例子目前,幾乎所有企業或部門的信息系統都以數據庫系統爲基礎,都使用數據庫。例如,一個工廠的管理信息系統(其中會包括許多子系統,如庫存管理系統、物資採購系統、作業調度系統、設備管理系統、人事管理系統等),學校的學生管理系統,人事管理系統,圖書館的圖書管理系統,等等,都適合用數據庫系統。

18、舉出適合用文件系統而不是數據庫系統的例子;再舉出適合用數據庫系統的應用例子。

  1. 適用於文件系統而不是數據庫系統的應用例子數據的備份、軟件或應用程序使用過程中的臨時數據存儲一般使用文件比較合適。早期功能比較簡單、比較固定的應用系統也適合用文件系統。
  2. 適用於數據庫系統而非文件系統的應用例子目前,幾乎所有企業或部門的信息系統都以數據庫系統爲基礎,都使用數據庫。例如,一個工廠的管理信息系統(其中會包括許多子系統,如庫存管理系統、物資採購系統、作業調度系統、設備管理系統、人事管理系統等),學校的學生管理系統,人事管理系統,圖書館的圖書管理系統,等等,都適合用數據庫系統。希望讀者能舉出自己瞭解的應用例子

19、什麼是概念模型?試述概念模型的作用。

  • 概念模型,也稱信息模型,是按用戶的觀點來對數據和信息建模,主要用於數據庫設計。
  • 概念模型實際上是現實世界到機器世界的一箇中間層次。概念模型用於信息世界的建模,是現實世界到信息世界的第一層抽象,是數據庫設計人員進行數據庫設計的有力工具,也是數據庫設計人員和用戶之間進行交流的語言。

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

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

21、試述網狀模型的概念
滿足下面兩個條件的基本層次聯繫集合爲網狀模型。

  1. 允許一個以上的結點無雙親;
  2. 一個結點可以有多於一個的雙親。

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

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

23、數據庫管理員、系統分析員、數據庫設計人員、應用程序員的職責是什麼?
數據庫管理員的職責:(1)決定數據庫中的信息內容和結構;
(2)決定數據庫的存儲結構和存取策略;
(3)定義數據的安全性要求和完整性約束條件;
(4)監控數據庫的使用和運行;
(5)數據庫的改進和重組、重構。
系統分析員負責應用系統的需求分析和規範說明,系統分析員要和用戶及 DBA 相結合,確定系統的硬件、軟件配置,並參與數據庫系統的概要設計。數據庫設計人員負責數據庫中數據的確定、數據庫各級模式的設計。數據庫設計人員必須參加用戶需求調查和系統分析,然後進行數據庫設計。在很多情況下,數據庫設計人員就由數據庫管理員擔任。應用程序員負責設計和編寫應用系統的程序模塊,並進行調試和安裝。


二、關係數據庫

1、解釋下列定義

  1. 域:是一組具有相同數據類型的值的集合
  2. 候選碼:若關係中某一屬性組的值能唯一標識一個元組,而其子集不能,則稱該屬性組爲候選碼。
  3. 主碼:若關係有多個候選碼,選擇一個作爲主碼
  4. 主屬性:候選碼的諸屬性稱爲主屬性。
  5. 非主屬性:(非碼屬性)不包含在任何候選碼中的屬性爲非主屬性。
  6. 全碼:關係模式的所有屬性是這個關係模式的候選碼,稱爲全碼。

2、關係有哪些類型?

  1. 基本關係(又稱基本表或基表)
  2. 查詢表
  3. 視圖表

3、基本關係的6條性質

  1. 列是同質的,每一列中的分量都是同一屬性的。
  2. 不同列可出自同一個域,稱其中的每一列爲一屬性,不同屬性要給予不同的屬性名。
  3. 列的順序無所謂。
  4. 任意兩個元組的候選碼不能取相同的值。
  5. 行的順序無所謂。
  6. 分量必須取原子值,即每一個分量都必須是不可分的數據項。

4、關係模式
R(U,D,DOM,F)

  • R爲關係名
  • U爲組成該關係的屬性名集合
  • D爲U中屬性所來自的域
  • DOM爲屬性向域的映像集合
  • F爲屬性見的數據的依賴關係集合

5、什麼是實體完整性?什麼是參照完整性?

  • 實體完整性:若屬性A是基本關係R的主屬性,則A不能爲空值
  • 參照完整性:若屬性F是基本關係R的外碼,它與基本關係S的主碼K相對應,則對於R中每個元組在F上的值必須:①或者取空值;②或者等於S中某個元組的主碼值(K)
  • 用戶定義的完整性

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

7、試述關係數據語言的特點和分類。
關係數據語言可以分爲三類:

  • 關係代數語言。
  • 關係演算語言:元組關係演算語言和域關係演算語言。
  • SQL:具有關係代數和關係演算雙重特點的語言。
    這些關係數據語言的共同特點是,語言具有完備的表達能力,是非過程化的集合操作語言,功能強,能夠嵌入高級語言中使用。

8、述關係模型的完整性規則。在參照完整性中,爲什麼外部碼屬性的值也可以爲空?什麼情況下才可以爲空?
實體完整性規則是指若屬性A是基本關係R的主屬性,則屬性A不能取空值。
若屬性(或屬性組)F是基本關係R的外碼,它與基本關係S的主碼Ks相對應(基本關係R和S不一定是不同的關係),則對於R中每個元組在F上的值必須爲:或者取空值(F的每個屬性值均爲空值);或者等於S中某個元組的主碼值。即屬性F本身不是主屬性,則可以取空值,否則不能取空值。

9、試述等值連接與自然連接的區別和聯繫。
連接運算符是“=”的連接運算稱爲等值連接。它是從關係R與S的廣義笛卡爾積中選取A,B屬性值相等的那些元組
自然連接是一種特殊的等值連接,它要求兩個關係中進行比較的分量必須是相同的屬性組,並且在結果中把重複的屬性列去掉。

**10、關係代數的基本運算有哪些 ? 如何用這些基本運算來表示其他運算? **
並、差、笛卡爾積、投影和選擇5種運算爲基本的運算。其他3種運算,即交、連接和除,均可以用這5種基本運算來表達。

11、關係代數

大題


三、SQL

SQL代碼

1、試述SQL語言的特點。
答:

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

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

3、試述視圖的優點。

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

4、哪類視圖是可以更新的?哪類視圖是不可更新的?各舉一例說明。
基本表的行列子集視圖一般是可更新的。若視圖的屬性來自集合函數、表達式,則該視圖肯定是不可以更新的。

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


四、數據庫的安全性

1、什麼是數據庫的安全性?
數據庫的安全性是指保護數據庫以防止不合法的使用所造成的數據泄露、更改或破壞。

2 .數據庫安全性和計算機系統的安全性有什麼關係?
安全性問題不是數據庫系統所獨有的,所有計算機系統都有這個問題。只是在數據庫系統中大量數據集中存放,而且爲許多最終用戶直接共享,從而使安全性問題更爲突出。
系統安全保護措施是否有效是數據庫系統的主要指標之一。
數據庫的安全性和計算機系統的安全性,包括操作系統、網絡系統的安全性是緊密聯繫、相互支持的,

3、試述實現數據庫安全性控制的常用方法和技術。
實現數據庫安全性控制的常用方法和技術有:

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

4、什麼是數據庫中的自主存取控制方法和強制存取控制方法?
自主存取控制方法:定義各個用戶對不同數據對象的存取權限。當用戶對數據庫訪問時首先檢查用戶的存取權限。防止不合法用戶對數據庫的存取。
強制存取控制方法:每一個數據對象被(強制地)標以一定的密級,每一個用戶也被(強制地)授予某一個級別的許可證。系統規定只有具有某一許可證級別的用戶才能存取某一個密級的數據對象。

5、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 權限又轉授給了其他用戶,那麼這些權限也將從其他用戶處收回。

6、請用SQL的GRANT 和REVOKE語句(加上視圖機制)完成以下授權定義或存取控制功能:

  1. 用戶王明對兩個表有SELECT 權力。
    GRANT SELECT ON 職工,部門
    TO 王明
  2. 用戶李勇對兩個表有INSERT 和DELETE 權力。
    GRANT INSERT,DELETE ON 職工,部門
    TO 李勇
  3. 每個職工只對自己的記錄有SELECT 權力。
    GRANT SELECT ON 職工
    WHEN USER()=NAME
    TO ALL;
  4. 用戶劉星對職工表有SELECT 權力,對工資字段具有更新權力。
    GRANT SELECT,UPDATE(工資) ON 職工
    TO 劉星
  5. 用戶張新具有修改這兩個表的結構的權力。
    GRANT ALTER TABLE ON 職工,部門
    TO 張新;
  6. 用戶周平具有對兩個表所有權力(讀,插,改,刪數據),並具有給其他用戶授權的權力。
    GRANT ALL PRIVILIGES ON 職工,部門
    TO 周平
    WITH GRANT OPTION;
  7. 用戶楊蘭具有從每個部門職工中SELECT 最高工資、最低工資、平均工資的權力,他不能查看每個人的工資。
    CREATE VIEW 部門工資 AS
    SELECT 部門.名稱,MAX(工資),MIN(工資),AVG(工資)
    FROM 職工,部門
    WHERE 職工.部門號=部門.部門號
    GROUP BY 職工.部門號
    GRANT SELECT ON 部門工資
    TO 楊蘭;

7、把習題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 部門工資;

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

  • 主體是系統中的活動實體,既包括DBMS 所管理的實際用戶,也包括代表用戶的各進程。
  • 客體是系統中的被動實體,是受主體操縱的,包括文件、基表、索引、視圖等。對於主體和 客體,DBMS 爲它們每個實例(值)指派一個敏感度標記(Label )。
  • 敏感度標記被分成若干級別,例如絕密(Top Secret )、機密(Secret )· 可信( Confidential )、公開(PubliC )等。主體的敏感度標記稱爲許可證級別(ClearanCe 玫vel ) ,客體的敏感度標記稱爲密級(Classification Level )。

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

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

☆10、造成數據庫不安全的因素

  1. 非授權用戶對數據庫的惡意存取和破壞
  2. 數據庫中重要或敏感的數據被泄露
  3. 安全環境的脆弱性

11、常用的安全控制方法

  1. 用戶身份鑑別
  2. 存取控制
  3. 自主存取控制方法
  4. 授權:授予與收回
  5. 數據庫角色
  6. 強制存取控制方法

五、數據庫完整性

1、什麼是數據庫的完整性?
數據庫的完整性是指數據的正確性和相容性。

2、數據庫的完整性概念與數據庫的安全性概念有什麼區別和聯繫?
數據的完整性和安全性是兩個不同的概念,但是有一定的聯繫。前者是爲了防止數據庫中存在不符合語義的數據,防止錯誤信息的輸入和輸出,即所謂垃圾進垃圾出( Garba : e In Garba : e out )所造成的無效操作和錯誤結果。後者是保護數據庫防止惡意的破壞和非法的存取。也就是說,安全性措施的防範對象是非法用戶和非法操作,完整性措施的防範對象是不合語義的數據。

3、什麼是數據庫的完整性約束條件?可分爲哪幾類?
完整性約束條件是指數據庫中的數據應該滿足的語義約束條件。一般可以分爲六類:靜態列級約束、靜態元組約束、靜態關係約束、動態列級約束、動態元組約束、動態關係約束。靜態列級約束是對一個列的取值域的說明,包括以下幾個方面:

  1. 對數據類型的約束,包括數據的類型、長度、單位、精度等;
  2. 對數據格式的約束;
  3. 對取值範圍或取值集合的約束;
  4. 對空值的約束;
  5. 其他約束。靜態元組約束就是規定組成一個元組的各個列之間的約束關係,靜態元組約束只侷限在單個元組上。靜態關係約束是在一個關係的各個元組之間或者若干關係之間常常存在各種聯繫或約束。

常見的靜態關係約束有:

  1. 實體完整性約束;
  2. 參照完整性約束;
  3. 函數依賴約束。

動態列級約束是修改列定義或列值時應滿足的約束條件,包括下面兩方面:

  1. 修改列定義時的約束;
  2. 修改列值時的約束。動態元組約束是指修改某個元組的值時需要參照其舊值,並且新舊值之間需要滿足某種約束條件。動態關係約束是加在關係變化前後狀態上的限制條件,例如事務一致性、原子性等約束條件。

4、DBMS 的完整性控制機制應具有哪些功能?
DBMS 的完整性控制機制應具有三個方面的功能:

  1. 定義功能,即提供定義完整性約束條件的機制;
  2. 檢查功能,即檢查用戶發出的操作請求是否違背了完整性約束條件;
  3. 違約反應:如果發現用戶的操作請求使數據違背了完整性約束條件,則採取一定的動作來保證數據的完整性。

5、RDBMS 在實現參照完整性時需要考慮哪些方面?
RDBMs 在實現參照完整性時需要考慮以下幾個方面:

  1. 外碼是否可以接受空值。
  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、關係系統中,當操作違反實體完整性、參照完整性和用戶定義的完整性約束條件時,一般是如何分別進行處理的?
對於違反實體完整性和用戶定義的完整性的操作一般都採用拒絕執行的方式進行處理。而對於違反參照完整性的操作,並不都是簡單地拒絕執行,有時要根據應用語義執行一些附加的操作,以保證數據庫的正確性。

8、什麼是斷言
SQL中,可以使用 CREATE ASSERTION語句,通過聲明性斷言來指定更具一般性的約束。
可以定義涉及多個表的或聚集操作的比較複雜的完整性約束。
斷言創建以後,任何對斷言中所涉及的關係的操作都會觸發關係數據庫管理系統對斷言的檢查,任何使斷言不爲真值的操作都會被拒絕執行。

9、斷言的創建

CREATE ASSERTION <斷言名> <CHECK 子句>

例:限制數據庫課程最多60名學生選修

CREATE ASSERTION ASSE_SC_DB_NUM
	CHECK(60>=(SELECT count(*)
			FROM C, SC
			WHERE SC.CNO=C.CNO AND C.CNAME='SQL')
);

10、刪除斷言

DROP ASSERTION <斷言名>

11、什麼是觸發器?
觸發器(trigger)是用戶定義在關係表上的一類由事件驅動的特殊過程。一旦定義,觸發器將被保存在數據庫服務器中,任何用戶對錶的增刪改操作均由服務器自動激活相應的觸發器,在關係數據庫管理系統核心層進行集中的完整性控制。

12、定義觸發器
觸發器又叫做事件-條件-動作規則。當特定的系統事件(如對一個表進行增刪改操作,事務的結束)發生時,對規則的條件進行檢查,如果條件成立則執行規則中的動作,否則就不執行。規則中的動作體可以很複雜,可以涉及其他表和其他數據庫對象,通常是一段SQL存儲過程。

SQL使用CREATE TRIGGER命令建立觸發器,其格式:CREATE TRIGGER<觸發器名> –(每當觸發事件發生時該觸發器被激活)
{BEFORE|AFTER}<觸發事件>ON<表名> –(指明觸發器激活的時間在執行觸發器事件前或後)
REFERENCING NEW|OLD ROW AS<變量> –(REFERENCING指出引用的變量)
FOR EACH{ROW|STATEMENT} –(定義觸發器的類型,指明動作體執行的頻率)
[WIEN <觸發條件>]<觸發動作體> –(近當觸發條件爲真時才執行觸發動作體)

說明

  1. 只有表的擁有者,即創建表的用戶纔可以在表上創建觸發器,並且一個表上只能創建一定數量的觸發器。觸發器的具體數量由具體的關係數據庫管理系統在設計時確定。
  2. 觸發器名可以包含模式名,也可以不包含模式名。同一模式下,觸發器名必須是唯一的,並且觸發器名和表名必須在同一模式下。
  3. 觸發器只能定義在基本表上,不能定義在視圖上。當基本表的數據發生變化時,將激活定義在該表上相應觸發器事件的觸發器,因此該表也成爲觸發器的目標表。
  4. 觸發事件可以是INSERT、DELETE或UPDATE,也可以是這幾個事件的組合,如INSERT OR DELETE等,還可以說UPDATE OF<觸發列,…>,即進一步指明修改哪些列時激活觸發器。AFTER/DEFORE是觸發器的時機。AFTER表示觸發事件的操作執行之後激活觸發器;DEFORE表示觸發器事件的操作執行之前激活觸發器。
  5. 觸發器按照所觸發動作的間隔尺寸可以分爲行級觸發器(FOR EACH ROW)和語句級觸發器(FOR EACH STATEMENT)。
  6. 觸發器被激活時,只有當觸發條件爲真時觸發動作體才執行,否則觸發動作體不執行。如果省略WHEN觸發條件,則觸發動作體在觸發器激活後立即執行。
  7. 觸發動作體既可以是一個匿名PL/SQL過程塊,也可以說對已創建存儲過程的調用。如果說行級觸發器,用戶可以在過程體中使用NEW和OLD引用UPDATE/INSERT事件之後的新值和UPDAET/DELETE事件之前的舊值;如果是語句級觸發器,則不能在觸發動作體中使用NEW或OLD進行引用。

如果觸發動作體執行失敗,激活觸發器的事件(即對數據庫的增刪改操作)就會終止執行執行,觸發器的目標或觸發器可能影響的其他對象不發生任何變化。

13、激活觸發器
觸發器的執行是由觸發事件激活,並由數據庫服務器自動執行的。一個數據表上可能定義了多個觸發器,如多個BEFORE觸發器、多個AFTER 觸發器等,同一個表上的多個觸發器激活時遵循如下的執行順序:

  1. 執行該表上的BEFIRE觸發器。
  2. 激活觸發器的SQL語句。
  3. 執行該表上的AFTER觸發器。

對於同一個表上的多個BEFORE(AFTER)觸發器,遵循“誰先創建誰先執行”的原則,即按照觸發器創建的時間先後順序執行。有些關係數據庫管理系統按照觸發器名稱的字母排序執行觸發器。

14、刪除觸發器
SQL語句:

DROP TRIGGER<觸發器名>ON<表名>

觸發器必須是一個已創建的,並且只能由相應權限的用戶刪除。

備註:觸發器雖然功能強大,但是每次訪問一個表都可能觸發一個觸發器,會導致系統性能降低,所以要謹慎使用。


六、關係數據理論

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述


七、數據庫設計

1、試述數據庫設計過程。
這裏只概要列出數據庫設計過程的六個階段:

  1. 需求分析;
  2. 概念結構設計;
  3. 邏輯結構設計;
  4. 數據庫物理設計;
  5. 數據庫實施;
  6. 數據庫運行和維護。

這是一個完整的實際數據庫及其應用系統的設計過程。不僅包括設計數據庫本身,還包括數據庫的實施、運行和維護。設計一個完善的數據庫應用系統往往是上述六個階段的不斷反覆。

2、試述數據庫設計過程各個階段上的設計描述。
各階段的設計要點如下:

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

3、試述數據庫設計過程中結構設計部分形成的數據庫模式。
數據庫結構設計的不同階段形成數據庫的各級模式,即:

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

4、什麼是數據庫的概念結構?試述其特點和設計策略。
概念結構是信息世界的結構,即概念模型,其主要特點是:

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

5、什麼是數據庫的邏輯結構設計?試述其設計步驟。
數據庫的邏輯結構設計就是把概念結構設計階段設計好的基本 E 一 R 圖轉換爲與選用的 DBMS 產品所支持的數據模型相符合的邏輯結構。設計步驟爲:

  1. 將概念結構轉換爲一般的關係、網狀、層次模型;
  2. 將轉換來的關係、網狀、層次模型向特定 DBMS 支持下的數據模型轉換;
  3. 對數據模型進行優化。

6、模式、內模式、外模式分別在哪個階段完成的?

  • 模式:邏輯結構設計階段
  • 內模式:物理結構設計階段
  • 外模式:邏輯結構設計階段

7、數據庫的物理設計通常分哪兩步?

  1. 確定數據庫的物理結構,在關係數據庫中主要指存取方法和存儲結構。
  2. 對物理結構進行評價,評價的重點是時間和空間效率。

8、數據庫的物理設計的內容包括什麼?
關係模式選擇存取方法,以及設計關係、索引等數據庫文件的物理存儲結構。

9、常用的存取方法有什麼?
索引方法和聚簇。


九、關係查詢處理和查詢優化

1、選擇操作的實現方法有哪些?

  1. 簡單的全表掃描算法
  2. 索引掃描算法

2、連接操作的常用方法有哪些?

  1. 嵌套循環算法
  2. 排序-合併算法
  3. 索引連接算法
  4. hash join算法

3、物理優化的方法有哪些?

  1. 基於規則的啓發式優化。
  2. 基於代價估算的優化。
  3. 兩者結合的優化。

4、選擇操作的啓發式規則
對於小關係,使用全表順序掃描,即使選擇列上有索引。
對於大關係,啓發式規則有:

  1. 對於選擇條件是“主碼=值”的查詢,查詢結果最多是一個元組,可以選擇主碼索引。
  2. 對於選擇條件是“非主屬性=值”的查詢,並且選擇列上有索引,則要估算查詢結果的元組數目,如果比例較小(<10%)可以使用索引掃描方法,否則還是使用全表順序掃描。
  3. 對於選擇條件是屬性上的非等值查詢或者範圍的查詢,並且選擇列上有索引,則要估算查詢結果的元組數目,如果比例較小(<10%)可以使用索引掃描方法,否則還是使用全表順序掃描。
  4. 對於用AND連接的合取選擇條件,如果有涉及這些屬性的組合索引,則優先採用組合索引掃描方法,如果某些屬性上有一般索引,則可以用[例9.1-C4]中介紹的索引掃描方法,否則使用全表順序掃描。
  5. 對於用OR連接的析取選擇條件,一般使用全表順序掃描。

5、連接操作的啓發式規則

  1. 如果兩個表都已經按照連接屬性排序,則選用排序-合併算法。
  2. 如果一個表在連接屬性上有索引,則可使用索引連接算法。
  3. 如果1.2.都不適用,其中一表較小,則選用hash-join算法。
  4. 最後可選用嵌套循環算法。

6、語法樹優化例題
假設有一學生選課數據庫,其中包含學生S(sno,sname,sage,sdept,ssex), 課程C(cno,cname,ccredit), 選課SC(sno,cno,grade)等關係模式。
查詢“程序設計”課成績在90分以上的學生姓名。
試畫出用關係代數表示的語法樹,並用關係代數表達式優化算法對原始的語法樹進行優化處理。
畫出優化後的語法樹。
在這裏插入圖片描述


十、數據庫恢復技術

1、什麼是事務?
事務是用戶定義的一個數據庫操作序列,這些操作要麼全做,要麼全不做,是一個不可分割的工作單位。是恢復和併發控制的基本單位。

2、事務的ACID特性

  1. 原子性:事務是數據庫的邏輯工作單位,事務中包括的諸操作要麼全做,要麼全部做。
  2. 一致性:事務執行的結構必須是使數據庫從一個一致性狀態變到另一個一致性狀態。
  3. 隔離性:一個事務的執行不能被其它事務干擾。即一個事務的內部操作及使用的數據對其它併發事務是隔離的,併發執行的各個事務之間不能互相干擾。
  4. 持續性:又稱永久性。指一個事務一旦提交,他對數據庫中數據的改變就應該是永久性的。接下來的其它操作或故障不應該對其執行結果有任何影響。

3、事務ACID特性可能遭到破壞的因素有那些?

  1. 多個事務並行運行時,不同事務的操作交叉執行
  2. 事務在運行過程中被強行停止。

4、故障的種類有那些?

  1. 事務內部的故障:事務內部的故障有的是可以通過事務程序本身發現的,更多的是非預期的,不能由事務程序處理。恢復操作是事務撤銷(UNDO)。
  2. 系統故障:(軟故障)系統故障是指造成系統停止運轉任何事件,使得系統要重新啓動。必須在系統重新啓動時,讓所有非正常終止的事物回滾,強行撤銷所有未完成事務;要重做(REDO)已提交的事務,以將數據庫真正恢復到一致狀態。
  3. 介質故障:(硬故障)發生可能性最小,破壞程度最大。
  4. 計算機病毒:一種人爲的故障或破壞。

5、建立冗餘數據最常用的技術是什麼?

  1. 數據轉儲:副本

    • 靜態轉儲:在系統中午運行事務時進行的轉儲操作。
    • 動態轉儲:指轉儲期間允許對數據庫進行存取或修改。
    • 海量轉儲:指每次轉儲全部數據庫。
    • 增量轉儲:指每次只轉儲上一次轉儲後更新的數據。
  2. 登記日誌文件:用來記錄事務對數據庫的更新操作的文件。

    • 以記錄爲單位的日誌文件:
      • 各個事務的開始標記。
      • 各個事務的結束標記。
      • 各個事務的所有更新操作。

    以上三個均作爲日誌文件中的一個日誌記錄,每個日誌記錄的內容主要包括:
    + 事務標識(標明是哪個事務)
    + 操作的類型
    + 操作對象
    + 更新前數據的舊值
    + 更新後數據的新值

    • 以數據塊爲單位的日誌文件,日誌記錄的內容包括
      • 事務標識
      • 被更新的數據塊

6、檢查點記錄的內容包括什麼?

  1. 建立檢查點時刻所有正在執行的事物清單
  2. 這些事務最近一個日誌記錄的地址

7、動態維護日誌文件的方法是什麼?
週期性地執行建立檢查點、保存數據庫狀態的操作。
具體步驟是:

  1. 將當前日誌緩衝區中的所有日誌記錄寫入磁盤的日誌文件中。
  2. 在日誌文件中寫入一個檢查點記錄。
  3. 將當前數據緩衝區的所有數據記錄寫入磁盤的數據庫中。
  4. 把檢查點記錄在日誌文件中的地址寫入一個重新開始文件。

8、使用檢查點方法的優點?

  • 可以改善恢復效率。

☆9、系統使用檢查點方法進行恢復的步驟是?

  1. 從重新開始文件中找到最後一個檢查點記錄在日誌文件中的地址,由該地址在日誌文件中找到最後一個檢查點記錄。
  2. 由該檢查點記錄得到檢查點建立時刻所有正在執行的事務清單UNDO-LIST。
  3. 從檢查點開始正向掃描日誌文件
    1. 如有新開始的事務 Ti,把Ti暫時放入UNDO-LIST隊列
    2. 如有提交的事務Tj,就把Tj從UNDO-LIST隊列移到REDO-LIST隊列;直到日誌文件結束。
  4. 對UNDO-LIST中的每個事務做UNDO操作,對REDO-LIST中的每個事務做REDO操作,

十一、併發控制

1、併發控制是爲了保護什麼的而產生的技術?

  • 爲了保護事務的隔離性和一致性。

2、併發操作可能會帶來哪些問題?

  1. 丟失修改:兩個事務T1、T2,T2提交的結構破壞了T1提交的結果,導致T1的修改被丟失。
  2. 不可重複讀:是指事務T1讀取數據後,T2執行更新操作,使T1無法再現前一次讀取結果。
  3. 讀“髒”數據:是指T1修改某一數據並將其寫回磁盤,T2讀取同一數據後,T1由於某種原因被撤銷,T1修改過的數據被複原,那麼T2所讀數據就是“髒”數據了。

上面三類數據不一致性是因爲併發操作破壞了事務的隔離性。

3、併發控制的主要技術有哪些?

  1. 封鎖
  2. 時間戳
  3. 樂觀控制法
  4. 多版本併發控制

4、排它鎖和共享鎖的概念

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

5、相容性

6、封鎖協議

  1. 一級封鎖協議:事務T在修改數據R之前必須先對其加X鎖,直到事務結束才釋放。
    一級封鎖協議可防止丟失修改,並保證事務T是可恢復的。
  2. 二級封鎖協議:在一級封鎖協議的基礎上,增加事務T在讀取數據R之前必須先對其加S鎖,讀完後釋放S鎖。
    可以防止丟失修改,可進一步防止讀“髒”數據。
  3. 三級封鎖協議:在一級封鎖協議的基礎上,增加事務T在讀取數據R之前必須先對其加S鎖,直到事務結束才釋放。
    可以防止丟失修改和防止讀“髒”數據,可進一步防止了不可重複讀。

7、避免活鎖的簡單方法是什麼?

  • 採用先來先服務的策略。

8、死鎖的解決辦法是什麼?

  • 預防死鎖
    • 一次封鎖法:要求每個事務必須一次將所有要使用的數據全部加鎖,否則不能繼續執行。
    • 順序封鎖法:預先對數據對象規定一個封鎖順序,所有事務都按這個順序實施封鎖。
  • 死鎖的診斷與接觸
    • 超時法:如果一個事務的等待時間超過規定的時限,就認爲發生了死鎖。
    • 等待圖法

☆9、什麼是併發調度的可串並性?
多個事務的併發執行是正確的,當且僅當其結果與按某一次序串行地執行這些事務時的結果相同,稱這種調度策略爲可串行化調度。
可串行性是併發事務正確調度的準則。

10、什麼是衝突操作?
衝突操作是指不同的事務對同一數據的讀寫操作和寫寫操作。

11、如何判斷一個調度是否是衝突可串行化?
若一個調度是衝突可串行化,則一定是可串行化的調度。
衝突可串行化調度是可串行化調度的充分條件,不是必要條件。

12、兩段鎖的含義是什麼?

  1. 事務分爲兩個階段,第一階段是獲得封鎖,也稱爲擴展階段。此階段,事務可以申請獲得任何數據項上的任何類型的鎖,但是不能釋放任何鎖。
  2. 第二階段是釋放封鎖,也稱收縮階段。此階段,事務只能釋放任何數據項上的任何類型的鎖,但不能再申請任何鎖。

13、事務遵守兩段鎖協議是可串行化調度的充分條件,而不是必要條件。

14、什麼是封鎖的粒度?
封鎖對象的大小成爲封鎖粒度,封鎖對象可以是這樣一些邏輯單元:屬性值、屬性值的集合、元組、關係、索引項、整個索引乃至整個數據庫。也可以是一些物理單元:頁、物理記錄等。

15、封鎖粒度與什麼密切相關?
封鎖粒度與系統的併發度和併發控制的開銷密切相關。
封鎖的粒度越大,數據庫所能夠封鎖的數據單元就越少,併發度就越小,系統開銷也越小;反之,封鎖的粒度越小,併發度越高,但系統開銷也就越大。

16、爲什麼加意向鎖?
對某個數據對象加鎖,系統要檢查該數據對象上有無顯式封鎖與之衝突;再檢查其所有上級結點,看事務的顯式封鎖是否與該數據對象上的隱式封鎖衝突;還要檢查其所有下級結點,看他們的顯式封鎖是否與本事務的隱式封鎖衝突。
顯然,這樣的檢查方法效率很低。爲此引入意向鎖,使得數據庫管理系統就無須逐個檢查下一級結點的顯式封鎖。

17、什麼是意向鎖?
意向鎖的含義是如果對一個結點加意向鎖,則說明該結點的下層結點正在被加鎖;對任一結點加鎖時,必須對它的上級結點加意向鎖。

18、意向鎖有哪幾種?

  1. 意向共享鎖(IS鎖)
  2. 意向排他鎖(IX鎖)
  3. 共享意向排它鎖(SIX鎖)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章