分解为具有无损连接性和依赖保持性的3NF的方法以及例子
分解为具有无损连接性和依赖保持性的3NF的方法以及例子
- 通用方法
- 例子
通用方法
输入:关系模式R<U, F>
输出:具有无损连接性和函数依赖保持性的3NF分解ρ = {R1, R2, …, Rk}.
方法:
(1)最小化。求F的最小函数依赖集Fm。
(2)排除。若Fm中存在X->A,使得XA = U,则R已是3NF,转(6)。
(3)独立。若R中某些属性未出现在Fm中任一函数依赖的左部或右部,则将它们从R中分出去,单独构成一个关系子模式。
(4)分组(相同左部原则)。对于Fm中的每一个X->A,都构成一个关系子模式XA(但若有X->A1, X->A2,…, X->An,可用合并规则便为X -> A1A2…An作为ρ的一个子模式)。
经过以上几步,求出函数依赖保持性分解:ρ = {R1, R2, …, Rk}。
(5)添键。若ρ中没有一个子模式含有R的候选键X,则令ρ = ρ ∪ {X};若存在Ri包含于Rj(i ≠ j),则删去Ri。
(6)停止分解,输出ρ。
此时ρ是既具有无损连接性又具有函数依赖保持性的3NF分解。
例子
关系模式R(A, B, C, D, E, P, G, H, I, J)满足下列的函数依赖:{AB -> E, ABE -> GP, B -> PI, C -> J, CJ -> I, G -> H}。
(1) 求出最小函数依赖集Fm = {AB -> E, AB -> G, B -> P, B -> I, C -> J, C -> I, G -> H},候选键为ABCD。
(2)不存在满足X->A,使得XA = U的依赖。
(3)D未存在在任意一函数依赖中,故独立出去,R = R - {D} =
{A, B, C, E, P, G, H, I, J}。
(4)由于AB -> E, AB -> G有相同左部,故合并为AB -> EG,同理有B -> PI, C -> JI。
(5)R中不含候选键ABCD,故添加ABCD进入。
(6)输出ρ = {ABEG, BPI, CJI, GH, ABCD},即为具有无损连接性和依赖保持性的3NF。
最小函数依赖集Fm的定义,求法以及举例
分解为具有无损连接性和依赖保持性的3NF的方法以及例子相关推荐
- 判别一个分解的无损连接性
算法:ρ={R1<U1,F1>,R2<U2,F2>,...,Rk<Uk,Fk>}是关系模式R<U,F>的一个分解,U={A1,A2,...,An},F= ...
- 模式分解的无损连接性之深入剖析
1.无损连接分解的形式定义 无损连接分解的形式定义如下:设R是一个关系模式,F是R上的一个函数依赖(FD)集.R分解成数据库模式δ={R1,--,Rk}.如果对R中每一个满足F的关系r都有下式成立: ...
- 数据库系统概论:判别一个分解的无损连接性
1. 无损连接定义 无损连接是指分解后的关系通过自然连接可以恢复成原来的关系,即通过自然连接得到的关系与原来的关系相比,既不多出信息.又不丢失信息. 2. 判别无损连接的方法 定理判别(适合关系模式R ...
- 判断分解的无损连接性
算法 ρ={R1<U1,F1>,R2<U2,F2>,...,Rk<Uk,Fk>}是关系模式R<U,F>的一个分解,U={A1,A2,...,An},F= ...
- 一、判别一个分解的无损连接性
判别一个分解的无损连接性 算法的文字描述为: 算法的伪代码描述为: 例题解析 对于分解为两个关系模式的情况,有如下的定理:
- 数据库中的模式分解与无损连接性
无损连接分解的普通判别方法--表格法 设关系模式R=A1,-,An,R上成立的FD集F,R的一个分解p={R1,-,Rk}.无损连接分解的判断步骤如下: (1)构造一张k行n列的表格,每列对应一个属性 ...
- 基本函数依赖和候选键_[总结]关系数据库设计基础(函数依赖、无损连接性、保持函数依赖、范式、……)...
联系(Relationship)1:1联系:如果实体集E1中的每个实体最多只能和实体集E2中一个实体有联系,反之亦然,那么实体集E1对E2的联系成为一对一联系,记为1:1: 1:N联系:一对多,记为1 ...
- 判断模式分解是否为无损连接的方法
判断模式分解是否为无损连接的方法 [方法步骤] ρ = { R1<U1 , F1> , R2<U2 , F2> , - , Rk<Uk , Fk> } 是关系模式 ...
- 【关系数据库设计基础理论 - 候选关键字、无损连接性、函数依赖的判断】
答: ①:计算候选关键字就是拿4个选项去计算他的闭包,如果闭包中包含了R的所有属性并且为最小集,那这个就是他的候选键 CD+是:CD,C什么也决定不了,D能推出A -> CDA ,A又能推出E ...
最新文章
- 摘录来自mysql 5.1的手册 关于mysql的事务处理和锁定语句
- 职业梦想是计算机的英语作文,我的梦想职业英语作文
- 每天学一点flash(71)折纸
- 酷客多基金在济南大学成立“酷客多奖助学金“
- 【机器视觉】 case算子
- mysql bin.000013_mysql的binlog安全删除的一种方法
- Scanf连续调用多次并且存在%c的问题
- 获取数组中连续相同的元素
- python 2x和python 3x的区别_python2x和3x区别
- BenchmarkDotNet v0.12x新增功能
- Linux磁盘管理1
- inside uboot (二) 启动流程
- Faster RCNN杂谈
- [机器学习] 机器学习中所说的“线性模型”是个什么东西?
- 利用反射将IDataReader读取到实体类中效率低下的解决办法
- 加油吧 少年(励志)
- 宏基E5572g 键盘排线插拔 拆机局部
- java域名校验_域名规则校验Java版本
- NetApp AFF A 系列全闪存存储阵列
- vue安装及创建运行
热门文章
- 我现在的笔记有哪几个地方?
- 服务器物理机如何实现系统快照,Lvm快照实现物理备份之自动化
- js学习笔记(1)之document.write()方法使用总结
- JAVA核心知识点之 数据结构:总结概述
- pdm生成java_PowerDesigner通过SQL语句生成PDM文件并将name和comment进行互相转换
- leetcode: 每个元音包含偶数次的最长字符串(前缀和 + 状态压缩(位运算、hash优化))*
- php gbk转拼音
- JS阻止form表单提交失败
- 【JAVA】:java中getTime函数
- 游戏防封技术是学易语言还是学c,易语言写游戏脚本防封执行sqlplus 之后没执行...