设计表时的三大范式(MySQL)

设计表时的三大范式

  • 什么是范式
  • 第一范式
  • 第二范式
    • 不满足第二范式的缺点
      • 数据冗余
      • 插入异常
      • 更新异常
      • 删除异常
  • 第三范式

什么是范式

在表的设计中,范式是一种设计规范,用于更好的组织和管理数据。

设计数据表时的范式有第一范式1NF、第二范式2NF、第三范式3NF等等,一般满足三大范式即可

第一范式

第一范式规定:数据表中的字段不可以再次拆分

只有满足了第一范式,才称得上是关系型数据库,如果在定义表的时候,每一个字段都可以用一个数据类型表示,则天然满足第一范式

在这里插入图片描述
比如如果学校又可以分为 学校名、学校地址、学校电话,那么就不满足第一范式

第二范式

第二范式规定:在满足第一范式的基础上,不存在非关键字段对候选键的部分函数依赖(存在于复合主键的情况)非关键字段可以理解为非主键字段,候选键包含主键、外键,没有主键时的唯一键等等 ,主键只有一个字段时天然满足第二范式

假设创建了以下的数据表,其中学号和课程名为复合主键
在这里插入图片描述
在该表中 姓名和年龄只依赖于学号,学分只依赖于课程名,成绩依赖于学号和课程名整个复合主键

在这种情况下,就不满足第二范式,因为姓名年龄和学分都只依赖于复合主键当中的一部分主键。

不满足第二范式的缺点

数据冗余

不满足第二范式会导致数据重复进行记录,如果学号出现多次,那么依赖学号的姓名和年龄也会重复出现多次,导致数据冗余

插入异常

如果新增加了一节新课,但是可能由于该课还未考试,所以导致新课的数据无法传到数据库里,或者也可以是新增了一名新生,由于没考试,无法直接加到数据库当中

更新异常

如果想要对某个课程的学分或某个学生的年龄进行修改,就需要将所有有关的数据都改一遍,如果不幸发生某些异常,那么就有可能造成只修改了部分数据

删除异常

如果有些同学因毕业需要删除学生数据时,假如某一门课只有这些毕业的同学考试了,就会将课程信息也删除了。


刚才的表我们可以将他拆分成三个表,分别是学生表、课程表、成绩表

在这里插入图片描述

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

数据则可以变成下图

在这里插入图片描述
这样便解决了刚才的缺点

第三范式

第三范式规定:在满足第二范式的情况下,不存在非关键字段,对任意一个候选键的传递依赖

假设有一张数据表如下图所示,其中学号为主键

在这里插入图片描述
学院电话和学院地址依赖于所在学院,所在学院依赖于学号,就形成了传递依赖

所以不满足第三范式,可以进行如下修改

在这里插入图片描述

修改后,便满足了第三范式,第三范式也可以解决 数据冗余、插入异常、删除异常、更新异常的问题


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

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

相关文章

永远学习:为什么人工智能难以适应新挑战

理解深度学习的局限性并追求真正的持续适应 欢迎来到雲闪世界。 “智者适应环境,正如水适应水瓶。”——中国谚语 “适应或灭亡,现在和以往一样,是大自然的必然法则。”——赫伯特乔治威尔斯 近年来,人工智能取得了长足的进步。所…

认知杂谈54

I I 内容摘要: 这篇内容主要有以下几个要点:首先,沟通不在一个调时可学习人际交往心理学知识、线上课程及关注名师来改善。其次,挑房子、工作、搭档和人生伴侣要谨慎,找心灵相通能共同进步的人。再者,远离…

主窗口的设计与开发(二)

主窗口的设计与开发(二) 前言 在上一集当中,我们完成了主窗口的初始化,主窗口包括了左中右三个区域。我们还完成了对左窗口的初始化,左窗口包括了用户头像、会话标签页按钮、好友标签页按钮以及好友申请标签页按钮。对…

【英语】前缀 与 后缀

文章目录 前言一、表示否定二、表示方向1. 表示 "前"2. 表示 "后","回"3. 低,下4. 高,上,超出,向外5. 表示 “内” 总结参考文献 前言 进行英语前后缀的复习 一、表示否定 a-, ab- amo…

机器学习模型中的因果关系:引入单调约束

单调约束是使机器学习模型可行的关键,但它们仍未被广泛使用欢迎来到雲闪世界。 碳ausality 正在迅速成为每个数据科学家工具包中必不可少的组成部分。 这是有充分理由的。 事实上,因果模型在商业中具有很高的价值,因为它们为“假设”情景提…

【详解 Java 注解】

前言: 注解(Annotation)是Java中的一种特殊符号,用来为代码提供额外的信息。它不会改变程序的逻辑,只是用来给编译器或工具提供指示。例如,Override 表示一个方法是重写了父类的方法,Deprecated…

