Da du ikke ønsker lærebogsdefinitioner, løst sagt, er en supernøgle et sæt kolonner, der entydigt definerer en række.
Dette sæt kan have et eller flere elementer, og der kan være mere end én supernøgle til et bord. Det gør du normalt gennem funktionelle afhængigheder.
I dit eksempel antager jeg:
StudentNumber unique
FamilyName not unique
Degree not unique
Major not unique
Grade not unique
PhoneNumber not unique
I dette tilfælde er en supernøgle enhver kombination, der indeholder elevnummeret.
Så følgende er supernøgler
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
Antag nu, at hvis PhoneNumber er unikt (hvem deler telefoner i disse dage), så er følgende også supernøgler (ud over det, jeg har nævnt ovenfor).
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
En kandidatnøgle er simpelthen den "korteste" supernøgle. Går tilbage til den første liste over supernøgler (dvs. telefonnummeret er ikke unikt), er den korteste supernøgle StudentNumber.
Den primære nøgle er normalt kun kandidatnøglen.