第六章关系数据理论

第六章关系数据理论

  • 6.1_问题的提出(略)
  • 6.2_规范化
    • 6.2.1_函数依赖
    • 6.2.2_码
    • 6.2.3_范式
    • 6.2.4_2NF
    • 6.2.5_3NF
    • 6.2.6_BCNF
    • 6.2.7_多值依赖
    • 6.2.8_4NF
    • 6.2.9_规范化小结
  • 6.3_Armstrong公理系统
    • 6.3.1_函数依赖闭包
    • 6.3.2_最小依赖集
    • 6.3.3_转换为3NF的保持函数依赖的分解

6.1_问题的提出(略)

6.2_规范化

6.2.1_函数依赖

1.函数依赖
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。
若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y


2.平凡函数依赖与非平凡函数依赖

  • 非平凡的函数依赖:如果X→Y,但Y⊄ X,则称X→Y是非平凡的函数依赖
  • 平凡的函数依赖:若X→Y,但Y ⊆ X, 则称X→Y是平凡的函数依赖

3.完全函数依赖与部分函数依赖

  • 在R(U)中,如果X→Y,并且对于X的任何一个真子集X’,都有X’推不出Y, 则称Y对X完全函数依赖,记作X -F-> Y(即缺了属性集合X中的任何一个属性都不能唯一确定Y)
  • 若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作X-P-> Y。

4.传递函数依赖

6.2.2_码

6.2.3_范式

关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式
第一范式(1NF):如果一个关系模式R的所有属性都是不可分的基本数据项,则R∈1NF

6.2.4_2NF

第二范式(2NF):若R∈1NF,且每一个非主属性完全函数依赖于码,则R∈2NF。

6.2.5_3NF

