web-dev-qa-db-fra.com

Convention de dénomination de table de jointure SQL

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:

  • UsersToRolesJoin
  • UsersToRolesLink
  • UsersToRolesMembership
  • UsersRoles

Ex:

Users:  
Id  
Name

Roles:  
Id  
Name  

TableThatJoinsTheTwo:  
Id  
UserId  
RoleId  
55
Josh Close

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.

29
akmad

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.

25
BalusC

Je suggérerais simplement UsersRoles , car c'est ce qu'il contient.

20
J__
  • Les noms de table doivent toujours être au singulier, ainsi plus tard, vous n'avez pas besoin de dire "est-ce User ou Users? Qu'en est-il des choses qui se terminent par un S? Etc"
  • La convention commune serait: User, Role et la table xref: UserRole.
  • La table la plus importante, ou celle qui existait avant, commence en premier. Ceci est particulièrement vrai si la table 'role' n'a aucune utilisation réelle en dehors des autorisations d'accès utilisateur. alors UserRole est beaucoup plus logique que RoleUser.
  • J'ai aussi vu des choses comme User_X_Role ou UserXRole, si vous aimez la verbosité supplémentaire
8
adamJLev

J'appellerais la table de liens ceci:

Remove_The_Surrogate_Primary_Key_From_The_Link_Table_Unless_You_Can_Prove_That_You_Really_Need_One
8
Quassnoi

Nous avons la même structure et appelons la table de liens UserRoles.

6
Adriaan Stander

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.

5
onedaywhen

Ceci est la convention sur mon lieu de travail:

UsersXRoles
4
Ewen Cartwright

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.

2
Alex Gandy

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
Jez

2 approches:

  1. 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!

  2. 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.

1
Chalky

J'ai une convention que je trouve facile à voir tout de suite:

User
Role
User2Role
1
tster

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. 

1
Chalky

J'essaie de garder les choses simples, mais aussi d'être descriptif:

user_role_join

0
Aperunner

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.

0
Ales

Nous avons toujours utilisé les noms des deux tables suivis du mot "Liens" . Ainsi, dans votre exemple, notre nom de table serait "UsersRolesLinks".

0
Sonny Boy

Vous pouvez voler une page à Microsoft et l’appeler UsersInRoles .

0
Matthew Jones