Nel nostro gruppo di sviluppo abbiamo un acceso dibattito sulla convenzione di denominazione per le chiavi primarie e straniere. Ci sono fondamentalmente due scuole di pensiero nel nostro gruppo:
1:
Primary Table (Employee)
Primary Key is called ID
Foreign table (Event)
Foreign key is called EmployeeID
o
2:
Primary Table (Employee)
Primary Key is called EmployeeID
Foreign table (Event)
Foreign key is called EmployeeID
Preferisco non duplicare il nome della tabella in nessuna delle colonne (quindi preferisco l'opzione 1 sopra). Concettualmente, è coerente con molte delle pratiche consigliate in altre lingue, in cui non si utilizza il nome dell'oggetto nei nomi delle proprietà. Penso che nominare la chiave esterna EmployeeID
(o Employee_ID
potrebbe essere migliore) dica al lettore che è la ID
colonna della Employee
tabella.
Alcuni altri preferiscono l'opzione 2 in cui si nomina la chiave primaria con il prefisso del nome della tabella in modo che il nome della colonna sia lo stesso in tutto il database. Capisco quel punto, ma ora non puoi distinguere visivamente una chiave primaria da una chiave esterna.
Inoltre, penso che sia ridondante avere il nome della tabella nel nome della colonna, perché se pensi alla tabella come un'entità e una colonna come una proprietà o un attributo di quell'entità, la pensi come l'attributo ID del Employee
, non l' EmployeeID
attributo di un dipendente. Non vado a chiedere al mio collega che cosa sia PersonAge
o che PersonGender
sia. Gli chiedo qual è la sua età.
Quindi, come ho detto, è un dibattito furioso e continuiamo all'infinito. Mi interessa avere nuove prospettive.