sql >> Database teknologi >  >> RDS >> Oracle

Supernøgle, kandidatnøgle og primærnøgle

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.



  1. Forbinder Coldfusion 9 med MySql 5 på Ubuntu 9.10

  2. Sammensæt grupper i SQL Server

  3. Håndtering af unicode-tegn, der ikke vises korrekt i SQL-forespørgsel

  4. MySQL Trigger til at indsætte data i forskellige DB