数据库系统概论第六章(关系数据理论)知识点总结(1)—— 函数依赖概念总结

简介: 删除异常:如果某个系的学生都毕业了,那么在删除该系学生信息同时,该系及系主任发信息也就不存在了

一、前言


在解决一个具体问题时,要构造一个属于该问题的数据模式,设计一个较好的关系模式,因而我们需要学习关系数据库


二、关系模式存在问题


  • 数据冗余
  • 更新异常
  • 插入异常
  • 删除异常


光讲述这四个问题可能大家没有什么概念,那么通过一个例子带大家浏览一下关系模式存在的问题


U = {Sno,Sdept,Mname,Cno,Grade}
Sno Sdept Mname Cno Grade
S1 计算机系 张教授 C1 95
S1 计算机系 张教授 C1 89
S2 计算机系 张教授 C1 92
S3 计算机系 张教授 C1 78
S3 计算机系 张教授 C1 83


语义如下:


1.一个系有若干学生,但一个学生只属于一个系

2.一个系只有一个正职负责人

3.一个学生可以选多门课,每门课有若干学生选修

4.每个学生学习每门课有一个成绩


关系模式存在的问题


1.数据冗余:系主任的名字重复出现

2.更新异常:由于数据冗余,所以一旦更换系主任后,就要修改与这个系有关的学生的每个元组

3.插入异常:如果有一个刚成立的系,但是没有学生,就没办法将系相关信息存入数据库

4.删除异常:如果某个系的学生都毕业了,那么在删除该系学生信息同时,该系及系主任发信息也就不存在了


三、函数依赖


1.引入


属性组U上的一组函数依赖F如下


F ={Sno→Sdept, Sdept→Mname, (Sno, Cno)→Grade}

30dbb243f0ec467fb590c038072b402e.png


2.定义


  • 设R(U)是一个属性集U上的关系模式,X和Y是U的子集
  • 若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数确定Y或Y函数依赖于X,记作x➡y
  • X称为决定因素,Y称为依赖因素
  • 函数依赖是语义范畴的概念
  • 只能根据数据的语义来确定函数依赖


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


  • X→Y,Y⊈X,则称X→Y是非平凡的函数依赖
  • X→Y,Y⊆X ,则称X→Y是平凡的函数依赖
  • 若不特别声明,我们一般讨论非平凡函数依赖


例如:

在关系SC(Sno, Cno, Grade)中

非平凡函数依赖: (Sno, Cno) → Grade

平凡函数依赖: (Sno, Cno) → Sno,(Sno, Cno) → Cno

因为Sno包含于(Sno, Cno) 中,Cno包含于(Sno, Cno) 中


4.完全函数依赖和部分函数依赖


ce2cec78a7c3463194f4d09b4d582041.png

30dbb243f0ec467fb590c038072b402e.png


  • Sno、Cno无法单独与Grade形成依赖关系,但是(Sno、Cno)与Grade可以形成函数依赖的关系,那么(Sno、Cno)与Grade存在 完全函数依赖(F) 关系
  • Sno、Cno中的Sno可以单独与Sdept形成依赖关系,并且(Sno、Cno)与Grade不能形成函数依赖的关系,那么(Sno、Cno)与Grade存在 部分函数依赖(P) 关系


5.传递函数依赖


cb1732ffc07948ec9930754c348de5e8.png

68711e06e67845a4baddb70c4ad584f6.png


目录
打赏
0
0
0
0
1
分享
相关文章
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
有哪些方法可以验证用户输入数据的格式是否符合数据库的要求?
133 75
flink 向doris 数据库写入数据时出现背压如何排查?
本文介绍了如何确定和解决Flink任务向Doris数据库写入数据时遇到的背压问题。首先通过Flink Web UI和性能指标监控识别背压,然后从Doris数据库性能、网络连接稳定性、Flink任务数据处理逻辑及资源配置等方面排查原因,并通过分析相关日志进一步定位问题。
270 61
|
2月前
|
从建模到运维:联犀如何完美融入时序数据库 TDengine 实现物联网数据流畅管理
本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品。文章从一个具体的业务场景出发,分析了企业在面对海量时序数据时的挑战,并提出了利用 TDengine 高效处理和存储数据的方法,帮助企业解决在数据采集、存储、分析等方面的痛点。通过这篇文章,作者不仅展示了自己对数据处理技术的理解,还进一步阐释了时序数据库在行业中的潜力与应用价值,为读者提供了很多实际的操作思路和技术选型的参考。
52 1
招行面试:100万级别数据的Excel,如何秒级导入到数据库?
本文由40岁老架构师尼恩撰写,分享了应对招商银行Java后端面试绝命12题的经验。文章详细介绍了如何通过系统化准备,在面试中展示强大的技术实力。针对百万级数据的Excel导入难题,尼恩推荐使用阿里巴巴开源的EasyExcel框架,并结合高性能分片读取、Disruptor队列缓冲和高并发批量写入的架构方案,实现高效的数据处理。此外,文章还提供了完整的代码示例和配置说明,帮助读者快速掌握相关技能。建议读者参考《尼恩Java面试宝典PDF》进行系统化刷题,提升面试竞争力。关注公众号【技术自由圈】可获取更多技术资源和指导。
获取数据库中字段的数据作为下拉框选项
获取数据库中字段的数据作为下拉框选项
63 5
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
73 42

热门文章

最新文章

AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等