Имена столбцов базы данных для внешнего ключа - PullRequest
3 голосов
/ 13 апреля 2011

я должен указать внешний ключ в имени столбца базы данных?

FKOrder против FK_Order против Order

Ответы [ 5 ]

6 голосов
/ 13 апреля 2011

Короткий ответ - нет - не ставьте «FK» в названиях столбцов внешнего ключа.Тем не менее, вы можете сообщить о намерении столбца, вот как я это делаю:

Именование столбцов внешнего ключа

Это зависит от вашего соглашения об именах для цели FK.Если у вас есть Id, тогда я добавлю имя таблицы при создании столбцов FK.

Пример 1:
Для таблицы User с PK Id и таблицейWorkitem с идентификатором пользователя FK, я бы назвал столбец Workitem.UserId.

Если бы между одними и теми же таблицами было более одного FK, я бы четко указал это в названии столбца:

Пример 2:
Для таблицы User с PK Id и таблицы Workitem с "FK, назначенными идентификатору пользователя" и "созданными идентификатором пользователя", я бы позвонилстолбцы Workitem.CreatedByUserId и Workitem.AssignedToUserId.

Если ваше соглашение об именах для PK больше похоже на UserId, то вы должны учесть это в приведенных выше примерах, чтобы не получить UserUserId.

Именование ограничений внешнего ключа

Это мое:

FK_childtablename_[differentiator]parenttablename

Дифференциатор используется, когда между одними и теми же двумя таблицами существует более одного FK (например, CreatedByUserIdAssignedToUserId).Для этого я часто использую имя столбца дочерней таблицы.

Пример 1:
Данные таблицы: Workitem и User Где User имеет CreatedByUserId и AssignedToUserId Имена внешних ключей: FK_Workitem_User_CreatedByUser и FK_Workitem_AssignedToUser

Я использую двойные подчеркивания, если в таблицах / столбцах есть подчеркивания в имени:

Пример 2:
Данные таблицы: work_item и user Где user имеет created_by_user_id и assigned_to_user_id Имена внешних ключей: FK_work_item__created_by_user и FK_work_item__assigned_to_user

1 голос
/ 13 апреля 2011

Вы не должны.

Если столбец становится внешним ключом позже, вам придется изменить имя столбца, нарушив все сценарии, которые его используют.

Если существует несколько внешних ключей, вы не знаете, какой столбец принадлежит какому ключу, поэтому единственная информация, которую вы получаете, - это то, что столбец является внешним ключом, но вы уже знаете его, глядя на ключи.

Обычно я называю столбец внешнего ключа тем же, что и первичный ключ, поэтому я сразу знаю, где отображается ключ.

1 голос
/ 13 апреля 2011

Обычно поля внешних ключей называются с помощью идентификатора (IDORDER, IDPERSON, ...), если у вас есть таблица с именем PERSONS и другие CITIES, если один человек находится в определенном городе, CITIES имеет поле IDCITY (K), PERSONS имеет IDPERSON (K) и другое поле IDCITY (FK).

Надеюсь, что это ответ на ваш вопрос.Я имею в виду, что внешний ключ является только внешним, когда он находится в другой таблице, но не в их.Однако рекомендуется присваивать одинаковые поля одним и тем же полям, даже если они находятся в других таблицах, в качестве внешнего ключа.

0 голосов
/ 13 апреля 2011

Мой стиль немного отличается:

fk_table_column

Например: fk_user_id это внешний ключ для таблицы User в столбце id.Я не пользуюсь последним капиталом.

0 голосов
/ 13 апреля 2011

Обычно я использую то же имя, что и указанный столбец в таблице, содержащей FK.

Только если это может сбить с толку (или столбец с таким именем уже существует, скажем, id), я быбыть более явнымВ таком случае добавление имени типа сущности перед остальными - скажем, ProductId.

...