Clé primaire/Clé étrangère de la convention de nommage

Dans notre dev groupe, nous avons un débat qui fait rage au sujet de la convention d'affectation de noms pour les Clés Primaires et Étrangères. Il n'y a fondamentalement deux écoles de pensée au sein de 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 répéter le nom de la table dans l'une des colonnes (Donc je préfère l'option 1 ci-dessus). Sur le plan conceptuel, il est compatible avec un grand nombre de 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 la mention de la clé étrangère EmployeeID (ou Employee_ID peut-être mieux) indique au lecteur que c'est le ID colonne de la Employee Table.

Certains d'autres préfèrent l'option 2 où vous le nom de la clé primaire préfixés par le nom de la table, de sorte que le nom de la colonne est la même tout au long de la base de données. Je vois ce point, mais vous ne pouvez pas distinguer une clé primaire d'une clé étrangère.

Aussi, je pense que c'est redondant d'avoir le nom de la table dans la colonne nom, parce que si vous pensez de la table comme une entité et d'une colonne comme une propriété ou un attribut de l'entité, pensez-vous que l'attribut ID de l' Employee, pas la EmployeeID attribut d'un employé. Je ne vais pas faire une demande à mon collègue que son PersonAge ou PersonGender est. Je lui demande ce que son Âge est.

Donc, comme je l'ai dit, c'est un débat qui fait rage et nous allons sur et sur et sur ce sujet. Je suis intéressé à obtenir de nouvelles perspectives.

  • la question des doublons de ce stackoverflow.com/questions/208580/...
  • J'ai lu plus de 10 questions similaires et a finalement trouvé le top 3 réponses sont bonnes ici : stackoverflow.com/a/465146/781695
  • Juste une note de côté: Choix 2 vous permettra de "Jointure Naturelle'. Diable, pourquoi ne pas toujours le faire en choix 1 par l'ajout d'Employés".ID d'Employé'. Mais le mieux pratiquer la voie semble être "Adhérer" à l'aide " SUR l'Employé.ID = Event.EmployeeID'.
  • Dans les deux cas, et d'avoir à utiliser des alias (ou " table_name.column_name") dans un ou plusieurs queires parce que vous êtes, dans les deux cas, répéter les noms de colonne.
InformationsquelleAutor Jeremy | 2009-09-02