Короткий ответ - нет - не ставьте «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 (например, CreatedByUserId
)и AssignedToUserId
).Для этого я часто использую имя столбца дочерней таблицы.
Пример 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