码迷,mamicode.com
首页 > 数据库 > 详细

数据库设计二《函数依赖和三范式》

时间:2015-04-30 23:19:24      阅读:357      评论:0      收藏:0      [点我收藏+]

标签:

函数依赖:

定义:R(U)是在属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能关系r,r中的不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y,或者Y函数依赖X,记作X--->Y。


单纯的概念有点难以理解,通过例子1:属性集U,关系模式R(U),子集X,Y,可能关系r1。

技术分享

技术分享

可以理解为X能唯一确定Y,则X--->Y。常用为主键------>其他属性

 

函数依赖和三范式

函数依赖的分类:完全依赖,部分依赖,传递依赖。

 

完全依赖和一范式

完全依赖:X--->Y。Y只能有X推到出来

     例子2:选课关系(学号,课程号,成绩)
               (学号,课程号)--->成绩

     一范式:主要确定属性的原子性,每个属性不可再分。

     例子3:职工号,姓名,电话号码组成一个表(电话号码有包括手机号,家庭号码)

                修改方法:1、新建一个表,职工号为主键,添加手机号和家庭号码两个属性。

                                  2、强制只能选择一个号码属性。


二范式消除部分依赖

部分依赖:X--->Y Y除了能有X推到出来外还可以有其他属性推到出来。

     例子4:选课关系(学号,课程号,成绩,课程名)

               (学号,课程号)--->课程名,   课程号--->课程名

     二范式:非主键属性完全依赖主键,二范式的作用主要是消除部分依赖。

     例子4可以改为两个关系模式:选课关系(学号,课程号,成绩,课程名)

                                                      课程关系(课程号,课程名)

 

主键是组合属性的时候容易出现部分依赖,主键是单个属性的时候只要符合第一范式就会符合第二范式。


三范式消除传递依赖

传递依赖:X--->Y 、Y--->Z 则X--->Z

     例子5:选课关系(学号,姓名,专业号,专业名,所属学院号)

     学号--->专业号,专业号--->专业名。

     三范式:在符合二范式的基础上,没有非主属性传递依赖函数。

     例子5解决方法:转换成两个关系模式,消除传递依赖。

             选课关系(学号,姓名,成绩)

             专业关系(专业号,专业名,所属学院号)


三范式作为数据库设计的一个标准,确保非主键属性都完全依赖主键属性。




数据库设计二《函数依赖和三范式》

标签:

原文地址:http://blog.csdn.net/u010928364/article/details/45399575

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!