关系数据库设计

时间:2016-06-14 02:24:07

标签: database relational-database rdbms

我正在建立一个在线收集系统,我正在尝试设计一个数据库。我目前有四个表(家庭,家庭表,家庭成员,家庭成员表)。基本上我需要数据库做的是从终端客户端捕获信息,填写表单,更新有关该家庭的信息,并存储以前的表单。我难以理解的问题涉及家庭成员及其各自的形式。由于我无法控制将添加多少个别家庭成员,因此如何创建一个更新和存档个人家庭成员表格的数据库,我感到很遗憾。

这是我在考虑的问题:

HOUSEHOLD

  • UserID(主键)
  • 家庭ID
  • 户主
  • 家庭成员人数
  • 电话号码

HOUSEHOLD FORM

  • UID(自动增量)
  • 家庭ID(应与家庭表相同)
  • 户主
  • 家庭成员人数
  • 电话号码

现在,我有一个家庭独有的UserID。每当使用此UserID时,我知道这是该家庭第一次输入信息或者他们正在更新他们的信息。家庭身份证是我用来形成其他表格之间的关系。家庭和家庭表格应该具有相同的家庭ID,所以我知道这些表格来自那个特别的家庭。

此外,我需要有关每个家庭成员的信息。

家庭成员

  • UID(自动增量)
  • 家庭ID(与家庭表相同)
  • 家庭会员ID
  • 名字
  • 姓氏
  • 出生日期
  • 与户主的关系

家庭成员表格

  • UID(自动增量)
  • 家庭成员ID(与家庭成员相同)
  • 名字
  • 姓氏
  • 出生日期
  • 与户主的关系

我在这里尝试做的是让数据库将个人家庭成员信息存储为家庭成员表中的实体,每当添加新表格时,家庭成员将被更新,之前的表格将保存在家庭成员中形式。家庭成员中的家庭ID基本上告诉我每个成员属于哪个家庭。家庭成员ID基本上允许我观察从该特定个人填写的所有表格。

同样,对此仍然很新,任何信息都将非常感谢!

1 个答案:

答案 0 :(得分:1)

您的“家庭表格”表格中的唯一唯一信息似乎是家庭中的电话号码和成员人数。如果这是真的,我会考虑彻底摆脱那张桌子。

对于家庭表格表格中的电话号码,您应该将其放在家庭表格中,因为它似乎只是属于家庭的信息:看起来每个家庭只有一个,而且数字似乎更多与家庭相关的家庭比家庭中的任何个人都要好。

我根本不会在家庭领域有一些成员。这个数字就是所谓的“派生”或“计算”值,这意味着您可以从数据库中已有的其他信息中获取它。您可以在Household表和Household成员表之间使用SELECT COUNT语句和JOIN语句。对于您在Google搜索中使用的任何数据库,都可以找到有关这些SQL语句的大量信息。

我还会删除“家庭成员表格”表。它似乎只是家庭成员表的一部分。

我认为您试图通过“家庭成员表格”表和“家庭表格”表完成的工作是将“住户”和“家庭成员”表联系起来。当您使用表来执行此操作时,它被称为连接表,但您通常只将连接表用于“多对多”关系。在你的情况下,多对多的关系就是房子里面可以有很多成员,个人可以属于几个家庭。

看起来你正试图模仿“有很多/属于”的关系。在您的情况下,这将是一个单独的家庭可以有几个成员,但任何个人只属于一个家庭。要链接或关联此关系中的数据,您只需在foreign表中放置一个外键即可。在您的情况下,属于表的是Household Members表,外键是Household ID。