在虚拟名册上对用户进行分组

时间:2011-05-26 04:34:14

标签: php mysql sql greatest-n-per-group

我正在努力想出最简单/用户/高效的方法,使用mysql将3个用户组合在一起。

设置阶段:

  • 列表中的X个用户数(全部使用int account_id)
  • 迷你分组需要基于每个用户创建(例如,用户1希望以220分组)。
  • 每个分组最多3个人(用户1 +用户220 +用户9123 =群组已满)
  • 需要轻松查找用户是否在群组中而不查看一堆列

我对如何最好地为此创建架构感到难过(因此我可以轻松查询我的表以查看用户是否在一个组中,或者是否可以添加它们,或检查组空间可用性)。

任何人都有任何想法?我最初的想法是这样的架构(但它看起来真的太僵硬了):

模式

GROUP_ID  USER1  USER2  USER3 LASTUPDATE
1         1      220    null  5/25/2011 20:00:00
2         300    2      4     5/25/2011 20:00:00

你会如何做到这一点,使这个简单,非常灵活和高效。我真的觉得这很愚蠢。

1 个答案:

答案 0 :(得分:4)

我个人会通过使用3个表来解决这个问题。

Users Table
user_id user_name ..... last_update

Groups Table
group_id group_name ......

Users to groups Table
user_to_group_id user_id group_id

通过 “用户到群组” 表格形成多对多关系,显然您可以将更多3个用户链接到一个群组,这样您就可以在向组添加新用户时,必须让PHP逻辑检查。

您可以简单地使用SQL连接来检索所需的所有数据,并在PHP代码中过滤结果。

我希望这会有所帮助

亲切的问候

加里