Jag följer några regler:
- Primära nycklar bör vara så små som nödvändigt. Föredrar en numerisk typ eftersom numeriska typer lagras i ett mycket mer kompakt format än teckenformat. Detta beror på att de flesta primärnycklar kommer att vara främmande nycklar i en annan tabell samt användas i flera index. Ju mindre nyckel, desto mindre index, desto färre sidor i cachen kommer du att använda.
- Primära nycklar bör aldrig ändras. Att uppdatera en primärnyckel bör alltid vara uteslutet. Detta beror på att det med största sannolikhet kommer att användas i flera index och användas som en främmande nyckel. Uppdatering av en enskild primärnyckel kan orsaka en krusningseffekt av ändringar.
- Använd INTE "ditt problem primärnyckel" som din logiska modell primärnyckel. Till exempel passnummer, personnummer eller anställds kontraktsnummer eftersom dessa "naturliga nycklar" kan ändras i verkliga situationer. Se till att lägga till UNIKA begränsningar för dessa där det är nödvändigt för att upprätthålla konsekvens.
Om surrogat vs naturlig nyckel hänvisar jag till reglerna ovan. Om den naturliga nyckeln är liten och aldrig kommer att förändras kan den användas som en primärnyckel. Om den naturliga nyckeln är stor eller sannolikt kommer att förändras använder jag surrogatnycklar. Om det inte finns någon primärnyckel gör jag fortfarande en surrogatnyckel eftersom erfarenheten visar att du alltid kommer att lägga till tabeller i ditt schema och önskar att du sätter en primärnyckel på plats.