W naszej grupie deweloperów toczymy zaciekłą debatę dotyczącą konwencji nazewnictwa kluczy podstawowych i obcych. W naszej grupie są zasadniczo dwie szkoły myślenia:
1:
Primary Table (Employee)
Primary Key is called ID
Foreign table (Event)
Foreign key is called EmployeeID
lub
2:
Primary Table (Employee)
Primary Key is called EmployeeID
Foreign table (Event)
Foreign key is called EmployeeID
Wolę nie powielać nazwy tabeli w żadnej z kolumn (więc wolę opcję 1 powyżej). Koncepcyjnie jest to zgodne z wieloma zalecanymi praktykami w innych językach, w których nie używa się nazwy obiektu w nazwach jego właściwości. Myślę, że nazwanie klucza obcego EmployeeID
(a Employee_ID
może lepiej) mówi czytelnikowi, że jest to ID
kolumna Employee
tabeli.
Inni wolą opcję 2, w której nazwa klucza podstawowego jest poprzedzona nazwą tabeli, tak aby nazwa kolumny była taka sama w całej bazie danych. Rozumiem, ale teraz nie możesz wizualnie odróżnić klucza podstawowego od klucza obcego.
Myślę też, że nie ma sensu umieszczać nazwy tabeli w nazwie kolumny, ponieważ jeśli myślisz o tabeli jako o encji, a kolumna jako o właściwości lub atrybucie tej jednostki, myślisz o tym jako o atrybucie identyfikatora elementu Employee
, a nie EmployeeID
atrybut pracownika. Nie chodzę ASK mojego współpracownika co jego PersonAge
lub PersonGender
IS. Pytam go, jaki jest jego wiek.
Tak więc, jak powiedziałem, jest to zaciekła debata i ciągle o tym mówimy. Jestem zainteresowany, aby uzyskać nowe perspektywy.