第六章 关系数据库理论

news2024/11/25 19:47:15

第六章 关系数据库理论

6.1 问题的提出

  • 关系模式的表示

    关系模式由五部分组成,是一个五元组:R(U,D,DOM,F)。(1

    • 关系名R是符号化的元组语义。
    • U为一组属性。
    • D为属性组U中的属性所来自的域。
    • DOM为属性到域的映射。
    • F为属性组U上的一组数据依赖。
  • 说明

    • 由于D、DOM与模式设计关系不大,因此在本章中把关系模式看作一个三元组:R<U,F>
    • 当且仅当U上的一个关系r满足F时,r称为关系模式R<U,F>的一个关系。
    • 作为一个二维表,关系要符合一个最基本的条件:每一个分量必须是不可分的数据项。满足了这个条件的关系模式就属于第一范式(1NF)。
  • 数据依赖

    数据依赖是一个关系内部属性与属性之间的一种约束关系,是通过属性间值的相等与否体现出来的数据间相互联系。

    • 数据依赖的主要类型:
      • 函数依赖(Functional Dependency,简记为FD)。
      • 多值依赖(Mu!ti-Valued Dependency,简记为M
    • 问题
      • 数据冗余
      • 更新异常
      • 插入异常
      • 删除异常

6.2 规范化

6.2.1 函数依赖

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

  • 术语和记号

    • X → \rightarrow Y,但Y ⊈ \nsubseteq X,则称X$\rightarrow $Y是非平凡的函数依赖。

    • X→Y,但Y ⊆ \subseteq X,则称X→Y是平凡的函数依赖。

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

    • 若X→y,则X称为这个函数依赖的决定属性组,也称为决定因素(determinant)。

    • 若X→Y,Y→X,则记作X ← → \leftarrow \rightarrow ←→Y。

    • 若Y不函数依赖于X,则记作X→Y。


Snipaste_2023-08-03_09-06-33


Snipaste_2023-08-03_09-07-12

6.2.2 码

Snipaste_2023-08-03_09-21-45


Snipaste_2023-08-03_09-24-56

6.2.3 范式

​ 关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。满足最低要求的叫第一范式,简称1NF;在第一范式中满足进一步要求的为第二范式,其余以此类推。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

  • 规范化
    • 一个低一级范式的关系模式通过模式分解(schemadecomposition)可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化(normalization)。

6.2.4 2NF

  • 若RE ∈ \in NF,且每一个非主属性完全函数依赖于任何一个候选码,则RE$\in $2NF。
  • 一个关系模式R不属于2NF,就会产生以下几个问题:
    • 插入异常
    • 删除异常
    • 修改复杂
  • 解决方法:
    • 用投影分解把关系模式S-L-C分解成两个关系模式。

6.2.5 3NF

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不能存在传递依赖

6.2.6 BCNF

Snipaste_2023-08-03_09-37-33

  • 由BCNF的定义可以得到结论,一个满足BCNF的关系模式有:
    • 所有非主属性对每一个码都是完全函数依赖。
    • 所有主属性对每一个不包含它的码也是完全函数依赖。
    • 没有任何属性完全函数依赖于非码的任何一组属性。

6.2.7 多值依赖

Snipaste_2023-08-03_16-26-36

Snipaste_2023-08-03_16-54-34

  • 多值依赖的性质
    • 多值依赖具有对称性:若x→→Y,则X→→Z,其中
      Z=U-X-Y
    • 多值依赖具有传递性:若X→→Y,Y→→Z,则X→→Z-Y。
    • 函数依赖是多值依赖的特殊情况:若x→Y,则 X→→Y。
    • 若x→→Y,X→→Z,则x→→YZ。
    • 若x→→Y,X→→Z,则X→→Y ∩ \cap Z。
    • 若X→→Y,X→→Z,则X→→Y-Z,X→→Z-Y。
  • Snipaste_2023-08-03_17-20-05

6.2.8 4NF

Snipaste_2023-08-03_17-21-57

  • 说明
    • 4NF是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。4NF所允许的非平凡多值依赖实际是函数依赖。
    • 如果一个关系模式是4NF,则必为BCNF。
    • 在关系WSC中,W→→S,W→→C,他们都是非平凡多值依赖。而W不是码,关系模式WSC的码是(W,S,C),即AlI-key,因此WSC4NF。可以把WSC分解成WS(W,S),WC(W,C),WSE4NF,WCE4NF。

6.2.9 小结

Snipaste_2023-08-03_17-24-41

6.3 数据依赖的公理系统

Snipaste_2023-08-06_09-30-35

Snipaste_2023-08-06_09-31-37

Snipaste_2023-08-06_09-37-15

Snipaste_2023-08-06_09-51-56

定理6.2 Armstrong公理系统是有效的、完备的。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

Snipaste_2023-08-06_10-01-29

  • 定理6.3
    • 每一个函数依赖集F均等价于一个极小函数依赖集 F m F_m Fm。此$F_m $称为F的最小依赖集。

6.4 模式的分解

Snipaste_2023-08-06_10-17-23

6.4.1 模式分解的三个定义

  • 对于一个模式的分解是多种多样的,但是分解后产生的模式应与原模式等价。
    • 等价
      • 分解具有无损连接性(lossless join)。
      • 分解要保持函数依赖(preserve functional dependency)。
      • 分解既要保持函数依赖,又要具有无损连接性。

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

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

相关文章

K8s的网络——Underlay和Overlay网络

0. 基础知识 1&#xff09;网络7层基础知识 在网络7层协议基础里&#xff0c; 第一层物理链路&#xff1b;第二层是数据链路层&#xff0c;在第一层的基础上引入MAC地址做数据转发。MAC地址在局域网内具有唯一性&#xff0c;主机A发送数据时&#xff0c;会向局域网内进行广播…

idea显示git分支信息(GitToolBox插件)

效果图 说明 本身idea在右下角会有git分支信息&#xff0c;但是显示的当前打开文件的分支信息&#xff0c;并且不够显眼 解决 1、安装插件(GitToolBox插件) 2、修改idea.properties project.tree.structure.show.urlfalse ide.tree.horizontal.default.autoscrollingfalse将…

【数据结构】堆的应用+TOP-K问题+二叉树遍历

欢迎来到我的&#xff1a;世界 希望作者的文章对你有所帮助&#xff0c;有不足的地方还请指正&#xff0c;大家一起学习交流 ! 目录 前言堆的时间复杂度向下调整算法的时间复杂度向上调整算法的时间复杂度 堆的应用堆排序TOP—K问题链式二叉树二叉树的节点&#xff1a;初始化节…

ThreadLocal线程局部变量

1.原理 ThreadLocal是用来保存当前线程数据的&#xff0c;每一个线程的内部都有一个ThreadLocalMap&#xff0c;当前这个map中存储了以当前ThreadLocal作键&#xff0c;具体的数据作值的一个个Entry对象。 为什么非得以ThreadLocal对象作键呢&#xff1f;因为一个线程可能使用了…

手游联运平台是什么?

手游联运平台是一种服务于手游联运的专业平台&#xff0c;旨在为游戏开发商、发行商和代理商提供联运合作所需的技术、工具和资源。这些平台通常提供以下功能和服务&#xff1a; 游戏接入和管理&#xff1a;允许游戏开发商将他们的游戏接入联运平台&#xff0c;以便发行到不同的…

linux 环境变量详解/etc/proflie

Linux 环境变量是可以在多个文件中进行配置的&#xff0c;如/etc/proflie&#xff0c;/etc/profile.d/*.sh&#xff0c;~/.bashrc&#xff0c;~/.bash_profile等但是这些之间有什么区别呢 bash的运行模式可以分为 login shell 和 non-login shell。 例如&#xff1a;通过终端&a…

【送书活动】强势挑战Java,Kotlin杀回TIOBE榜单Top 20!学Kotlin看哪些书?

前言 「作者主页」&#xff1a;雪碧有白泡泡 「个人网站」&#xff1a;雪碧的个人网站 「推荐专栏」&#xff1a; ★java一站式服务 ★ ★ React从入门到精通★ ★前端炫酷代码分享 ★ ★ 从0到英雄&#xff0c;vue成神之路★ ★ uniapp-从构建到提升★ ★ 从0到英雄&#xff…

王道考研操作系统

王道考研操作系统 计算机系统概述操作系统的概念操作系统的特征操作系统的发展历程操作系统内核中断和异常![在这里插入图片描述](https://img-blog.csdnimg.cn/162452b4c60144e0bd500e180127c447.png)系统调用操作系统结构虚拟机错题 进程与线程进程控制进程通信线程和多线程模…

Python+Selenium定位不到元素常见原因及解决办法(报:NoSuchElementException)

这篇文章主要介绍了PythonSelenium定位不到元素常见原因及解决办法(报&#xff1a;NoSuchElementException),文中通过示例代码介绍的非常详细&#xff0c;对大家的学习或者工作具有一定的参考学习价值&#xff0c;需要的朋友们下面随着小编来一起学习学习吧 在做web应用的自动…

elasticsearch17-自动补全

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

2023/9/17总结

Vue defineOptions 为什么要使用defineOptions 在有<script setup> 之前 如果需要定义props emit 可以很容易的添加一个与setup 平级的属性 但是用了 <script setup> 后 就不能这样做了 setup 属性也就没有了&#xff0c;就不能添加 与其平级 的属性 为了解…

基于springboot+vue的网上商城系统

一、选题背景意义 &#x1f30a;项目背景&#xff1a;该电子商城系统旨在为商家和消费者提供一个直观、易用的购物平台&#xff0c;通过该平台销售商品和宣传品牌&#xff0c;消费者通过该平台购买商品&#xff0c;享受更便捷的购物体验。在该电子商城系统中&#xff0c;商家可…

腾讯Behaviac Designer 和Unity连调行为树

1. 克隆源码 https://github.com/Tencent/behaviac/ 2. 编译生成BehaviacDesigner.exe 3. 找到并打开BehaviacDesigner.exe&#xff08;先不急着填弹出的路径workspace 设置框&#xff09; 4. 新建一个Unity 空工程&#xff0c;并在此处下载behaviac unitypackage 5. Unity中…

C#引用Microsoft.Office.Interop.Excel

1.添加相关包 在项目的引用上&#xff0c;鼠标右键点击&#xff0c;选择管理“NuGet程序包”&#xff0c;如下图所示。 2.搜索Microsoft.Office.Interop.Excel 打开后&#xff0c;按照下图所示进行操作。 3.查看引用 此时&#xff0c;在引用中&#xff0c;可以看见&#xff0c;…

K8s(Kubernetes)学习(五)——Service:ClusterIP、NodePort、LoadBalancer、 ExternalName

第五章 Service 什么是 Service为什么需要 ServiceService 特性Service 与 Pod 关联Service type 类型如何使用 Service多端口配置 1 什么是 Service 1.1 定义 官网地址: https://kubernetes.io/zh-cn/docs/concepts/services-networking/service/ 将运行在一个或一组 Pod…

怎么推广自己抖店的商品?最适合0经验新手操作的办法,来看看

我是王路飞。 抖店开通后&#xff0c;想要把自己店铺的商品卖出去&#xff0c;就需要进行推广了。 但是怎么推广呢&#xff1f; 要么利用抖音的搜索和推荐流量&#xff0c;获取曝光&#xff0c;实现点击和转化。 不过这种玩法有个弊端&#xff0c;就是需要你有一定的电商经…

分布式事务-介绍

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…

K8S:pod资源限制及探针

文章目录 一.pod资源限制1.pod资源限制方式2.pod资源限制指定时指定的参数&#xff08;1&#xff09;request 资源&#xff08;2&#xff09; limit 资源&#xff08;3&#xff09;两种资源匹配方式 3.资源限制的示例&#xff08;1&#xff09;官网示例&#xff08;2&#xff0…

QSlider风格设置

QT的滑动条在开发的过程中经常使用&#xff0c;默认的QSlider风格比较简陋&#xff0c;一般达不到UI设计的效果&#xff0c;本篇记录一个QSlider使用过程中风格的设置。 1.qss常用的字段属性 1.1背景属性 属性值意思background Background背景属性background-colorBrush背景…

【探索C++】string类详解

(꒪ꇴ꒪ )&#xff0c;Hello我是祐言QAQ我的博客主页&#xff1a;C/C语言&#xff0c;数据结构&#xff0c;Linux基础&#xff0c;ARM开发板&#xff0c;网络编程等领域UP&#x1f30d;快上&#x1f698;&#xff0c;一起学习&#xff0c;让我们成为一个强大的攻城狮&#xff0…