Superkey, candidate key & primary key

后端 未结 3 867
独厮守ぢ
独厮守ぢ 2021-01-30 03:35

Can any kind soul clarify my doubts with a simple example below and identify the superkey, candidate key and primary key?

I know there are a lot of posts and websites ou

3条回答
  •  误落风尘
    2021-01-30 03:57

    Since you don't want textbook definitions, loosely speaking, a super key is a set of columns that uniquely defines a row.

    This set can have one or more elements, and there can be more than one super key for a table. You usually do this through functional dependencies.

    In your example, I'm assuming:

    StudentNumber    unique
    FamilyName     not unique
    Degree     not unique
    Major      not unique
    Grade      not unique
    PhoneNumber    not unique
    

    In this case, a superkey is any combination that contains the student number.

    So the following are superkeys

    StudentNumber
    StudentNumber, FamilyName
    StudentNumber, FamilyName, Degree
    StudentNumber, FamilyName, Degree, Major
    StudentNumber, FamilyName, Degree, Major, Grade
    StudentNumber, FamilyName, Degree, Major, Grade, PhoneNumber
    StudentNumber, Degree
    StudentNumber, Degree, Major
    StudentNumber, Degree, Major, Grade
    StudentNumber, Degree, Major, Grade, PhoneNumber
    StudentNumber, Major
    StudentNumber, Major, Grade
    StudentNumber, Major, Grade, PhoneNumber
    StudentNumber, Grade
    StudentNumber, Grade, PhoneNumber
    StudentNumber, PhoneNumber
    

    Now assume, if PhoneNumber is unique (who shares phones these days), then the following are also superkeys (in addition to what I've listed above).

    PhoneNumber
    PhoneNumber, Grade, 
    PhoneNumber, Major, Grade
    PhoneNumber, Degree, Major, Grade
    PhoneNumber, FamilyName, Degree, Major, Grade
    PhoneNumber, Major
    PhoneNumber, Degree, Major
    PhoneNumber, FamilyName, Degree, Major
    PhoneNumber, StudentNumber, FamilyName, Degree, Major
    PhoneNumber, Degree
    PhoneNumber, FamilyName, Degree
    PhoneNumber, StudentNumber, FamilyName, Degree
    PhoneNumber, FamilyName
    PhoneNumber, StudentNumber, FamilyName
    

    A candidate key is simply the "shortest" superkey. Going back to the 1st list of superkeys (i.e. phone number isn't unique), the shortest superkey is StudentNumber.

    The primary key is usually just the candidate key.

提交回复
热议问题