对数据库范式的理解(第一,第二,第三和BCNF)

在理解这几个范式之前最好先理解下三种函数依赖,分别是:

(1)平凡和非平凡依赖

(2)部分与完全依赖

(3)传递函数依赖

平凡依赖简单说就是一个函数x在决定y的同时,y还是x的子集,而反之就是非平凡依赖。

而完全依赖则是指x决定y,并且这个x已经是最小的了,不能在划分了,任何的划分都会导致不能在决定y。反之就是部分依赖

传递函数依赖很好理解,就是x决定y,y决定z,则x间接决定z。

第一范式(1NF)

第一范式是最基础的,它仅仅要求每个属性都不可以再分,即要保证原子性。

比如中国江苏就不是原子的,它还能分成国家:中国, 省份:江苏。

第二范式(2NF)

第二范式则是在第一范式的基础上消除非主属性对于码的部分函数依赖,即不能出现部分依赖,只能都是完全依赖,这里可能又要问了,什么是非主属性,什么是码?

码的定义如下:

(1)这些属性函数决定该关系模式的所有属性。

(2)属性组合的任何真子集都不能决定R的所有属性。

简单来说就是能决定所有的属性同时它要为最小的,不能分解出更小的集合来决定所有属性。

如 R = {A,B,C,D} , F:{B->D, AB->C}

它就不是第二范式(2NF),因为这里D只依赖了B而没有依赖A,而这个关系的关键字为{A,B},所以存在部分依赖。

第三范式(3NF)

第三范式消除了非主属性对于码的传递函数依赖,即关系中不存在类似 x->y, y->z的情况。如果出现了就不是第三范式。另外要注意,这边如果是主属性出现传递依赖的话依然属于第三范式。

BCNF

它就是消除了主属性对于码的部分函数依赖与传递函数依赖。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值