Соглашения об именах важны, а первичный ключ и внешний ключ имеют обычно используемые и очевидные соглашения ( PK_Table
и FK_Table_ReferencedTable
, соответственно). IX_Table_Column
Присвоения имен индексов также достаточно стандартны.
А как насчет ограничения UNIQUE? Есть ли общепринятое соглашение об именах для этого ограничения? Я видел UK_TableName_Column
, UQ_TableName_Column
и кто-то рекомендовал AX_TableName_Column
- я не знаю, откуда это взялось.
Я обычно использовал, UQ
но мне это не особенно нравится, и мне не нравится защищать свой выбор использования его против UK
защитника.
Я просто хотел бы увидеть, есть ли консенсус в отношении наиболее распространенного наименования или веское обоснование того, почему одно имеет больше смысла, чем другие.
источник
U
. Что заQ
подставка?FK_TargetTable_SourceTable
? Не могли бы вы уточнить.Ответы:
Я считаю, что это не ключ: это ограничение.
Конечно, его можно использовать как ключ и однозначно идентифицировать строку, но это не ключ.
Примером может служить ключ «ThingID», суррогатный ключ, используемый вместо естественного ключа ThingName. Вам все равно нужно ограничить ThingName: оно не будет использоваться в качестве ключа.
Я бы также использовал UQ и UQC (если они сгруппированы).
Вместо этого вы можете использовать уникальный индекс и выбрать «IXU». По используемой логике индекс также является ключом, но только когда он уникален. В противном случае это индекс. Итак, мы бы начали с
IK_columnname
уникальных иIX_columnname
неуникальных индексов. Изумительный.И единственная разница между ограничением уникальности и уникальным индексом - столбцы INCLUDE.
Изменить: февраль 2013 г. Начиная с SQL Server 2008, индексы также могут иметь фильтры. Ограничения не могут
Итак, это сводится к одному из
источник
Мое соглашение об именах для индексов и ограничений:
Где {xx} - это двухзначный порядковый номер, начиная с 01 для каждого типа ограничения в таблице. Первичный ключ не получает порядкового номера, так как может быть только один. Значения двухзначного альфа-суффикса:
Обычно я хочу сгруппировать метаданные / данные системного каталога по управляющему объекту, а не по типу объекта.
источник
Пользуюсь UQ. K в Великобритании заставляет меня думать о K, поскольку он используется в PK и FK. Ну, после того, как я все равно думаю о Соединенном Королевстве; иронично, что это должно быть префиксом для УНИКАЛЬНОСТИ, когда Великобритания поднимает так много других ассоциаций =)
источник