2016-12-13 56 views
1

我正在创建一个具有组的系统。这些可以被认为是像Facebook组织。用户可以创建新的组。目前,我有以下类型的群组:具有Facebook类似组的系统的数据库设计

  • 城市群 - 以某个城市为基础的群组。例如“伦敦买卖团体”
  • 学校组 - 基于学校的组。例如“伦敦大学研究组”
  • 兴趣组 - 不绑定到某个地点的组。例如“50多岁的针织组织”

未来会增加更多的组类型。每一组可以有不同的类型的选项,但各组具有相同的基本数据:

  • 一种ID
  • 甲创建者ID
  • 甲名称
  • 一个选项描述

我正在为这个数据库设计而拼命挣扎。我最初的想法是为不同的团体创建不同的表格。

例如有一张名为group的表。该表具有id,creator id,name,description,member count,timestamps

然后有其他表格来表示其他组,并将它们链接到group。所以我有一个city_group表,其中包含和id,group_id,city_id。对于其他组类型也是如此。

我与此唯一的问题是interest_group没有任何额外的数据,一个正常的group。但为了能够只查询兴趣组,我认为创建一个interest_group表可能很有意义。它只会有以下列:id,group_id,timestamps ...这似乎有点浪费,有一个表只是为了这个目的。

这里有一个图,使事情变得更加容易: enter image description here

是否有我的解决方案,或者没有更好的办法来解决这个设计问题的任何问题?

+0

你有一些预定义类型的团体?如果用户创建一个新组,会发生什么?它会成为一个利益集团吗?或者您是以后可以添加组的唯一一个? –

+0

用户创建的群组为“城市群组”和“兴趣群组”。只有管​​理员可以创建“学校组”。未来还会有其他类型的团体,如代表运动队的“运动团体”等。 – BugHunterUK

+0

有趣的问题你在这里。那些在这些小组中的成员呢?会不会有像用户表和用户和组之间的链接表? –

回答

3

我有一个想法,这是一个基本的解决方法:有另一个表,如:你有id(PK)的group_type,然后你有tablename(类型的完整表名)。

然后,您应该从您的组表中链接到此group_type表中的FK。

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

毕竟这一点,你可以建立基于此表中的值您的疑问,作为一个例子:

JOIN (SELECT tablename FROM group_type WHERE id=group.group_type_id) ON ..