2011-01-29 12 views
93

Las convenciones de nomenclatura son importantes, y la clave principal y la clave externa tienen convenciones comunes y obvias (PK_Table y FK_Table_ReferencedTable, respectivamente). La nomenclatura de los índices IX_Table_Column también es bastante estándar.Convención de nomenclatura para restricción única

¿Qué pasa con la restricción UNIQUE? ¿Hay una convención de nomenclatura comúnmente aceptada para esta restricción? He visto UK_TableName_Column, UQ_TableName_Column, y alguien recomendando AX_TableName_Column - No sé de dónde viene eso.

Normalmente he usado UQ pero no me gusta especialmente, y no me gusta tener que defender mi elección de usarlo contra un defensor UK.

Me gustaría simplemente ver si hay un consenso sobre la denominación más frecuente, o un buen razonamiento sobre por qué uno tiene más sentido que los demás.

+3

Uso UQ_ ...... –

+1

@Mitch ¿Alguna razón por qué? Yo también, pero siempre me pregunto por qué nadie usa 'U'. ¿Qué significa el 'Q'? –

+0

Puede hacer la misma pregunta sobre IX para IndeX ... ¿por qué no solo yo? –

Respuesta

41

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

Se podría ser utilizado como una clave, por supuesto, y únicamente identifica una fila, pero no es la tecla.

Un ejemplo sería que la clave es "ThingID", una clave sustituta utilizada en lugar de ThingName la clave natural. Aún necesita limitar ThingName: aunque no se utilizará como clave.

También usaría UQ y UQC (si está en clúster).

Puede utilizar un índice único en su lugar y buscar "IXU". Por la lógica empleada, un índice también es clave, pero solo cuando es único. De lo contrario, es un índice. Entonces comenzamos con IK_columnname para índices únicos y IX_columnname para índices no únicos. Maravilloso.

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

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

Por lo tanto, se trata de uno de

  • palo con UQ como por el resto de la
  • uso IK SQL que utilizan planeta por índices únicos (IKC para agrupada también) para ser consistentes ...
+1

¿Preferirías "IXU" a "UIX"? –

+1

Consulte https://blogs.msdn.microsoft.com/dtjones/2009/10/29/best-practice-naming-constraints/ –

6

Uso la UQ. La K en el Reino Unido me hace pensar en K ya que se usa en PK y FK. Bueno, después de todo pienso en el Reino Unido; Es irónico que este debería ser un prefijo para ÚNICO cuando UK muestra tantas otras asociaciones =)

89

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

  • clave primaria. _PK
  • Índice/restricción únicos. _AK {xx}
  • Índice no exclusivo. _IX {xx}
  • Comprobar restricción._CK {xx}
  • Restricción predeterminada. _DF {xx}
  • Restricción de clave foránea. _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 principal no obtiene un número de secuencia ya que solo puede haber una. Los 2-char significados alfa sufijos son:

  • PK: Primary Key
  • AK: Alternate Key
  • FK: Foreign Key
  • IX: Índice
  • CK: Comprobar
  • DF: DeFault

Por lo general, quiero agrupar metadatos/datos del catálogo del sistema por el objeto de control en lugar de obj tipo de ect

+5

AK: Alternate Key es lo que las superficies de diseño de SQL Server Data tools 2012 también llaman. –

+7

@AlexKeySmith: ** ¡Gracias ** por explicar por qué Microsoft usa AK para esto! –

+0

No hay problema @TJCrowder :-) –

Cuestiones relacionadas