У нашій групі розробників у нас бурхлива дискусія стосовно конвенції про іменування первинних та іноземних ключів. В нашій групі є дві школи думки:
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, де ви називаєте первинний ключ з префіксом імені таблиці, щоб ім'я стовпця було однаковим у всій базі даних. Я бачу цей момент, але ви тепер не можете візуально відрізнити первинний ключ від іноземного ключа.
Крім того, я думаю, що зайвим є ім’я таблиці у назві стовпців, тому що якщо ви вважаєте таблицю сутністю, а стовпець - властивістю чи атрибутом цього об'єкта, ви вважаєте це атрибутом ID Employee
, а не EmployeeID
атрибут працівника. Я не ходжу запитати мій товариш по службі , що його PersonAge
або PersonGender
є. Я запитую його, який його вік.
Так, як я вже сказав, це бурхлива дискусія, і ми продовжуємо цю справу. Мені цікаво отримати нові перспективи.