SQL连接表命名约定

时间:2009-11-19 16:14:10

标签: sql sql-server naming-conventions

我有两个表:用户和角色,我有一个表将这些表连接在一起。连接表中唯一的东西是链接2个表的ID。

我该怎么称呼这张桌子?我从来没有真正看到过这个很好的命名惯例。

我以前见过的约定:

  • UsersToRolesJoin
  • UsersToRolesLink
  • UsersToRolesMembership
  • UsersRoles

例如:

Users:  
Id  
Name

Roles:  
Id  
Name  

TableThatJoinsTheTwo:  
Id  
UserId  
RoleId  

19 个答案:

答案 0 :(得分:30)

似乎映射表存储了每个用户所属的所有角色。如果这是正确的,我会调用表UserRoles

这是正确的(IMO)复数表的意图而不是UsersRoles,这听起来很奇怪。

答案 1 :(得分:26)

我会调用users表User,角色表Role和联接表UserRoles

顺便说一下,在连接表中并不一定需要pk Id。最好将UserIdRoleId放在pk或uk(唯一键)中,以便确保唯一的User - Role关系。

答案 2 :(得分:21)

我建议只使用 UsersRoles ,因为它就是它所拥有的。

答案 3 :(得分:8)

我打电话给链接表:

Remove_The_Surrogate_Primary_Key_From_The_Link_Table_Unless_You_Can_Prove_That_You_Really_Need_One

答案 4 :(得分:8)

  • 表名应该总是单数,那么以后你不必像“是User还是Users?那些以S结尾的东西怎么样?”(我会如果你刚开始这个项目,现在改变这个)
  • 常见的惯例是:UserRole和外部参照表:UserRole
  • 最重要的表格,或者之前存在的表格。如果'role'表在用户权限之外没有实际用途,则尤其如此。所以UserRoleRoleUser更有意义。
  • 如果您喜欢额外的详细信息,我也会看到User_X_RoleUserXRole之类的内容

答案 5 :(得分:6)

我们有相同的结构并调用链接表UserRoles。

答案 6 :(得分:6)

数据库代表的是企业,对吗?那么那个企业的人们怎么称呼这种关系呢?

以下是我所知道的一些内容:

  • employee报告line manager ==组织结构图

  • student需要course ==注册

  • woman结婚man ==婚姻

如有疑问,请询问企业内的域专家。

答案 7 :(得分:4)

这是我工作场所的惯例:

UsersXRoles

答案 8 :(得分:2)

我总是选择:rel_user_rolesrelUserRoles。哪个表首先通常只取决于它在数据模型中的位置。

答案 9 :(得分:2)

我一直在仔细考虑这个问题,我会将表格User和表格Role与表格UsersRoles相关联。我认为它很好,因为它表明多对多关系可以被视为将多个角色链接到一个用户,或者实际上许多用户连接到一个角色(因此两者都是复数有意义)。它也可以被理解为“用户角色”,表明关于关系的正常思考方式是“用户拥有的角色”。

答案 10 :(得分:1)

我有一个我很容易看到的约定:

User
Role
User2Role

答案 11 :(得分:1)

RoleUser - 我使用字母顺序(即Role之前的User)。这样,当您编写查询时,您不必尝试记住用于命名连接表的顺序。

我也像其他人提到的那样使用单数 - 你不必试图记住!适合我。

答案 12 :(得分:1)

2种方法:

  1. 在表之间只有一个关系:join table可以是RoleUser或Role_User。按照您的名字顺序,角色1,然后是用户字母,然后您不必尝试记住!

  2. 表格之间有多种关系: relationshipname - 例如您可能拥有用户的常规角色列表,并且您可能拥有用户的潜在或过去角色列表。相同的2个表,但不同的关系。然后你可能有RoleUser_Current和RoleUser_Past。

答案 13 :(得分:0)

您也可以将表命名为 ProductHasTag。这个约定在一些项目中使用。

答案 14 :(得分:0)

通过使用它连接的表的名称来命名连接表是很好的。 例如,两个表“products”和“product_tags”,并且连接表被称为“product_product_tags”。 最大的优点是,通过这个名称,您可以立即说出哪些表连接在一起。如果您的数据库中有50个以上的表,那么就可以这样做,并且您不再需要考虑加入表的目的。

答案 15 :(得分:0)

我尽量保持简单,但也是描述性的:

<强> user_role_join

答案 16 :(得分:0)

您可以从Microsoft窃取某个页面,并将其命名为 UsersInRoles

答案 17 :(得分:0)

我们总是使用两个表的名称,后跟单词“Links”。 因此,在您的示例中,我们的表名称为“UsersRolesLinks”。

答案 18 :(得分:-1)

实际上,使用表别名并使用AS选择器选择具有相同名称的列。

e.g。 SELECT user.id AS user_id