第三范式(3NF):关系模式R<U,F> 中若不存在这样的码X、属性组Y及非主属性Z(Z  Y), 使得X→Y,Y→Z成立, Y → X,则称R<U,F> ∈ 3NF。(若R∈3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码

6.2.6_BCNF

6.2.7_多值依赖

6.2.8_4NF

6.2.9_规范化小结

6.3_Armstrong公理系统

6.3.1_函数依赖闭包

与编译原理的闭包思想一样
在这里插入图片描述

6.3.2_最小依赖集

定义
(1) F中任一函数依赖的右部仅含有一个属性
(2) F中不存在这样的函数依赖X→A,使得F与F-{X→A}等价。(函数依赖冗余
(3) F中不存在这样的函数依赖X→A, X有真子集Z使得F-{X→A}∪{Z→A}与F等价。 (左部属性冗余


求解方法:(分别对应定义中的三个条件)
(1)逐一检查F中各函数依赖FDi:X→Y,若Y=A1A2 …Ak,k > 2,则用 { X→Aj |j=1,2,…, k} 来取代X→Y。
(2)逐一检查F中各函数依赖FDi:X→A,令G=F-{X→A}, 若A∈XG+, 则从F中去掉此函数依赖
(3)逐一取出F中各函数依赖FDi:X→A,设X=B1B2…Bm,逐一考查Bi (i=l,2,…,m),若A ∈(X-Bi )F+ , 则以X-Bi 取代X。

在这里插入图片描述

6.3.3_转换为3NF的保持函数依赖的分解

【例】 关系模型R<U,F>,U={A,B,C,D,E},F={A→BC,ABD→CE,E→D}

算法一:将关系R转化3NF的保持函数依赖的分解

第一步:首先计算处F的最小函数依赖集,得到F‘={A→BC,AD→E,E→D}。

第二步:观察U中是否有属性不再F’中的出现,如果有,则这个属性组成一对关系R,并在原来的U中删除这些属性。而例子中U的属性都出现在F中,则可以跳过这一步。

第三步:对F‘中的函数依赖,把左边的相同分为一组,一组中出现的所有属性为一个关系。如F={A→B,A→C,……},左边都为A的分为一组,得出项的所有属性组为也给关系R{A,B,C,…}例题中左边都不相同,所以一个函数依赖组为一个关系得到转化为3NF的保持依赖分解1{A,B,C},R2{A,D,E},R3{E,D}。


算法二:将关系R转化为3NF的既有无损连接有保持函数依赖的分解

第一步:先将R转化为3NF的保持函数依赖的分解,由算法一的出R1{A,B,C},R2{A,D,E},R3{E,D}。

第二步:求出F的候选码(候选码求解算法)得出候选码X为AD和AE。

第三步:将候选码单独组成关系得R4{A,D}和R5{A,E},然后与保持函数依赖后得分解取并集。得R1{A,B,C},R2{A,D,E},R3{E,D},R4{A,D},R5{A,E}。。、

第四步:观察新组成得分解模式中,是否存在包含关系,有责去掉被包含得。如R3{E,D},R4{A,D},R5{A,E}都包含于R2{A,D,E},则删除,最终得到转化为3NF的既有无损链接有保持函数依赖的分解R1{A,B,C},R2{A,D,E}。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/545280.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Github上的热门iOS开源项目:AFNetworking、MagicalRecord、BlocksKit以及XVim

1. AFNetworking AFNetworking是一个非常受欢迎的轻量级的iOS、Mac OS X网络通信类库。它建立在NSURLConnection、NSOperation以及其技术的基础上&#xff0c;有着精心设计的模块结构和功能丰富的API&#xff0c;让很多网络通信功能的实现变得十分简单。 附件&#xff1a;/c…

队列实现栈的3种方法,全都击败了100%的用户!

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;本文已收录至 Github《小白学算法》系列&#xff1a;https://github.com/vipstone/algorith之前我们讲过《用两个栈实现一个…

where、having、group by、order by、count的使用注意

where、having、group by、order by、count的使用注意1_where、having、group by、order by的顺序2_group by的作用3_where和group by的组合4_group by和having的组合5_where、having、group by的组合使用6_count与group by的组合使用1_where、having、group by、order by的顺序…

很实用的21个SQL小技巧!

前言每一个好习惯都是一笔财富&#xff0c;本文基于MySQL&#xff0c;分SQL后悔药&#xff0c; SQL性能优化&#xff0c;SQL规范优雅三个方向&#xff0c;分享写SQL的21个好习惯&#xff0c;谢谢阅读&#xff0c;加油哈~1. 写完SQL先explain查看执行计划&#xff08;SQL性能优化…

阿里最喜欢问的多线程顺序打印的5种解法!

Keeper导读大家在换工作面试中&#xff0c;除了一些常规算法题&#xff0c;还会遇到各种需要手写的题目&#xff0c;所以打算总结出来&#xff0c;给大家个参考。全文 2929 字&#xff0c;剩下的是代码&#xff0c;P6 及以下阅读只需要 8 分钟&#xff0c;高 P 请直接关闭第一篇…

CSS入门

CSS入门1_CSS概要1.1_CSS引入方式2_CSS选择器3_字体样式3.1_字体属性3.2_字体类型&#xff1a;font-family3.3_字体大小&#xff1a;font-size3.4_字体粗细&#xff1a;font-weight3.5_字体颜色&#xff1a;color3.6_总结4_文本样式4.1_文本样式属性4.2_首行缩进&#xff1a;te…

23张图!万字详解「链表」,从小白到大佬!

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;链表和数组是数据类型中两个重要又常用的基础数据类型。数组是连续存储在内存中的数据结构&#xff0c;因此它的优势是可以通…

何为“秒传”

写在前面 最近一直在弄文件传输的组件&#xff0c;在讨论组里面&#xff0c;有同事提到“秒传”的功能。在目前的通信软件中也有网盘的功能&#xff0c;就从网上搜了一下&#xff0c;这里对“秒传”的实现思路做一下总结&#xff0c;在之后会写一个小的demo实现一下。没有其他&…

数组转List的3种方法和使用对比!

作者 | 大脑补丁来源 | blog.csdn.net/x541211190/article/details/79597236前言&#xff1a;本文介绍Java中数组转为List三种情况的优劣对比&#xff0c;以及应用场景的对比&#xff0c;以及程序员常犯的类型转换错误原因解析。一.最常见方式&#xff08;未必最佳&#xff09;…

oracle10g备份导入

2019独角兽企业重金招聘Python工程师标准>>> //导出 exp test/testgdsoft filed:\gd.dmp //删用户 drop user wkwx cascade; //用PLSQL创建数据数据库 create user hzjzjn identified by hzjzjn default tablespace BDP_DATABD; grant CREATE USER,DROP USER,ALTE…

VisualSVNServer的使用

VisualSVNServer的使用1_服务端初识1.1_创建新仓库1.2_创建用户并分配权限1_服务端初识 1.1_创建新仓库 右击Repository&#xff0c;点击create 点击下一步 输入仓库名 右击空白处&#xff0c;点击新建&#xff0c;点击project structure 输入工程名 1.2_创建用户并分…

安利一个IDEA骚操作:一键生成方法的序列图

在平时的学习/工作中&#xff0c;我们会经常面临如下场景&#xff1a;阅读别人的代码阅读框架源码阅读自己很久之前写的代码。千万不要觉得工作就是单纯写代码&#xff0c;实际工作中&#xff0c;你会发现你的大部分时间实际都花在了阅读和理解已有代码上。为了能够更快更清晰地…

c#中textbox属性_C#.Net中带有示例的TextBox.Multiline属性

c#中textbox属性Here we are demonstrating use of Multiline property of the TextBox Control. 在这里&#xff0c;我们演示了TextBox控件的Multiline属性的使用。 Multiline property contains two values: 多行属性包含两个值&#xff1a; True: We can enter text in mo…

MATLAB新手教程

MATLAB新手教程 1&#xff0e;MATLAB的基本知识 1-1、基本运算与函数 在MATLAB下进行基本数学运算&#xff0c;仅仅需将运算式直接打入提示号&#xff08;>>&#xff09;之後&#xff0c;并按入Enter键就可以。比如&#xff1a; >> (5*21.3-0.8)*10/25 an…

嗯,查询滑动窗口最大值的这4种方法不错....

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;本文已收录至 Github《小白学算法》系列&#xff1a;https://github.com/vipstone/algorithm这是一道比较基础的算法题&…

SVN客户端使用

SVN客户端使用1. 复制服务端URL2. 在客户端电脑新建文件夹用于存储版本代码3. 右击空白处&#xff0c;checkout4. 进入trunk目录&#xff0c;即可尝试新建文件并上传到服务端4.其他客户端更新版本5.解决代码冲突期间由于之前登陆过并设置为记住密码&#xff0c;所以整个过程并没…

25 张图,1.4 w字!彻底搞懂分布式事务原理

本文提纲如下&#xff1a;0. 前言1. 单数据源事务 & 多数据源事务2. 常见分布式事务解决方案2.1. 分布式事务模型2.2. 二将军问题和幂等性2.3. 两阶段提交&#xff08;2PC&#xff09; & 三阶段提交&#xff08;3PC&#xff09;方案2.4. TCC 方案2.5. 事务状态表方案2.…

des加密密码补位_密码学中的数据加密标准(DES)

des加密密码补位This is a Data Encryption Standard that is the asymmetric key generation for the encryption of digital data in cryptography. Therefore, its short key length of 56 bits of character criticized from the beginning or starting makes it too insec…

报告老板:这次的缓存事故是这样的...

事故背景公司最近安排了一波商品抢购活动&#xff0c;由于后台小哥操作失误最终导致活动效果差&#xff0c;被用户和代理商投诉了。老板让我带同事们一起复盘这次线上事故。什么原因造成的&#xff1f;抢购活动计划是零点准时开始&#xff0c;22&#xff1a;00 运营人员通过后台…

隐式转换

2019独角兽企业重金招聘Python工程师标准>>> 1&#xff1a;隐式转换应用 1.1 隐式转换为期望类型 隐式转换为期望类型是编译器会使用隐式操作的第一个地方。一旦编译器看到了X&#xff0c;但是需要Y&#xff0c;就会检查从X到Y的隐式转换函数。例如&#xff1a; val…