database - 可空外键会违反什么范式?

标签 database database-design normalization

一位同事向我解释说,可空外键在数据库设计中被认为是不好的做法,因为它违反了早期的范式之一。虽然我在学校上过基础数据库类(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/

相关文章:

mysql - 基于列值的实体关系

mysql - 数据库设计 : dating-site-like application?

php - Mysql记录用户的好恶

html - CSS 中的规范化究竟做了什么?

sql - AST 与后缀算法

database - 为什么在 postgresql 中授予权限或更改所有权时找不到数据库和角色

sql - 根据不同列中的值集以任何顺序连接表

mysql - 决定数据库表架构

php - 表单关闭标签在 php echo 中不起作用?表格元素在编译时相互超越。另外我的 'comment' 输入有什么问题?

database - 在数据库中使用大列有什么缺点吗?