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


175

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

Ответы:


282

я использую

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

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

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

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

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


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: столбцы.


5
Альтернативный ключ - en.wikipedia.org/wiki/Unique_key#Alternate_key
Pixelated,
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.