Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Qual è la procedura consigliata per le chiavi primarie nelle tabelle?

Seguo alcune regole:

  1. Le chiavi primarie dovrebbero essere piccole quanto necessarie. Preferisci un tipo numerico perché i tipi numerici sono archiviati in un formato molto più compatto rispetto ai formati di caratteri. Questo perché la maggior parte delle chiavi primarie saranno chiavi esterne in un'altra tabella e utilizzate in più indici. Più piccola è la tua chiave, più piccolo è l'indice, meno pagine nella cache utilizzerai.
  2. Le chiavi primarie non dovrebbero mai cambiare. L'aggiornamento di una chiave primaria dovrebbe essere sempre fuori questione. Questo perché è molto probabile che venga utilizzato in più indici e utilizzato come chiave esterna. L'aggiornamento di una singola chiave primaria potrebbe causare l'effetto a catena delle modifiche.
  3. NON utilizzare la "chiave primaria del tuo problema" come chiave primaria del modello logico. Ad esempio, numero di passaporto, numero di previdenza sociale o numero di contratto del dipendente poiché queste "chiavi naturali" possono cambiare nelle situazioni del mondo reale. Assicurati di aggiungere vincoli UNIQUE per questi ove necessario per rafforzare la coerenza.

Sulla chiave surrogata vs naturale, mi riferisco alle regole sopra. Se la chiave naturale è piccola e non cambierà mai, può essere utilizzata come chiave primaria. Se la chiave naturale è grande o suscettibile di cambiare, uso chiavi surrogate. Se non esiste una chiave primaria, creo comunque una chiave surrogata perché l'esperienza mostra che aggiungerai sempre tabelle al tuo schema e vorresti inserire una chiave primaria.