gpt4 book ai didi

database-design - 如何在 1NF 中建模可选的一对多关系

转载 作者:行者123 更新时间:2023-12-01 02:59:54 25 4
gpt4 key购买 nike

如何在不破坏第一范式的情况下对零、一种或多种类型的关系进行建模?也就是说,不存储任何 NULL 值。

单独的关系表?添加表格是否“值得”,还是过度规范化?

这是一个与我的真实案例相对应的示例:

假设我们有一所大学,有一些免费类(class)和一些免费宿舍。不过,有些类(class)和宿舍是收费的。许多类(class)和房间确实有相同的费用(金额),尽管它们是不同的类(class)/房间。

所以我们将有:

tblCourse
Id
Name

tblDormRoom
Id
Address

tblFee
Id
Amount

为了对此建模,我的做法是添加两个表来保存可选的一对多关系。
tblCourseToFee
CourseId
FeeId

tblDormRoomToFee
DormRoomId
FeeId

这样我就可以避免存储任何空值,也可以避免重复存储在 DormRoom 和 Course 之间共享的费用。

考虑到快速 n 更脏的版本,它不严格遵守 1NF:
tblFee
Id
CourseId (nullable)
DormRoomId (nullable)
Amount

这仅使用一张表而不是三张表,但引入了空值。

最佳答案

这是一个有趣的问题 - 可以在 on Wikipedia 中找到第一范式中一对多关系的一个很好的例子。 (我想在这里发布一些内容,但它不是 Stackoverflow 格式友好的)。

基本思想是定义两个表,主表的标识符用作关联表的标识符,并理解关联表可能包含重复的标识符。

出于好奇,您是否正在从事某种数据挖掘项目?我有兴趣了解更多关于这将如何应用的信息。

关于database-design - 如何在 1NF 中建模可选的一对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1171535/

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