В нашей группе разработчиков ведутся бурные дебаты по поводу соглашения об именах для первичных и внешних ключей. В нашей группе есть две основные точки зрения:
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
такое. Я спрашиваю его, сколько ему лет.
Итак, как я уже сказал, это бурные дебаты, и мы продолжаем и продолжаем об этом. Мне интересно узнать о новых перспективах.