规范化数据库表
Normalizing database tables
我在数据库设计方面是一个新手,我正在尝试一个测试用例来跟踪学生。
在下图中,学生可以在学校或俱乐部。为此,我在 LocationId 上创建了它作为学生所在位置的全局 ID。
但问题是我根据 TypeId 来确定它是俱乐部还是学校。
所以在我的数据访问查询中,我必须提出案例。伪代码是:
if TypeId == 1
search in club for the LocationId and get the clubId.
else if TypeId == 2
search in school for the LocationId and get the schoolId.
我怎样才能摆脱这些情况并仍然保持规范化规则。
非常感谢阅读。欢迎任何意见。
美好的一天!
这似乎是 table 继承的情况,解决它的方法不止一种。您使用 LOC_CONTAINER
的解决方案不起作用(正如您所注意到的),因为它需要外部代码来进行检查。
看看 this comprehensive answer 关于继承的内容。例如,您可以将 SCHOOL
和 CLUB
table 统一为一个名为 PLACE
的 table 或者同时拥有 SCHOOL
和 CLUB
table STUDENT
中的列,其中一列必须是 NULL
.
我在数据库设计方面是一个新手,我正在尝试一个测试用例来跟踪学生。
在下图中,学生可以在学校或俱乐部。为此,我在 LocationId 上创建了它作为学生所在位置的全局 ID。
但问题是我根据 TypeId 来确定它是俱乐部还是学校。 所以在我的数据访问查询中,我必须提出案例。伪代码是:
if TypeId == 1
search in club for the LocationId and get the clubId.
else if TypeId == 2
search in school for the LocationId and get the schoolId.
我怎样才能摆脱这些情况并仍然保持规范化规则。
非常感谢阅读。欢迎任何意见。 美好的一天!
这似乎是 table 继承的情况,解决它的方法不止一种。您使用 LOC_CONTAINER
的解决方案不起作用(正如您所注意到的),因为它需要外部代码来进行检查。
看看 this comprehensive answer 关于继承的内容。例如,您可以将 SCHOOL
和 CLUB
table 统一为一个名为 PLACE
的 table 或者同时拥有 SCHOOL
和 CLUB
table STUDENT
中的列,其中一列必须是 NULL
.