候選碼、主碼、超碼、全碼、主屬性、非主屬性、非碼屬性的定義理解


候選碼、主碼、超碼、全碼、主屬性、非主屬性、非碼屬性的定義理解

候選碼(碼):設K為R<U,F>中的屬性或屬性組合,若U完全依賴K,則K為R的候選碼。

具體一些,比如一個學生表,有了學號可以查到一個學生所有個人信息,這就是所說的完全依賴。

超碼:如果說U部分依賴K,則K為R的候選碼,候選碼是最小的超碼,如果任意超碼的真子集不能包括超碼,則稱其為候選碼,超碼包括候選碼。

主碼:若候選碼只有一個,則該候選碼為主碼。若候選碼多於一個,則選定其中一個為主碼。候選碼可以作為主碼,主碼一定是候選碼,但候選碼不一定是主碼。

理解:主碼是人為挑選出來的,是隨機的,不是確定的。

實例:如果說有學生(學號,姓名,身份證),候選碼就是(學號,身份證),主碼可以是學號,也可以是身份證,隨您喜歡

1587655705021

主屬性:包含任何一個候選碼的屬性集合稱為主屬性。

比如,競賽表(競賽編號,競賽名稱,競賽組織者) PS:競賽名稱和競賽組織者都可以重復

很明顯可以看出競賽編號能夠唯一標識整張競賽表,因此候選碼是競賽編號,並且僅此一個候選碼,其他屬性都不能唯一標識整張表,所競賽編號同時也是主碼

這時候判斷一下這幾個屬性or屬性組是否是主屬性,(競賽編號)(競賽編號,競賽名稱)(競賽名稱,競賽組織者),(競賽編號)只有一個屬性,這個屬性是主碼,主碼必定為候選碼,因此屬性含有一個候選碼,這個屬性是主屬性。(競賽編號,競賽名稱)有兩個屬性,其中競賽編號是候選碼,而競賽名稱不是候選碼,那他是啥呢~前面有提到了,因為它跟候選碼在同一個屬性組里,所以,競賽名稱是超碼,回過頭來,最后得出該屬性組含有了一個候選碼,因此該屬性組中的各個屬性都是主屬性。(競賽名稱,競賽組織者)有兩個屬性,可以看出這兩個屬性都不是候選碼,因此這個屬性組不包含候選碼,屬性組中中得各個元素稱為非主屬性。

do you know?~

非主屬性(或非碼屬性):不包含任何一個候選碼的屬性集合稱為非主屬性。

實例:對於表Student(A,B,C),有關系集合R{A→B,B→C},可以得出A為候選碼(求候選碼求不闡述啦博客里有),則A為主屬性,BC為非主屬性。

全碼:所有屬性都是候選碼,則稱為全碼。

寫得比較散QAQ但是偶自己在幾個月后看還是有所收獲的,相信大家能有所收獲XD有不對的或者疑問的可及時指出


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM