Database 表示家庭、家庭和关系的数据库模型

Database 表示家庭、家庭和关系的数据库模型,database,model,relationships,Database,Model,Relationships,这是我的情况。我正在建立一个数据库来跟踪人们和家庭之间的关系。通常,一切都与“户主”有关 我试图避免这种情况,因为当人们搬家(即哥哥最终找到工作并搬走)或家庭破裂(即爸爸和妈妈离婚,家庭现在一分为二,一些孩子和妈妈住在一起,一些和爸爸在一起)时,这会产生问题 当模型基于HOH时,找出如何级联数据是一个巨大的挑战。我的方法是将数据分为三个表:家庭表、个人表和关系表。hh只存储地址和id。关系存储人员id a、人员id b和关系代码(即1=兄弟姐妹)。person存储姓名和hh_id。这样,如果一个

这是我的情况。我正在建立一个数据库来跟踪人们和家庭之间的关系。通常,一切都与“户主”有关

我试图避免这种情况,因为当人们搬家(即哥哥最终找到工作并搬走)或家庭破裂(即爸爸和妈妈离婚,家庭现在一分为二,一些孩子和妈妈住在一起,一些和爸爸在一起)时,这会产生问题

当模型基于HOH时,找出如何级联数据是一个巨大的挑战。我的方法是将数据分为三个表:家庭表、个人表和关系表。hh只存储地址和id。关系存储人员id a、人员id b和关系代码(即1=兄弟姐妹)。person存储姓名和hh_id。这样,如果一个家庭破裂,我可以将爸爸妈妈之间的关系更改为NULL,并在不中断其他关系的情况下为爸爸和任何随他而来的孩子创建新的hh。![以下是模型的外观:

人 -个人识别码 -hh_id

关系 -个人身份证 -个人身份证 -与cd的关系

家庭 -hh_id -地址

这对你们来说有意义吗?你们能想出任何不起作用的原因,或者认为有更好的模型吗


对不起,我知道这有点令人沮丧。所有这些离婚让我的工作变得困难>:(

关于姓名,我建议保持简单。有一个包含三列的姓名表:

  • 吉文纳姆斯
  • 家庭主妇
  • 名称类型{合法,备用}
您甚至可以只使用一个名称列作为全名。我不会使用中间名、已婚名、婚前名、父姓、昵称或任何其他“特殊”名称列。这只会使任何名称搜索算法复杂化,并混淆数据输入。以下是一些要考虑的示例名称:

  • 约翰·保罗·史密斯
  • 玛丽·保罗·史密斯
  • 约翰·亨利·威廉·阿尔特米斯·威廉姆斯
  • 玛利亚·德·洛杉机·戈麦斯·波蒂略
  • 阿卜杜勒·拉赫敏·伊本·赛义德·伊本·阿卜杜勒·阿齐兹·菲拉斯特尼
  • 阿卜杜拉
那么这些名字显示了什么呢?第一个是非常普通的英文名字,有first(约翰)、middle(保罗)和last(史密斯)第二个是玛丽。她的法定名字中没有中间名。她婚前姓保罗,已婚姓史密斯。她两个都用,没有连字符。第三个是约翰。他的父母认为给他三个中间名会很棒。第四个是拉美裔名字,这是她的法定全名。她的名字叫玛丽亚·德·洛斯·安吉尔es。“德洛杉矶”是她的名字的一部分。她没有中间名。她父亲的第一个姓氏是戈麦斯。她母亲的第一个姓氏是波蒂略。所以玛丽亚的全名是戈麦斯·波蒂略。她通常只叫玛丽亚·戈麦斯,因为她厌倦了自己的名字被弄乱。从技术上讲,波蒂略是她的“最后一个”姓名,但如果她只使用两个姓氏中的一个,她将使用第一个姓氏(父姓)第五个是Abdul Rahmin,Saeed的儿子,巴勒斯坦Abd al-Aziz的孙子。请把它放在首/中/末。Abdul Rahmin是他的名字。其余的都是姓。最后一个是Abdulla。他来自阿富汗。在那里没有姓的人并不少见。他只是Abdulla。他也不知道自己的生日e、 因为他来自哪里,他们并不在乎(这在美国殖民时代是经常发生的……在许多文化中,关心生日是最近的事)

你应该有一个单独的名字表,这样一个人可以有多个名字行。一个例子说明了其中的一个原因。玛丽·史密斯讨厌她的普通名字。所以她合法地把它改成了宇宙阳光棒棒糖伯爵夫人。她有点后悔两年后。现在,她有时用玛丽·史密斯,有时用她自己的名字阳光宇宙,取决于月亮的相位。把它们都储存起来,你就可以找到她

不管你怎么做,人们都会以任何你能想象到的方式(有些是你想象不到的),在不同的时间输入不同的名字。如果你不接受这一点,你就会有问题


对于家庭,正如我在我的评论中提到的,你可能想要支持一对多对多的关系。一个家庭可以有零到很多人,一个人可以有零到许多家庭。这有点棘手,因为这取决于你作为一个家庭的定义。你可能觉得有必要把一个作为一个主要的,但是考虑一个孩子T。hat一半的时间和母亲在一起,一半的时间和父亲在一起。哪一个是主要的?

很酷的概念!我可以问一下你建这个是为了什么,你在用什么数据库软件吗?(顺便说一句,最后一行让我咯咯笑)你可能想考虑把名字存储在一个单独的表中,其中一个人可以有多个名字。关于家庭,你的模型可以存储一个有多个家庭的人的情况,因为这并不罕见(第二个家庭,分裂的监护等)。?@nivixzixer为一家非营利机构工作。我们跟踪我们向个人和家庭提供的服务,我们正在过渡到一个新的数据库和报告系统。我不知道我们将使用什么样的软件。我们有一个供应商将实际构建它。@hatchet这是一个有趣的观点。不,在这个模型中,每个人每次只有一个hh_idime,如果他们无家可归,可能没有。有没有办法适应这些情况?@Ian-一个个人和家庭之间的交叉表,用于创建多对多关系。一个家庭可以有很多(零或更多)人,一个人可以有很多(零或更多)家庭。如果需要的话,intersect记录中的一个标志可以指示一个人的主要家庭。非常周到和有趣的回答。谢谢!你建议如何处理户主?假设每个家庭可以有零个或一个,并且一个人c