当前位置: 首页 > news >正文

【数据库系统概论】第6章-关系数据库理论

真别看吧,抄ppt而已啊

文章目录

    • 6.1 引言
    • 6.2 规范化
      • 6.2.1 函数依赖
      • 6.2.2 码
      • 6.2.3 范式(Normal Form)
      • 6.2.4 BC范式
      • 6.2.5 规范化小结

6.1 引言

我们有这样一张表:
在这里插入图片描述
but 为啥这样设计呢?由此引出怎样设计一个关系数据库的问题。
进而出现:数据库逻辑设计的工具——关系数据库的规范化理论
关系数据库有严格的理论支撑,这也是它的过人之处。

  • 回顾关系模式
    在这里插入图片描述
    在这里插入图片描述
  • 数据依赖
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    根据上图,关系中的映射不一定是单射的,即y不能确定x。(可能处于既不满也不单的混合态)
    单射、满射、双射
    X -> Y,可以认为知道了元组的X就能确定它的Y。
  • 且看下面的问题
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这是一个关系模式,而且不咋地。
    Q: 怎么让它变好呢?
    A: 通过分解关系模式来消除其中不合适的数据依赖。
    在这里插入图片描述
    为什么这样分解就好呢?
    引入关系规范化

6.2 规范化

6.2.1 函数依赖

  1. 定义
    在这里插入图片描述
  2. 解释
    在这里插入图片描述
  3. 平凡与非平凡函数依赖
    在这里插入图片描述
    在这里插入图片描述
  4. 完全函数与部分函数依赖
    在这里插入图片描述
    在这里插入图片描述
  5. 传递函数依赖
    在这里插入图片描述
    事实上,如果 Y 是 X的子集或者,Y->X,那么X是直接函数决定Z的。
    在这里插入图片描述

6.2.2 码

  • 主码、候选码
    在这里插入图片描述
    在这里插入图片描述
  • 主属性、非主属性、全码
    在这里插入图片描述
    在这里插入图片描述
  • 外码
    在这里插入图片描述
  • 习题
    在这里插入图片描述
    AC -> A, AC -> C,
    A -> B => AC -> BC => AC -> D
    从而 AC -> U, AC为码
    

6.2.3 范式(Normal Form)

在这里插入图片描述

  • 1NF
    在这里插入图片描述
    反例:
    在这里插入图片描述

  • 2NF
    在这里插入图片描述
    反例:
    在这里插入图片描述
    坏处:
    在这里插入图片描述
    解决方法:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 3NF

  1. 定义
    在这里插入图片描述
    在这里插入图片描述
    直白点说,sdept能确定sloc,你把sloc与sdept 放在一张表里是多余的,放到(sdept,sloc)这张表里一条就够了。
  2. 存在问题
    在这里插入图片描述
  3. 解决办法
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 习题
    在这里插入图片描述
    在这里插入图片描述

6.2.4 BC范式

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6.2.5 规范化小结

在这里插入图片描述
在这里插入图片描述

  • 习题
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

分成若干子表以后要多设一个表来保存二者之间的关系。

http://www.lryc.cn/news/269263.html

相关文章:

  • 算法设计与分析实验报告-贪心算法
  • Unity读取服务器声音文件
  • 掌握ElasticSearch(一):Elasticsearch安装与配置、Kibana安装
  • 《剑指offer》Java版--13.机器人的运动范围(BFS)
  • 基于流程挖掘的保险理赔优化策略实践
  • Docker五 | DockerFile
  • 2023年度总结:技术旅程的杨帆远航⛵
  • SpringBoot+AOP+Redis 防止重复请求提交
  • 偷流量、端口占用、网络负载高、socket创建释放异常等Android高阶TCP/IP网络问题定位思路
  • 《人人都能用英语》学习笔记
  • NFC与ZigBee技术在智慧农业物联网监测系统中的应用
  • k8s-cni网络 10
  • 听GPT 讲Rust源代码--src/tools(27)
  • 经济危机下,我们普通人如何翻身?2024创业新风口,适合普通人的创业项目
  • 深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing) 第五节 引用类型复制问题及用克隆接口ICloneable修复
  • python中基本元素的pop函数
  • MPLS动态协议LDP配置示例
  • JS调用栈:为何会栈溢出
  • 代码随想Day52 | 300.最长递增子序列、674. 最长连续递增序列、718. 最长重复子数组
  • 使用 pytest 相关特性重构 appium_helloworld
  • 猪目标检测数据集VOC格式600张
  • Pandas中concat的用法
  • 【C++】引用详解
  • 平时的一些思考内容
  • AIGC时代下,结合ChatGPT谈谈儿童教育
  • Java中的锁(一)
  • CSS-SVG-环形进度条
  • 英语中修饰头发的形容词顺序是怎么样的(加补充)
  • python的WebSocket编程详解,案例群聊系统实现
  • flutter学习-day22-使用GestureDetector识别手势事件