sql >> Database >  >> RDS >> Sqlserver

Wat is de beste werkwijze voor primaire sleutels in tabellen?

Ik volg een paar regels:

  1. Primaire sleutels moeten zo klein zijn als nodig is. Geef de voorkeur aan een numeriek type omdat numerieke typen in een veel compacter formaat worden opgeslagen dan tekenformaten. Dit komt omdat de meeste primaire sleutels externe sleutels zijn in een andere tabel en ook in meerdere indexen worden gebruikt. Hoe kleiner uw sleutel, hoe kleiner de index, hoe minder pagina's in de cache u zult gebruiken.
  2. Primaire sleutels mogen nooit veranderen. Het bijwerken van een primaire sleutel zou altijd uit den boze moeten zijn. Dit komt omdat het waarschijnlijk in meerdere indexen wordt gebruikt en als externe sleutel wordt gebruikt. Het bijwerken van een enkele primaire sleutel kan een rimpeleffect van wijzigingen veroorzaken.
  3. Gebruik NIET "de primaire sleutel van uw probleem" als de primaire sleutel van uw logisch model. Bijvoorbeeld paspoortnummer, burgerservicenummer of werknemerscontractnummer, aangezien deze "natuurlijke sleutels" in echte situaties kunnen veranderen. Zorg ervoor dat u hier UNIEKE beperkingen voor toevoegt waar nodig om consistentie af te dwingen.

Over surrogaat versus natuurlijke sleutel, verwijs ik naar de bovenstaande regels. Als de natuurlijke sleutel klein is en nooit zal veranderen, kan deze als primaire sleutel worden gebruikt. Als de natuurlijke sleutel groot is of waarschijnlijk zal veranderen, gebruik ik surrogaatsleutels. Als er geen primaire sleutel is, maak ik nog steeds een surrogaatsleutel, omdat de ervaring leert dat je altijd tabellen aan je schema zult toevoegen en zou willen dat je een primaire sleutel zou hebben.



  1. Opatch in niet-interactieve vorm uitvoeren

  2. Inleiding tot SQL-joins

  3. aangepaste sql-tekst weergeven uit tabelkolomresultaat

  4. Unieke identifier (guid) als primaire sleutel in databaseontwerp