数据库——关系数据理论学习笔记
关系数据理论
问题的提出
关系数据库逻辑设计
- 具体问题构造适合数据库模式
- 数据库逻辑设计的工具————关系数据库的规范化理论
概念回顾
- 关系
- 关系模式
- 关系数据库
- 关系数据库的模式
关系模式的形式化定义
- 五元
什么是数据依赖
- 完整性约束的表现形式
- 限定属性的取值范围(要求范围)
- 定义属性值之间的相互关联(主要判断是否相等),这就是数据依赖,是数据库模式开发的关键
- 数据依赖
- 通过一个关系中属性间值的相等与否体现出来的数据间的相互关系
- 是现实世界属性间的相互关系‘
- 数据依赖的类型
- 函数依赖(FD)
- 多值依赖(MVD)*
- 其他(如连接依赖)
关系模式的简化表示
- 关系模式R(U,D,DOM,F),简化为一个三元组:R(U,F)
- 一个约束F(…)
数据依赖对关系模式的影响
- F={Sno–>Sdept,Sdept–>Mname,(Sno,Cname)–>Grade}:属性组U上的一组函数依赖F----关于候选码???!!!
- 关系模式Student<U,F>中存在的相关问题:
- 数据冗余太大
- 浪费大量的存储空间
- 更新异常
- 数据冗余,工薪数据是,维护数据完整性代价太大
- 插入异常
- 该插的数据插不进去
- 删除异常
- 不该删除的数据不得不删除
- 数据冗余太大
- 关系模式Student<U,F>中存在的相关问题:
- 结论
- Student关系模式不是一个好的模式
- “好”的模式:不会发生插入异常,删除异常、更新异常,数据冗余应尽可能少
- 原因:
规范化
函数依赖
- 定义
平凡函数依赖和非平凡函数依赖
- 总是讨论非平凡函数依赖(因为平凡函数依赖是一定成立的,无意义)
完全函数依赖和部分函数依赖
- 定义
传递函数依赖
- 定义
- 注:如果Y–>X,即X<–>Y,即X和Y是完全依赖的
码
- 定义
- 候选码、主码(码并不等价于主属性)
- 主属性和非主属性
- ALL KEY(无非主属性,只有主属性)
- 外部码
- 主码与外部码
范式
- 定义
- 各范式之间存在联系1>2>3>BC>4>5(属于)5NF最高
2NF
- 1NF的定义(基本要求)
- 例子:
存在码
满足第一范式
非主属性部分依赖于码- 原因:Sdept、Sloc部分函数依赖于码
- 解决方式:SLC分解为两个关系模式,以消除部分函数依赖。
- 2NF定义(消除1NF中,非主属性的对码的部分函数依赖)
- 第二范式(续):分解1NF至2NF,可能消除不了异常
3NF
- 定义(在2NF基础上,不存在非主属性对传递函数依赖)
- 解决方式:采用投影分解法,把SL分解为两个关系模式,以消除传递函数依赖:SD(Sno,Sdeot) DL(Sdept,Sloc)
- 续:并不一定能完全消除关系模式中各种异常情况和数据冗余.
BC范式(BCNF)
- 定义(解决候选码之间的部分函数依赖或传递函数依赖)
- 在3NF的基础下
- 每一个决定属性集都包含码
- R中的所有属性都完全依赖于码
- 若R∈3NF,不一定属于BCNF
- 3NF和BCNF的区别
- BCNF的关系模式所具有的性质
- 1
- 2
- 3
多值依赖与第四范式(4NF)*
- 对全码关系问题:产生原因:存在多值依赖
多值依赖
- 多值依赖的性质
- 具有对称性
- 具有传递性
- 函数依赖是多值依赖的特殊情况
- 若X多值依赖于Y,X多值依赖于Z,则X多值依赖于Y并Z
- 5
- 6
- 多值依赖于函数依赖的区别
- 有效性
- 若函数依赖X–>Y在R(U)上成立,则对于Y是Y的子集,则X–>Y
4NF
- 定义
规范化
- 将低一级范式的关系模式,通过模式分解将其转换为高一级的关系模式范式,这一过程为关系模式的规范化。
规范化的基本思想
- 消除不合适的数据依赖
- 是个关系达到某种程度的分离
- 采用“一事一地”的模式的设计原则
- 概念的单一化
数据库(续):
- 不是越规范约好
- 要符合实际,符合用户需求
- 可在规范化步骤的任意步终止
数据依赖的公理系统
- 如何判断关系的范式
- 找出所有的函数依赖,确定码
- 如何判定关系的码
- 定义6.11
- 定义6.12
逻辑蕴含
Armstrong公理系统
- 直接推理所得
- 自反律
- 增广律
- 传递律
- 间接推理所得
- 合并律
- 分解律
- 伪传递律
- Armstrong公理的有效性和完备性
闭包的计算(重点)
- 只要该属性集的闭包包含关系的所有属性,却该属性集的每个这跟自己的闭包不包含关系的所有属性。那么该属性集就为候选码
函数依赖的等价和覆盖(极小覆盖计算)
模式的分解
- 可有多种分解方式
- 分解是从低等级分解成高等级
关系模式的分解标准
- 分解具有无损连接性
- 分解要保持函数依赖
- 分解既要保持函数依赖,又要具有无损连接性
模式的分解(续)
- 分解后的数据库丢失了许多信息
- 如果能通过自然连接,连接分解后的表,表示原来的信息,那这是没有丢失信息
具有无损连接性的模式分解
小结
- 两种都保证的话,可保证一定达到3NF,但不一定达到BCNF。
- 规范化理论为数据库设计提供了理论的指南和工具
- 也仅仅是指南和工具
- 要考虑用户的需要
数据库——关系数据理论学习笔记相关推荐
- 数据库——关系数据理论
目录 一.问题提出 数据依赖与冗余 二.函数依赖 2.1定义 2.2函数依赖类型
- 【数据库系统设计】关系数据理论(函数依赖、码、范式、模式分解)
关系数据理论 6.1 为什么要学习关系数据理论 什么是好的数据库逻辑设计 什么是数据依赖 关系模式的简化表示 6.2 规范化 - 关系的规范化理论 6.2.1 函数依赖 1.函数依赖 2.平凡函数依赖 ...
- 《R数据科学》学习笔记|Note8:使用dplyr处理关系数据
使用dplyr处理关系数据 往期文章 <R数据科学>学习笔记|Note1:绪论 <R数据科学>学习笔记|Note2:使用ggplot2进行数据可视化(上) <R数据科学& ...
- 【数据库原理及应用】经典题库附答案(14章全)——第五章:关系数据理论
[数据库原理及应用]经典题库附答案(14章全)--第一章:数据库基础知识 [数据库原理及应用]经典题库附答案(14章全)--第二章:关系数据库知识 [数据库原理及应用]经典题库附答案(14章全)--第 ...
- 数据库实验报告 创建学生关系数据表、课程表、选课表 SQL Kingbase
一.实验题目 已有条件:Kingbase数据库软件包. 要求:请安装Kingbase数据库软件,在数据库软件中创建一个自己名字的模式,在该模式下创建学生关系数据表.课程表.选课表. 插入一些数据,尝试 ...
- 当且仅当函数依赖a→b在r上成立_数据库第06章关系数据理习题课.ppt
您所在位置:网站首页 > 海量文档  > 计算机 > 数据结构与算法 数据库第06章关系数据理习题课.ppt36页 本 ...
- 【2 - 数据库是如何存储数据的】Sql Server - 郝斌(字段、记录、表;图形化界面及sql语句建表;六种约束;一对一、一对多、多对多、数据库关系图;主外键)
课程地址:数据库 SQLServer 视频教程全集(99P)| 22 小时从入门到精通_哔哩哔哩_bilibili 目录 数据库是如何解决数据存储问题的 1. 表的相关数据 2. create tab ...
- 【数据库和SQL学习笔记】1.SQL语言的功能和特点,数据定义语言和应用,主键和外键
本专栏是我对数据库系统和SQL语言的学习笔记分享~ 数据库系统软件:SQL Server 2019 Express(免费,初学者使用足够,足够部署小型项目) 操作系统:Windows 10 安装过程略 ...
- 【数据库】关系数据理论习题及解析
一.选择题 1. 为了设计出性能较优的关系模式,必须进行规范化,规范化主要的理论依据是( A) . A. 关系规范化理论 B. 关系代数理论 C.数理逻辑 D. 关系运算理论 2. 规范化理论是关系数 ...
最新文章
- 三流Java搞技术,二流Java搞框架,一流Java…
- 深度学习 vs. 概率图模型 vs. 逻辑学
- Python自动化一--接口测试基础知识,jmeter操作介绍
- Mybatis字段模糊查询
- dubbo 内存溢出怎么处理_关于 Dubbo 的重要入门知识点总结
- 并发编程之 Semaphore 源码分析
- java ==号比较String字符串的地址
- Hadoop 跨集群复制文件
- Ubuntu 发布迁移手册,拉拢 Windows 7 用户
- jmeter压力测试
- 迅雷2019校园招聘 内推码
- 使用微软官方升级工具升级win11的方法
- mySQL基础之常见函数
- 在WordPress中使用旋转文字创建“会话”横幅:第1部分
- 聊聊办公室装修适合哪些风格以及装修技巧
- NV21 to NV12(YUV420SP)
- 软件开发实训(720科技)――第十课 Axure教程
- 山贼集团 (group)
- 咖啡技术培训:9款网红咖啡制作配方合集,简单快速
- 手把手教你创建个人微信公众号
热门文章
- 人工智能感知技术是机器人应用支撑技术之一
- 21个php常用方法汇总
- java 可变 不可变_java中的不可变类型的探究
- mysql数据库创建表时通过设置什么属性可以设置字段编号自动增加_Mysql数据库创建表样例和解释...
- Vue自定义组件封装及使用Excel
- Vue中computed 计算机属性、getter、setter
- vue router-view 匹配路由后,第一次可以点击,再次点击同一个路由无响应,如何处理?
- python困境_学习 Python 编程的三种困境
- Helm 3 完整教程(二十二):如何设置 Chart 安装完成后提示 NOTE 信息
- 2021 年百度之星·程序设计大赛 - 初赛二 1005 水题(贪心结论)