关系数据理论

关系数据理论
  • 范式引入

​ 范式需要解决的问题:Update Anomalies(更新异常)

更新异常:插入异常、删除异常、修改异常

  • 函数依赖

    A → B (B依赖于A)知道A就有唯一确定的B

    X → Y X可以是一个包含很多列的集合

    函数依赖需要有一定的语义含义在里面

在这里插入图片描述
​ 平凡的一个函数依赖

如何通过函数依赖得出候选码

​ 1.没有出现在FD中的。

​ 2.没有出现在右边的。

​ 没有给出函数依赖的话就直接根据语义去找。如果整个元组都是候选码那么就叫它全码。

  • 阿姆斯特朗公理

    1.自反律

    B是A的子集,那么就有 A → B

    2.增广律

    如果 A → B 那么有 A ∪ C → B ∪ C

    3.传递律

    如果 A → B 和 B → C 那么有 A → C

    分解律

    分解右边,不分解左边。

    闭包

    概念:在关系模式R<U,F>中为F所逻辑蕴含的函数依赖的全体叫作F的闭包,记作F+。

在这里插入图片描述

函数依赖集的等价

在这里插入图片描述

​ F1 能推出 F2 , F2能推出F1即可(运用阿姆斯特朗公理)

找最小的函数依赖集

​ 三个步骤:

​ 1.右部分解

​ 2.判断每一个在F中的X→Y,是否有 F ≡ F-{X→Y}成立

​ 如果有的话就可以去掉。

​ 3.判断在F中的 X→Y (A包含于X),是否有 F ≡ (F-{X→Y})∪{A→Y}

​ 如果有的话就用 A→Y 代替 X→Y

  • 范式

​ 范式是关系模式的集合,1NF,2NF,3NF(BCNF), 4NF

规范化:就是把低范式转换为高范式。

关系模式分解的标准

​ 1.没有冗余

​ 2.无损连接分解

​ 分解前后的数据需要保持一致

怎么判断

​ 所有的属性都要在 R = R1 ∪R2

​ 而且要满足下列某一条函数依赖在闭包内(分解成两个表的情况):

​ –R1∩R2→R1-R2

​ –R1∩R2→R2-R1

​ 如果是分解成多个表,可以用填表法来判断:

在这里插入图片描述
在这里插入图片描述
就是把分解后的表格填起来,如果有一行都是a的话,那么这个分解是保持了无损连接的分解。

​ 3.函数依赖保持

​ 分解前后的函数依赖关系没有变

​ 判断:原先的函数依赖的闭包 是否等于 后面分解完所有表的函数依赖的函数依赖的闭包。

范式等级

​ 1NF:

​ 每一个元素都是原子的即可达到一级范式

​ 2NF:

​ 需要完全函数依赖,不能出现部分函数依赖.

​ 如果候选码是单属性,那么至少为2NF

​ 1NF → 2NF 去掉部分函数依赖即可,把部分依赖的那部分属性移出去,形成一个新的表。

​ 3NF:

​ 非主属性不出现传递函数依赖于候选码的现象

​ 2NF → 3NF 消除非主属性对候选码的部分和传递函数依赖,如果是对主属性的传递函数依赖,那么将主属性和非主属性重新放到一张新的表里面。
在这里插入图片描述

​ BCNF:

​ 主属性不出现传递函数依赖于候选码的现象

​ 1.若3NF中存在重叠的复合候选码,则3NF可能是BCNF,也可能不是BCNF。

​ 2. 若3NF中不存在重叠的复合候选码,则3NF一定是BCNF。

​ BCNF:

​ 主属性不出现传递函数依赖于候选码的现象

​ 1.若3NF中存在重叠的复合候选码,则3NF可能是BCNF,也可能不是BCNF。

​ 2. 若3NF中不存在重叠的复合候选码,则3NF一定是BCNF。

​ 3NF → BCNF:消除主属性对候选码的部分和传递函数依赖即可。(也是重新建表)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值