Конвенції про іменування індексу SQL Server [закрито]


175

Чи існує якийсь стандартний спосіб називати індекси для SQL Server? Здається, що індекс первинного ключа називається PK_, а некластеризовані індекси зазвичай починаються з IX_. Чи існують якісь угоди про іменування, що не стосуються унікальних індексів?

Відповіді:


282

я використовую

ПК_ для первинних ключів

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

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: Стовпці.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.