Convención de nomenclatura para restricción única

129

Las convenciones de nomenclatura son importantes, y la clave primaria y la clave externa tienen convenciones comúnmente utilizadas y obvias ( PK_Tabley FK_Table_ReferencedTable, respectivamente). La IX_Table_Columndenominación de los índices también es bastante estándar.

¿Qué pasa con la restricción ÚNICA? ¿Existe una convención de nomenclatura comúnmente aceptada para esta restricción? He visto UK_TableName_Column, UQ_TableName_Columny alguien que recomienda AX_TableName_Column, no sé de dónde viene eso.

Normalmente lo he usado, UQpero no me gusta particularmente, y no disfruto tener que defender mi elección de usarlo contra un UKdefensor.

Simplemente me gustaría ver si existe un consenso sobre los nombres más frecuentes, o un buen razonamiento de por qué uno tiene más sentido que los demás.

Kirk Broadhurst
fuente
1
@ Mitch ¿Alguna razón por qué? Yo también, pero siempre me pregunto por qué nadie lo usa U. ¿Para qué sirve el Qstand?
Kirk Broadhurst
1
Podrías hacer la misma pregunta sobre IX para IndeX ... ¿por qué no solo yo?
Chris J
3
"UQ" es solo una abreviatura de "UNIQUE". La razón de dos letras es básicamente un precedente establecido por "PK".
Mark Cidade
2
Personalmente terminé usando UX_ * para "Unique indeX", en homenaje al valor predeterminado de IX para "IndeX". Particularmente no me gusta UK_ porque soy del Reino Unido. Podría ser persuadido en AK si eso es lo que le gusta a Internet.
Tim Abell
@KirkBroadhurst Nunca he visto una convención de este tipo, pero debido a los votos positivos debe ser común y servir bien al propósito. Pero tener una clave externa llamada FK_03 no es muy útil, ¿no sería mejor nombrarla FK_TargetTable_SourceTable? ¿Puedes por favor elaborar?
CodingYoshi

Respuestas:

56

Mi pensamiento es que no es una clave: es una restricción.

Que podría ser utilizado como una clave, por supuesto, e identifica de forma única una fila, pero no es la clave.

Un ejemplo sería que la clave es "ThingID", una clave sustituta utilizada en lugar de ThingName, la clave natural. Todavía necesita restringir ThingName: sin embargo, no se usará como clave.

También usaría UQ y UQC (si está agrupado).

En su lugar, podría usar un índice único y elegir "IXU". Según la lógica empleada, un índice también es una clave, pero solo cuando es único. De lo contrario, es un índice. Entonces, comenzaríamos con los IK_columnnameíndices únicos y los índices IX_columnnameno únicos. Maravilloso.

Y la única diferencia entre una restricción única y un índice único es INCLUIR columnas.

Edición: febrero de 2013. Desde SQL Server 2008, los índices también pueden tener filtros. Las restricciones no pueden

Entonces, se reduce a uno de

  • seguir con UQ según el resto del planeta que usa SQL
  • use IK para índices únicos (IKC para clústeres también) para ser coherente ...
gbn
fuente
1
¿Preferiría fuertemente "IXU" sobre "UIX"?
Hamish Grubijan
133

Mi convención de nomenclatura para índices y restricciones:

  • Clave primaria. _PK
  • Índice / restricción únicos. _AK {xx}
  • Índice no único. _IX {xx}
  • Verifique la restricción. _CK {xx}
  • Restricción predeterminada _DF {xx}
  • Restricción de clave externa. _FK {xx}

Donde {xx} es un número de secuencia de 2 dígitos, comenzando en 01 para cada tipo de restricción por tabla. La clave primaria no obtiene un número de secuencia ya que solo puede haber uno. Los significados del sufijo alfa de 2 caracteres son:

  • PK: clave primaria
  • AK: clave alternativa
  • FK: clave extranjera
  • IX: IndeX
  • CK: Cheque
  • DF: defecto

En general, quiero agrupar los metadatos / datos del catálogo del sistema por el objeto de control en lugar de por tipo de objeto.

Nicholas Carey
fuente
10
AK: Alternate Key es lo que la superficie de diseño de SQL Server Data Tools 2012 también los llama.
Alex KeySmith
15
@AlexKeySmith: ¡ Gracias por explicar por qué Microsoft usa AK para esto!
TJ Crowder
No hay problema @TJCrowder :-)
Alex KeySmith
@TJCrowder, en el mundo de modelado de entidad-relación / base de datos, es una clave alternativa , porque, al igual que la clave primaria, el conjunto de columnas que comprende la clave alternativa debe ser único, proporcionando así una identidad [alternativa] para la fila / tupla.
Nicholas Carey
@NicholasCarey: No, lo entendí, tan pronto como vi el comentario de Alex, la luz se encendió. :-)
TJ Crowder
5

Yo uso UQ. La K en el Reino Unido me hace pensar en K como se usa en PK y FK. Bueno, después de pensar en Reino Unido de todos modos; Irónico que esto debería ser un prefijo para ÚNICO cuando el Reino Unido trae tantas otras asociaciones =)

bitxwise
fuente