5 votes

Convention de nommage des clés étrangères

Lors de la création de relations entre les tables (dans mysql), j'ai rencontré un dilemme de nommage.

Par exemple, si je créais un site où un projet pouvait être créé par plusieurs utilisateurs et lu par plusieurs utilisateurs, pour relier des tables de questions et d'utilisateur, j'aurais potentiellement besoin de deux tables.

**auteurs_de_projet**
questionId
userId

et

**soumissionnaires_de_projet**
questionId
userId

Le problème ici est que les deux tables se ressemblent, à l'exception du nom de la table. Une représentation plus utile serait probablement

auteurs_de_projet
questionId
authorId

et

soumissionnaires_de_projet
questionId
bidderID

Le problème ici est maintenant que authorId et readerId ne sont en fait que des userIds, et le nom ne reflète pas cela, ce qui pourrait potentiellement indiquer de manière trompeuse que authorId et bidderId sont uniques et différents en soi.

Je suis sûr que mon exemple aura de nombreuses lacunes, mais j'ai rencontré ce problème assez récemment, donc ma question est : quelle méthode utilisez-vous ?

0voto

JeremyWeir Points 9424

J'aime être vraiment descriptif dans mes noms, car plus souvent qu'autrement, ils se retrouvent dans le code en tant que noms de propriété sur un objet. Ainsi, dans votre cas, j'aurais

project_authors
questionId
authoredByUserId

et

project_bidders
questionId
bidByUserId

Ensuite, dans le code, cela a beaucoup plus de sens lors de l'accès aux propriétés, comme

myProjectAuthorEntity.authoredByUserId = someUserId;
myProjectBidderEntity.bidByUserId = someOtherUserId;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X