候選碼怎麼求?
候選關鍵字的快速求候選碼的方法
首先對於給定的R(U)和函數依賴集F,可以將它的屬性劃分為4類:L類,僅出現在F的函數依賴左部的屬性。R類,僅出現在F的函數依賴右部的屬性。N類,在F的函數依賴左部和右部均未出現的屬性。LR類,在F的函數依賴左部和右部兩部均出現的屬性。根據以下定理和推論來求解候選碼。定理1:對於給定的關係模式R及其函數依賴集F,若X(X∈R)是L類屬性,則X必為R的任一候選碼的成員。推論1:對於給定的關係模式R及其函數依賴集F,若X(X∈R)是L類屬性,且X+包含了R的全部屬性,則X必為R的唯一候選碼。定理2:對於給定的關係模式R及其函數依賴集F,若X(X∈R)是R類屬性,則X不在任何候選碼中。定理3:設有關係模式R及其函數依賴集F,如果X是R的N類屬性,則X必包含在R的任一候選碼中。推論2:對於給定的關係模式R及其函數依賴集F,如果X是R的N類和L類組成的屬性集,且X+包含了R的有屬性,則X是R的唯一候選碼。例:如設有關係模式R(U),其函數依賴集為F,其中:U={A,B,C,D,E}, F={A→C,C→A,B→AC,D→AC}求R的候選碼。解:根據函數依賴可得:屬性B、D為L類,E為N類,因此屬性B、D、E必為候選碼的成員,且此三個屬性的閉包:B+=ABC,(BD)+=ABCD,(BDE)+=ABCDE,根據推論2可得BDE是R的唯一候選碼。所以R的候選碼為BDE。如果把例題中關係模式R(U)中的屬性E去掉,那麼再求R的候選碼的話可以根據推論1得出BD為R的唯一候選碼。快速求解方法適用於判斷有屬性是屬於L類、N類或其中一種的情況下求解。如果有L類和N類的屬性,則求解候選碼速度非常快。簡而言之:L、R、N、LR類。根據定理,L、N類必為侯選碼之一,如果L+包含全部R,則L為唯一侯選。R類不在任何侯選碼中。L+N類且(L+N)+包含所有R,則L+N為唯一侯選。(適於有L、N類至少一種的情況。)
數據庫題目,求關係模式的候選碼,求具體過程
候選關鍵字的求解候選碼基本算法的具體步驟
第1 步,求關係模式R < U,F > 的最小函數依賴集F第2 步,按照上面的定義,分別計算出UL,UR,UB (UL 表示僅在函數依賴集中各依賴關係式左邊出現的屬性的集合; UR 表示僅在函數依賴集中各依賴關係式右邊出現的屬性的集合;另記UB = U - UL - UR)第3 步,若UL ≠Φ,計算UL的閉包,若UL+ = U,則UL 為R 的唯一的候選碼,算法結束. 若UL+ ≠U,轉第4 步. 若UL = Φ,轉第5 步.第4 步,將UL 依次與UB 中的屬性組合,利用上述的定義4 判斷該組合屬性是否是候選碼; 找出所有的候選碼後,算法結束.第5 步,對UB 中的屬性及屬性組合利用上述的定義4 依次進行判斷;找出所有的候選碼後,算法結束.簡而言之:取最小依賴集,計算UL閉包,如果UL閉包包含全屬性,則UL為唯一侯選碼,如果不包含,則依次與UB屬性組合後再求閉包是否包含全屬性。(UL為空時,直接取UB依次組合求閉包)
求候選碼和所有候選碼有什麼區別
碼是關係模式中一個重要概念(候選碼,主碼,外碼,全碼)。 候選碼是碼的一種,設K為關係模式R 中的屬性或屬性組合,若K--F-->U(U對K完全函數依賴),則K為R的候選碼。
候選關鍵字的一般的求候選碼的算法
已知關係模式R(U)屬性集是A1A2...An及R的函數依賴集F,求R(U)的一個候選碼。算法:KEY(X,F)K=A1A2…An;For i=1 to n{求K-Ai相對於F的屬性閉包(K-Ai)F+;if (K-Ai)F + =U then K=K-Aielse then K=K; }return K;利用此算法求R(U)的候選碼時,只能求出一個,並不能保證求出所有的碼。但可以用同樣的方法調整屬性的刪除次序而把所有的候選碼都求解出來。如此題設關係R(ABCD)及R上成立的函數依賴集為F,F={AB→C,C→D,D→A},求R的所有碼。按照上面的算法具體步驟如下:設K={ABCD},當K=BCD時,由於KF+=ABCD,所以根據算法可刪除A;K=CD,由於KF+=ACD又因KF+不等於ABCD,所以根據算法,B不可刪除;K=BD,由於KF+=ABCD且因KF+=AB-CD,所以根據算法C可刪除;K=B,由於KF+=B又因KF+不等於ABCD,所以根據算法,D不可刪除;最後可求出KEY=BD,用同樣的方法調整屬性的刪除次序,還可以得到另外的一個候選碼AB,所以最後可以得到R的碼為BD和AB。一般求解算法適用於在判斷了所有的屬性均是屬於在函數依賴的左部和右部都出現且在後面的幾種算法都不適合的情況下采用的。簡而言之:算法概述——有N個屬性,從1到N循環。K初始為全部屬性,每次循環時減去第N個屬性,如果KF+包含全部屬性,則K的值重新附值為K減去第N個屬性後的值;否則K仍為上次循環後的值。(算法適於所有屬性皆為LR類且其他算法不合適時,實際算時要更換刪除順序後反覆計算)
數據庫 候選碼 範式 15分
範式的判斷:
第一範式(1NF)無重複的列 屬性不可分
第二範式(2NF)屬性完全依賴於主鍵[消除非主屬性對主碼的部分函數依賴] 符合1NF,並且,非主屬性完全依賴於碼
第三範式(3NF)屬性不依賴於其它非主屬性[消除傳遞依賴] 符合2NF,並且,消除傳遞依賴
BC範式(BCNF):符合3NF,並且,主屬性不依賴於主屬性
由於存在 J->K,所以K部分依賴於候選碼(IJ),所以不滿足第二範式。所以該模式只屬於第一範式。
數據庫怎樣求最小函數依賴集,候選碼,分解bcnf例題
因為A->C,C->D,所以A->D
先把這ACD三個從總表中分出來,得出 {ACD}和{ABE}
由於A->D,需要經過C,所以這屬於傳遞依賴,因此{ACD}又可以分為{AC}和{CD}
所以最後答案是{AC}{CD}{ABE}
候選關鍵字的多屬性依賴集候選碼求解法
輸入:關係模式R及其函數依賴集F。輸出:R的所有候選碼。具體步驟:1)把R的所有屬性分為L、R、N和LR四類,並令X代表L、N類,Y代表LR類。2)求X+,如果X+包含了R的全部屬性,則X為R的唯一候選碼,轉⑸;否則,轉⑶。3)在Y中取一個屬性A,求(XA)+,如果它包含了R的全部屬性,則轉⑷;否則,調換一個屬性反覆進行這一過程,直到試完所有Y中的屬性。4)如果已經找到所有的候選碼,則轉⑸;否則在Y中依次去兩個、三個……求它們的屬性閉包,直到其閉包包含R的所有屬性。5)停止,輸出結果。簡而言之:取一個X屬性(X為L、N類)求閉包,如果包含R全部屬性則為碼,否則取一個LR類的Y屬性A,求XA閉包,未包含R全屬性則調換A,包含R全屬性且找到所有碼則結束,否則依次取2、3個。
求R的所有候選碼、 等等、 謝謝!急! 20分
第一題屬性B的依賴關係缺失,無法確定
第二題學號