我有两个表:用户和角色,我有一个表将这些表连接在一起。连接表中唯一的东西是链接2个表的ID。
我该怎么称呼这张桌子?我从来没有真正看到过这个很好的命名惯例。
我以前见过的约定:
例如:
Users:
Id
Name
Roles:
Id
Name
TableThatJoinsTheTwo:
Id
UserId
RoleId
答案 0 :(得分:30)
似乎映射表存储了每个用户所属的所有角色。如果这是正确的,我会调用表UserRoles
。
这是正确的(IMO)复数表的意图而不是UsersRoles
,这听起来很奇怪。
答案 1 :(得分:26)
我会调用users表User
,角色表Role
和联接表UserRoles
。
顺便说一下,在连接表中并不一定需要pk Id
。最好将UserId
和RoleId
放在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结尾的东西怎么样?”(我会如果你刚开始这个项目,现在改变这个)User
,Role
和外部参照表:UserRole
。UserRole
比RoleUser
更有意义。User_X_Role
或UserXRole
之类的内容答案 5 :(得分:6)
我们有相同的结构并调用链接表UserRoles。
答案 6 :(得分:6)
数据库代表的是企业,对吗?那么那个企业的人们怎么称呼这种关系呢?
以下是我所知道的一些内容:
employee
报告line manager
==组织结构图
student
需要course
==注册
woman
结婚man
==婚姻
如有疑问,请询问企业内的域专家。
答案 7 :(得分:4)
这是我工作场所的惯例:
UsersXRoles
答案 8 :(得分:2)
我总是选择:rel_user_roles
或relUserRoles
。哪个表首先通常只取决于它在数据模型中的位置。
答案 9 :(得分:2)
我一直在仔细考虑这个问题,我会将表格User
和表格Role
与表格UsersRoles
相关联。我认为它很好,因为它表明多对多关系可以被视为将多个角色链接到一个用户,或者实际上许多用户连接到一个角色(因此两者都是复数有意义)。它也可以被理解为“用户角色”,表明关于关系的正常思考方式是“用户拥有的角色”。
答案 10 :(得分:1)
我有一个我很容易看到的约定:
User
Role
User2Role
答案 11 :(得分:1)
RoleUser
- 我使用字母顺序(即Role
之前的User
)。这样,当您编写查询时,您不必尝试记住用于命名连接表的顺序。
我也像其他人提到的那样使用单数 - 你不必试图记住!适合我。
答案 12 :(得分:1)
2种方法:
在表之间只有一个关系:join table可以是RoleUser或Role_User。按照您的名字顺序,角色1,然后是用户字母,然后您不必尝试记住!
表格之间有多种关系: 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