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

news2024/11/17 2:50:12

本专栏收录了数据库的知识点,而从本文起,将讲述有关于关系数据理论中的第一范式、第二范式、第三范式以及BC范式有关知识点,提供给有需要的小伙伴进行学习,本专栏地址可以戳下面链接查看

🎈 数据库知识点总结(持续更新中):【数据库知识点】

🔑 数据库相关练习题(持续更新中):【数据库练习题】

🔥 一个提供给Java学习者的专栏:【拼图小游戏(Java)】

文章目录

  • 一、前言
  • 二、概念
  • 三、1NF
    • 1.概述
    • 2.例题
  • 四、2NF
    • 1.概述
    • 2.不是2NF带来的问题
      • 1️⃣插入异常
      • 2️⃣删除异常
      • 3️⃣数据冗余度大
      • 4️⃣修改复杂
    • 3.分解为2NF的方法
    • 4.分解后的好处
    • 5.分解后残留问题
  • 五、3NF
    • 1.概述
    • 2.不是3NF带来问题
      • 1️⃣插入异常
      • 2️⃣删除异常
      • 3️⃣数据冗余度大
      • 4️⃣修改复杂
    • 3.分解为3NF的方法
    • 4.分解后的好处
  • 六、结语

一、前言

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

二、概念

  • 范式是复合某一种级别的关系模式的集合
  • 关系数据库中的关系必须满足一定要求
  • 范式的种类
    在这里插入图片描述
  • 范式的联系
    在这里插入图片描述

三、1NF

1.概述

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

2.例题

在这里插入图片描述

  • 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
原因:课程号是主属性
在这里插入图片描述

2️⃣删除异常

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

3️⃣数据冗余度大

如果一个学生选修了7门课程,那么他的Sdept和Sloc值就要重复存储了7次
在这里插入图片描述

4️⃣修改复杂

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

3.分解为2NF的方法

在这里插入图片描述

在这里插入图片描述

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是主码,但是主码不能为空
在这里插入图片描述

2️⃣删除异常

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

原因:Sno是主码,把Sno删除以后,整个信息都会被删除在这里插入图片描述

3️⃣数据冗余度大

每一个系的学生都住在同一个地方,关于系的住处的信息却重复出现,重复次数与该系学生人数相同
在这里插入图片描述

4️⃣修改复杂

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

3.分解为3NF的方法

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

  • S-D(Sno, Sdept)

  • D-L(Sdept, Sloc)

  • S-D的码为Sno

  • D-L的码为Sdept
    在这里插入图片描述

4.分解后的好处

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

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

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

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

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

六、结语

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

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

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

相关文章

windows CMD “ZEBAR ZPL 命令打印“驱动打印机

一、命令预览 copy WS20_8891898136BB520221221003.txt "\\10.165.98.33\IP-print-ZDesigner ZT411-203dpi ZPL" 二、难点打印机名称 1. copy 命令必须为共享打印机&#xff0c;及打印机共享名称&#xff0c;可以参考(163条消息) 发送ZPL指令到斑马打印机&#xff…

【Java对象拷贝机制】「实战开发专题」高性能使用CGlib实现Bean拷贝(BeanCopier)指南

对象拷贝现状 业务系统中经常需要两个对象进行属性的拷贝&#xff0c;不能否认逐个的对象拷贝是最快速最安全的做法&#xff0c;但是当数据对象的属性字段数量超过程序员的容忍的程度&#xff0c;代码因此变得臃肿不堪&#xff0c;使用一些方便的对象拷贝工具类将是很好的选择…

训练seq2seq模型的一些Tips——李宏毅机器学习笔记

Copy Mechanism 有时我们并不需要decoder创造一些东西出来&#xff0c;有些内容是可以从encoder复制而来。 最早具有复制能力的模型&#xff1a;Pointer Network 例如&#xff1a; chat-bot Summarization 至少要训练百万篇文章 Guided Attention Monotonic Attention Lo…

PPT怎么转化成PDF?这两种方法教你快速解决!

今天我们将向您介绍如何将 PowerPoint 演示文稿 (PPT) 转换为 PDF 文件。 我们将通过两种方法来做到这一点&#xff1a; 将 PowerPoint 演示文稿另存为 PDF 文件。使用 奇客免费PDF转换 将 PowerPoint 演示文稿转换为 PDF。方法一&#xff1a;使用 Microsoft PowerPoint 将 P…

合理利用chatGpt之新冠阳性

&#x1f3c6;今日学习目标&#xff1a; &#x1f340;合理利用chatGpt之新冠阳性 ✅创作者&#xff1a;林在闪闪发光 ⏰预计时间&#xff1a;30分钟 &#x1f389;个人主页&#xff1a;林在闪闪发光的个人主页 &#x1f341;林在闪闪发光的个人社区&#xff0c;欢迎你的加入:…

AI 预测到了正确的世界杯胜利者吗 ?

在过去的一个月里&#xff0c;卡塔尔 2022 年世界杯让我们目睹了一个又一个令人震惊的结果&#xff0c;甚至在决赛之前&#xff0c;让所有人的目光都聚焦在法国和阿根廷两支球队上&#xff0c;其实在球迷们心中&#xff0c;早就开始了各种猜测。&#x1f604;现在是时候回顾一下…

基于CNN和LSTM的气象图降水预测示例

