在设计数据库时,必须遵守一定的规则,在关系数据库中,就是范式。
字数虽少,信息量大。
什么是范式呢?(这个概念可忽略,说白了,就是个规则)是某一级别的关系模式的集合,在关系数据库中应该满足一定的要求,不同的范式对关系的属性值集合的函数以来不一样。
范式的有以下几种,第一范式(1NF),第二范式(2NF),第三范式(3NF),Boyce-Codd范式(BCNF),第四范式(4NF),第五范式(5NF),第六范式(6NF)。
规范化是从低一级的关系模式通过模式分解转化成高一级的关系模式。
第一范式是对关系模式的基本要求,不满足第一范式的数据库就不是关系型数据库。
第一范式通俗的讲所有非主码属性完全依赖与主码,完全依赖是什么意思的,就是函数里y=f(x)的关系。x决定y的值。非主码属性由主码推出来。
第二范式
第一范式到第二范式是消除了部分函数依赖。
部分函数依赖,故名肆意,在一张表中
主键 | 非主键1 | 非主键2 | 非主键组A | 非主键组A | 非主键A | |
---|---|---|---|---|---|---|
注:(主键不一定是只有一个,只有一个的时候,会在表中进行unique关键字说明)
注:(消除部分函数依赖,表中存在非主码组或者非主键组,其中的依赖与主键或主码,其中的不依赖,这样的例子在生活中很多,消除其中的不依赖主码的非主码,就是消除部分函数依赖的过程,也就是从第一范式向第二范式过度)
第三范式
第二范式向第三范式转化,是消除非主码对主码的传递函数依赖,传递函数依赖,就是y=f(x),x=f(z);所以就是y=f(f(z));y最后依赖z,这就是传递依赖。
主码组 | 主码组 | 非主码2 | 非主码3 | 非主码4 | ||
---|---|---|---|---|---|---|
身份证 | 你名字 | 你家 | 物业 | 物业电话 | ||
身份证是主键,在这里,你的身份证和你的名字去确定了唯一确定你,你的家这个属性依赖于你,你所在的物业,但是电话和地址是物业的属性,能推断出来,这存在传递函数依赖,消除之后便是第三范式的标准。
一般的关系型数据库符合第三范式就可以了。