模式分解理论

  • 模式分解:
    • 模式分解的概念:
    • 模式分解的特性:
      • 数据内容的等价性:
      • 数据约束的等价性
      • 模式分解要考虑的问题:
      • 模式分解的分类:
        • 无损连接分解:
          • 无损连接分解概念:
          • 无损连接分解的检验算法:
          • 无损连接分解算法示例:
          • 无损连接分解的检验简单方法:
          • 无损连接分解的性质:
        • 保持依赖分解:
          • 保持依赖分解概念:
          • 保持依赖分解检验算法:
          • 保持依赖分解检验算法示例:
    • 关系模式无损连接分解成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。

数据库概论之模式分解理论(理解简单明了)相关推荐

  1. 数据库基础理论二——模式分解为主要导向

    前言: 正确合情的理论是指导实践的重要法宝.在社会实践中,我们往往会感受到社会生产与理论发展有些许的不一致性,当然,理论与实践之间往往具有一道鸿沟.但是,当我们从社会经济学的角度去审视技术理论与泛化的 ...

  2. 【数据库复习】 模式分解例题

    关于模式分解的相关例题:即判断分解是否保持无损连接,以及是否保持函数依赖: 题目来源:MOOC网-战德臣数据库课程 参考视频:B站浙江大学陈岭数据库系统原理 1.给定关系模式R(U, F),其中U={ ...

  3. 数据库中的模式分解与无损连接性

    无损连接分解的普通判别方法--表格法 设关系模式R=A1,-,An,R上成立的FD集F,R的一个分解p={R1,-,Rk}.无损连接分解的判断步骤如下: (1)构造一张k行n列的表格,每列对应一个属性 ...

  4. 【数据库系统概论】模式分解

    参考课件 --模式分解 关于模式分解两个习题例子 例1:U=(A,B,C,D,E,G) F={BG->C,BD->E,DG->C,ADG->BC,AG->B,B-> ...

  5. 【数据库】 关系模式的规范化理论----一文让你轻松理解其中奥秘

    文章目录 关系模式设计中存在的问题 关系的形式化定义 数据依赖的基本概念 函数依赖 非平凡函数依赖.平凡函数依赖 完全函数依赖和部分函数依赖 传递函数依赖 关键字和超关键字 数据依赖的公理系统 函数依 ...

  6. 史上最详细的23中设计模式解析,一个不落,理论搭配简单案例,更好理解哦

    目录 一.软件设计模式的产生背景 二.软件设计模式的概念与意义 1. 软件设计模式的概念 2. 学习设计模式的意义 三.23 种设计模式的分类和功能 1. 根据目的来分 2. 根据作用范围来分 3. ...

  7. 【数据库系统设计】关系数据理论(函数依赖、码、范式、模式分解)

    关系数据理论 6.1 为什么要学习关系数据理论 什么是好的数据库逻辑设计 什么是数据依赖 关系模式的简化表示 6.2 规范化 - 关系的规范化理论 6.2.1 函数依赖 1.函数依赖 2.平凡函数依赖 ...

  8. bcnf分解算法_数据库规范化:模式分解算法(3NF,BCNF分解,附带口诀,通俗易懂)...

    前言 在理解模式分解的时候,发现模式分解算法比较难懂.于是想出了一个通俗易懂的解法,并且配有速记口诀!让模式分解再也难不倒你. 知识储备 首先在了解模式分解之前,你需要对数据库规范化有一定的了解.这里 ...

  9. 数据库的三级模式和两级映射--简单介绍

    形象解释数据库的三级模式和两级映射 数据库的三级模式和两级映射是美国国家标准协会(American National Standard Institute, ANSI)的数据库管理系统研究小组于197 ...

最新文章

  1. 使用Scrapy构建一个网络爬虫
  2. 安装配置Statspack
  3. 利用JS提交表单的几种方法和验证
  4. Hashcode 的作用
  5. Docker Swarm 进阶:NFS 共享数据卷
  6. 设计模式-策略模式(Strategy)
  7. 宽带安装人员将光纤网线卷了很大一圈,请问,这样做会影响网速吗?
  8. 之前跳槽面试时整理的一些知识点
  9. dede去除powered by dedecms
  10. 设置Session超时的三种方法
  11. 在线解析短视频去水印工具
  12. Unable to start ServletWebServerApplicationContext due to missing ServletWebServerFactory bean.
  13. 【CF633H】Fibonacci-ish II(权值线段树)(莫队)
  14. 这家山炮公司,居然让腾讯又有了梦想!?
  15. [Python] 从ip138网站爬取ip所处地点
  16. CodeForces - 1359
  17. 统计字母个数(java语言实现)
  18. 10分钟手把手教你用Android手撸一个简易的个人记账App
  19. mysql基础之多表练习题
  20. 更换手机号,需要换绑哪些业务

热门文章

  1. android 解锁图案,Android开发中的图案解锁
  2. 移动机器人技术(9)-- 全向移动机器人Modeling and Control
  3. Vulnhub靶场渗透测试系列DC-7(跳出框框打开脑洞 drush更改drupal的admin账户密码)
  4. 8000字详解微信生态内的5款增长工具(2019版)
  5. Word中的图文框和文本框
  6. 电脑配置虚拟串口的详细教程
  7. java汉字转换国标码_国标码(GB2312)的自动生成 | 学步园
  8. uniapp uview 框架的form表单,输入校验手机号、校验微信号
  9. 《道德经》程序员版第六章
  10. 数学图形(1.14) 十字星形线