第六章关系数据库理论

第六章关系数据库理论

6.1 问题的提出–为什么要学习关系数据理论
关系模式STUDENT(Sno,Sdept,Mname,Cno,Grade)
在这里插入图片描述

关系模式STUDENT(Sno,Sdept,Mname,Cno,Grade)存在的问题

  • 数据冗余度太大,浪费存储空间
    系主任的姓名重复出现,重复次数与该系所有学生的所有课程成绩出现次数相同

  • 更新异常(Update Anomalies)
    数据冗余,更新数据时,维护数据完整性代价大,如果某系更换系主任,系统必须修改与该系学生有关的每一个元组
    在这里插入图片描述

  • 插入异常(Insertion Anomalies),该插入的数据插不进去
    如果新成立一个软件工程系,还没有招生,我们就无法把这个系及其系主任的信息存入数据库

  • 删除异常(Delection Anomalies)
    如果某个系的学生全部毕业,删除该系学生的同时,把这个系及其系主任的信息也丢掉了。

Q:什么是好的设计模式?
好的模式不会发生插入异常、删除异常、更新异常、数据冗余应尽可能少。
问题原因:由于模式中某些数据依赖引起的
解决方法:把这个单一模式分成3个关系模式:
在这里插入图片描述

用规范化理论改造关系模式,消除其中不合适的数据依赖。

什么是数据依赖?

  1. 完整性约束的一种表现形式
  2. 数据依赖,是通过一个关系中属性间值是否相等体现出来的数据间的相互关系,是现实世界属性间相互联系的抽象,是数据内在的性质,是语义的体现(根据语义找出依赖关系)
  3. 数据依赖的主要类型:
    *函数依赖(FD)多值依赖(MVD)连接依赖和其他依赖
    4.数据依赖对关系模式的影响:不合适的数据依赖,造成插入异常、删除异常、更新异常、数据冗余问题

类似数学中的函数依赖 y=f(x) 其中,y依赖于x,记作x–>y。代表,自变量x确定的时候,相应的函数值y也唯一确定。
上述STUDENT表中的依赖关系:

  • Sdept=f(Sno),Sno函数确定Sdept,记为Sno–>Sdept
  • Mname=f(Sdept),Sdept函数确定Mname,记为Sdept–>Mname
  • Grade=f((Sno,Cno)),(Sno,Cno)函数确定Grade,记为(Sno,Cno)–>Grade

STUDENT表中的属性集合记作U,U={Sno,Sdept,Mname,Cno,Grade}
属性U上的函数依赖集合记作F,F={ Sno–>Sdept , Sdept–>Mname , (Sno,Cno)–>Grade}

关系模式的简化表示:
R(U,F)
当且仅当U上的一个关系 r 满足 F 时,r 称为关系模式R(U,F)的一个关系

如何解决关系模式中存在的问题?
规范化理论找出关系模式中不合适的数据依赖,消除他们,可以在不同程度上解决插入异常、删除异常、更新异常和数据冗余问题

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值