什麼是候選碼?

碼是最寬泛的概念,主碼、候選碼都屬於碼。

KKR<U,F>R<U,F>中的屬性或屬性組合,若KFUK\stackrel{F}{\longrightarrow}U,則KKRR候選碼。若候選碼多於一個,則選定其中的一個爲主碼
(要看懂以上概念,需要掌握完全函數依賴的相關概念)

通俗的舉例:
假設有一個列表,列名爲大寫的ABCDEF,內容小寫。

假設A能推出其餘所有BCDEF(能唯一區分不同元組的屬性),那麼A就是一個碼。又或者組合(B,C)也能推出其餘所有ADEF(能唯一區分不同元組的屬性組合),那麼這個組合(B,C)也是碼。那麼這個表的碼有:①A; ②(B,C);③其他包含①或②的集合。

候選碼就是碼的基礎上篩選:真子集不能是碼。單個碼A本身也是候選碼,因爲空集是任何一個非空集合的真子集,碼的子集(空集)當然不能推出其他列信息。可以選擇A,也可以選擇(B,C),但是不能選擇(A,B,C),因爲這樣的組合存在真子集(B,C)或者A使得這個子集能夠推出其他列的信息。也不能選擇單個B或者單個C,因爲這樣單個的B或者C都不是碼。也不能選擇大於A或者(B,C)的集合如(B,C,D),這樣的話它的真子集(B,C)還是碼,不符合完全函數依賴的要求(也就是說,候選碼的真子集不能再出現碼)。

A B C D E F
a1 b1 c1 d1 e1 f1
a2 b2 c2 d2 e2 f2
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章