考研複試常見問題(數據庫系統概論篇)

1.如何理解數據庫規範化過程/概述範式

常見的範式有1NF、2NF、3NF、BCNF,他們的規範化程度是逐步增高的

  • 1NF是指數據庫表的每一列都是不可分割的數據項,只要是關係型數據庫都要滿足1NF;
  • 2NF是在1NF的基礎上消除了非主屬性對碼的部分依賴;
  • 3NF是在2NF的基礎上消除了非主屬性對碼的傳遞依賴;
  • BCNF是在3NF的基礎上消除了主屬性對碼的部分依賴和傳遞依賴。

2.簡述完整性約束條件

完整性約束條件是指數據的正確性和相容性,具體分爲實體完整性、參照完整性、用戶自定義完整性。

  • 實體完整性是對主鍵的約束,主屬性獨一無二且不爲空
  • 參照完整性是對外鍵的約束,外鍵必須是另一個關係的主鍵值或者爲空
  • 用戶自定義完整性是根據用戶需求來的,例如sex字段只能取男或女

3.簡述事務和事務特性

事務是一系列數據操作的集合,要麼通過commit一起成功,要麼通過rollback一起回滾,具有ACID性質

  • A 原子性,事務是最小的操作集合,不可再分割
  • C 一致性,數據庫在事務執行前後都保持一致,在一致性前提下,所有事務對同一個數據的讀取結果都是相同的
  • I 隔離性,一個事務所做的修改在其提交之前,對其他事務是不可見的
  • D 持久性,事務提交之後,所有對數據的修改都永遠保存在數據庫中。

4.併發性一致的問題

  • 【丟失修改】T1、T2事務同時對一個數據進行修改,T1先修改,T2後修改,T2修改的覆蓋了T1的修改,造成了T1事務修改的丟失。
  • 【髒讀】T1事務修改一個數據,但還未提交,之後T2訪問了該數據,這時T1進行了回滾操作,T2再次讀取數據會和第一次不同。
  • 【不可重複讀】T2讀取了一個數據,T1對該數據進行了修改,T2再次讀取,重複讀取的結果不同
  • 【幻讀】T1讀取某一個範圍的數據,T2向這個範圍內插入數據,T1重複讀時發現結果不同了。

解決方案:通過併發控制來保證隔離,併發控制通過封鎖來實現。

5.簡述封鎖

  • 【封鎖粒度】行級鎖和表級鎖。封鎖粒度越小,發生爭用可能性就越小,系統併發度越高,但消耗資源越多(包括獲取鎖、檢查鎖、釋放鎖),需要在鎖開銷併發程度之間進行權衡
  • 【封鎖類型】
    • 讀寫鎖
      • 共享鎖,稱讀鎖、S鎖,加了S鎖,其他程序只能讀,不能寫,只能加S鎖,不能加X鎖
      • 排它鎖,稱寫鎖、X鎖,加了X鎖,其他程序不能讀也不能寫
    • 意向鎖:支持多粒度封鎖,封鎖之前會每行檢查,非常耗時
  • 【封鎖協議】
    • 三級封鎖協議
      • 一級封鎖協議:當T1修改數據時,加X鎖,直到事務結束後釋放X鎖。
      • 二級封鎖協議:在一級封鎖協議基礎上,當T1讀取數據時,加S鎖,讀完馬上釋放S鎖。
      • 三級封鎖協議:在二級封鎖協議基礎上,當T1讀取數據時,加S鎖,等T1事務完全結束時釋放S鎖。
    • 兩段鎖協議:將事務分成加鎖階段和解鎖階段,事務開始時就處於加鎖階段,直到遇到commit或rollback才使事務進入解鎖階段。

6.簡述ER圖

ER圖又稱實體關係圖,由三部分組成:實體、屬性、聯繫。用來進行關係型數據庫系統的概念設計。

  • 實體:用矩形表示,矩形框內寫實體名
  • 屬性:用橢圓形表示,並用無向邊將其與相應實體連接起來
  • 聯繫:用菱形表示,菱形框內寫聯繫名稱,並在無向邊的兩側指明是哪種關係

ER圖轉換爲關係模式的原則:

  • 一對一:在兩個實體中任選一個,添加另一個實體的主鍵即可
  • 一對多:在多的一端添加另一端的主鍵
  • 多對多:需要將聯繫轉換爲實體,並在該實體上加上另外兩個實體的主鍵,作爲聯繫實體的主鍵,再加上聯繫本身的屬性即可

7.簡述數據庫的三級模式結構

數據庫三級模式分爲外模式、模式、內模式。

  • 外模式,又稱子模式,是數據庫用戶可以看到和使用的局部數據的邏輯結構和特徵描述,是數據庫用戶的數據視圖,外模式是模式的子集,一個數據庫可以有多個外模式
  • 模式,又稱概念模式,是數據庫中全體數據的邏輯結構和特徵描述,是所有用戶的公共視圖,一個數據庫只有一個模式
  • 內模式,又稱存儲模式,是數據庫物理結構和存儲方式的描述,是數據在數據庫內部的組織方式。

8.簡述數據庫的二級映像功能和數據獨立性

數據庫的二級映像分爲外模式/模式、模式/內模式。
數據獨立性分爲邏輯獨立性和物理獨立性。

  • 邏輯獨立性:是由外模式/模式映像保證的,當模式發生改變時,DBA對外模式/模式的映射作出相應改變,使外模式保持不變,保證了數據的邏輯獨立性。
  • 物理獨立性:是由模式/內模式映像保證的,當數據庫存儲結構發生變化時,DBA對模式/內模式映射作出改變,使得模式不變,保證了數據的物理獨立性。

9.關係、關係模式、關係數據庫的區別

  • 關係:是關係模式在某一時刻的狀態,關係是動態的、不穩定的,隨時間變化而變化。
  • 關係模式:是靜態的、穩定的
  • 關係數據庫:是建立在關係模式的基礎上,利用關係來描述現實世界。

10.簡述查詢優化的策略

  • 如果子表達式多次出現,先將其計算結果保存起來,避免重複計算
  • 選擇運算儘量先做
  • 儘可能指明展示列,少用*代替
  • 避免在列索引上使用IS NULLIS NOT NULL

11.簡述數據字典

數據字典是對數據表中數據元素的定義和描述,目的是對數據流程圖中的各個元素進行詳細的說明。數據字典和數據流程圖共同構成了系統的邏輯模型。

12.數據庫故障恢復策略

  • 事務故障恢復:由系統自動完成,反向掃描日誌,對事務更新操作執行逆操作
  • 系統故障恢復:由系統重啓時自動完成,正向掃描日誌,記錄REDO隊列和UNDO隊列,對UNDO隊列進行撤銷處理,對REDO隊列進行重做處理
  • 介質故障恢復:重裝後援副本+REDO+UNDO

登記日誌文件遵循的兩條原則:

  • 登記次序嚴格按照併發事務執行的時間次序
  • 必須先寫日誌文件,後寫數據庫
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章