Dans notre groupe de développement, nous avons un débat acharné concernant la convention de dénomination des clés primaires et étrangères. Il y a essentiellement deux écoles de pensée dans notre groupe:
1:
Primary Table (Employee)
Primary Key is called ID
Foreign table (Event)
Foreign key is called EmployeeID
ou
2:
Primary Table (Employee)
Primary Key is called EmployeeID
Foreign table (Event)
Foreign key is called EmployeeID
Je préfère ne pas dupliquer le nom de la table dans aucune des colonnes (donc je préfère l'option 1 ci-dessus). Conceptuellement, il est cohérent avec de nombreuses pratiques recommandées dans d'autres langues, où vous n'utilisez pas le nom de l'objet dans ses noms de propriété. Je pense que nommer la clé étrangère EmployeeID
(ou Employee_ID
pourrait être mieux) indique au lecteur que c'est la ID
colonne de la Employee
table.
D'autres préfèrent l'option 2 où vous nommez la clé primaire avec le préfixe du nom de la table afin que le nom de la colonne soit le même dans toute la base de données. Je vois ce point, mais vous ne pouvez plus distinguer visuellement une clé primaire d'une clé étrangère.
De plus, je pense qu'il est redondant d'avoir le nom de la table dans le nom de la colonne, car si vous considérez la table comme une entité et une colonne comme une propriété ou un attribut de cette entité, vous la considérez comme l'attribut ID du Employee
, pas l' EmployeeID
attribut d'un employé. Je ne vais pas demander à mon collègue ce qu'il estPersonAge
ou PersonGender
est. Je lui demande quel est son âge.
Donc, comme je l'ai dit, c'est un débat qui fait rage et nous continuons encore et encore à ce sujet. Je suis intéressé à avoir de nouvelles perspectives.