J'ai 2 tables: Utilisateurs et rôles, et j'ai une table qui les associe. La seule chose dans la table de jointure est les identifiants qui lient les 2 tables.
Comment devrais-je appeler cette table? Je n'ai jamais vraiment vu une bonne convention de nommage pour cela.
Conventions que j'ai vues auparavant:
Ex:
Users:
Id
Name
Roles:
Id
Name
TableThatJoinsTheTwo:
Id
UserId
RoleId
Il semble que la table de mappage stocke tous les rôles dont chaque utilisateur est membre. Si cela est correct, j'appellerais la table UserRoles
.
Ceci correctement (IMO) pluralise l’intention de la table plutôt que UsersRoles
qui semble étrange.
J'appellerais la table utilisateurs User
, la table de rôles Role
et la table de jointure UserRoles
.
À propos, la variable pk Id
n'est pas vraiment nécessaire dans une table de jointure. Mieux vaut combiner les UserId
et RoleId
ensemble le pk ou juste uk (clé unique) afin que vous puissiez garantir des relations User
-Role
uniques.
Je suggérerais simplement UsersRoles , car c'est ce qu'il contient.
User
ou Users
? Qu'en est-il des choses qui se terminent par un S? Etc"User
, Role
et la table xref: UserRole
.UserRole
est beaucoup plus logique que RoleUser
.User_X_Role
ou UserXRole
, si vous aimez la verbosité supplémentaireJ'appellerais la table de liens ceci:
Remove_The_Surrogate_Primary_Key_From_The_Link_Table_Unless_You_Can_Prove_That_You_Really_Need_One
Nous avons la même structure et appelons la table de liens UserRoles.
La base de données représente une entreprise, non? Alors, comment les gens de cette entreprise appellent-ils cette relation?
Voici certains que je connais:
employee
rapporte à line manager
== organigramme
student
prend course
== inscription
woman
épouse man
== mariages
En cas de doute, demandez à un expert du domaine au sein de l'entreprise.
Ceci est la convention sur mon lieu de travail:
UsersXRoles
Je suis toujours allé avec quelque chose comme: rel_user_roles
ou relUserRoles
. Le choix de la table en premier dépend généralement de sa position dans le modèle de données.
J'ai bien réfléchi à cette question et je lierais la table User
et la table Role
à la table UsersRoles
. Je pense que c'est agréable, car cela indique que la relation plusieurs-à-plusieurs peut être considérée comme reliant plusieurs rôles à un utilisateur, voire plusieurs utilisateurs à un rôle (les deux étant pluriels ayant donc un sens). Il peut également être lu comme "Rôles des utilisateurs", indiquant que la façon habituelle de penser la relation est "les rôles d'un utilisateur".
2 approches:
où vous n'aurez jamais qu'une seule relation entre les tables: la table de jointure pourrait être RoleUser ou Role_User. Allez en ordre alphabétique avec votre ordre de nom, rôle 1, puis utilisateur, vous ne devez pas essayer de vous en souvenir!
où vous aurez plusieurs relations entre les tables: relationshipname - p. ex. vous pouvez avoir une liste de rôles normaux pour les utilisateurs et une liste de rôles potentiels ou passés pour les utilisateurs. Mêmes 2 tables, mais relations différentes. Ensuite, vous pourriez avoir RoleUser_Current et RoleUser_Past.
J'ai une convention que je trouve facile à voir tout de suite:
User
Role
User2Role
RoleUser
- J'utilise l'ordre alphabétique (c'est-à-dire que Role
vient avant User
). Ainsi, lorsque vous écrivez une requête, vous n'aurez pas à essayer de vous souvenir de l'ordre utilisé pour nommer la table de jointure.
J'utilise aussi le singulier comme quelqu'un d'autre l'a mentionné - vous n'avez pas à essayer de vous en souvenir! Travaille pour moi.
J'essaie de garder les choses simples, mais aussi d'être descriptif:
user_role_join
Il est bon de nommer une table de jointure en utilisant des noms de table qu’elle connecte . Par exemple, deux tables "produits" et "product_tags", la table de jointure étant appelée "product_product_tags" ..__ nom, vous pouvez dire immédiatement quelles tables sont jointes. Quand vous avez 50 tables ou plus dans votre base de données, il est bon de l'avoir comme ceci et vous n'avez plus besoin de penser à joindre des tables.
Nous avons toujours utilisé les noms des deux tables suivis du mot "Liens" . Ainsi, dans votre exemple, notre nom de table serait "UsersRolesLinks".
Vous pouvez voler une page à Microsoft et l’appeler UsersInRoles .