In unserer Entwicklergruppe führen wir eine heftige Debatte über die Namenskonvention für Primär- und Fremdschlüssel. Grundsätzlich gibt es in unserer Gruppe zwei Denkschulen:
1:
Primary Table (Employee)
Primary Key is called ID
Foreign table (Event)
Foreign key is called EmployeeID
oder
2:
Primary Table (Employee)
Primary Key is called EmployeeID
Foreign table (Event)
Foreign key is called EmployeeID
Ich bevorzuge es, den Namen der Tabelle in keiner der Spalten zu duplizieren (daher bevorzuge ich Option 1 oben). Konzeptionell stimmt es mit vielen empfohlenen Vorgehensweisen in anderen Sprachen überein, in denen Sie den Namen des Objekts nicht in seinen Eigenschaftsnamen verwenden. Ich denke, dass die Benennung des Fremdschlüssels EmployeeID
(oder Employee_ID
besser) dem Leser sagt, dass es sich um die ID
Spalte der Employee
Tabelle handelt.
Einige andere bevorzugen Option 2, bei der Sie den Primärschlüssel mit dem Präfix "Tabellenname" benennen, damit der Spaltenname in der gesamten Datenbank identisch ist. Ich sehe diesen Punkt, aber Sie können jetzt einen Primärschlüssel nicht visuell von einem Fremdschlüssel unterscheiden.
Ich denke auch, dass es überflüssig ist, den Tabellennamen im Spaltennamen zu haben, denn wenn Sie die Tabelle als Entität und eine Spalte als Eigenschaft oder Attribut dieser Entität betrachten, betrachten Sie sie als ID-Attribut der Employee
, nicht das EmployeeID
Attribut eines Mitarbeiters. Ich gehe nicht und frage meinen Kollegen, was sein PersonAge
oder PersonGender
ist. Ich frage ihn, wie alt er ist.
Wie ich schon sagte, es ist eine heftige Debatte und wir gehen weiter und weiter und weiter darüber. Ich bin daran interessiert, neue Perspektiven zu bekommen.