第六章 关系数据理论

6.1关系模式与数据依赖

关系模式

  • 关系模式由五部分组成:R (U,D,DOM,F)

    • R:关系名

    • U:组成该关系的属性名集合

    • D:属性组U中属性所来自的域

    • DOM:属性向域的映像集合

    • F:属性间的数据依赖关系集合

  • 关系模式简化表示为三元组 R(U,F)

数据依赖

  • 数据依赖的类型
    • 函数依赖FD(Functional Dependency):X->Y
    • 多值依赖MVD(Multivalued Dependency):X->->Y

数据依赖对关系模式的影响

  1. 数据冗余太大:浪费大量的存储空间(例如每一个系主任的姓名重复出现)
  2. 更新异常
  3. 插入异常
  4. 删除异常

解决方法:通过分解关系模式来消除其中不合适的数据依赖

6.2规范化

6.2.1函数依赖

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

X称为这个函数依赖的决定属性集,Y = f(x)

  • 函数依赖指R中所有的关系实例都满足的约束条件
  • 函数依赖是语义范畴的概念,只能根据数据的语义来确定函数依赖(不能根据元组的值确定)
  • 数据库设计者可以对现实世界作强制的规定
平凡函数依赖与非平凡函数依赖
  • 平凡函数依赖:X->Y 且 X包含Y(左侧至少两个属性)
  • 非平凡函数依赖:X->Y 且 X不包含Y(左侧只有一个属性的函数依赖必然为非平凡函数依赖)
平凡函数依赖:(Sno,Cno)->Sno,(Sno,Cno)->Cno
非平凡函数依赖:(Sno,Cno)->Grade

完全函数依赖与部分函数依赖

如果X->Y,且对于X的任何一个真子集X’,X'->Y不成立,则称Y完全函数依赖于X,记作X->Y(f);

反之,则为部分函数依赖,记作X->Y§

传递函数依赖

X->Y, Y->Z, 且X不包含Y, Y->X不成立,则称Z传递函数依赖于X

X->Y, Y->Z, 且X不包含Y, Y->X成立,则称Z直接依赖于X

闭包与最小覆盖

闭包:A的闭包是由A能推出的所有属性的集合

最小覆盖:最小覆盖不唯一

最小覆盖的求法:

  1. 用分解的法则,使F中的任何一个函数依赖的右部仅含有一个属性;
  2. 去掉各依赖左部多余的属性:对每一个X->A,对X中的每一个属性B,计算去除B之后的X在G中的闭包,如果闭包包含A,那么就用去除B之后的X替换之前的X(注意此步实际上是两个for循环,而且此步仅需针对属性个数大于1的X就行了);
  3. 去掉多余的函数依赖:从第一个函数依赖X→Y开始将其从F中去掉,然后在剩下的函数依赖中求X的闭包X+,看X+是否包含Y,若是,则去掉X→Y;否则不能去掉,依次做下去。直到找不到冗余的函数依赖;

6.2.2码

候选码:每一个这样的完全函数依赖K->U(f),对应一个候选码

主码:多个候选码中选定一个作为主码

外码:R中的属性或属性组X并非R的码,但X是另一个关系模式的码,称X是R的外码

6.2.3范式

数据库的范式关系 的图像结果 6.1关系数据理论--规范化(函数依赖 码 主属性 范式 )_若关系的候选码都为单属性,则关系最多属于第几范式-CSDN博客

1NF:每个属性都是不可再分的基本数据项

2NF:1NF+每个非主属性都完全依赖于R的码

3NF:2NF+每个非主属性都不传递依赖于候选码

BCNF:每个属性只能函数依赖于候选码

多值依赖:与函数依赖不同,是一对多的描述

4NF:每个非平凡多值依赖都是依赖于候选码的

6.2.4 无损连接与依赖保持

分解关系模式的两个评判标准:

无损连接:子表连接之后不存在内容丢失

判定算法:

​ 1.找出两个子关系的属性组的交和差

​ 2.判定U1∩U2→U1-U2 ∈F+ || U1∩U2→U2 -U1∈F+(成立即为无损连接)

​ 详细解释:即判定公共属性能否唯一决定差集,若能,则说明原来的元组不会丢失

快速判定的充分条件:公共属性是候选码的子集,一定是无损连接

保持函数依赖:由两个子表的函数依赖能推导出原表的所有函数依赖

快速判定的充分条件:主表中某个函数依赖的两端的属性分布在两个子表中

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值