SQL连接表命名约定

Jos*_*ose 61 sql sql-server naming-conventions

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

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

我以前见过的约定:

  • UsersToRolesJoin
  • UsersToRolesLink
  • UsersToRolesMembership
  • UsersRoles

例如:

Users:  
Id  
Name

Roles:  
Id  
Name  

TableThatJoinsTheTwo:  
Id  
UserId  
RoleId  
Run Code Online (Sandbox Code Playgroud)

akm*_*mad 31

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

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

  • 该表同样描述了一个用户拥有的所有角色,就像它描述了一个角色拥有的所有用户一样。所以用户角色是有道理的。 (3认同)

Bal*_*usC 26

我将调用users表User,角色表Role和连接表UserRoles.

顺便说一句,Id在连接表中不一定需要pk .更好地使UserIdRoleId一起PK,或只是英国(唯一键),这样就可以保证独特的User- Role关系.

  • `(User,Role)`为这个表做一个很好的复合`PK`.没有必要创建一个代理人. (18认同)
  • `@BalusC`:连接表确实需要一个`PK`,但不需要*代理*`PK`.它需要的是一个由它连接的`FKs'组成的复合`PK`. (3认同)

J__*_*J__ 21

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

  • 除非出于某种原因确实需要,否则也要删除"Id"列; 假设查找通常是从用户端完成的,则在(UserId,RoleId)上创建CLUSTERED PK,在(RoleId,UserId)上创建另一个索引,或者只创建RoleId,但包括UserId. (2认同)

ada*_*Lev 9

  • 表名应该总是单数,这样以后你就不必像"是它User还是Users??以S结尾的事情怎么样?"(如果你刚刚启动项目,我现在就改变它)
  • 共同的约定是:User,Role,和外部参照表:UserRole.
  • 最重要的表格,或先前存在的表格.如果'role'表在用户权限之外没有实际用途,则尤其如此.所以UserRole更有意义RoleUser.
  • 我见过类似的东西User_X_Role或者UserXRole为好,如果你喜欢额外的冗长


Qua*_*noi 8

我打电话给链接表:

Remove_The_Surrogate_Primary_Key_From_The_Link_Table_Unless_You_Can_Prove_That_You_Really_Need_One
Run Code Online (Sandbox Code Playgroud)

  • 虽然有趣和准确,但这并没有真正回答原始问题.我更喜欢BalusC的答案.是的,我知道这是一个老问题. (2认同)

one*_*hen 7

数据库代表的是企业,对吧?那么该企业的人们称这种关系为何?

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

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

  • student需要course==注册

  • woman结婚man==婚姻

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

  • 这是一个很好的观点,我认为应该更多地使用它。例如,“注册”对于它在 Student_Course_Link 上的内容非常清楚。 (2认同)

Adr*_*der 6

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