找到所有包含 3 个属性的候选键(如果有)?样本中期

Find all candidate keys that consist of 3 attributes if any? Sample Midterm

这是我的数据库课程期中考试示例中的一道题。中期没有给我们解决方案,我只是想问一下我的解决方案是否在任何意义上都是正确的

Consider the following relation T=(N,A,I,V,L,P,C,D)

with the FD={N->AI , AV->LP, VC->PD, VL->P, LA->D, NP->IVL, CID-> LVP, AD->IP}
Find all candidate keys that consist of 3 attributes if any? 

我试图解决这个问题,结果如下:

Left Attributes = N,C
Middle Attributes = A,I,V,L,P,D
Right Attributes = None

然后我用 NC 做了 3 个属性对并找到了它们的闭包:

NC+ = {NCAI} NO
NCA+ = {NCA} NO
NCI+ = {NCI} NO
NCV+ = {NCVPDAIL} = Get PD from VC->PD AND AI from N->AI and L from NP->IVL? Is this correct? If IV is already in there can I use this dependency to get L?
NCL+ ={NCLAIDVP} = Get AI from N->AI & D from LA->A and VP from CID->LVP using same logic from above?
NCP+ = {NCPAIVLD} straight forward using same logic from above
NCD+ = {NCDAILVD} YES

所以我得到了 4 个候选键,其中有 3 个属性。 分别是 NCV、NCL、NCP、NCD。

所以我确定了还是应该只有一个候选密钥应该是 NCD?

谢谢!

你已经给出了正确的答案。该关系只有四个候选键,NCV、NCL、NCP、NCD,都具有三个属性。

N 和 C 必须始终出现在每个键中,因为它们只出现在左侧部分。尝试向它们添加其他属性并计算闭包是检查哪些是键所需要的。请注意,NCA+ 和 NCI+ 等于 NC+ 并产生 NCAI。您也应该尝试组合 NCAI+,但结果是一样的。所以,最后NC加的四个属性V L P和D各生成一个key,你的答案是正确的。