2010-05-07 24 views
1

好吧所以,我有一个用户表,并希望一起定义用户组。最好的解决办法我有,这是创建三个数据库表如下:如何设计此链接表?

用户表

user_id 
user_name 

UserGroupLink

group_id 
member_id 

的GroupInfo

group_id 
group_name 

这种方法保持成员,团体信息分开。这只是我的想法。有一个更好的方法吗?另外,链接两个其他表的良好命名约定是什么?

+0

这里有缺少的信息。用户可以属于多个组吗?属于一个组是可选的还是强制性的?您提出的解决方案是可以的,但如果用户只能有一个组,则可以进一步削减。另外,调用它的成员id与被调用的实体不一致。 – 2010-05-07 18:50:00

回答

2

外貌,好,我会去的:

Group 
----- 
GroupID (PK) 
Name 
CreatedDate 

GroupUser 
--------- 
GroupUserID (PK) 
GroupID (FK) 
UserID (FK) 
CreatedDate 

User 
---- 
UserID (PK) 
Firstname 
Lastname 
CreatedDate 
... 
+0

PK =主键 FK =? – sooprise 2010-05-07 18:48:54

+3

@Soo,FK =外键,来自另一个表的键。 – tloflin 2010-05-07 18:49:29

+0

谢谢,很高兴知道这个术语。 – sooprise 2010-05-07 18:52:19

2

看起来像一个相当标准的基于角色的用户模型给我。这可以。

3

这要看情况。

如果一个成员只能属于一个组,那么你的解决方案是矫枉过正(并没有正确优化)。在这种情况下,摆脱UserGroupLink表就足够了,只需将group_id列添加到UserTable即可。

+1

每个用户可以是多个组的成员。我应该在OP中指定(我的错误) – sooprise 2010-05-07 18:49:23

+0

好的。那么忽略我;) – Franz 2010-05-07 19:36:33

0

重要的是要选择一个惯例并坚持下去。

以下是我会说出这些表(该结构是好的,顺便说一句):

Users 
----- 
id 
name 

UserGroups 
---------- 
user_id 
group_id 

Groups 
------ 
id 
name 
0

你的表格布局是合适的,恕我直言。连接表有各种不同的命名约定--Ruby on Rails使用以下划线连接的表名,按照字母顺序排列:“group_member”。

0

除了答案,创建表格的决定并不依赖于一个观点。有我们所说的数据库规范化;数据库设计中遵循的规则。