我需要存储一个数字列表,最好是存储在一个单元格中。我有一份每个人都有一个唯一身份证的人名单,我需要能够知道他们的家人是谁。我对SQL数据库很新,试着让它保持相当简单。
答案 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作为关系表中的列名。
总之,为了您的迫切需要,我将使用单独的关系表。