回答

收藏

超级键、候选键和主键

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

有没有好心的人可以通过以下简单的例子澄清我的问题,确定超键、候选键和主键?
! Y( |, q5 q, R$ P3 \我知道有很多帖子和网站解释了它们之间的区别。但看起来所有都是通用定义。
2 t& G0 M' D1 L7 N4 e4 P; R# q例子:
7 `6 L0 b. d; R( YStudent (StudentNumber,FamilyName,Degree,Major,Grade,PhoneNumber)所以我可以从上面的例子中知道StudentNumber是主键。
* S" G( n8 G" b; Q6 B6 }4 L% L8 V但是对于超级键,我有点困惑。哪些属性组合可以分组成超级键?( R' U, h; e5 r4 U& I/ M8 l0 P9 B9 y
至于候选密钥,我对给出的定义感到困惑,因为任何候选密钥都可以用作主密钥。
2 Q( t8 t* \8 g2 p; e( E& c这是否意味着像这样的属性?PhoneNumber是候选键,可以是主键(假设一个人PhoneNumber只属学生)' l* V/ ~( K& O1 `# y% \. Y
感谢您的澄清!# V0 P/ @* t4 H8 {. p+ E& W
                                                               
" t9 c  ^$ n* q    解决方案:                                                               
- `: J. i& U; t3 ^$ l) `                                                                综上所述,超级键是一组唯一的定义列,因为你不需要教科书的定义。
0 a; c' p" [9 I7 l' q集合可以有一个或多个元素,一个表可以有多个超级键。通常,您可以通过功能依赖来完成此操作。0 O! K1 h) o) f+ [, y+ O9 X- r
在你的例子中,我假设:' A. j9 x' b2 I" t: s
StudentNumber    uniqueFamilyName     not uniqueDegree     not uniqueMajor      not uniqueGrade      not uniquePhoneNumber    not unique在这种情况下,超级键是包含学生编号的任何组合。* [. S- B" y, w( {* X( E3 q
所以下面是超级键
  R+ Y7 m8 L; Q  p- S& TStudentNumberStudentNumber,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是唯一的(这几天谁分享电话),所以下面也是超级键(除了上面列出的内容)。  x9 [4 }* R7 Z
PhoneNumberPhoneNumber,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。
6 D9 j% o5 X# |# K* }6 t主键通常只是候选键。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则