Convenzione di denominazione per vincolo univoco


129

Le convenzioni di denominazione sono importanti e la chiave primaria e la chiave esterna hanno convenzioni comunemente usate e ovvie ( PK_Tablee FK_Table_ReferencedTable, rispettivamente). Anche la IX_Table_Columndenominazione per gli indici è abbastanza standard.

Che dire del vincolo UNICO? Esiste una convenzione di denominazione comunemente accettata per questo vincolo? Ho visto UK_TableName_Column, UQ_TableName_Columne qualcuno mi consiglia AX_TableName_Column- Non so da dove provenga.

In genere l'ho usato, UQma non mi piace particolarmente, e non mi piace dover difendere la mia scelta di usarlo contro un UKavvocato.

Vorrei semplicemente vedere se esiste un consenso sulla denominazione più diffusa o un buon ragionamento sul perché uno ha più senso degli altri.


1
@Mitch Qualche motivo per cui? Lo faccio anche io, ma mi chiedo sempre perché nessuno lo usi U. Qual è la Qposizione?
Kirk Broadhurst,

1
Potresti fare la stessa domanda su IX per IndeX ... perché non solo io?
Chris J,

3
"UQ" è solo un'abbreviazione di "UNIQUE". La ragione di due lettere è fondamentalmente che è un precedente stabilito da "PK".
Mark Cidade,

2
Personalmente ho finito per usare UX_ * per "Unique indeX", in omaggio al valore predefinito di IX per "IndeX". Non mi piace particolarmente il Regno Unito_ perché vengo dal Regno Unito. Potrei essere persuaso su AK se è quello che piace a Internet.
Tim Abell,

@KirkBroadhurst Non ho mai visto una convenzione del genere, ma a causa dei voti deve essere comune e servire bene allo scopo. Ma avere una chiave esterna chiamata FK_03 non è molto utile, non sarebbe meglio chiamarla FK_TargetTable_SourceTable? Puoi per favore elaborare.
Coding Yoshi

Risposte:


56

Il mio pensiero è che non è una chiave: è un vincolo.

Esso potrebbe essere utilizzato come una chiave, naturalmente, e identifica in modo univoco una riga, ma non è la chiave.

Un esempio potrebbe essere che la chiave è "ThingID", una chiave surrogata utilizzata al posto di ThingName come chiave naturale. Hai ancora bisogno di vincolare ThingName: non sarà usato come chiave però.

Userei anche UQ e UQC (se raggruppati).

È possibile invece utilizzare un indice univoco e scegliere "IXU". Secondo la logica utilizzata, un indice è anche una chiave ma solo quando è unico. Altrimenti è un indice. Quindi inizieremmo con IK_columnnameindici univoci e con indici IX_columnnamenon univoci. Meravigliosa.

E l'unica differenza tra un vincolo univoco e un indice univoco sono le colonne INCLUDE.

Modifica: febbraio 2013. A partire da SQL Server 2008, anche gli indici possono avere filtri. I vincoli non possono

Quindi, si riduce a uno dei

  • attenersi a UQ come per il resto del pianeta che utilizza SQL
  • usare IK per indici univoci (IKC anche per i cluster) per essere coerenti ...

1
Preferiresti fortemente "IXU" rispetto a "UIX"?
Hamish Grubijan,


133

La mia convenzione di denominazione per indici e vincoli:

  • Chiave primaria. _PK
  • Indice / vincolo univoci. _AK {xx}
  • Indice non univoco. _IX {xx}
  • Verifica vincolo. _CK {xx}
  • Vincolo predefinito. _DF {xx}
  • Vincolo di chiave esterna. _FK {xx}

Dove {xx} è un numero progressivo di 2 cifre, a partire da 01 per ciascun tipo di vincolo per tabella. La chiave primaria non ottiene un numero progressivo poiché può essercene solo uno. I significati del suffisso alfa a 2 caratteri sono:

  • PK: chiave primaria
  • AK: Chiave alternativa
  • FK: chiave esterna
  • IX: IndeX
  • CK: ChecK
  • DF: DeFault

In genere desidero raggruppare i dati di catalogo metadati / sistema dall'oggetto di controllo anziché dal tipo di oggetto.


10
AK: Alternate Key è ciò che li chiama anche la superficie di progettazione di SQL Server Data Tools 2012.
Alex KeySmith,

15
@AlexKeySmith: Grazie per aver spiegato perché Microsoft utilizza AK per questo !!
TJ Crowder,

Nessun problema @TJCrowder :-)
Alex KeySmith il

@TJCrowder, nel mondo della modellazione entità-relazione / database, è una chiave alternativa , poiché, come la chiave primaria, l'insieme di colonne che comprende la chiave alternativa deve essere univoco, fornendo così l'identità [alternativa] per la riga / tupla.
Nicholas Carey,

@ NicholasCarey: No, l'ho capito - non appena ho visto il commento di Alex, la luce si è accesa. :-)
TJ Crowder,

5

Uso UQ. La K nel Regno Unito mi fa pensare a K come viene usato in PK e FK. Bene, dopo aver pensato comunque al Regno Unito; ironico che questo dovrebbe essere un prefisso per UNIQUE quando il Regno Unito fa apparire tante altre associazioni =)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.