關系模式R(U, F), U={},F是R的函數依賴集,可以將屬性分為4類:
L: 僅出現在依賴集F左側的屬性
R: 僅出現在依賴集F右側的屬性
LR:?在依賴集F左右側都出現的屬性
NLR:?在依賴集F左右側都未出現的屬性
結論1: 若X是L類屬性,則X必為R的任一候選碼成員。若, 則X必為R的唯一候選碼。
結論2: 若X是R類屬性,則X不是R的任一候選碼成員。
結論3: 若X是NLR類屬性,則X必為R的任一候選碼成員。
結論4:??若X是L類和NLR類屬性組成的屬性集,若, 則X必為R的唯一候選碼。
那么,怎樣求屬性的閉包呢?
例如:已知關系模式R(U,F), U=(A,B,C,D,E), F={A->B, D->C, BC->E, AC->B}, 求
根據算法:
設X(0)=AE? ? 逐一掃描F中的各個函數依賴,找出F中左側為AE或者AE子集的函數依賴為A->B, 故有X(1)=AE∪B = ABE
計算X(2), 逐一掃描F中的各個函數依賴,找出F中左側為ABE或者ABE子集的函數依賴為A->B(前面已經并過,沒有意義), 未找到。=ABE≠U,因此AE不是關系R的候選碼。
計算X(n), 找不到算法終止,或者=U,則算法終止。