筆試題:數據庫閉包和候選碼求解方法

參考:CSDN1CSDN2
候選碼題目多次出現在互聯網公司筆試選擇題中,作爲非科班小白,特整理如下。

閉包求解方法

通俗地講,閉包就是由一個屬性直接或間接推導出的所有屬性的集合。
計算關係R的屬性集X的閉包的步驟如下:

  1. 設最終將成爲閉包的屬性集是Y,把Y初始化爲X;
  2. 檢查F中的每一個函數依賴A→B,如果屬性集A中所有屬性均在Y中,而B中有的屬性不在Y中,則將其加入到Y中;
  3. 重複步驟2,直到沒有屬性可以添加到屬性集Y中爲止。 最後得到的Y就是X+。

例題1:
設有關係模式R(U,F),其中U={A,B,C,D,E,I},F={A→D,AB→E,BI→E,CD→I,E→C},計算(AE)+
求解過程:
(1) 令X={AE},X(0)=AE;
(2) 在F中尋找尚未使用過的左邊是AE的子集的函數依賴,結果是: A→D, E→C;所以X(1)=X(0)DC=ACDE。
(3) 在F中尋找尚未使用過的左邊是ACDE的子集的函數依賴,結果是: CD→I;所以X(2)=X(1)I=ACDEI,F中尋找尚未使用過函數依賴的左邊沒有X(2)的子集,所以不必再計算下去,即(AE)+=ACDEI。

候選碼求解方法

例題2:關係模型R<U,F>,U={A,B,C,D},F={B→D,AB→C},求R候選碼。

把函數依賴集中F中的屬性分爲四類:

  • L類:所有依賴關係中僅出現在函數依賴左部的屬性。
  • R類:所有依賴關係中僅出現在函數依賴右部的屬性。
  • LR類:所有依賴關係中即出現在函數依賴左部又出現在函數依賴右部的屬性。
  • N類:所有依賴關係中沒有出現的屬性。

定理一:若X(X∈U)是L類屬性,則X必爲R的任一候選碼的成員
定理二:若X(X∈U)是R類屬性,則X不在任何候選碼中。
定理三:若X(X∈U)是LR類屬性,則X可能在候選碼中。
定理四:若X(X∈U)是N類屬性,則X必包含在R的任一候選碼中。
推論:若X(X∈R)是L類和N類組成的屬性集,且X+包含了R的全部屬性;則X是R的唯一候選碼

例題2求解過程:
(1)先判斷屬性集U中所有屬性屬於哪一類。A僅出現在AB→C左邊,屬於L類。B僅出現在B→D左邊和AB→C左邊,屬於L 類。C僅出現在AB→C右邊,屬於R類。D僅出現在B→D右邊,屬於R類。
(2)由定理可知,A,B必在候選碼中,C,D必不在候選碼中。因爲不知道是否還有其他屬性,假定目前候選碼K=AB。
(3)求K=AB的閉包,根據“閉包求法”得:AB+=ABCD,包含了屬性集U。
因此K=AB是R的候選碼,且是唯一候選碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章