我们是否可以通过气象图来预测降水量呢&#xff1f;今天我们来使用CNN和LSTM进行一个有趣的实验。 我们这里使用荷兰皇家气象研究所(也称为KNMI)提供的开放数据集和公共api&#xff0c;来获取数据集并且构建模型预测当地的降水量。 数据收集 KNMI提供的数据集&#xff0c;我…

excel函数公式大全,最常用的6个公式

Excel中的函数引用一些预定义的公式&#xff0c;可以通过输入参数值来计算函数的对应函数&#xff0c;并且函数名称基本上与函数相对应&#xff0c;这很容易记住。在日常工作中&#xff0c;功能可用于数据统计、计算、处理和分析。本文主要介绍EXCEL中一些常用公式&#xff0c;…

视唱练耳训练小程序开发,摆脱传统训练制约性

视唱练耳作为一门综合性的音乐基础理论学科&#xff0c;对于声乐、器乐、舞蹈等音乐学科中的各个方面都起着十分重要的作用&#xff0c;尤其是突出表现在基本理论、基本技能和音乐审美上&#xff0c;对培养和发展学生的乐感、唱奏技巧以及音乐思维等都有着非常重要的意义。世界…

Databend 开源周报 #71

Databend 是一款强大的云数仓。专为弹性和高效设计&#xff0c;自由且开源。 即刻体验云服务&#xff1a;https://app.databend.com。 What’s New 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 Features & Improvements Planner 优化集群模…

简单易用的监控告警系统 | HertzBeat 在 Rainbond 上的使用分享

在现有的监控告警体系中 Prometheus AlertManger Grafana 一直是主流&#xff0c;但对于中小团队或个人来说&#xff0c;这种体系显的较为复杂。而 HertzBeat 能让中小团队或个人很快速的搭建监控告警系统&#xff0c;并通过简单的配置实现应用、数据库、操作系统的监控与告警…

k8s HPA升级 KEDA 基于事件驱动的自动伸缩

说明&#xff1a;KEDA有啥用&#xff0c;相对HPA有啥优势。HPA针对于cpu,内存来进行弹性伸缩&#xff0c;有点不太精确。KEDA可以接入prometheus&#xff0c;根据prometheus的数据指标进行弹性伸缩&#xff0c;相比更加的精准实用。 安装k8s环境部署prometheus 创建ns&#xf…

HashMap最全面试题

文章目录一、 存储结构字段结构二、索引计算三、put方法四、扩容机制五、其他一、 存储结构 HashMap的底层数据结构是什么&#xff1f; 在JDK1.7 和JDK1.8 中有所差别&#xff1a; 在JDK1.7 中&#xff0c;由“数组链表”组成&#xff0c;数组是 HashMap 的主体&#xff0c;链…

Django学习Day6

1.ORM故障处理 1)当执行python manager.py makemigrations出现迁移问题时&#xff0c;如何进行解决。 处理方案&#xff1a;在models.py中&#xff0c;为book表的des非空字段设置一个默认值。 2&#xff09;数据库的迁移文件混乱问题 数据库中的django_migrations记录了migra…

健康指标管理系统

开发工具(eclipse/idea/vscode等)&#xff1a; 数据库(sqlite/mysql/sqlserver等)&#xff1a; 功能模块(请用文字描述&#xff0c;至少200字)&#xff1a; 模块划分&#xff1a;公告类型、公告信息、地区信息、用户信息、人员分类、人员信息、指标信息、健康信息 管理员功能&a…

Java+MYSQL基于ssm在线投票管理系统

随着社会的发展,人们在处理一些问题的时候不同意见越来越多,这源于人们对思想的解放和对社会的认识。所以在处理同一问题上,为了征求不同人的意见在线投票系统诞生了。 传统的投票模式都是通过人工手动填写问卷的方式来进行,这在很大程度上会造成人力和资源上的浪费。随着科技的…

擎创技术流 | ClickHouse实用工具—ckman教程(7)

​ ​一期一会的“ckman”教程又跟大家见面了&#xff0c;本期分享的重点主要针对上期后台陆续收到的问题展开&#xff0c;解答完问题后再带入一些关于“ckman”升级的相关讲解。感兴趣的朋友可以先关注一波。还是老规矩&#xff0c;先带大家复习下前几期的分享内容↓↓↓ 擎创…

springboot整合mongodb 保姆级教程

1、确保mongodb是否安装 Linux安装docker 保姆级教程_ 来杯咖啡的博客-CSDN博客&#xff08;可以看这篇文章&#xff09; 2、代码展示 2.1 使用 MongoTemplate 创建boot项目&#xff0c;导入架包。 <?xml version"1.0" encoding"UTF-8"?> <p…

带你深入了解一下vue.js中的this.$nextTick!

我们先看看nextTick究竟是个啥&#xff1f; console.log(this.$nextTick); // 控制台打印 if(fn){return nextTick(fn, this); } 我们可以看出nextTick就是一个方法&#xff0c;方法有两个参数&#xff1a;fn和this&#xff0c;fn就是需要传的回调函数&#xff0c;this就是所…

主轴承盖螺栓拧紧机PLC控制程序

HMI为西门子TP900触摸屏&#xff0c;支持屏幕触摸和按键操作 设备主要参数 设备外形尺寸&#xff1a;长*宽*高 2180*1900*2500mm 生产节拍&#xff1a; 55 S 电源电压&#xff1a; AC380V5%&#xff0c;50HZ&#xff0c;三相五线制 系统组态 常见故障处理 气缸报警 报警原…