SQL范式

范式(数据库设计范式,数据库的设计范式)是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。

满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。

第一范式

第一范式(1NF):如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF(即R符合第一范式)。简单的说,就是每一个列(属性)只有一个,没有重复。

要求

1.必须有主键来加以识别。

2.每个字段只能存放单一的值并确保有数据没有重复的组。

例如:

姓名班级课程
小明1班数学,语文
小红2班英语
小明2班数学

里面还有重复组并且没有存放单一的值,并不符合第一范式,我们给其增加主键学号加以区别:

学号姓名班级课程
101小明1班数学
101小明1班语文
201小红2班英语
202小明2班数学

第二范式

首先要满足第一范式。它的规则是要求数据表里的所有数据都要和该数据表的主键有完全依赖关系。例如有表:

货物供应商ID供应商价格供应商地址
毛巾01世纪联华10.0星光大道
牙刷01世纪联华5.0星光大道
毛巾02十足12.0月光大道

可知,这里的主键有货物和供应商ID,价格和两个主键都有关,可是供应商地址只和供应商ID有依赖关系。那么不符合第二范式,我们可以将其修改为两张表:

供应商ID供应商供应商地址
01世纪联华星光大道
02十足月光大道
货物供应商ID价格
毛巾0110.0
牙刷015.0
毛巾0112.0

这样就符合了第二范式要求的表内数据和表内主键完全依赖的关系。

第三范式

在第二范式的基础上,要求所有非键属性都只和候选键有相关性,也就是说非键属性之间应该是独立无关的。
从上述表来说,供应商和供应商地址是相关的,知道了供应商也就知道了供应商地址(不考虑一厂多址的情况)。可以分为:

供应商ID供应商
01世纪联华
02十足
供应商ID供应商地址
01星光大道
02月光大道
    原文作者:zjbao123
    原文地址: https://www.jianshu.com/p/6e8254a99314
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