我正在创建一个有组的系统。这些可以被看作是facebook群组。用户可以创建新组。目前我有以下类型的组:
城市群-基于某个城市的群。例如“伦敦买卖集团”
学校团体-基于学校的团体。例如“伦敦大学研究小组”
兴趣小组-与某个地方无关的小组。例如“50岁以上的针织集团”
将来会添加更多的组类型。每个组可以有不同类型的选项,但所有组都有相同的基本数据:
身份证
创建者ID
名字
期权说明
我正在努力为这个设计一个数据库。我最初的想法是为不同的组创建不同的表。
例如,有一个名为group的表。此表有一个idcreator idnamedescriptionmember counttimestampsgroup
然后有其他表来表示其他组,并将它们链接到city_group。所以我有一个id表,它包含和group_idcity_idinterest_group。其他组类型也一样。
我唯一的问题是group没有任何正常interest_group的额外数据。但是为了能够只查询兴趣组,我认为创建一个id表是有意义的。它将只有以下列:group_idtimestamps,。为了这个目的而有一张桌子似乎有点浪费。
这里有一个图表可以让事情变得更简单:
mysql - 具有类似Facebook的群组的系统的数据库设计-LMLPHP
我的解决方案有什么问题,或者有什么更好的方法来解决这个设计问题?

最佳答案

我有一个想法,这基本上是一个解决方法:有另一个类似于:group_type的表,其中有id(pk),然后有table name(该类型的完整表名)。
然后,应该有一个来自组表的FK链接到此组类型表。

id    tablename
--------------------
1     School Group
2     Interest Group

完成所有这些操作后,可以基于此表中的值构建查询,例如:
JOIN (SELECT tablename FROM group_type WHERE id=group.group_type_id) ON ..

10-08 04:46