什么是数据库三范式

Posted 泡^泡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是数据库三范式相关的知识,希望对你有一定的参考价值。

第一范式

每列都是不可再分的数据单元。比如,我们设计地址字段时,不应该将省份与城市合并在一起,应该拆分成省份与城市两个不同的字段。

第二范式

表中的非主键列不存在对主键的部分依赖。这句不好理解,太拗口了。实质就是:每张表只应该描述一件事。

比如:订单表,就只应该包括订单信息,而不应该有产品的具体信息,产品信息应该单独归为一张产品表。

第三范式

表中的列不存在对非主键列的传递依赖。
通俗版解释:任何字段不能由其他字段派生出来,字段没有冗余。
比如订单表中有顾客编号与顾客姓名两个字段,顾客姓名可以由顾客编号找出,因此,该字段属于冗余字段,不符合第三范式。

反范式

实际上,没有冗余的数据表并非是最好的设计,有些场景,如果某些字段联表查询或者实时计算太耗时,我们就需要添加冗余字段,这种就是以空间换时间的作法。

以上是关于什么是数据库三范式的主要内容,如果未能解决你的问题,请参考以下文章

SQL中在银行开户遵循三范式,应该建几张表?

E-R画图规则和数据库设计的三大范式

推荐系统产品和算法概述丨产品杂谈系列

数据库三范式是什么?

Mysql数据库设计三范式

Java面试题之数据库三范式是什么?