1. 程式人生 > >數據庫常見面試題(1)

數據庫常見面試題(1)

過程 屬性 規則 ima isolation exec 執行過程 red ron

1. 超鍵、候選鍵、主鍵、和外鍵

定義:

  • 超鍵(super key):在關系中能惟一標識元素屬性的集稱為關系模式的超鍵。
  • 候選鍵:(Candidate Key):不含有多余屬性的超鍵稱為候選鍵。也就是說在候選鍵中再刪除屬性,就不是候選鍵了。
  • 主鍵(Primary Key):用戶選作元組標識的候選鍵為主鍵。
  • 外鍵(Froeign Key):如果模式R中的屬性k是其他模式的主鍵,那麽k在模式R中稱為外鍵。

示例:學生表中含有屬性學號、身份證號、姓名和性別,其中學號和身份證號是唯一的,姓名和性別不是唯一的

  • 學號:唯一,所以是一個超鍵;不含有多余屬性,所以是候選鍵
  • 身份證號:唯一,所以是一個超鍵;不含有多余屬性,所以是候選鍵
  • (學號,姓名):唯一,所以是一個超鍵;含有多余屬性姓名,所以是候選鍵
  • (身份證號,性別):唯一,所以是一個超鍵;含有多余屬性性別,所以是候選鍵
  • (學號,性別,姓名):唯一,所以是一個超鍵;含有多余屬性姓名和性別,所以是候選鍵
  • 姓名:不唯一,不是一個超鍵

2.數據庫中事務的特性

事務(transaction)的四個基本特性:ACID,原子性(Atomicity)、一致性(Correspondence)、隔離性(Isolation)、持久性(Durability)

  • 原子性:整個事務中的所有操作,要麽全部完成,要麽全部不完成,不可能停滯在中間某個環節。事務在執行過程中發生錯誤,會被回滾(Rollback)到事務開始前的狀態,就像這個事務從來沒有執行過一樣。
  • 一致性:在事務開始之前和事務結束以後,數據庫的完整性約束沒有被破壞。
  • 隔離性:隔離狀態執行事務,使它們好像是系統在給定時間內執行的唯一操作。如果有兩個事務,運行在相同的時間內,執行 相同的功能,事務的隔離性將確保每一事務在系統中認為只有該事務在使用系統。這種屬性有時稱為串行化,為了防止事務操作間的混淆,必須串行化或序列化請 求,使得在同一時間僅有一個請求用於同一數據。
  • 持久性:在事務完成以後,該事務所對數據庫所作的更改便持久的保存在數據庫之中,並不會被回滾。

3.視圖的作用

視圖是虛擬的表,只包含使用時動態檢索數據的查詢,不包含任何列或數據

  • 使用視圖可以簡化復雜的sql操作,隱藏具體的細節,保護數據;視圖創建後,可以使用與表相同的方式利用它們。
  • 視圖不能被索引,也不能有關聯的觸發器或默認值,如果視圖本身內有order by 則對視圖再次order by將被覆蓋。
  • 對於某些視圖比是可以對其更新的,對視圖的更新將對基表進行更新;但是視圖主要用於簡化檢索,保護數據,並不用於更新,而且大部分視圖都不可以更新。

4.存儲過程與觸發器的區別

存儲過程(Stored Procedure)是一組為了完成特定功能的SQL 語句集,存儲在數據庫中,經過第一次編譯後再次調用不需要再次編譯,用戶通過指定存儲過程的名字並給出參數(如果該存儲過程帶有參數)來執行它。

觸發器(trigger)是一種與表事件相關的特殊的存儲過程,它的執行不是由程序調用,也不是手工啟動,而是由事件來觸發,比如當對一個表進行操作( insert,delete, update)時就會激活它執行觸發器經常用於加強數據的完整性約束和業務規則等。

觸發器與存儲過程非常相似,兩者唯一的區別是觸發器不能用EXECUTE語句調用,而是通過事件執行觸發而被執行的,而存儲過程可以通過存儲過程名稱名字而直接調用。

數據庫常見面試題(1)