数据库概论之模式分解理论(理解简单明了)
模式分解理论
- 模式分解:
- 模式分解的概念:
- 模式分解的特性:
- 数据内容的等价性:
- 数据约束的等价性
- 模式分解要考虑的问题:
- 模式分解的分类:
- 无损连接分解:
- 无损连接分解概念:
- 无损连接分解的检验算法:
- 无损连接分解算法示例:
- 无损连接分解的检验简单方法:
- 无损连接分解的性质:
- 保持依赖分解:
- 保持依赖分解概念:
- 保持依赖分解检验算法:
- 保持依赖分解检验算法示例:
- 关系模式无损连接分解成SCNF算法:
- 一般方法分解成SCNF:
- 采用无损连接分解
- 关系模式保持依赖分解成3NF:
- 一般方法分解成3NF:
- 采用保持依赖分解:
- 关系模式分解成3NF或BCFN且既是无损连接又是保持依赖分解算法:
模式分解:
模式分解的概念:
理解:
把关系模式R分解成k个关系模式,k个关系模式的的集合就是p={R1(U1),R2(U2),R3(U3),…,Rk(Uk)},
而U = U1∪U2∪U3∪…∪Uk。
每一个小的关系模式对应的关系(r1,r2,r3,r4,…,rk),它们也相当于R的关系r分别在R1,R2…上的投影,
把这些投影连接起来
即:
得到的就是R的任意关系向p的投影连接
模式分解的特性:
数据内容的等价性:
理解:
1.由关系模式R的任意关系r分解连接得到的新关系必然包含关系模式R的关系r。
2.关系模式R的任意关系r分解连接得到的新关系,记为S,S再分解得到的各个关系必然等于原来的ri。
3.由关系模式R的关系r分解连接得到的新关系S再次分解连接得到的关系,其必然跟原来的新关系S相同。
数据约束的等价性
理解:
若关系模式R进行模式分解,得到的R1(SZ),R2(CZ),必然会丢失约束CS->Z。
模式分解要考虑的问题:
理解:
如果想要把一个关系模式模式分解成若干个符合关系范式3NF的子关系模式,一般方法会把每个函数依赖单独组成一个关系。但是这样做可能会丧失无损连接性和保持依赖性。
模式分解的分类:
无损连接分解:
无损连接分解概念:
理解:
无损连接分解是指,对于一个关系模式R(U,F),U是属性全集,F是函数依赖集合,利用无损连接分解
p={R1,R2,R3,…,Rk},每一个关系模式对应的关系为{r1,r2,r3,…,rk},对于R的任意一个满足函数依赖集合的关系r来说,r = 每一个关系连接起来的新关系。
相当于分解连接后关系数据内容并不会改变(无损失)。这种分解就是无损连接分解。否则的话就是有损连接分解。
无损连接分解的检验算法:
理解:
怎么检验模式分解属于无损连接分解呢?
第一步,构造表,分解后的子关系模式从1到k充当行,一共k行。把关系模式R的属性全集U中每一个属性{U1,U2,U3,…,Un}充当列,一共n列。
第二步,依次遍历每一行,每一行中,若该属性Uj属于Ri中的,则把分量置为aj。若不是,则置为bij。
第三步,根据F中的每一个函数依赖X->Y,依次修改被决定因素Y对应的列值。不同行的X相同时,把该行对应的Y置为相同值。若其中,对应的Y的值存在aj,则其他值也改为aj,若都是bij,那只需要改成相同符号即可。
第四步,修改完F中所有的函数依赖后,若表中有一行为a1,a2,a3,…,an。则该模式分解为无损连接分解。
无损连接分解算法示例:
无损连接分解的检验简单方法:
理解:
检验模式分解是否为无损连接分解更简单的方法有:
设R1和R2共同拥有的属性组X,R1-R2的属性组Y,仅当X函数决定Y时,即X->Y为F闭包,那么p={R1,R2}属于无损连接分解。
只使用于模式分解出两个关系模式{R1,R2}。
无损连接分解的性质:
理解:
a.关系模式R关于F无损连接分解得到的R1到Rk,Ri关于Fi无损连接分解得到的S1到Sk,那么{R1,R2,…,Rk,S1,S2,…,Sk}为R的无损连接分解。
b.关系模式R关于F无损连接分解得到的R1到Rk,若R的另一个分解包括R1到Rk,那么这个分解也为无损连接分解。
保持依赖分解:
保持依赖分解概念:
理解:
关系模式R(U,F),U是属性全集,F是函数依赖集合,p={R1,R2,…,Rk}是R的一个分解。如果F在每个子关系模式的分解的依赖的并集逻辑蕴含F中的每一个依赖,那么称分解p保持依赖集F。也就是保持依赖分解,依赖并没有丢。
保持依赖分解可能没有无损连接性。
无损连接分解可能没有保持依赖性。
保持依赖分解检验算法:
理解:
关于保持依赖分解的检验算法:首先一定要搞明白属性闭包是什么意思。保持依赖分解的检验目的是要找到G跟F等价(其实求出G逻辑蕴含F即可)。但是不可能把G的闭包全部写出来这时候就要借助属性闭包,把F中的每一个依赖X->Y,求X关于G的属性闭包,这个是很容易求的。可以依次遍历求出F中每一个X关于G的属性闭包,如果每一个属性闭包都包含对应的每一个Y,那么说明G逻辑蕴含F,这已经符合保持依赖分解的定义了。
保持依赖分解检验算法示例:
关系模式无损连接分解成SCNF算法:
一般方法分解成SCNF:
理解:
一般方式分解成SCNF,直接把F中的每一个依赖,决定因素含候选码的依赖合并在一起组成关系,决定因素不含候选码的依赖单独组成关系。
这样不一定满足无损连接性和保持依赖性。
采用无损连接分解
理解:
第一步:另p={R}
第二步:如果p中的模式不属于BCNF,把该模式的函数依赖集合F中,决定因素不含有候选码的依赖组成一个模式S1,其他依赖组成一个模式S2放入p中,此时S2为BC范式,因为S2中每一个决定决定因素都含有候选码,。然后把S1,S2替换掉R。
第三步,重复第二步,直到所有的模式都符合BCNF。
关系模式保持依赖分解成3NF:
一般方法分解成3NF:
理解:
一般模式分解成3NF的方法:把F中的每一个依赖都单独组成一个关系模式。
采用保持依赖分解:
理解:
采用保持依赖分解将关系模式分解成3NF:
第一步:把R中没有出现在F中的属性组成一个模。
第二步:把F中的每一个依赖单独组成一个模式,若决定因素有重复的,则合并组成模式。
第三步:模式的集合就是p。
这样可以保持每一个依赖,不会丢失。
关系模式分解成3NF或BCFN且既是无损连接又是保持依赖分解算法:
理解:
设p为采取保持依赖分解得到第三范式的分解,把p中的每一个模式跟X并集,则得到的分解就是满足无损连接性和保持依赖性的。且其中的模式有3NF也有BCNF。
数据库概论之模式分解理论(理解简单明了)相关推荐
- 数据库基础理论二——模式分解为主要导向
前言: 正确合情的理论是指导实践的重要法宝.在社会实践中,我们往往会感受到社会生产与理论发展有些许的不一致性,当然,理论与实践之间往往具有一道鸿沟.但是,当我们从社会经济学的角度去审视技术理论与泛化的 ...
- 【数据库复习】 模式分解例题
关于模式分解的相关例题:即判断分解是否保持无损连接,以及是否保持函数依赖: 题目来源:MOOC网-战德臣数据库课程 参考视频:B站浙江大学陈岭数据库系统原理 1.给定关系模式R(U, F),其中U={ ...
- 数据库中的模式分解与无损连接性
无损连接分解的普通判别方法--表格法 设关系模式R=A1,-,An,R上成立的FD集F,R的一个分解p={R1,-,Rk}.无损连接分解的判断步骤如下: (1)构造一张k行n列的表格,每列对应一个属性 ...
- 【数据库系统概论】模式分解
参考课件 --模式分解 关于模式分解两个习题例子 例1:U=(A,B,C,D,E,G) F={BG->C,BD->E,DG->C,ADG->BC,AG->B,B-> ...
- 【数据库】 关系模式的规范化理论----一文让你轻松理解其中奥秘
文章目录 关系模式设计中存在的问题 关系的形式化定义 数据依赖的基本概念 函数依赖 非平凡函数依赖.平凡函数依赖 完全函数依赖和部分函数依赖 传递函数依赖 关键字和超关键字 数据依赖的公理系统 函数依 ...
- 史上最详细的23中设计模式解析,一个不落,理论搭配简单案例,更好理解哦
目录 一.软件设计模式的产生背景 二.软件设计模式的概念与意义 1. 软件设计模式的概念 2. 学习设计模式的意义 三.23 种设计模式的分类和功能 1. 根据目的来分 2. 根据作用范围来分 3. ...
- 【数据库系统设计】关系数据理论(函数依赖、码、范式、模式分解)
关系数据理论 6.1 为什么要学习关系数据理论 什么是好的数据库逻辑设计 什么是数据依赖 关系模式的简化表示 6.2 规范化 - 关系的规范化理论 6.2.1 函数依赖 1.函数依赖 2.平凡函数依赖 ...
- bcnf分解算法_数据库规范化:模式分解算法(3NF,BCNF分解,附带口诀,通俗易懂)...
前言 在理解模式分解的时候,发现模式分解算法比较难懂.于是想出了一个通俗易懂的解法,并且配有速记口诀!让模式分解再也难不倒你. 知识储备 首先在了解模式分解之前,你需要对数据库规范化有一定的了解.这里 ...
- 数据库的三级模式和两级映射--简单介绍
形象解释数据库的三级模式和两级映射 数据库的三级模式和两级映射是美国国家标准协会(American National Standard Institute, ANSI)的数据库管理系统研究小组于197 ...
最新文章
- 使用Scrapy构建一个网络爬虫
- 安装配置Statspack
- 利用JS提交表单的几种方法和验证
- Hashcode 的作用
- Docker Swarm 进阶:NFS 共享数据卷
- 设计模式-策略模式(Strategy)
- 宽带安装人员将光纤网线卷了很大一圈,请问,这样做会影响网速吗?
- 之前跳槽面试时整理的一些知识点
- dede去除powered by dedecms
- 设置Session超时的三种方法
- 在线解析短视频去水印工具
- Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
- 【CF633H】Fibonacci-ish II(权值线段树)(莫队)
- 这家山炮公司,居然让腾讯又有了梦想!?
- [Python] 从ip138网站爬取ip所处地点
- CodeForces - 1359
- 统计字母个数(java语言实现)
- 10分钟手把手教你用Android手撸一个简易的个人记账App
- mysql基础之多表练习题
- 更换手机号,需要换绑哪些业务
热门文章
- android 解锁图案,Android开发中的图案解锁
- 移动机器人技术(9)-- 全向移动机器人Modeling and Control
- Vulnhub靶场渗透测试系列DC-7(跳出框框打开脑洞 drush更改drupal的admin账户密码)
- 8000字详解微信生态内的5款增长工具(2019版)
- Word中的图文框和文本框
- 电脑配置虚拟串口的详细教程
- java汉字转换国标码_国标码(GB2312)的自动生成 | 学步园
- uniapp uview 框架的form表单,输入校验手机号、校验微信号
- 《道德经》程序员版第六章
- 数学图形(1.14) 十字星形线