深入理解数据库设计:掌握4个范式的基础知识 (数据库 4个范式)
在当今数据爆炸的时代,数据库设计和管理成为了企业极为关注和重要的方面。好的数据库设计能够极大地提升企业的运营效率和竞争力。数据库设计的核心是数据范式,在设计数据库时,必须严格遵循数据范式的规范。
本文将介绍4个常用的数据范式,让读者掌握基础的数据库设计知识,以提升数据库设计能力。
之一范式:原子性
之一范式,也称为原子性,是所有数据范式中最基础的一个。所谓原子性,是指数据库中的表的每一列都必须是原子性的,即每一列中所包含的数据类型都是最基本的,不可再次分解。
如果某一个列包含的数据是由多个数据合并而成,那么就违反了之一范式。例如一个表中有一列叫作“地址”,这一列中包含了很多信息,如省份、城市、街道、门牌号等等,这就不符合原子性的要求。正确的做法应该是将地址拆分成多个列,如省份、城市、街道、门牌号。
下面图表展示了原子性的规范,可以看出每一列中的数据都是原子性的。
![之一范式](https://img-blog.csdnimg.cn/20230819162312846.png)
第二范式:高级关联性
第二范式,也称为高级关联性,是对之一范式的进一步规范,要求每个表必须有唯一的主键,且每一列都与主键相关。
如果一张表中存在多个主键,那么该表就违反了第二范式。例如一个包含订单信息和订单日期两列的表,如果将日期列提取出来作为一个新的表,同时在每个表中加上一个主键,那么这个表就符合第二范式了。
下面图表展示了高级关联性的规范,可以看出每个表都有唯一的主键,并与主键相关。
![第二范式](https://img-blog.csdnimg.cn/20230819162351457.png)
第三范式:消除依赖
第三范式,也称为消除依赖,是在原子性和高级关联性的基础上,进一步规范每个数据列与主键之间的依赖关系,即要求数据列之间不会出现传递依赖关系。
例如,一个客户信息表有客户姓名、客户地址、邮政编码和号码四个列,其中客户地址列包含省份、城市和街道三个信息,这时候如果将省份和城市作为一个组合存储,那么这个表就违反了第三范式。因为客户地址和省份、城市之间存在传递依赖关系。
正确的做法是,将每个信息存储在不同的列中,并且每个列都与主键相关。例如,将省份、城市、街道三个信息分别存储在不同的列中,且每个列都与主键相关。
下面图表展示了消除依赖的规范,可以看出每个数据列都与主键相关,且不存在传递依赖关系。
![第三范式](https://img-blog.csdnimg.cn/20230819162425572.png)
第四范式:消除多值依赖
第四范式,也称为消除多值依赖,是在三范式的基础上,规范每个表中的多值依赖关系,确保每张表都能够实现单一的目的。
例如,一个包含订单和商品信息的表,其中订单和商品的价格和数量都随着时间的不同而发生变化,这时候如果不将价格和数量独立成一个新的表,那么这个表就违反了第四范式。因为存在价格和数量的多值依赖关系。
正确的做法是,将价格和数量信息独立成一个新的表,使每个表都能够实现单一的目的。
下面图表展示了消除多值依赖的规范,可以看出每张表都能够实现单一的目的,且不存在多值依赖关系。
![第四范式](https://img-blog.csdnimg.cn/2023081916245550.png)
结语:
以上就是数据库设计中4个基础的数据范式,相比于其他规范,这一套规则更加的实践和体系化。掌握数据范式的规范,可以帮助我们更好的设计和管理数据库,减少数据异常和冗余,提升数据库的整体性能。