Соглашения об именовании индексов SQL Server [закрыто]

175

Есть ли какой-нибудь стандартный способ именования индексов для SQL Server? Кажется, что индекс первичного ключа называется PK_, а некластеризованные индексы обычно начинаются с IX_. Есть ли какие-либо соглашения об именах, кроме уникальных индексов?

Эрик Несс
источник

Ответы:

282

я использую

PK_ для первичных ключей

UK_ для уникальных ключей

IX_ для некластеризованных неуникальных индексов

UX_ для уникальных индексов

Все мое индексное имя принимает форму
<index or key type>_<table name>_<column 1>_<column 2>_<column n>

JSR
источник
1
А как насчет неуникальных кластерных индексов? CX?
Крис Марисик
8
У меня никогда не было потребности в неуникальном кластерном индексе ... Я понимаю, что это возможно, но мне никогда не казалось, что это правильный курс действий.
JSR
4
Согласно приведенному здесь ответу stackoverflow.com/questions/1401572/… KEY и INDEX являются синонимами. Так что не должно быть необходимости иметь разные префиксы для уникальных ключей и уникальных индексов?
skjerdalas
2
Это логическое отличие, я использую UniqueKey, если будет ссылка на внешний ключ, в противном случае я использую UniqueIndex.
JSR
1
Зачем включать имя таблицы, если две таблицы могут иметь одинаковое имя индекса? т.е. уникальность не нужна.
Тахир Хасан
25

Обычно я называю индексы по имени таблицы и столбцам, которые они содержат:

ix_tablename_col1_col2
Марк Байерс
источник
2
Как вы различаете столбцы индекса и включенные столбцы?
Джон Сансом
3
Я почти уверен, что он перечисляет только индексированные столбцы в порядке их размещения в индексе.
Бретт
Я использую его следующим образом: IX_TableName_col1_col2-includecol1-includecol2
freggel
9

Стоит ли специальный префикс для индексов, связанных с внешними ключами? Я так думаю, поскольку это напоминает мне, что индексы для внешних ключей не создаются по умолчанию, и поэтому легче увидеть, если они отсутствуют.

Для этого я использую имена, которые соответствуют имени внешнего ключа:

FK_[table]_[foreign_key_table]

или если в одной таблице существует несколько внешних ключей

FK_[table]_[foreign_key_table]_[foreign_key_field]
Стюарт Стидман
источник
1

Я знаю старую тему, но думал, что я добавлю 2 цента

  • PKC_ первичный ключ, кластеризованный
  • PKNC_ первичный ключ, не кластерный
  • NCAK_ Некластеризованный, Уникальный
  • CAK_ Кластерный, Уникальный
  • NC_ Некластеризованный

Пример;

NCAK_AccountHeader_OrganisationID_NextDate

Где NCAK: некластеризованный, уникальный, AccountHeader: таблица и OrganisationID_NextDate: столбцы.

Pixelated
источник
5
Альтернативный ключ - en.wikipedia.org/wiki/Unique_key#Alternate_key
Pixelated,