数据库之范式趣谈

今天朋友圈内看到对数据库三范式非常好的一个比喻,感觉说的挺对的,特此分享一下:

首先,数据库的三范式的主要作用就是为了减少数据库的冗余而出现的。范式等级越高,数据库冗余越小。

第一范式就是数据库表的每一列都是不可分割的原子数据项。

第二范式就是在第一范式基础上基于属性完全依赖主键。

第三范式就是任何非主属性不能依赖于其他非主属性(2NF的基础上消除传递依赖)。例如有员工表和部门表,员工表里面除了部门表的主键之外,不能包含部门表的其他非主属性(部门名称,部门说明等)

巴斯-科德范式(BCNF):每个属性都不传递依赖于R的候选键,那么称R为BCNF的模式。假设仓库管理关系表(仓库号,存储物品号,管理员号,数量),满足一个管理员只在一个仓库工作;一个仓库可以存储多种物品。如果一个仓库存储多个物品,那么一样的仓库号和管理员号会重复记录,这样管理员号就冗余了,不符合BCNF范式,最好非常两张表,(仓库号,管理员号)和仓库表(仓库号,存储物品号,数量),这样,就符合BCNF范式了。

第四范式,R是一个关系模型,D是R上的多值依赖集合。如果D中存在凡多值依赖X->Y时,X必是R的超键,那么称R是第四范式的模式。职工表(职工编号,职工孩子姓名,职工选修课程),在这个表中,同一个职工可能会有多个职工孩子姓名,同样,同一个职工也可能会有多个职工选修课程,即这里存在着多值事实,不符合第四范式。如果要符合第四范式,只需要将上表分为两个表,使它们只有一个多值事实,例如职工表一(职工编号,职工孩子姓名),职工表二(职工编号,职工选修课程),两个表都只有一个多值事实,所以符合第四范式。

一个做AI的同学总结到:

第一范式就是原始人记录自然现象,钻木取火下次重复;第二范式是理论科学,总结出规律,后人知道规律就可以了;第三范式计算推演,做的更复杂,比如核试验,天气预报等;第四范式致力于让机器看牛顿的事情,看到数据,总结规律。

扫描二维码关注公众号,回复: 116745 查看本文章

猜你喜欢

转载自chenghao666.iteye.com/blog/2420447