数据库 求闭包、求候选码、范式转换、最小依赖集、无损分解及保持函数依赖

本文深入探讨数据库理论,包括函数依赖的分类、闭包计算、候选码求解以及BCNF范式转换。通过实例详细解析如何找到候选码,并演示了如何将关系模式分解以满足BCNF,最后介绍了无损分解和保持函数依赖的方法,为数据库设计与优化提供了理论基础。
摘要由CSDN通过智能技术生成

1.求闭包

在这里插入图片描述

推理规则推导

在这里插入图片描述

2.求候选码

在求解之前先要明白一些定理。我们把函数依赖集中F中的属性分为四类:
L类:所有依赖关系中仅出现在函数依赖左部的属性。
R类:所有依赖关系中仅出现在函数依赖右部的属性。
LR类:所有依赖关系中即出现在函数依赖左部又出现在函数依赖右部的属性。
N类:所有依赖关系中没有出现的属性。

定理一:对于给定的关系模式R及其函数依赖集F,若X(X∈U)是L类属性,则X必为R的任一候选码的成员。
定理二:对于给定的关系模式R及其函数依赖集F,若X(X∈U)是R类属性,则X不在任何候选码中。
定理三:对于给定的关系模式R及其函数依赖集F,若X(X∈U)是LR类属性,则X可能在候选码中。
定理四:对于给定的关系模式R及其函数依赖集F,若X(X∈U)是N类属性,则X必包含在R的任一候选码中。

例题:

R{ABCDE},F{AB->C,AB->E,CDE->AB},求候选码。
在这里插入图片描述
候选码为{ABD,CED}。

3.范式转换

1NF → 转 化 \overset{转化}{\rightarrow} → 转 化 \overset{转化}{\rightarrow} 5NF
在这里插入图片描述
在这里插入图片描述

BCNF具体做法:

BCNF解题步骤
1、求出R中所有FD左侧的闭包,取一个闭包{X}+,若能包含R中的所有元素,则该FD满足BCNF
2、如果不能包含R中所有元素,则将R分解成两个关系R1、R2,{X}+作为R1的元素,X与R中剩余元素作为R2的元素
3、对R1、R2递归处理上述步骤

BCNF例题
已知R(A,B,C,D,E) 含有FD:AB->C C->D D->B D->E,求根据BCNF分解的新集合。

  1. 先把R中所有FD的左侧对应的闭包写出来
    {A,B}+={A,B,C,D,E}
    {C}+={B,C,D,E}

    其实不用列完,发现第二个就已经不满足,那就根据第二个进行分解
    根据{C}+分解R
    R1={B,C,D,E} R2={A,C}
  2. R2已经只有两个元素了,必定满足BCNF规范,所以不用考虑,接下来继续考虑R1是否满足BCNF
    将R1中所有FD的左侧对应的闭包写出来
    {D}+={B,D,E}

    3.出现了不满足的闭包,则继续分解R1
    根据{D}+分解R1
    R3={B,D,E} R4={C,D}
  3. R4不需再分,接下来考虑R3是否满足BCNF
    将R3中所有FD的左侧对应的闭包写出来
    {D}+={B,D,E}
  4. R3中所有闭包满足条件,递归分解结束

4. 求最小依赖集

在这里插入图片描述

具体步骤

1.右边单一化
2.除去自身求闭包
3.左部最小化

在这里插入图片描述
练习1:
在这里插入图片描述
练习2:
在这里插入图片描述

5.无损分解及保持函数依赖

无损分解两个方法:
1.表格法
2.适用于分解为2个ρ

在这里插入图片描述

判断是否保持函数依赖
1.求最小函数依赖
2.求分解的R的函数依赖的U集
3.进行判断

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Jay_fearless

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

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

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

打赏作者

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

抵扣说明:

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

余额充值