07关系数据库的设计理论

一、函数依赖

设R(U)是一个关系模式, U={A1, A2, …,An},XU,YU
如果对于R的任意可能的关系r,若t1 ,t2∈r,t1[X]= t2[X],则t1[Y]= t2[Y],那么就称在关系模式R上函数依赖 (functional dependency) X→Y成立
读作“X函数确定Y”,或“Y函数依赖于X”

X→Y对于关系模式R成立意味着:只要关系r是R的实例,则r中就不存在两个不同的元组,它们在属性集X的所有分量上一致,而在属性集Y的一个或多个分量上不一致

平凡的函数依赖:设X是任意属性集,如果YX,则有X→Y,并称该函数依赖X→Y是平凡的
平凡的函数反映“整体确定局部”这种一般常识,而不反映新的语义
平凡的函数依赖的两个极端例子是
X→∅和∅→∅
非平凡的函数依赖:如果Y是X的真子集,则X→Y是非平凡的函数依赖

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

二、函数依赖的推导

1.Armstrong公理

在这里插入图片描述
附加的推理规则
在这里插入图片描述
引理

在这里插入图片描述
码的形式化定义:
在这里插入图片描述

2.属性集的闭包

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

算法1 求属性集X闭包的算法

在这里插入图片描述
示例:
在这里插入图片描述

3.函数依赖集的等价和极小覆盖

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

算法2 求F的极小覆盖

在这里插入图片描述
在这里插入图片描述
示例:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、关系模式的范式

1.范式与规范化概述

1NF (first normal form) 要求关系的所有属性值都是原子的

2NF和3NF都利用函数依赖定义

2NF不能解决多少实际问题
3NF是一种更高级的范式,3NF能够处理函数依赖发现的大部分冗余和异常,但仍然不能完全解决问题

从函数依赖的角度,BCNF是最高级的范式形式。也就说,如果关系模式中仍然存在冗余,函数依赖既不能发现它们,也不能消除它们

多值依赖可以看作函数依赖的推广,可以用来发现和处理更多的冗余和存储异常
借助于多值依赖,Fagin引进了第四范式(4NF),并且表明在同时考虑函数依赖和多值依赖时,4NF是最高级的范式形式
其实多值依赖也不能发现和处理冗余带来的所有的问题。这导致连接依赖和第五范式(5NF) 概念的提出
连接依赖在实践中很少遇到,因而不如函数依赖和多值依赖重要

在这里插入图片描述

2. 2NF、3NF和BCNF

1NF

在这里插入图片描述

2NF

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

3NF

在这里插入图片描述

例题:

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

3NF

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

3.函数依赖与范式

在这里插入图片描述

四、关系模式的分解

在这里插入图片描述

1.无损连接分解

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

算法3:检测分解的无损连接性

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

在这里插入图片描述

2.保持函数依赖的分解

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

算法4:检验分解的函数依赖保持性

(*考的概率低)

在这里插入图片描述
在这里插入图片描述
—————————————————————————
分解的两个期望性质
在这里插入图片描述

五、将关系模式分解为高级范式

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

算法5:转换为BCNF的无损连接分解

在这里插入图片描述

算法5例子

在这里插入图片描述

算法6:转换为3NF的无损连接和保持函数依赖

在这里插入图片描述

算法6例子

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

全糖去冰不加料

打赏一块钱💰也是钱

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

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

打赏作者

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

抵扣说明:

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

余额充值