一位同事向我解释说,可空外键在数据库设计中被认为是不好的做法,因为它违反了早期的范式之一。虽然我在学校上过基础数据库类(class),但我不认为范式是作为一个主题来讨论的。维基百科和其他讨论这个主题的网站使用学术术语,但我想更好地理解范式的这方面,而不必上一整堂课。
我认识到not everybody feels nullable foreign keys are bad :这个问题并不是要就此事展开辩论。相反,我想具体了解它们与范式主题的关系。可空外键违反了哪些范式,为什么?
最佳答案
我认为Erwin Smout在您链接的问答中回答该问题。
日期是在第七版中写的。 数据库系统简介。
First normal form: A relvar is in 1NF if and only if, in every legal value of that relvar, every tuple contains exactly one value for each attribute. (p 357)
还有
The whole point about nulls is precisely that they are not values--they are, to repeat, marks or flags. (p 584)
因此,在 Date 看来,允许任何列中存在空值的相关变量不属于 1NF。
他的“缺失信息”一章有很多关于这个主题的内容。
关于database - 可空外键会违反什么范式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12064516/