gpt4 book ai didi

sql - 数据库设计帮助 : Whose kid is this anyway

转载 作者:太空狗 更新时间:2023-10-30 01:59:30 24 4
gpt4 key购买 nike

我正在为我的妻子开发一个联系人管理器作为学习 Silverlight 4 的有趣练习。它将跟踪人们的地址、电话号码、电子邮件、特殊场合(生日、周年纪念等)

在设计数据库的过程中,我遇到了一个小障碍。她希望能够按家庭对联系人()进行分组,因此我创建了一个包含 FamilyIDFamilyDescription< 的 Families,然后将 FamilyID 添加到表 People

现在 SELECT * FROM People WHERE FamilyID = 2 将返回该特定家庭中的每个人。

认为这是一个可以接受的想法;然而,我正在努力的地方是如何融入 child ,就像 child 一样。我们有一个非常非常大的家庭,所以每个家庭都会有多个 child 。我是否只是将他们添加到表 People 中,如果是这样,我如何区分 child 和成人?

非常感谢任何见解,谢谢。

最佳答案

PEOPLE.familyid 的问题在于它确保一个人只能属于一个家庭——永远。这意味着如果你想区分直系亲属和大家庭,你会寻找一个层次结构来关联家庭,而他们不一定是层次结构......

最合适的解决方案是包含一个多对多表,这样您就可以将一个 PEOPLE 记录关联到任意数量的 FAMILY 记录:

PEOPLE_FAMILY_MAP

  • PEOPLE_ID(主键,PEOPLE.id 的外键)
  • FAMILY_ID(主键,FAMILY.familyid 的外键)

如果你想显示人与人之间的关系 - 你需要一个关系类型表(type_code,description),并使用以下方式关联关系:

  • PERSON_ID(主键,PEOPLE.id 的外键)
  • RELATED_TO_PERSON_ID(主键,PEOPLE.id 的外键)
  • RELATIONSHIP_TYPE_CODE(主键,RELATIONSHIP_TYPE_CODES.RELATIONSHIP_TYPE_CODE 的外键)

关于sql - 数据库设计帮助 : Whose kid is this anyway,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3581247/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com