第一范式 第二范式 第三范式 BC范式

1.第一范式(1NF):所有属性都是不可分割的原子值。 

https://i-blog.csdnimg.cn/blog_migrate/b69d37b17ab6d982afd36e0b706c8a49.png

https://i-blog.csdnimg.cn/blog_migrate/c358192f0bd0cb3c7456f6ac62550da9.png


2.第二范式(2NF):在第一范式的基础上,要求非主属性都要和码有完全依赖关系 

部分依赖:第2张表

 

https://i-blog.csdnimg.cn/blog_migrate/0a4c5113e2713527e168a57be66aa4cf.png

 

https://i-blog.csdnimg.cn/blog_migrate/118e624bd509da7b6ef951fb74da45f9.png

https://i-blog.csdnimg.cn/blog_migrate/76ab62210e5abff16b282242f9a43a84.png


第三范式(3NF):任何非主属性不依赖于其它非主属性,目的是实体拆分。

传递依赖:系名->系主任

https://i-blog.csdnimg.cn/blog_migrate/9d06e165c8679ee31350096e241e3860.png

https://i-blog.csdnimg.cn/blog_migrate/aa6f85c54a894b243b9a30acee4eb51a.png

 

4. BC (The Boyce-Codd Normal Form) 范式在 3NF 的基础上消除主属性对于码的部分与传递函数依赖。 

https://i-blog.csdnimg.cn/blog_migrate/def6eb2ffda3d562098683a8331b5794.png

某仓库被清空后,需要删除所有与这个仓库相关的物品存放记录,会带来什么问题?——仓库本身与管理员的信息也被随之删除了。 

如果某仓库更换了管理员,会带来什么问题?——这个仓库有几条物品存放记录,就要修改多少次管理员信息。 

造成此问题的原因:存在着主属性对于码的部分函数依赖与传递函数依赖。(在此例中就是存在主属性【仓库名】对于码【(管理员,物品名)】的部分函数依赖。

解决办法就是要在 3NF 的基础上消除主属性对于码的部分与传递函数依赖。

所以,(仓库号,存储物品号)和(管理员号,存储物品号)都是仓库管理关系表的候选码,表中唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:

(仓库号)——>(管理员号)

(管理员号)——>(仓库号)

仓库(仓库名,管理员) 

库存(仓库名,物品名,数量)这样,之前的插入异常,修改异常与删除异常的问题就被解决了。

5、4NF(第四范式)

设R是一个关系模型,D是R上的多值依赖集合。如果D中存在凡多值依赖X->Y时,X必是R的超键,那么称R是第四范式的模式。

 

例如,职工表(职工编号,职工孩子姓名,职工选修课程),在这个表中,同一个职工可能会有多个职工孩子姓名,同样,同一个职工也可能会有多个职工选修课程,即这里存在着多值事实,不符合第四范式。如果要符合第四范式,只需要将上表分为两个表,使它们只有一个多值事实,例如职工表一(职工编号,职工孩子姓名),职工表二(职工编号,职工选修课程),两个表都只有一个多值事实,所以符合第四范式。

还有:

 

例如:
课程代码     老师      教科书
001              Tom      A
001              Tom      B
001              Jim        A
001              Jim        B
教科书和老师都是多值属性,所以分出来
课程-老师(课程代码,老师)
课程-教科书(课程代码,教科书)
  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值