【发布时间】:2015-04-26 10:45:57
【问题描述】:
请从学术观点而非实际工程观点考虑。这仅是关于 1NF 和 1NF。
考虑到下面的非规范化形式,主键是 {trainingDateTime,employeeNumber},你如何使它成为第一范式?
如果我们将课程表、讲师表和员工表分开为单独的表,它将自动变为 3NF。
!
如果我分成不同的行,它会是这样的:
但这里的问题很明显——主键不再有效。
现在将主键更改为 {trainingDateTime, employeeNumber, employeeSkill} 似乎不是一个明智的解决方案。
【问题讨论】:
-
同意。这就是你需要使用 2NF 和 3NF 的地方。
-
为什么你希望你的表只标准化为 1NF?
-
这更像是一个学术演示,展示了每个范式是如何派生的。在实践中,我无法想象有人会从一个完整的非规范化形式开始。
-
你可以,对于一个完全不了解规范化的新手来说,他可以从一个完全非规范化的模式开始。但是随着您的练习越来越多,您的默认架构通常会标准化为 3NF