数据库系统概论第六章(关系数据理论)知识点总结(3)—— 范式知识点总结

简介: 假定2014104学生只选修了3号课程这一门课,现在因身体不适,不选修3号课程了,要将课程号删除,但同时,由于课程号是主属性,此操作将导致该整个元组的删除。这样,2014104学生信息都被删除了

一、前言


在讲完了码的概念后,本文将讲述范式有关概念(第一、第二、第三和BC范式)


二、概念


  • 范式是复合某一种级别的关系模式的集合
  • 关系数据库中的关系必须满足一定要求
  • 范式的种类


4ffd2dbafa1340bfa0cbc8e6fa740c0c.png


  • 范式的联系


8c4a6481a8a54e60acf98f7ae36efbc9.png


三、1NF


1.概述


  • 一个关系模式R的所有属性都是不可分的基本数据项
  • 第一范式是关系模式最起码的要求
  • 不满足第一范式的数据库模式不是关系数据模式


2.例题


2fb9a5c4c27840f88e8623d12835cfb4.png


  • S-L-C满足第一范式
  • 主属性:Sno, Cno
  • 非主属性:Grade ,Sdept和Sloc
  • 非主属性 Sdept 和 Sloc 部分函数依赖于码(Sno, Cno)


四、2NF


1.概述


  • 若关系模式R∈1NF,并且每一个非主属性都完全函数依赖于R的码,则 R∈2NF
  • 简洁来说,就是图中的箭头不要从框内指向框外


2.不是2NF带来的问题


1️⃣插入异常


假设Sno=2014102,Sdept=CS,Sloc=N的学生还未选课,那么该学生的信息无法插入SLC

原因:课程号是主属性


95e0565db1ec431aa1f94e21f43797ae.png


2️⃣删除异常


假定2014104学生只选修了3号课程这一门课,现在因身体不适,不选修3号课程了,要将课程号删除,但同时,由于课程号是主属性,此操作将导致该整个元组的删除。这样,2014104学生信息都被删除了


9cdf616d6d5c46c9ac2c8115b304d817.png


3️⃣数据冗余度大


如果一个学生选修了7门课程,那么他的Sdept和Sloc值就要重复存储了7次


5943ac0405714d30bd73dc9f3e8fe0ff.png


4️⃣修改复杂


例如某个学生要转系。在修改此学生元组的Sdept值的同时,还可能需要修改住处(Sloc)。如果这个学生选修了K门课,则必须无遗漏地修改K个元组中全部Sdept、Sloc信息


efe79fd06cc2454aaea6d84f3b7ca6aa.png


3.分解为2NF的方法


e89411219d084843af550ca0b2b7c9b4.png

e0b694dc9ecb4f3fb10f609cf8c22f62.png



4.分解后的好处


  • 由于学生选修课程的情况与学生的基本情况是分开存储在两个关系中的,在S-L关系中可以插入尚未选课的学生


  • 删除一个学生的所有选课记录,只是SC关系中没有关于该学生的记录了,S-L关系中关于该学生的记录不受影响


  • 不论一个学生选多少门课程,他的Sdept和Sloc值都只存储1次。这就大大降低了数据冗余


  • 学生转系只需修改S-L关系中该学生元组的Sdept值和Sloc值,由于 Sdept、Sloc并未重复存储,因此减化了修改操作


5.分解后残留问题


  • 还不能完全消除关系模式中的各种异常情况和数据冗余


  • Sloc传递函数依赖于Sno,即S-L中存在非主属性对码的传递函数依赖


  • S-L关系存在插入异常、删除异常、数据冗余度大、修改复杂


五、3NF


1.概述


关系模式R<U,F> ∈1NF,若R中不存在这样的码X、属性组Y及非主属性Z(Y ⊉ Z),使得X→Y,Y→Z,Y↛X,成立,则称R<U,F> ∈ 3NF


2.不是3NF带来问题


1️⃣插入异常


如果某个系因种种原因(例如刚刚成立),目前暂时没有在校学生我们就无法把这个系的信息存入数据库


原因:Sno是主码,但是主码不能为空


6a0533f204c549eb9d5c0b087526323d.png


2️⃣删除异常


如果某个系(如CS)的学生全部毕业了,我们在删除该系学生信息的同时,把这个系的信息也丢掉了


原因:Sno是主码,把Sno删除以后,整个信息都会被删除


e4fafcc2c3c34369bcb1b9c2984dff27.png


3️⃣数据冗余度大


每一个系的学生都住在同一个地方,关于系的住处的信息却重复出现,重复次数与该系学生人数相同


0b9dae0275284dd1a96b2cf006bbadcc.png


4️⃣修改复杂


学校调整学生住处时,由于关于每个系的住处信息是重复存储的, 修改时必须同时更新该系所有学生的Sloc属性值


7e2a4c5844d9426e9c061e9344eaf152.png


3.分解为3NF的方法


