好的,我有一个用户表,想要一起定义用户组。我的最佳解决方案是创建三个数据库表,如下所示:
用户表
user_id
user_name
UserGroupLink
group_id
member_id
的GroupInfo
group_id
group_name
此方法将成员和组信息分开。这只是我的思维方式。有一个更好的方法吗?另外,链接另外两个表的表的命名约定是什么?
答案 0 :(得分:3)
取决于。
如果某个成员只能属于一个组,那么您的解决方案就会过度(并且未正确优化)。在这种情况下,只需删除UserGroupLink
表并将group_id
列添加到UserTable
即可。
答案 1 :(得分:2)
对我来说,看起来像一个相当标准的基于角色的用户模型。这很好。
答案 2 :(得分:2)
看起来很好,我会选择:
Group
-----
GroupID (PK)
Name
CreatedDate
GroupUser
---------
GroupUserID (PK)
GroupID (FK)
UserID (FK)
CreatedDate
User
----
UserID (PK)
Firstname
Lastname
CreatedDate
...
答案 3 :(得分:0)
重要的是选择一个惯例并坚持下去。
以下是我如何命名这些表格(结构很好,BTW):
Users
-----
id
name
UserGroups
----------
user_id
group_id
Groups
------
id
name
答案 4 :(得分:0)
你的桌面布局合适,恕我直言。连接表有各种命名约定 - Ruby on Rails使用以下划线连接的两个表名,按字母顺序排列:在你的情况下为“group_member”。
答案 5 :(得分:0)
除了答案之外,创建表格的决定不依赖于意见。我们称之为数据库规范化;数据库设计遵循的规则。