SQLjoin表命名约定
我有2个表:用户和angular色,我有一个表连接在一起。 连接表中唯一的事情是连接两个表的Ids。
我应该把这个表叫做什么? 我从来没有真正看到这个好的命名约定。
以前见过的惯例:
- UsersToRolesJoin
- UsersToRolesLink
- UsersToRolesMembership
- UsersRoles
例如:
Users: Id Name Roles: Id Name TableThatJoinsTheTwo: Id UserId RoleId
似乎映射表正在存储每个用户所属的所有angular色。 如果这是正确的,我会调用表UserRoles
。
这正确(海事组织)多元化的意图表,而不是UsersRoles
这听起来很奇怪。
我会调用用户表User
,angular色表Role
和UserRoles
表UserRoles
。
顺便说一下,pk Id
在连接表中并不是必须的。 最好将UserId
和RoleId
与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结尾的东西怎么样?”(如果你刚启动项目,我会改变它) - 通用约定是:
User
,Role
和xref表:UserRole
。 - 最重要的桌子,或者之前存在的桌子,先走一走。 如果“angular色”表在用户权限之外没有真正的用处,这是特别真实的。 所以
UserRole
比RoleUser
更有意义。 - 我也看到了像
User_X_Role
或UserXRole
这样的东西,如果你喜欢这个额外的冗长的话
我们有相同的结构,并调用链接表UserRoles。
数据库代表企业,对吗? 那么这个企业里的人们称这种关系是什么呢?
这里有一些我知道的:
-
employee
向line manager
==组织结构图报告 -
student
需要course
==招生 -
woman
嫁给man
==婚姻
如有疑问,请向企业内部的域名专家咨询。
这是我工作场合的惯例:
UsersXRoles
我总是用类似于: rel_user_roles
或relUserRoles
。 哪个表首先通常取决于它在数据模型中的位置。
我有一个很容易就能看到的习惯:
User Role User2Role
RoleUser
– 我使用字母sorting(即Role
来之前User
)。 这样,当你写一个查询时,你不必去尝试和记住你用来命名连接表的顺序。
我也使用单数作为别人提到 – 你不必记得! 为我工作。
2种方法:
-
在那里你将只有一个表之间的关系:连接表可以是RoleUser或Role_User。 按照你的名字顺序,angular色第一,然后用户按字母顺序,那么你不必记得!
-
在这些表之间将存在多个关系: 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