2

一位同事向我解释说,可空外键在数据库设计中被认为是不好的做法,因为它违反了早期的正常形式之一。虽然我在学校上过基本的数据库课程,但我不认为范式被作为一个话题来讨论。讨论此主题的维基百科和其他网站使用学术术语,但我想更好地理解范式的这方面,而不必上一堂课。

我认识到并不是每个人都觉得可空外键不好:这个问题并没有引发关于这个问题的辩论。相反,我想具体了解它们与范式主题的关系。可空外键违反了哪些范式,为什么?

4

1 回答 1

3

我认为Erwin Smout在您链接的问答中回答了这个问题。

日期在第 7 版中写道。数据库系统简介的。

第一范式:当且仅当在该 relvar 的每个合法值中,每个元组中的每个属性都恰好包含一个值时,一个 relvar 是 1NF。(第 357 页)

并且

关于空值的全部要点恰恰是它们不是值——重复一遍,它们是标记或标志。(第 584 页)

因此,在 Date 看来,允许在任何列中使用空值的 relvar 不在 1NF 中。

他的“缺失信息”一章有很多关于这个主题的内容。

于 2012-08-22T00:45:38.837 回答