写点什么

【数据库系统设计】关系数据理论,深度分析一下 AQS 原理

作者:MySQL神话
  • 2021 年 11 月 28 日
  • 本文字数:1979 字

    阅读完需:约 6 分钟

规范化理论 — 找出关系模式中不合适的数据依赖,消除它们,可以在不同程度上解决插入异常、删除异常、更新异常和数据冗余问题。


6.2 规范化 — 关系的规范化理论


=====================================================================================


6.2.1 函数依赖



1.函数依赖

定义:


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



反例:



问:由下面的关系表, 能否得出 Sname → Sno ?



答:只由关系表不能得出依赖关系。函数依赖不是指关系模式 R 的某个或某些关系实例 r 满足的约束条件,而是指 R 的所有关系实例 r 均要满足的约束条件


如何确定函数依赖?


函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。


  • 如 Sname →Sno 函数依赖只有在“学生不允许有重名”的条件下成立。


数据库设计者可以对现实世界作强制的规定。


  • 例如设计者可以强行规定不允许学生有重名,因而使函数依赖


Sname → Sno,Sname → Ssex, Sname → Sage,Sname → Sdept 成立。


函数依赖是指关系模式 R 在任何时刻的关系实例均要满足的约束条件


  • 不是指某个或某些关系实例 r 满足的约束条件,而是指 R 的所有关系实例 r 均要满足的约束条件。

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

定义:



示例:



对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明, 我们总是讨论非平凡函数依赖

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

定义:



示例:


4.传递函数依赖

定义:



示例:



6.2.2 码



候选码、超码

候选码、超码定义:



候选码、超码示例:


主码

主属性、非主属性

主属性、非主属性定义:



主属性、非主属性示例:


全码

外码

外码定义:



外码示例:



6.2.3 范式




  • 范式是符合某一种级别的关系模式的集合。

  • 关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。


范式的种类:


  • 第一范式(1NF)

  • 第二范式(2NF)

  • 第三范式(3NF)

  • BC 范式(BCNF,Boyce 和 Codd 共同提出的范式)

  • 第四范式(4NF)

  • 第五范式(5NF)


各种范式之间存在联系:



第一范式


1NF 的定义:如果一个关系模式 R 的所有属性都是不可分的基本数据项,则 R∈1NF。



第一范式是对关系模式的最起码的要求。不满足第一范式的数据库模式不能称为关系数据模式。(不能表中有表)


6.2.4 第二范式(2NF)




只满足第一范式的关系模式并不一定是一个好的关系模式



2NF 定义:



2NF 示例:



一个关系模式 R 不属于 2NF,就会产生问题。






原因: SLC(Sno, Sdept, Sloc, Cno, Grade) 中


Sdept、 Sloc 部分函数依赖于码。SLC 的码为(Sno, Cno)





2NF 的问题










6.2.5 第三范式(3NF)




3NF 的定义:



3NF 示例:





3NF 的性质:


3NF 的问题





6.2.6 BC 范式(BCNF)




BC 范式定义:



BC 范式示例:



BC 范式的性质:



6.2.9 规范化小结







6.3 数据依赖的公理系统


================================================================================



Armstrong 公理系统:



导出规则:


函数依赖闭包

闭包 F+ 定义:



X 关于函数依赖集 F 的闭包 XF+定义:


求属性集 X 关于 F 的闭包 XF+

算法:



示例:



Armstrong 公理系统的有效性与完备性:


函数依赖集等价的概念

函数依赖集等价定义:


最小依赖集

最小依赖集定义:



最小依赖集例题:




求出了 A+,发现 B 是冗余的。



求出 B+,B 不是冗余的。



这边一眼就能看出来了,所谓求 XX 的闭包不过是种说法罢了,千万不要被思维定式。



F 的最小依赖集 Fm 不一定是唯一的



6.4 模式的分解


============================================================================


6.4.1 模式分解的 3 个定义





模式分解示例



















6.4.2 分解的无损连接性和保持函数依赖性



1.具有无损连接性的模式分解

定义:



算法:




例题:


这题看不懂看这个:数据库系统(哈尔滨工业大学)P167 16.2-无损连接分解及其检验算法





特殊情况:



2.保持函数依赖的模式分解

定义:




示例:



3.分解的无损连接性和保持函数依赖性

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200411201629171.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV


《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》

【docs.qq.com/doc/DSmxTbFJ1cmN1R2dB】 完整内容开源分享


0L3dlaXhpbl80MzczNDA5NQ==,size_16,color_FFFFFF,t_70)


例题:



6.4.3 模式分解的算法















6.5 小结


=========================================================================







【习题】


=======================================================================


(1)





(2)




(3)




(4)



(5)



(6)



(7)



(8)








(7)

最后

分布式技术专题+面试解析+相关的手写和学习的笔记 pdf


还有更多 Java 笔记分享如下:



本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

用户头像

MySQL神话

关注

还未添加个人签名 2021.11.12 加入

还未添加个人简介

评论

发布
暂无评论
【数据库系统设计】关系数据理论,深度分析一下AQS原理