Convenções de nomenclatura de índice do SQL Server [fechado]


175

Existe alguma maneira padrão de nomear índices para o SQL Server? Parece que o índice de chave primária é nomeado PK_ e os índices não agrupados geralmente começam com IX_. Além disso, existem convenções de nomenclatura para índices exclusivos?

Respostas:


282

eu uso

PK_ para chaves primárias

UK_ para chaves exclusivas

IX_ para índices não exclusivos não agrupados em cluster

UX_ para índices únicos

Todo o meu nome de índice assume a forma de
<index or key type>_<table name>_<column 1>_<column 2>_<column n>


1
E os índices clusterizados não exclusivos? CX?
Chris Marisic

8
Nunca precisei de um índice de cluster não exclusivo ... Percebo que é possível, mas nunca pareceu ser o curso de ação correto para mim.
JSR

4
De acordo com a resposta dada aqui, stackoverflow.com/questions/1401572/… KEY e INDEX são sinônimos. Portanto, não deve haver necessidade de prefixos diferentes para chaves e índices exclusivos?
Skjerdalas

2
É uma diferença lógica, eu uso UniqueKey se houver uma referência de chave estrangeira, caso contrário, eu uso um UniqueIndex.
JSR

1
Por que incluir o nome da tabela quando duas tabelas podem ter o mesmo nome de índice? isto é, singularidade não é necessária.
Tahir Hassan

25

Normalmente nomeio índices pelo nome da tabela e pelas colunas que elas contêm:

ix_tablename_col1_col2

2
Como você diferencia entre colunas de índice e colunas incluídas?
John Sansom

3
Tenho certeza de que ele está apenas listando as colunas indexadas, na ordem em que estão sendo colocadas no índice.
Brett

Eu o uso da seguinte maneira: IX_TableName_col1_col2-includecol1-includecol2
freggel

9

Vale a pena um prefixo especial para índices associados a chaves estrangeiras? Acho que sim, uma vez que me lembra que os índices nas chaves estrangeiras não são criados por padrão e, portanto, é mais fácil ver se eles estão ausentes.

Para isso, estou usando nomes que correspondem ao nome da chave estrangeira:

FK_[table]_[foreign_key_table]

ou, onde várias chaves estrangeiras existem na mesma tabela

FK_[table]_[foreign_key_table]_[foreign_key_field]

1

Conheço um tópico antigo, mas pensei em jogar meus 2 centavos no valor de

  • PKC_ Chave Primária, Clusterizada
  • PKNC_ Chave Primária, Não Clusterd
  • NCAK_ Não agrupado, exclusivo
  • CAK_ Agrupado, Exclusivo
  • NC_ Não agrupado

Exemplo;

NCAK_AccountHeader_OrganisationID_NextDate

Onde NCAK: Não agrupado, exclusivo, AccountHeader: Table e OrganisationID_NextDate: Columns.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.