候選碼、主碼、主屬性辨析與練習


辨析

1. 候選碼:其閉包為整個U,也就是說U是完全依賴於候選碼的(大多數情況存在傳遞依賴),候選碼可能有多個。

2. 超碼:U是部分依賴於超碼的,簡單來說就是超碼是候選碼中加了一些可有可無的東西。

3. 主碼:如果候選碼多於一個,則選擇其中一個作為主碼(因為隨便哪個都能能被U完全依賴)。

(主碼、候選碼都稱為碼,要自己分析)

4. 主屬性:包含在任何一個候選碼中的屬性為主屬性,意思就是所有候選碼的並集的組合拆分為一個一個屬性(主屬性不可能什么都沒有,有可能是整個U),這些屬性就是主屬性。(可以在候選碼練習中看到)

 

方法

1. L類:只在左邊出現

 R類:只在右邊出現

 LR類:同時在左邊和右邊出現

 NULL類:左邊右邊都沒有出現

2. 先化簡,將右邊全部拆為1個值。  

 屬於L類的都是候選碼的一部分,並且都是主屬性。如果此類已經可以直接推出U,則表示候選碼就是L類的了,無需繼續后面的操作

 屬於R類的都一定不在候選碼里

 屬於LR類的:1. 如果L類有,且只有L類無法推出U,就依次拿單個LR類與L類的組合,看是不是碼

        2. 如果經過與第一輪與一個LR匹配后,剩下的不能匹配的LR則兩兩組合,再與L全體組合看能不能推出U,如果可以,也是候選碼。

        3. 以此類推......

 

例題

R<U,F>,U=(A,B,C,D,E,G),F={AB-->C,CD-->E,E-->A,A-->G}

1. 左邊集合為{ABCDE},右邊集合為{ACEG}。可知BD只在左邊出現,一定為候選碼的一部分,BD+->BD;G只在右邊出現,一定不在候選碼中。

2. BD與A組合,求ABD的閉包:ABD+->ABD

 AB->C => ABD+->ABCD

 CD->E => ABD+->ABCDE

 A->G => ABD+->ABCDEG=U,因此ABD為候選碼

 BD與C組合,求BCD的閉包:BCD+->BCD

 CD->E => BCD+->BCDE

 E->A => BCD+->ABCDE

 A->G => BCD+->ABCDEG=U,因此BCD也為候選碼

 BD與E組合,求BDE的閉包:BDE+->BDE

 E->A => BDE+->ABDE

 AB->C => BDE+->ABCDE

 A->G => BDE+->ABCDEG=U,因此BDE也為候選碼

3. 因此ABD、BCD、BDE皆為候選碼,主屬性為A、B、C、D、E。

 

R(A, B, C, D), F={B->D, AB->C}

1. 左邊={AB},右邊={CD},候選碼為AB,主屬性為A、B。

 

R(A, B, C, D), F={A->B, A->C, D->A}

1. 左邊={AD},右邊={ABC},因此候選碼不可能有B、C;必然有D,D+->DABC=U。因此D為候選碼,主屬性為D。

 

R(A, B, C, D), F={BCD->A, A->C}

1. 左邊={ABCD},右邊={AC}。BD是左邊獨有的,一定是候選碼的一部分,BD+->BD。

2. BD與A組合,ABD+ -> ABDC=U,因此ABD為候選碼。

 BD與C組合,BCD+ -> ABCD=U,因此BCD為候選碼。

3. ABD、BCD皆為候選碼,主屬性為A、B、C、D。

 

R(A, B, C, D), F={B->C, B->D, CD->A}

1. 左邊={BCD},右邊={ACD},A不可能是候選碼,B是候選碼一部分,B+->BCDA=U,因此候選碼為B,主屬性為B

 

R(A, B, C, D, E, F), F={A->BC, CD->E, B->D, BE->F, EF->A}

1. L類:無;R類:無;

 LR類:A、B、C、D、E、F;NULL類:無

2. 先將右邊全部化簡為1個,F={A->B, A->C, CD->E, B->D, BE->F, EF->A}

2. A+ -> {A, B, C, D, E, F},A是候選碼

 B+ -> {BD}

 C+ -> {C}

 D+ -> {D}

 E+ -> {E}

3. BC+ -> {B, C, D, E, F, A},BC是候選碼

 BD+ -> {B, D}

 BE+ -> {B, E, D, F, A, C},BE是候選碼

 BF+ -> {B, F, D}

 CD+ -> {C, D, E}

 CE+ -> {C, E}

 CF+ -> {C, F}

 DE+ -> {D, E}

 DF+ -> {D, F}

 EF+ -> {E, F, A, B, C, D},EF是候選碼

4. 不能有A,BC,BE,EF

 BDF+ -> {B, D, F}

 CDE+ -> {C, D, E}

 CDF+ -> {C, D, F, E, A, B},CDF是候選碼

5. 綜上,A、BC、BE、EF、CDF為候選碼;主屬性為A、B、C、D、E、F。

 


免責聲明!

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



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