候选码练习


方法:

1. L类:只在左边出现

 R类:只在右边出现

 LR类:同时在左边和右边出现

 NULL类:左边右边都没有出现

2. 属于L类的都是候选码的一部分,并且都是主属性。如果此类已经可以直接推出 

 属于R类的都一定不在候选码里

 属于LR类的:1. 如果L类有,就依次单个与L类的组合,看是不是吗

        2.  

 

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

1. 左边集合为{ABCDE},右边集合为{ACEG}。可知BD只在左边出现(主属性为B、D),一定为候选码的一部分,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皆为候选码,主属性为B、D。

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是左边独有的(主属性为B、D),一定是候选码的一部分,BD+->BD。

2. BD与A组合,ABD+ -> ABDC=U,因此ABD为候选码。

 BD与C组合,BCD+ -> ABCD=U,因此BCD为候选码。

3. ABD、BCD皆为候选码,主属性为B、D。

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

1. 左边={BCD},右边={ACD},A不可能是候选码,CD是候选码一部分(主属性为C、D),CD+->CDA

2. CD与B组合,BCD+->ABCD=U,因此BCD为候选码,主属性为C、D。