文章目錄
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 NULL
和IS NOT NULL
11.簡述數據字典
數據字典是對數據表中數據元素的定義和描述,目的是對數據流程圖中的各個元素進行詳細的說明。數據字典和數據流程圖共同構成了系統的邏輯模型。
12.數據庫故障恢復策略
- 事務故障恢復:由系統自動完成,反向掃描日誌,對事務更新操作執行逆操作
- 系統故障恢復:由系統重啓時自動完成,正向掃描日誌,記錄REDO隊列和UNDO隊列,對UNDO隊列進行撤銷處理,對REDO隊列進行重做處理
- 介質故障恢復:重裝後援副本+REDO+UNDO
登記日誌文件遵循的兩條原則:
- 登記次序嚴格按照併發事務執行的時間次序
- 必須先寫日誌文件,後寫數據庫