【发布时间】:2015-05-08 15:53:57
【问题描述】:
这是我的情况。我正在建立一个数据库来跟踪人和家庭之间的关系。通常,一切都与“户主”相关联。
我试图避免这种情况,因为当人们搬家(即兄弟终于找到工作并搬出去)或家庭破裂(即爸爸和妈妈离婚,家庭现在一分为二,一些孩子留在家里)时,它会产生问题妈妈,有的和爸爸一起)。
当模型基于 HOH 时,弄清楚如何级联数据是一个巨大的挑战。我的方法是将数据分成 3 个表,家庭、人员和关系。 hh 只存储一个地址和一个 ID。关系存储 person_id_a、person_id_b 和关系代码(即 1 = 兄弟)。 person 存储名称和 hh_id。这样,如果一个家庭分裂了,我可以将妈妈和爸爸之间的关系更改为 NULL,并为爸爸和他一起来的任何孩子创建一个新的 hh,而不会破坏其他关系。![这是模型的样子:
人 -person_id -hh_id
关系 -person_id_a -person_id_b -relationship_cd
家庭 -hh_id -地址
这对你们有意义吗?你能想出这行不通的任何原因,或者认为有更好的模型吗?
对不起,我知道这有点令人沮丧。所有这些离婚让我的工作变得困难>:(
【问题讨论】:
-
很酷的概念!请问您构建它的目的是什么以及您使用的是什么数据库软件? (顺便说一句,最后一行让我咯咯笑)
-
您可能需要考虑将姓名存储在一个单独的表中,其中一个人可以有多个姓名。关于家庭,您的模型是否可以存储一个人拥有多个家庭的情况,因为这种情况并不少见(第二套住房、分割监护权等)?
-
@nivixzixer 为非营利组织工作。我们跟踪我们为个人和家庭提供的服务,并且我们正在过渡到一个新的数据库和报告系统。我不知道我们将使用什么软件。我们有一个供应商会实际建造它。
-
@hatchet 这是一个有趣的观点。不,在这个模型中,每个人一次只有一个 hh_id,如果他们无家可归,则可能没有。关于如何适应这些情况的任何想法?
-
@Ian - Person 和 Household 之间的相交表,用于创建多对多关系。一个家庭可以有很多(零个或多个)人,一个人可以有很多(零个或多个)家庭。如果需要,相交记录中的标志可以指示一个人的主要家庭。
标签: database model relationships