数据库中的三大范式

网友投稿 590 2022-11-07

数据库中的三大范式

数据库中的三大范式

一、范式的定义

什么是范式 范式来自英文Normal form,简称NF。要想设计—个好的关系,必须使关系满足一定的约束条件,此约束已经形成了规范,这就是我们俗称的范式。范式分成几个等级,一级比一级要求得严格。

简单归纳

第一范式(1NF):字段不可分; 第二范式(2NF):有主键,非主键字段依赖主键; 第三范式(3NF):非主键字段不能相互依赖。

二、第一范式 (1NF)

符合1NF的关系中的每个属性都不可再分

第一范式存在的问题

数据冗余过大

每一名学生的学号、姓名、系名、系主任这些数据重复多次。每个系与对应的系主任的数据也重复多次

插入异常

假如学校新建了一个系,但是暂时还没有招收任何学生,那么添加数据时,会将系名与系主任的数据单独地添加到数据表中,而没有添加学生列的数据,数据添加不合法

删除异常

删除时会将整行的数据删除,假如将某个系中所有学生相关的记录都删除,那么所有系与系主任的数据也就随之消失了(一个系所有学生都没有了,并不表示这个系就没有了)

修改异常

假如李勇转系到法律系,那么为了保证数据库中数据的一致性,需要修改三条记录中系与系主任的数据

三、第二范式 (2NF)

第二范式必须满足第一范式。 第二范式是指每个关系必须有一个(有且仅有一个)数据项作为主键,其他数据项与主键一一对应,即其他数据项完全依赖于主键。由此可知单主属性的关系均属于第二范式。

四,第三范式(3NF)

非主属性既不传递依赖于码,也不部分依赖于码。

理解:即在第二范式的基础上,消除了非主属性对码的传递依赖。

比如:

巴斯-科德范式(BCNF)

属于修正的第三范式,是防止主键的某一列会依赖于主键的其他列。当3NF消除了主属性对码的部分函数依赖和传递函数依赖称为BCNF。

特性:

1、所有主属性对每一个码都是完全函数依赖

2、所有主属性对每一个不包含它的码,也是完全函数依赖

3、没有任何属性完全函数依赖与非码的任何一组属性

举例:库存表(仓库名,管理员名,商品名,数量),主键为(仓库名,管理员名,商品名),这是满足前面三个范式的,但是仓库名和管理员名之间存在依赖关系,因此删除某一个仓库,会导致管理员也被删除,这样就不满足BCNF

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:maven
下一篇:Android----Handler
相关文章

 发表评论

暂时没有评论,来抢沙发吧~