数据库系统概论----第六章:关系数据理论(依赖、候选码、第几范式、最小依赖集、模式的分解)

为什么引⼊范式?

1数据冗余
2更新异常
3插⼊异常
4删除异常

范式分类

设计关系数据库时,遵从不同的规范要求,这些不同的规范要求被称为不同的范式, 各种范式呈递次规范,越⾼的范式数据库冗余越⼩。
 
⽬前关系数据库有六种范式:
第⼀范式(1NF)、第⼆范式(2NF)、第三范式(3NF)、 巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,⼜称完美范式)
 
⼀般来说,数据库只需满⾜第三范式(3NF)就⾏了。

1.非平凡依赖+平凡依赖

在这里插入图片描述
在这里插入图片描述

2.完全函数依赖+部分函数依赖

在这里插入图片描述

3.求关系模式候选码的方法

3.0 补充:求闭包

参考博客:https://wonzwang.blog.csdn.net/article/details/80464466


候选码的概念: 可以推出所有属性

如何选出候选码?

  1. 只出现在左边的⼀定是候选码
  2. 只出现在右边的⼀定不是候选码
  3. 左右都出现的不⼀定
  4. 左右都不出现的⼀定是候选码
  5. 再求确定的候选码的闭包,如果可以推出全部,那么当前确定的就是候选码,否则就不是

3.1 具体解题步骤(看这个,绝对有用 )

参考博客:求候选键/候选码



3.2 例: R(U)=(ABCDEG),F={AB->C,CD->E,E->A,A->G},求候选码。(根据3.1)

解答:

在这里插入图片描述
故候选码为ABD、BCD、BDE

3.x 补充:超码、候选码、主码、主属性、非主属性、全码的区别

以3.2的例题为例

超码: 能表示出所有属性的集合, ⽐如 (ABD),(BDC),(BDE) BDCA BDEA ABCDE
候选码:是最⼩的超码
主码: 从候选码⾥⾯任意跳出⼀个 作为主码
主属性: 包含在所有候选码的属性 ⽐如ABCDE
⾮主属性: 不包含在候选码中的属性 ,上题为G
全码: 所有的属性都是主码






4.判断关系模式属于第几范式的方法

4.0 求范式(看这个,绝对有用 )

参考博客:求范式

4.1例题

R(U)=(ABCDEG),F={AB->C,CD->E,E->A,A->G},判断关系模式R(U,F)属于第几范式?
解答:

  1. 确定R(U,F)的候选码(3.2 例题已解决)。
    三个候选码:ABD、BDC、BDE。
  2. 属性集U分成两个集合:
    码属性集:ABCDE
    非码属性集:G
  3. 根据范式定义判断

在这里插入图片描述
在这里插入图片描述
显然,只有一个非主属性G,A->G,G部分依赖于候选码,所以,R(U,F)属于1NF。

4.2 补充:1NF、2NF、3NF、BCNF

在这里插入图片描述
在这里插入图片描述

4.2.1 第一范式:1NF

在这里插入图片描述
在这里插入图片描述

4.2.2 第二范式:2NF

在这里插入图片描述
将关系S-L-C规范化,使其满足2NF。
解决方法:将S-L-C分解为两个关系模式,以消除这些部分函数依赖。
在这里插入图片描述


另一个例子:在这里插入图片描述
在这里插入图片描述

4.2.3 第三范式:3NF

在这里插入图片描述
例子(消除传递函数依赖):
在这里插入图片描述
在这里插入图片描述

4.2.4 BCNF范式

在这里插入图片描述

5.公理系统(就是里面的结论直接用)

在这里插入图片描述
自反性:可根据平凡函数依赖来理解






6.求最小函数的依赖集

在这里插入图片描述
如何求最⼩依赖集?

  1. 拆右边为多个元素的 ⽐如A->BC 拆为 A->B 和A->C
  2. 除去一个依赖 temp(从左往右) 【设:temp的左边取名为t1,右边为t2】,求 t1 的闭包,看“ (t1)+ ”能不能推出“t2”,
    若能,该依赖就去掉,否则保留。循环执行(即每一个依赖都要这样做)
  3. 左边最小化,比如:
    在这里插入图片描述

6.1 例题1 (就按这个来解题)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最终的F即最小函数的依赖集

6.2 例题2

参考博客:求最小依赖集








7. 模式的分解

7.1 白话理解

在这里插入图片描述

7.2判断是否为 : 无损连接分解 / 保持函数依赖

无损连接分解(方法一:判定表法)

参考博客:判断是否为无损连接分解

无损连接分解(方法二:无损连接定理)+ 保持函数依赖的证明

参考博客:判断是否为无损连接,保持函数依赖
在这里插入图片描述

7.3 U=(A,B,C,D,E,G) F={BG->C,BD->E,DG->C,ADG->BC,AG->B,B->D} 若R不是3NF,将R分解为无损且保持函数依赖的3NF。

7.4 U=(A,B,C,D,E) F={AB->C,C->B,D->E,D->C} 若R不是3NF,将R分解为无损且保持函数依赖的3NF。

7.3和7.4解答----参考博客:求模式分解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你说的白是什么白_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值