采用投影分解法,把S-L分解为两个关系模式,以消除传递函数依赖:


  • S-D(Sno, Sdept)


  • D-L(Sdept, Sloc)


  • S-D的码为Sno


  • D-L的码为Sdept

72fb2e404e43417fb8da168ff0399c71.png


4.分解后的好处


  • 在分解后的关系模式中既没有非主属性对码的部分函数依赖,也没有非主属性对码的传递函数依赖,进一步解决了上述四个问题


  • D-L关系中可以插入系的信息,即使还没有在校学生


  • 某个系的学生全部毕业了,只是删除S-D关系中的相应元组,D-L关系中关于该系的信息仍存在


  • 关于系的住处的信息只在D-L关系中存储一次


  • 当学校调整某个系的学生住处时,只需修改D-L关系中一个元组的Sloc属性值。


六、结语


BC范式比较复杂,只需要知道概念即可,具体会在下一篇文章中讲述

相关文章
|
2月前
|
存储 人工智能 Cloud Native
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
在9月20日2024云栖大会上,阿里云智能集团副总裁,数据库产品事业部负责人,ACM、CCF、IEEE会士(Fellow)李飞飞发表《从数据到智能:Data+AI驱动的云原生数据库》主题演讲。他表示,数据是生成式AI的核心资产,大模型时代的数据管理系统需具备多模处理和实时分析能力。阿里云瑶池将数据+AI全面融合,构建一站式多模数据管理平台,以数据驱动决策与创新,为用户提供像“搭积木”一样易用、好用、高可用的使用体验。
云栖重磅|从数据到智能:Data+AI驱动的云原生数据库
|
2月前
|
存储 监控 数据处理
flink 向doris 数据库写入数据时出现背压如何排查?
本文介绍了如何确定和解决Flink任务向Doris数据库写入数据时遇到的背压问题。首先通过Flink Web UI和性能指标监控识别背压,然后从Doris数据库性能、网络连接稳定性、Flink任务数据处理逻辑及资源配置等方面排查原因,并通过分析相关日志进一步定位问题。
189 61
|
3天前
|
SQL 存储 运维
从建模到运维:联犀如何完美融入时序数据库 TDengine 实现物联网数据流畅管理
本篇文章是“2024,我想和 TDengine 谈谈”征文活动的三等奖作品。文章从一个具体的业务场景出发,分析了企业在面对海量时序数据时的挑战,并提出了利用 TDengine 高效处理和存储数据的方法,帮助企业解决在数据采集、存储、分析等方面的痛点。通过这篇文章,作者不仅展示了自己对数据处理技术的理解,还进一步阐释了时序数据库在行业中的潜力与应用价值,为读者提供了很多实际的操作思路和技术选型的参考。
16 1
|
7天前
|
存储 Java easyexcel
招行面试:100万级别数据的Excel,如何秒级导入到数据库?
本文由40岁老架构师尼恩撰写,分享了应对招商银行Java后端面试绝命12题的经验。文章详细介绍了如何通过系统化准备,在面试中展示强大的技术实力。针对百万级数据的Excel导入难题,尼恩推荐使用阿里巴巴开源的EasyExcel框架,并结合高性能分片读取、Disruptor队列缓冲和高并发批量写入的架构方案,实现高效的数据处理。此外,文章还提供了完整的代码示例和配置说明,帮助读者快速掌握相关技能。建议读者参考《尼恩Java面试宝典PDF》进行系统化刷题,提升面试竞争力。关注公众号【技术自由圈】可获取更多技术资源和指导。
|
10天前
|
前端开发 JavaScript 数据库
获取数据库中字段的数据作为下拉框选项
获取数据库中字段的数据作为下拉框选项
39 5
|
2月前
|
SQL 关系型数据库 数据库
国产数据实战之docker部署MyWebSQL数据库管理工具
【10月更文挑战第23天】国产数据实战之docker部署MyWebSQL数据库管理工具
166 4
国产数据实战之docker部署MyWebSQL数据库管理工具
|
2月前
|
关系型数据库 MySQL 数据库
GBase 数据库如何像MYSQL一样存放多行数据
GBase 数据库如何像MYSQL一样存放多行数据
|
2月前
|
关系型数据库 分布式数据库 数据库
云栖大会|从数据到决策:AI时代数据库如何实现高效数据管理?
在2024云栖大会「海量数据的高效存储与管理」专场,阿里云瑶池讲师团携手AMD、FunPlus、太美医疗科技、中石化、平安科技以及小赢科技、迅雷集团的资深技术专家深入分享了阿里云在OLTP方向的最新技术进展和行业最佳实践。
|
3月前
|
人工智能 Cloud Native 容灾
云数据库“再进化”,OB Cloud如何打造云时代的数据底座?
云数据库“再进化”,OB Cloud如何打造云时代的数据底座?
|
3月前
|
SQL 存储 关系型数据库
数据储存数据库管理系统(DBMS)
【10月更文挑战第11天】
189 3