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?

Eric Ness
fonte

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>

JSR
fonte
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
Mark Byers
fonte
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]
Stuart Steedman
fonte
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.

Pixelated
fonte
5
Chave alternativa - pt.wikipedia.org/wiki/Unique_key#Alternate_key
Pixelated