gpt4 book ai didi

sql - 识别数据库中的 sibling

转载 作者:行者123 更新时间:2023-12-04 16:39:06 25 4
gpt4 key购买 nike

我目前有一个包含学生表的数据库,如下所示:

 Students
_________
StudentID PK
FirstName
LastName
BirthDate
AddressL1
AddressL2
City
State
Zip
etc.....

我的客户要求我添加一项功能,以便她可以识别系统中的 sibling 。如果 Jimmy 是学生,Billy 是学生,Jimmy 和 Billy 是兄弟,她想要一种方式来了解这一点。

您将如何实现?

我认为添加一个带有 FamilyID FK 的族表对于这个问题来说是多余的。你同意吗?

我的直觉是添加一个名为Family 的可为空的列。如果学生没有 sibling ,则将其设置为 null。如果该学生有 sibling ,则每个学生都会获得存储在 Family 列中的相同 GUID。

如果你想列出给定学生的 sibling ,你会执行: 选择 sibling 。* 来自学生 内部联接 作为 sibling 的学生 在 学生.家庭 = sibling .家庭 在哪里 Students.StudentID = ?

这种方法有什么缺点?我应该考虑其他策略吗?

最佳答案

我假设对兄弟关系存储的需求是一个边缘用例,因此出于表示这一点的无限可能性,我将提出一个对您现有模型的侵犯最少的肯定适合更常见需求的模型:

添加带有家庭 ID 和学生 ID 的“家庭”表。学生 ID 是引用“学生”表的外键。这两个字段一起是复合主键。

当两个学生原来是 sibling 时,从一个序列中创建一个新的家庭 ID,并将包含两个学生 ID 和这个新家庭 ID 的两行添加到“家庭”表。

有些人可能会建议将“地址”或“母亲姓名”等字段规范化到家庭表中,但请相信我,家庭比您想象的要复杂得多:-)

关于sql - 识别数据库中的 sibling ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7809421/

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