Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Superschlüssel, Kandidatenschlüssel und Primärschlüssel

Da Sie keine Lehrbuchdefinitionen wollen, ist ein Superschlüssel, grob gesagt, eine Reihe von Spalten, die eine Zeile eindeutig definieren.

Diese Menge kann ein oder mehrere Elemente haben, und es kann mehr als einen Superschlüssel für eine Tabelle geben. Normalerweise tun Sie dies über funktionale Abhängigkeiten.

In Ihrem Beispiel gehe ich davon aus:

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

In diesem Fall ist ein Superschlüssel eine beliebige Kombination, die die Matrikelnummer enthält.

Das Folgende sind also Superschlüssel

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

Nehmen wir nun an, wenn PhoneNumber eindeutig ist (wer teilt heutzutage Telefone), dann sind die folgenden auch Superkeys (zusätzlich zu dem, was ich oben aufgelistet habe).

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

Ein Kandidatenschlüssel ist einfach der "kürzeste" Superschlüssel. Zurück zur ersten Liste der Superkeys (d. h. die Telefonnummer ist nicht eindeutig), der kürzeste Superkey ist StudentNumber.

Der Primärschlüssel ist normalerweise nur der Kandidatenschlüssel.