回答

收藏

超级键、候选键和主键

技术问答 技术问答 486 人阅读 | 0 人回复 | 2023-09-14

有没有好心的人可以通过以下简单的例子澄清我的问题,确定超键、候选键和主键?# ~6 f. x6 N+ P9 N4 z2 q3 G
我知道有很多帖子和网站解释了它们之间的区别。但看起来所有都是通用定义。
0 F6 T5 }( k7 o- _% K* e. R" o1 h+ l例子:% B% ]$ Z( @1 E! k7 C) L
Student (StudentNumber,FamilyName,Degree,Major,Grade,PhoneNumber)所以我可以从上面的例子中知道StudentNumber是主键。
$ l  w4 q- z9 ?: I9 c: e但是对于超级键,我有点困惑。哪些属性组合可以分组成超级键?, d$ C1 H- Z0 ~- P9 E! ^
至于候选密钥,我对给出的定义感到困惑,因为任何候选密钥都可以用作主密钥。
2 w0 W% [8 X3 Y3 ?* C9 t这是否意味着像这样的属性?PhoneNumber是候选键,可以是主键(假设一个人PhoneNumber只属学生), t8 D) f* p' o9 h0 {, A. X
感谢您的澄清!
) ~- D/ o/ c& c/ @                                                                4 T2 \6 k! U" \- D
    解决方案:                                                                , v3 v6 u8 j5 f2 N5 w
                                                                综上所述,超级键是一组唯一的定义列,因为你不需要教科书的定义。
0 _5 Q# k9 q$ V: j/ q) S集合可以有一个或多个元素,一个表可以有多个超级键。通常,您可以通过功能依赖来完成此操作。/ d" f4 m% j0 e6 Q
在你的例子中,我假设:3 V1 d0 e5 t4 U/ w' _
StudentNumber    uniqueFamilyName     not uniqueDegree     not uniqueMajor      not uniqueGrade      not uniquePhoneNumber    not unique在这种情况下,超级键是包含学生编号的任何组合。8 Y0 g2 R) p/ R4 B% ?8 }
所以下面是超级键( _) G/ r+ ]/ a% W2 D, ?! q
StudentNumberStudentNumber,FamilyNameStudentNumber,FamilyName,DegreeStudentNumber,FamilyName,Degree,MajorStudentNumber,FamilyName,Degree,Major,GradeStudentNumber,FamilyName,Degree,Major,Grade,PhoneNumberStudentNumber,DegreeStudentNumber,Degree,MajorStudentNumber,Degree,Major,GradeStudentNumber,Degree,Major,Grade,PhoneNumberStudentNumber,MajorStudentNumber,Major,GradeStudentNumber,Major,Grade,PhoneNumberStudentNumber,GradeStudentNumber,Grade,PhoneNumberStudentNumber,PhoneNumber假设,如果PhoneNumber是唯一的(这几天谁分享电话),所以下面也是超级键(除了上面列出的内容)。
) |- `: p! M. e  p/ T) E1 bPhoneNumberPhoneNumber,Grade,PhoneNumber,Major,GradePhoneNumber,Degree,Major,GradePhoneNumber,FamilyName,Degree,Major,GradePhoneNumber,MajorPhoneNumber,Degree,MajorPhoneNumber,FamilyName,Degree,MajorPhoneNumber,StudentNumber,FamilyName,Degree,MajorPhoneNumber,DegreePhoneNumber,FamilyName,DegreePhoneNumber,StudentNumber,FamilyName,DegreePhoneNumber,FamilyNamePhoneNumber,StudentNumber,FamilyName候选键只是最短的超键。回到超级键的第一个列表(即电话号码不是唯一的),最短的超级键是StudentNumber。
* ~; x7 L" x) \" u- T! |主键通常只是候选键。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则