在SQL数据库中存储数字列表的最佳方法?

时间:2012-09-23 02:41:01

标签: sql database

我需要存储一个数字列表,最好是存储在一个单元格中。我有一份每个人都有一个唯一身份证的人名单,我需要能够知道他们的家人是谁。我对SQL数据库很新,试着让它保持相当简单。

3 个答案:

答案 0 :(得分:4)

不要这样做:在单列中存储多个值会导致使用参照完整性约束的可能性,并变成一个噩梦来维护(想象一下,当新生儿出生时,维护每个人的名单!)

最简单的解决方案是向每个人的行添加一个family_id的列。同一系列的所有成员都将此唯一ID设置为相同的值;不同家庭的成员将有不同的family_id s。

在婚姻的情况下,这并不理想,除非您愿意与子女一起加入两个家庭,或将新娘或新郎带到配偶的家庭。

答案 1 :(得分:3)

您将要设置一个包含两列的Family表,一列用于存储相关人员的唯一ID,另一列用于存储其家庭成员的唯一ID。你的表最终看起来像这样:

Family(userID, familyMemberID)

每个家庭成员都会有一个条目,所以看起来像这样:

(1, 2), (1, 3), (1, 4), (1, 5), (2, 8)

由您决定是否要在两个方向上存储连接(即对于每个插入,您还要插入倒数(1,2)也插入(2,1)),这可以通过触发器或其他方式轻松完成装置

答案 2 :(得分:0)

添加familyId是最简单的解决方案。

然而,由于孩子结婚并组成一个新家庭,家庭成员会随着时间而变化。我将创建一个单独的“关系”表,其中包含personId和familyID。

如果您想跟踪会员动向。在数据仓库领域,您通常有一个relId,relTy和Timestamp来保存历史记录,但您不必走那么远。

也许有一天,你想要创建一个家谱。因此,请确定您是否真的希望personId / familyId作为关系表中的列名。

总之,为了您的迫切需要,我将使用单独的关系表。