В нашей группе разработчиков у нас бушуют дебаты относительно соглашения об именах для первичных и внешних ключей. Там в основном две школы мысли в нашей группе:
1:
Primary Table (Employee)
Primary Key is called ID
Foreign table (Event)
Foreign key is called EmployeeID
или
2:
Primary Table (Employee)
Primary Key is called EmployeeID
Foreign table (Event)
Foreign key is called EmployeeID
Я предпочитаю не дублировать имя таблицы в любом столбце (так что я предпочитаю вариант 1 выше). Концептуально это согласуется с множеством рекомендуемых практик на других языках, где вы не используете имя объекта в его именах свойств. Я думаю, что именование внешнего ключа EmployeeID
(или Employee_ID
может быть лучше) сообщает читателю, что это столбец ID
таблицы Employee
.
Некоторые другие предпочитают вариант 2, в котором вы указываете первичный ключ с префиксом имени таблицы, чтобы имя столбца было одинаковым во всей базе данных. Я вижу это, но теперь вы не можете визуально различать первичный ключ от внешнего ключа.
Кроме того, я считаю избыточным иметь имя таблицы в имени столбца, потому что, если вы считаете таблицу как сущность и столбец как свойство или атрибут этого объекта, вы считаете это атрибутом идентификатора атрибут Employee
, а не EmployeeID
сотрудника. Я не спрашиваю своего коллегу, что такое его PersonAge
или PersonGender
. Я спрашиваю его, что такое его возраст.
Так, как я сказал, это бурные дебаты, и мы продолжаем и продолжаем. Мне интересно получить новые перспективы.