您好,欢迎来到二三四教育网。
搜索
您的当前位置:首页三大范式

三大范式

来源:二三四教育网

一直对数据库原理的各种概念不是很清楚,最近正好做题看到三大范式这块,看了看大家的总结,于是自己也出一版自己对三大范式的理解:

1.先说说为什么出现三大范式:

一句话—为了避免数据冗余

2.第一范式:

存在非主属性对码的部分依赖关系 R(A,B,C) AB是码 C是非主属性 B-->C,B决定C,C部分依赖于B;

简述就是:主属性(存在主键不为空且不重复,不可再分(存在非主属性对主属性的部分依赖)

例如:(借用人家的例子)

StudyNo     |   Name    |   Sex     |   Contact

以上的表就不符合,第一范式:主键重复(实际中数据库不允许重复的),而且Contact字段可以再分

所以变更为正确的是

StudyNo   |   Name   |   Sex   |      Email         |      Phone

3.第二范式

存在非主属性对码的传递性依赖 R(A,B,C) A是码 A -->B ,B-->C

简述:如果关系范式是第一范式,每个非主属性都没有对主键的部分依赖,那么此关系范式是第二范式

所以第二范式的主要任务就是

满足第一范式的前提下,消除部分函数依赖。

StudyNo | Name   |   Sex   |   Email     |      Phone    |   ClassNo  | ClassAddress

这个表完全满足于第一范式,

主键由StudyNo和ClassNo组成,这样才能定位到指定行

但是,ClassAddress部分依赖于关键字(ClassNo-〉ClassAddress),

所以要变为两个表

表一

StudyNo   |   Name   |   Sex   |      Email         |     Phone |   ClassNo

表二

ClassNo  | ClassAddress

200401      A楼2

200402      A楼3

第三范式

简述:没有非主属性对主键的传递依赖和部分依赖属性。

StudyNo   |   Name   |   Sex   |      Email         |      bounsLevel   |      bouns

这个完全满足了第二范式,但是bounsLevel和bouns存在传递依赖

更改为:

StudyNo   |   Name   |   Sex   |      Email         |      bouunsNo

bounsNo   |   bounsLevel   |   bouns

1                   优秀                $1000

2                    良                   $600

再次总结:

1.第一范式:有主键,主键不为空、不重复,列不可再分

2.第二范式:在第一范式的基础上,非主键的属性对主键没有部分依赖;

3.第三范式:没有非主属性对主键的传递依赖(例如C依赖于B,B又依赖于主键A)和部分依赖属性;

参考:

Copyright © 2019- how234.cn 版权所有 赣ICP备2023008801号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务