# AI企业是否会被国有化?——基于SB 1047法案的讨论与Anthropic创始人Dario Amodei访谈分析

随着人工智能(AI)技术的快速发展,政府、企业和公众逐渐认识到AI的潜在影响力,尤其是在国家安全、经济竞争力以及社会变革等方面。近日,Anthropic创始人Dario Amodei在一档访谈中深入探讨了AI产业的未来发展&#xff0c…

python 中使用tkinter构建一个图片的剪切器-附源码

由于项目需要,需要构建一个间的软件,方便查看图片的剪切的位置,并对其中的图像进行分析,实现如下的功能 简单的UI加载图片剪切图片显示剪切后的图片 针对图片的内容进行识别 图片质量分析 前端的具体代码如下, 有需…

频谱分析仪和人工电源网络

安泰小课堂里面有详细的频谱分析仪的教程,可以学习: 【快速上手实操秘籍|频谱分析仪超详细基础操作|建议收藏】https://www.bilibili.com/video/BV1Wu4y197LW?vd_source3cc3c07b09206097d0d8b0aefdf07958 、、、、、、、、、、、、、、、、、、、、、…

Java 面试题:通过JProfile排查OOM问题 内存溢出与内存泄漏问题 --xunznux

文章目录 如何通过JProfile排查OOM或内存泄漏问题1、启动工具观测程序执行状态2、使用默认设置采样3、查看memory,Run GC无效4、查看 Live Memory发现两个byte大数组存在5、通过快照查看堆中的内存使用情况6、找到Full GC无法清除的对象通过大对象列表定位内存泄漏问…

Linux-【组管理、权限管理、定时任务调度】

目录 前言 Linux组基本介绍 文件/目录 所有者 查看文件 所有者 修改文件所有者 文件/目录 所在组 修改文件/目录 所在组 其它组 改变用户所在组 权限的基本介绍 rwx权限 rwx作用到文件 rwx作用到目录 修改权限 第一种方式:、-、变更权限 第二种方式…

openwrt的旁路模式无法访问国内网站

防火墙: 常规设置-> 区域: lan-> wan :编辑 IP 动态伪装:勾选

关于 QImage原始数据格式与cv::Mat原始数据进行手码数据转换 的解决方法

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/141996117 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV…

久久公益节||“携手万顺叫车一起做公益”

99公益日是由腾讯公益联合多家公益组织、企业及社会各界爱心人士共同举办的年度大型公益活动。随着99公益日的到来,同悦社工诚挚地邀请了万顺叫车一起参与今年的公益活动,共同为社会公益事业贡献力量。 在本次公益倡导活动中,万顺叫车将发挥其…

无人机飞控之光流知识小结

要完成飞行器的定位,则必须要有位置的反馈数据。在户外,我们一般使用GPS作为位置传感器,然而,在室内,GPS无法使用,要完成定位功能,可以选用光流传感器。 本讲主要介绍如何通过下视摄像头估计飞…

AtCoder ABC 359 F 题解

本题要看出性质并进行验证,程序难度低。(官方 Editorial 似乎没有写证明过程?难道是过于显而易见了吗…) 题意 给你一个数组 a a a,对于一棵 n n n 个节点的树 T T T, d i d_i di​ 为每个节点的度&am…

Gitness 基础安装

文章目录 Docker 安装注册账户创建项目导入已有仓库配置 Github Token同步源代码仓库 官方链接 Gitness was the next step in the evolution of Drone, from continuous integration to source code hosting, bringing code management and pipelines closer together. Gitnes…

八、Maven总结

1.为什么要学习Maven? 2.Maven 也可以配华为云和腾讯云等。 3.IDEA整合Maven 4.IDEA基于Maven进行工程的构建 5.基于Maven进行依赖管理(重点) 6. Maven的依赖传递和依赖冲突 7. Maven工程继承和聚合 8.仓库及查找顺序

解决面板安装Node.js和npm后无法使用的问题

使用面板(BT)安装Node.js和npm后,可能会遇到如下问题:即使成功安装了Node.js和npm,服务器仍提示“未安装”,在命令行中使用 node -v 或 npm -v 也没有任何响应。这种问题通常是由于环境变量配置错误或路径问…

【Hot100】LeetCode—215. 数组中的第K个最大元素

目录 1- 思路快速选择 2- 实现⭐215. 数组中的第K个最大元素——题解思路 3- ACM实现 原题连接:215. 数组中的第K个最大元素 1- 思路 快速选择 第 k 大的元素的数组下标: int target nums.length - k 1- 根据 partition 分割的区间来判断当前处理方式…