4

我需要存储一个数字列表,最好存储在一个单元格中。我有一个人名单,每个人都有一个唯一的 ID,我需要知道他们的家庭成员是谁。我对 SQL 数据库相当陌生,请尽量保持简单。

4

3 回答 3

5

Do not do this: storing multiple values in the single column kills the possibility of using referential integrity constraints, and turns into a nightmare to maintain (imagine maintaining everyone's lists when a new baby's born!)

The simplest solution is to add a column with a family_id to each person's row. All members of the same family will have this unique ID set to the same value; members of different families will have different family_ids.

This is not ideal in cases of marriages, unless you are willing to either join the two families on marriage of their children, or move the bride or the groom to the family of the spouse.

于 2012-09-23T03:00:00.840 回答
3

您将要设置一个包含两列的 Family 表,一列存储相关人员的唯一 ID,另一列存储其家庭成员的唯一 ID。您的表格最终将如下所示:

Family(userID, familyMemberID)

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

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

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

于 2012-09-23T02:53:47.240 回答
0

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

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

如果您想跟踪成员的移动。在数据仓库世界中,您通常有一个 relId、relTy 和 Timestamp 来保存历史记录,但您不必走那么远。

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

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

于 2012-09-23T15:10:17.487 回答