如何设计此链接表?

时间:2010-05-07 18:43:09

标签: sql database

好的,我有一个用户表,想要一起定义用户组。我的最佳解决方案是创建三个数据库表,如下所示:

用户表

user_id
user_name

UserGroupLink

group_id
member_id

的GroupInfo

group_id
group_name

此方法将成员和组信息分开。这只是我的思维方式。有一个更好的方法吗?另外,链接另外两个表的表的命名约定是什么?

6 个答案:

答案 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)

除了答案之外,创建表格的决定不依赖于意见。我们称之为数据库规范化;数据库设计遵循的规则。