chapter10_关系数据库设计理论_3_模式分解

  • 模式分解

    (1) 目标

    将一个大的关系模式用几个较小的模式代替

    (2) 定义

    关系模式R(U), ρ = {R1(U1), R2(U2), …, Rk(Uk)}是一个关系模式的集合,若U1∪U2∪…∪Uk = U成立,则ρ是R(U)的一个分解

    (3) 一个关系模式可以有多种不同的分解

    (4) 模式分解的__原则__

    不丢失信息

    对同样的数据,分解前后的查询结果应相同

    保持函数依赖关系

    不丢失数据间的约束关系

  • 无损连接分解

    (1) 分解后的关系通过__自然连接__能够恢复为原来的关系,保证连接后的关系与原关系完全一致,则称为__无损连接分解__

    (2) 有损连接分解可能会丢失元组,也有可能增加元组

    (3) 无损连接分解满足的是模式分解的原则1:不丢失信息

  • 判断一个分解是否是无损连接分解的方法

    (1) 通用方法

    属性集合U: A1, A2, …, An

    分解 R1, R2, …, Rk,每个分解包含的都是U的真子集

    函数依赖集F

    步骤

    1° 构造一张表, k行n列,表中每个单元(i行j列)的取值为:

    如果该行对应的分解中包括了该列的属性,填入aj;如果不包含,填入bij

    2° 逐个考察函数依赖集F中的每个依赖关系 Xi -> Yi,若Xi包括了属性Ap,Aq,则在所有行中寻找在Ap,Aq列相等的行。这时再看Yi对应的几个属性列,如果在这些行中对应属性列的取值里出现了aj,则修改其他行的列值都是aj;如果没出现aj,则将这些行的列值修改为这些行中具有最小下标的bij的值。总之,找到的这些在X上相等的行,经过这个步骤以后,它们的Y上也要相等

    3° 对所有F中的函数依赖都操作以后,只要表中出现了一行,它们的值恰好为a1, a2, …, an,那么该分解为无损分解;否则为有损分解

    (2) 判断只有两个关系连接时的简易方法

    R的一个分解 ρ = {R1, R2},函数依赖集F,如果以下两个表达式至少有一个满足:

      (R1∩R2)->(R1-R2) ∈ F
    
      (R1∩R2)->(R2-R1) ∈ F
    

    则ρ具有无损连接性

  • 分解的保持依赖性

    (1) 判断分解为多个关系以后,分解后的函数依赖关系是否与原函数依赖集等价

    (2) 判断方法

    设函数依赖集为F,分解 R1, R2, …, Rk

    1° 对分解后的每个关系Ri,求F在Ri上的函数依赖投影Ri(F)

    2° 令G = ∪Ri(F),对F中的每个依赖X->Y,在G中分别计算X的属性闭包,并检验是否包含Y中所有属性;如果G可以蕴含F中的所有函数依赖,则保持分解依赖性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值