1. 程式人生 > 資料庫 >資料庫基本問題【面試必備】

資料庫基本問題【面試必備】

1、一些基本概念

  • 候選健:能夠唯一標識一個元組。在集合中可能有多個候選鍵,注意候選鍵也可能是多個屬性的集合。
  • 主鍵:是候選鍵之一,選取它來組織關係
  • 外來鍵:不是當前關係的候選鍵但卻是另一個關係的候選鍵
  • 主屬性:候選鍵中的任何一個屬性
  • 非主屬性:不包含在任一候選鍵中的屬性

2、完整性約束有哪些?
資料庫的完整性是指資料的正確性和相容性。資料的正確性是指資料是符合現實世界語義、反映當前實際狀況的。資料的相容性是指資料庫同一物件在不同關係表中的資料是符合邏輯的。

  • 實體完整性:關係的主屬性不為空值
  • 參照完整性:在維護兩個表的關係時,外來鍵屬性值在目標表和依賴表上要保持一致
  • 使用者定義完整性:不同的關係資料庫系統根據其應用環境的不同,往往還需要一些特殊的約束條件。使用者定義的完整性即是針對某個特定關係資料庫的約束條件,它反映某一具體應用必須滿足的語義要求。

3、什麼是資料庫約束,常見的約束有哪幾種?
定義資料庫表的時候需要指定的。總體來講,約束可以分為:

  • 主鍵約束:primary key; 唯一性,非空性
  • 外來鍵約束:foreign key;需要建立兩表間的關係並引用主表的列
  • 唯一約束:unique;唯一性,可以空,但只能有一個
  • 檢查約束:check;對該列資料的範圍、格式的限制(如:年齡、性別等)
  • 空值約束:not null;
  • 預設值約束:default;該資料的預設值

4、基本連線運算
兩個關係的連線指的是從兩個關係的笛卡爾積中(全集合)根據條件選取對應行

  • 條件連線:根據條件選取對應行
  • 等值連線:選取兩個關係中共有屬性值相等的元組,不合並屬性
  • 自然連線:在等值連線的基礎上合併公有屬性
  • 外連線:左連線為例,以左表為基礎,連線兩表,如果左表某行在右表中沒有匹配,相應屬性值為空

5、什麼是檢視
檢視是在資料庫中通過Select查詢語句從多張表中提取的多個表字段組成的虛擬表。不包含真正資料,方便使用者從不同角度去觀察資料庫實表。
在滿足一定條件下,允許通過檢視對原表中的資料進行增刪改。

6、關係資料庫的函式依賴關係
函式依賴是指關係表中各個屬性(表中欄位)存在什麼樣的依賴關係

  • 完全函式依賴:屬性集X中所有屬性共同決定屬性Y,缺一個都不行
  • 部分函式依賴:屬性集X的子集可以決定Y
  • 傳遞函式依賴:屬性集X決定Y,Y決定Z

7、正規化是什麼?有哪幾種?


正規化就是根據約束條件的不同將資料庫表分成不同類的表集合。

  • 第一正規化:表中欄位都是單一屬性,不可再分。簡而言之,第一正規化就是無重複的列。缺點是插入修改刪除很不方便
  • 第二正規化:所有非主屬性都不部分函式依賴於任一候選鍵。優點是關係得到細分,具有插入修改刪除的優勢;缺點是資料冗餘,修改複雜,需要修改多處
  • 第三正規化:所有非主屬性都不傳遞函式依賴於任一候選鍵,或說所有非主屬性都完全函式依賴於候選鍵,意味著不存在非主屬性之間的函式依賴
  • BCNF正規化:只存在依賴於候選鍵的函式依賴
    滿足第二正規化,必須滿足第一正規化,以此類推。

8、什麼是資料庫的事務?
事務是使用者定義的資料庫操作的序列,這些操作要麼不做,要麼就全都做,是一個不可分割的工作單位。
事務的四個特性ACID為:原子性、一致性、隔離性、永續性。

  • 原子性(Atomicity):事務中的全部操作在資料庫中是不可分割的,要麼全部完成,要麼全部不執行。
  • 一致性(Consistency):幾個並行執行的事務,其執行結果必須與按某一順序 序列執行的結果相一致
  • 隔離性(Isolation):事務的執行不受其他事務的干擾,事務執行的中間結果對其他事務必須是透明的。
  • 永續性(Durability):對於任意已提交事務,系統必須保證該事務對資料庫的改變不被丟失,即使資料庫出現故障。

9、封鎖協議

  • 一級封鎖協議:事務T在修改資料R之前必須先對其加寫鎖,直到事務結束才釋放(避免丟失修改)

  • 二級封鎖協議:在一級封鎖協議的基礎上增加事務T在讀取資料R之前必須先對其加讀鎖,讀完後即可釋放讀鎖(避免丟失修改和讀髒資料)

  • 三級封鎖協議:在一級封鎖協議的基礎上增加事務T在讀取資料R之前必須先對其加讀鎖,直到事務結束才釋放(避免丟失修改、讀髒資料、不可重複讀)

  • 兩段鎖協議:在對任何資料進行讀寫操作之前,首先要先申請並獲得對該資料的封鎖。在釋放一個鎖之後,事務不再申請和獲得任何其他封鎖