【辫儿哥大白话】到底什么是数据库三大范式?(Mysql数据库的设计范式)

个人整理,心得体会,欢迎讨论指导.

这童鞋们学了这么长时间了,对数据库操作肯定已经度过了蹭一蹭的阶段。准备开始设计数据表尝试微操一下~但是具体应该怎么设计呢?要符合什么规范呢?设计出来好不好看呢?实不实用呢?接下来让辫儿哥给你们讲一下关于数据表的一些规范!
在这里插入图片描述

什么是范式?

范式(Paradigm)从专业角度上对它的定义为符合某一种级别的关系模式的集合。关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式。但是辫儿哥看从DB的角度说白了,就是对为满足数据库需求而对数据表设计时应规范
目前关系数据库有六种范式:第一范式(1NF)第二范式(2NF)第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
而通常我们用的最多的就是第一范式(1NF)第二范式(2NF)第三范式(3NF),也就是马上要讲的“三大范式”。

第一范式(1NF)

第一范式需要满足的规范术语要求为:对属性的原子性,要求属性具有原子性,不可再分解;说白了就是在数据表中,所设计的每一个字段所存储的值都只能为字段名要求的值,不可以产生其他歧义。咱们举个栗子!
在这里插入图片描述
如图所示这样的表接口就不符合 第一范式(1NF) 的规范要求,因为“性别”字段及“身高”字段出现了与字段名称不相符的数据。将其修调整符合1NF的格式为:
在这里插入图片描述
如此一来便满足了要求属性具有原子性,不可再分解 的规范要求。

第二范式(2NF)

第二范式需要满足的规范术语要求为:对记录的惟一性,要求记录有惟一标识,即实体的惟一性,即不存在部分依赖; 啥意思呢,就是说这张表中的 ==每个字段都要与【主键】相互关联的存在关联,而并不是之与其中单个或部分字段有关联。==举个栗子!
在这里插入图片描述
当前这个表便不符合第二范式(2FN) 的规范要求,其中商品ID,产品单价,库存与订单号发生关系,但是库存和订单销售价并不产生直接关系,只与主键有直接关系。所以按照第二范式(2FN)的规范要求应拆分成两个表:
在这里插入图片描述
如此便符合第二范式(2FN)规范

第三范式(3NF)

第三范式需要满足的规范术语要求为:3NF是对字段的冗余性,要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖; 通俗的讲,3FN就是2FN的基础上,所有字段的值都要与【主键】直接相关,而不能间接相关。 同样举个栗子!
在这里插入图片描述
我们还拿这个表举例子,以便于观察与2FN的差别,为了满足3FN的规范要求,则应拆分成这样的两张表:
在这里插入图片描述
可以看到,在第三范式(3FN)将商品与订单信息完全的分离开,并且都保持了每个数据表中的字段都与该表中【主键】有着直接关系。这样一来,便满足了3FN的规范。

原创文章 9 获赞 5 访问量 683

猜你喜欢

转载自blog.csdn.net/smilekzero/article/details/104768625