我最近为一个家庭成员制作了一个简单的数据库。该数据库存储个人及其亲密的家庭成员,其中包括兄弟姐妹。问题是,与父母不同,兄弟姐妹是可变的,一个人可能有1个或12个。
我的SQL表的简化版本如下:
|姓名|年龄|父母|兄弟姐妹||||||||||
当前同级被压缩为单个字符串,并用分隔符存储在同级列中。
示例:";john%doe%15& liam%doe%17& james%doe%23";
实际的字符串有20多个字段,这使得打包和拆包字符串变得混乱。它还使添加新字段变得困难,因为更改数据的存储顺序会导致数据加载错误。我环顾四周,注意到许多数据库都必须面临类似的问题,是否有某种行业标准或更好的方法?
干杯
这是N:M(基数(的一个明显例子。你要创造的是一个";交叉表";其连接两个独立表的ID。因为您可以在两端都有多个数据。
在这种情况下,您将为父母和兄弟姐妹以及person_parents(id_person, id_parent)
和person_siblings(id_person, id_sibling)
表创建一个单独的表。请记住,您还需要使用此方法将父母和兄弟姐妹创建为一个人,或者您可以选择写下姓名。