函数依赖-函数依赖、平凡函数依赖、完全与部分函数依赖、传递函数依赖

一、引言

函数依赖是关系模式中属性与属性之间存在的一种重要数据依赖

1、将关系模式R的模式结构改为

R(SNO,CNO,SN,SD,DD,GRADE)

并对属性列进行重命名

R(学生学号,课程编号,学生姓名,所在院,院长,成绩)

2、创建表R

create table r(
sNo char(12),
cNo char(3),
sN varchar(6),
sD varchar(16),
dD varchar(6),
grade decimal(3,1),
primary key(sNo,cNo)
);

3、插入数据

insert into r
select s.sNo,sC.cNo,sN,sD,dD,grade
from s,d,sC
where s.sNo=sC.sNo and s.sD=d.dN 
select 学生学号=sNo,课程编号=cNo,学生姓名=sN,所在院=sD,院长=dD,成绩=grade
from r

4、新的关系模式R依旧存在着数据冗余、更新异常、数据不一致问题

(1)数据冗余

  • 存在学生姓名、所在学院、院长信息的冗余

(2)更新异常

  • 无法插入一个学生的信息、一个院的信息
  • 无法删除学生的选课信息,或同时把该学生的信息也删除掉

(3)数据不一致

  • 修改学生所在院和院长的信息,会出现院相同院长不同,或不同的院有相同的院长 

5、属性与属性之间的函数依赖

二、函数依赖的定义

设有关系模式R,其属性集为 U, X\subseteq U,Y\subseteq U。对于R中的任意一个可能的关系实例r(R)及

其中任意两个元组,若t_{1}[X]=t_{2}[X],则t_{2}[Y]=t_{2}[Y]称Y函数依赖于X,或X函数决定Y,

记为X\rightarrow Y

     若X\rightarrow YY\rightarrow X,记为X\leftarrow \rightarrow Y

     若Y不函数依赖于X,记为X\overset{/}{\rightarrow}Y

三、关系模式R中的函数依赖

学生选课数据库数据间的关系是:

  • 每名学生有一个学号,并属于一个学院
  • 每个院有多名学生,只有一名院长
  • 一个学生可以选修多门课程,每门课程可以由多名学生选修
  • 每名学生选修每一门课程有一个成绩

F是R的属性集中的一组函数依赖

四、平凡函数依赖

例如:以下三个表达式都是平凡函数依赖

(学生学号,学生姓名)\rightarrow学生姓名

(学生学号,所在院)\rightarrow学生学号

(学生学号,所在院)\rightarrow所在院

二、完全与部分函数依赖

四、传递函数依赖

五、候选键

1、定义

 2、使用完全函数依赖对关系模式中的候选键进行定义:

六、 总结

关系模式中的属性间的部分依赖和传递依赖才是导致关系模式出现数据冗余、更新异常及数据不一

致问题的根源,为解决这一问题,Codd提出了范式的概念

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值