对第一范式(1NF) 第二范式(2NF) 第三范式(3NF)的理解
来源:互联网 发布:淘宝店铺在哪里买 编辑:程序博客网 时间:2024/04/30 01:36
要找工作了,今天把当初学校里的SQL实训教程看了一番。看到了关于1NF,2NF,3NF的介绍,结果看得是一头雾水
这是教程里的定义:
第一范式(1NF):如果关系模式R的每一个关系r的属性值都是不可分的原子值,那么称R是第一范式(1NF)的模式。
第二范式(2NF):如果关系模式R是1NF,且每个非主属性完全函数依赖于候选键,那么称R是第二范式(2NF)的模式。
自己做了一些总结,我觉得可以这样理解:
衡量一个关系模式的标准就是模式的范式。范式有很多,最主要的是3NF。可以有效地减少数据的冗余和操作异常。
第一范式:其实我见到的表都是符合第一范式规则的,只能举出不符合第一范式的例子来理解
Name Address Phone
Tom add1 phone_1
phone_2
Anne add2 phone_3
这里同一个字段(Phone)有两个值,所以是不符合第一范式规则的。
第二范式:关系模型中不存在局部依赖的。
例如:有这样一组关系:
关系模式R(S# ,C# ,Grade ,Tname ,Taddr)的属性分别表示学生学号、选修课程的编号、成绩、任课教师姓名和教师地址
这里有这样的 C# ->Thname, (S#,C#)->Thname 局部依赖关系,所以它是不符合第二范式规则的。
这样就会给数据库带来冗余,比如有N个学生,Thname,Taddr就会重复N次
对定义中局部依赖的理解 ,
W→A,如果存在X属于 W,有X→A成立,那么称W→A是局部依赖(A局部依赖于W);否则若不存在这种X,称W→A是完全依赖。
例如:(S#,C#)->Thname, C#->Thname, 且C#属于(S#,C#),所以(S#,C#)->Thname是局部依赖,C#->Thname是完全依赖。
如果改成这样:
R1(S# ,C# ,Grade)
R2(C# ,Tname ,Taddr)
这样的关系就是符合第二范式规则的了。消除了冗余。
第三范式:不存在传递的依赖关系的
还是以上个例子说:
R2(C# ,Tname ,Taddr) 符合了第二范式规则,但是有这样一个关系C#->Thname, Thname->Taddr则有这样的传递依 赖关系
C#->Taddr。这样如果一个老师开N门课程,则Taddr就会被重复N次
R2分解:R21(C# ,Tname)R22(Tname ,Taddr)这样的关系模式就不存在传递依赖,符合第三范式规则。
- 对第一范式(1NF) 第二范式(2NF) 第三范式(3NF)的理解
- 范式 1NF 2NF 3NF
- 数据库的范式:1NF,2NF,3NF
- 数据库中范式的理解1NF、2NF、3NF
- 一看就懂的数据库范式介绍(1NF,2NF,3NF,BC NF,4NF,5NF)
- 一看就懂的数据库范式介绍(1NF,2NF,3NF,BC NF,4NF,5NF)
- 数据库 范式 1NF 2NF 3NF
- 数据库范式1NF 2NF 3NF BCNF
- 数据库范式1NF 2NF 3NF BCNF(转)
- 数据库范式1NF 2NF 3NF BCNF
- 数据库范式1NF 2NF 3NF BCNF(转)
- 数据库范式1NF 2NF 3NF BCNF
- 数据库范式1NF 2NF 3NF BCNF
- 数据库范式1NF 2NF 3NF BCNF
- 什么是范式,1NF,2NF,3NF?
- 数据库范式(1NF 2NF 3NF BCNF)
- 数据库范式(1NF 2NF 3NF BCNF)
- 数据库范式(1NF 2NF 3NF BCNF)
- 使用临时表提升SqlServer视图查询性能
- WinCE程序调试方法
- find & xargs usage
- IP
- 大数法则到测试
- 对第一范式(1NF) 第二范式(2NF) 第三范式(3NF)的理解
- java保留两位小数
- C#交错数组与多维数组区别
- RFC访问SAP(C#)
- imhist()函数使用
- PKPM 多层及高层结构CAD软件的高级应用
- 转载使用PyAmf来实现Flex与Django的通信
- java日期转换
- DirectShow之接口实战篇--视频抓图与播放控制