【发布时间】:2011-10-18 15:03:11
【问题描述】:
我目前有一个带有学生表的数据库,如下所示:
Students
_________
StudentID PK
FirstName
LastName
BirthDate
AddressL1
AddressL2
City
State
Zip
etc.....
我的客户要求我添加一项功能,以便她可以识别系统中的兄弟姐妹。如果 Jimmy 是学生,Billy 是学生,而 Jimmy 和 Billy 是兄弟,她想要一种方法来了解这一点。
你将如何实现它?
我正在考虑添加一个带有 FamilyID FK 的家庭表对于这个问题来说太过分了。你同意吗?
我的直觉是添加一个名为 Family 的可空列。如果学生没有兄弟姐妹,则将其设置为 null。如果学生有兄弟姐妹,则每个学生都会获得存储在 Family 列中的相同 GUID。
如果你想列出给定学生的兄弟姐妹,你会执行: 选择兄弟姐妹。* 来自学生 内部联接 学生作为兄弟姐妹 上 学生.家庭=兄弟姐妹.家庭 在哪里 Students.StudentID = ?
这种方法有什么缺点?有没有我应该考虑的替代策略?
【问题讨论】:
-
除非它们是手动关联的,否则恐怕你只能得到“可能的”兄弟姐妹
-
请澄清:“我的客户要求我添加一项功能,以便她可以识别系统中的兄弟姐妹。”。该功能是否应该识别受骗者?...或者她是否识别它们并且该功能只是存储链接?您是否还需要说明如何呈现的规范?这是否意味着找到它们的搜索功能?不挑剔,只是试图准确地了解要求,因为最常见的错误是相反的(不够具体/不了解要求:)
-
“识别兄弟姐妹”?如何?按姓氏?同父异母的兄弟姐妹呢?
-
@Michael,她将通过 UI 标记兄弟姐妹。我只需要一种在数据库中表示它们的方法。
标签: sql database-design