具有Facebook组的系统的数据库设计

时间:2016-12-13 13:20:49

标签: mysql database database-design

我正在创建一个包含群组的系统。这些可以被认为像Facebook群组。用户可以创建新组。目前我有以下类型的小组:

  • 城市群 - 基于某个城市的群组。例如“伦敦买卖集团”
  • 学校集团 - 以学校为基础的团体。例如“伦敦大学学习小组”
  • 兴趣小组 - 与地方无关的群组。例如“Over 50's Knitting Group”

将来会添加更多的组类型。每个组可以有不同类型的选项,但所有组都具有相同的基本数据:

  • ID
  • 创作者ID
  • 姓名
  • 选项说明

我正在努力为此设置数据库设计。我最初的想法是为不同的群体创建不同的表格。

例如,有一个名为group的表。此表格包含idcreator idnamedescriptionmember counttimestamps

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

我遇到的唯一问题是interest_group没有任何正常group的额外数据。但是为了能够仅查询兴趣组,我认为创建interest_group表可能是有意义的。它只有以下列:idgroup_idtimestamps ...为此目的而设置一个表似乎有点浪费。

这是一个让事情变得简单的图表: enter image description here

我的解决方案是否有任何问题,或解决此设计问题的更好方法?

1 个答案:

答案 0 :(得分:3)

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

然后,你的Group表中应该有一个FK链接到这个group_type表。

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
  <link rel="stylesheet" href="/resources/demos/style.css">
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
  <script> <--This is path to jqueryUI
  $( function() {
    $( "#txt_date" ).datepicker();
  } );
  </script>
 </head>
<body>


<form id="form1" runat="server">
<div>
    <asp:TextBox ID="txt_date" Class="txt_date" runat="server"></asp:TextBox>
</div>
</form>

 </body>
</html>

完成所有这些后,您可以根据此表中的值构建查询,例如:

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