SQLjoin表命名约定

我有2个表:用户和angular色,我有一个表连接在一起。 连接表中唯一的事情是连接两个表的Ids。

我应该把这个表叫做什么? 我从来没有真正看到这个好的命名约定。

以前见过的惯例:

  • UsersToRolesJoin
  • UsersToRolesLink
  • UsersToRolesMembership
  • UsersRoles

例如:

Users: Id Name Roles: Id Name TableThatJoinsTheTwo: Id UserId RoleId 

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

这正确(海事组织)多元化的意图表,而不是UsersRoles这听起来很奇怪。

我会调用用户表User ,angular色表RoleUserRolesUserRoles

顺便说一下,pk Id在连接表中并不是必须的。 最好将UserIdRoleId与pk或uk(唯一键) RoleId在一起,以便确保唯一的User Role关系。

我只会build议UsersRoles ,因为这是它所持有的。

我会打电话给链接表:

 Remove_The_Surrogate_Primary_Key_From_The_Link_Table_Unless_You_Can_Prove_That_You_Really_Need_One 
  • 表名应该总是单一的,这样以后你不必像“是User还是Users ?以S结尾的东西怎么样?”(如果你刚启动项目,我会改变它)
  • 通用约定是: UserRole和xref表: UserRole
  • 最重要的桌子,或者之前存在的桌子,先走一走。 如果“angular色”表在用户权限之外没有真正的用处,这是特别真实的。 所以UserRoleRoleUser更有意义。
  • 我也看到了像User_X_RoleUserXRole这样的东西,如果你喜欢这个额外的冗长的话

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

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

这里有一些我知道的:

  • employeeline manager ==组织结构图报告

  • student需要course ==招生

  • woman嫁给man ==婚姻

如有疑问,请向企业内部的域名专家咨询。

这是我工作场合的惯例:

 UsersXRoles 

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

我有一个很容易就能看到的习惯:

 User Role User2Role 

RoleUser – 我使用字母sorting(即Role来之前User )。 这样,当你写一个查询时,你不必去尝试和记住你用来命名连接表的顺序。

我也使用单数作为别人提到 – 你不必记得! 为我工作。

2种方法:

  1. 在那里你将只有一个表之间的关系:连接表可以是RoleUser或Role_User。 按照你的名字顺序,angular色第一,然后用户按字母顺序,那么你不必记得!

  2. 在这些表之间将存在多个关系: relationshipname – 例如,您可能有一个用户常规angular色列表,并且您可能有一个潜在或过去的用户angular色列表。 相同的两个表,但不同的关系。 那么你可能有RoleUser_Current和RoleUser_Past。

我们一直使用两个表格的名字,后面跟着单词“Links”。 所以在你的例子中我们的表名将是'UsersRolesLinks'。

您可以从Microsoft窃取一个页面,并将其称为UsersInRoles

我一直在仔细考虑这个问题,并且将表User和表Role用表UsersRoles 。 我认为它很好,因为它表明多对多的关系可以被认为是将许多angular色连接到一个用户,或者确实将许多用户连接到一个angular色(因此这两个都是复数是有意义的)。 也可以理解为“用户angular色”,表示关系关系的正常思维方式是“用户angular色”方式。

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

user_role_join

事实上,使用表别名,并用ASselect器分隔相同名称的列。

例如SELECT user.id AS user_id