mysql范式

article/2025/9/18 17:03:48

MySQL 三大范式

为什么需要数据规范化?

信息重复
更新异常
插入异常
无法正常显示信息
删除异常
丢失有效的信息

设计关系型数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。

目前关系型数据库有六种范式:
  第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。一般来说,数据库只需要满足第三范式就行了。

第一范式:保证每列的原子性

第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。第一范式的合理遵循需要根据系统的实际需求来定。比如下面的表中“用户信息”这一字段就可拆分为,姓名,电话,这样设计才算满足了数据库的第一范式

第二范式:确保表中的每列都和主键相关

第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

看不懂是吗,没关系,我也看不懂,下面举一个例子,有一张表如下图:
在这里插入图片描述
上表满足第一范式,即每个字段不可再分,但是这张表设计得并不好,或者说,这张表的设计并不满足第二范式。因为这张表里面描述了两件事情:学生信息、课程信息,“学分"完全依赖于"课程名称”、“姓名"与"年龄"完全依赖于"学号”。这么做的后果是:

1、数据冗余:同一门课程由n个学生选修,"学分"重复n-1次;同一个学生选修了m门课程,姓名和年龄重复m-1次

2、更新异常:若调整了某门课程的学分,数据表中所有行的"学分"值都需要更新,否则会出现同一门课程学分不同的情况

3、插入异常:假设要开一门新课程,暂时没有人选修,那么由于没有"学号"关键字,"课程"与"学分"也无法记录入数据库

4、删除异常:假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,"课程"和"学分"也被删除了,显然,这最终可能会导致插入异常

所以,此表的结构必须修改,修改后如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
增加了表,将学生信息与课程信息通过一张中间表关联,很好地解决了上面的几个问题,这就是第二范式的中心----保证一张表只讲一件事情。

第三范式:保证每列都和主键直接相关

满足第三范式,必须先满足第二范式。简而言之,第三范式要求一个数据库表中不包含已在其它表中已包含的非主键字段。就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放(能尽量外键join就用外键join)。

即满足第二范式前提,如果某一属性依赖于其他非主键属性,而其他非主键属性又依赖于主键,那么这个属性就是间接依赖于主键,这被称作传递依赖于主属性。 所谓传递函数依赖指的是如果存在"A–>B–>C"的决定关系,则C传递函数依赖于A。也就是说表中的字段和主键直接对应不依靠其他中间字段,说白了就是,决定某字段值的必须是主键。

比如一个数据库表结构中有字段:“学号,姓名,年龄,学院,学院电话,学院地点” 。

可以看出,“姓名”、“年龄”、“学院"和主键"学号"直接关联,但是"学院地点”、“学院电话"却不直接和主键"学号"相关联,和"学院电话"直接相关联的是"学院”,如果表结构这么设计,同样会造成和第二范式一样的数据冗余、更新异常、插入异常、删除异常的问题。

我们应该修改为:学院表:“学院,学院地点,学院电话”

学生表:“学号,姓名,年龄,学院”

通过学院作为外键关联两个表。


http://chatgpt.dhexx.cn/article/ho6uVNCX.shtml

相关文章

BNF范式(巴科斯范式)

BNF范式&#xff08;巴科斯范式&#xff09; 是一种用递归的思想来表述计算机语言符号集的定义规范。 基本结构&#xff1a; <non-terminal> :: <replacement> non-terminal意为非终止符&#xff0c;就是说我们还没有定义完的东西&#xff0c;还可以继续由右边的r…

第一、二、三范式的简单理解

范式 范式&#xff1a; 范式是符合某一种级别的关系模式的集合&#xff0c;表示一个关系内部属性之间的联系何合理化程度 粗略理解&#xff1a; 就是一张数据表的表结构所符合的某种设计标准的级别 数据库范式分为: 第一范式(1NF),第二范式(2NF),第三范式(3NF),BCNF(巴斯范式/鲍…

什么是范式?

原创不易,麻烦点个关注,点个赞,谢谢各位。 范式是符合某一种级别的关系模式的集合。 关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式。 范式的种类: 第一范式(1NF) 第二范式(2NF) 第三范式(3NF) BC范式(BCNF) 第四范式(4NF) 第五范式(5NF) 1NF的定义…

范式及反范式

** 什么是范式&#xff1f; ** 范式来自英文Normal Form&#xff0c;简称NF。MySQL是关系型数据库&#xff0c;但是要想设计—个好的关 系&#xff0c;必须使关系满足一定的约束条件&#xff0c;此约束已经形成了规范&#xff0c;分成几个等级&#xff0c;一级比 一级要求得…

数字签名算法

数字签名算法主要包含RSA、DSA、ECDSA三种算法 1. 它的消息传递操作是&#xff1a; 由消息发送方构建密匙对&#xff0c;由消息发送的一方公布公钥至消息接收方&#xff0c;消息发送方对消息用私钥做签名处理消息接收方用公钥对消息做验证 2. RSA签名算法主要分为MD系列和SH…

数字签名的应用实例

一 安全信息公告 一些信息安全方面的组织会在其网站上发布一些关于安全漏洞的警告&#xff0c;那么这些警告信息是否真的是该组织发布的呢&#xff1f;我们如何确认发布这些信息的网站没有被第三方篡改呢&#xff1f; 在这样的情况下&#xff0c;就可以使用数字签名&#xff…

openssl数字签名

实验步骤 1. 创建明文文档plain.txt&#xff0c;写入内容。 2. &#xff08;打开bin目录下的exe文件运行&#xff09;计算plain.txt的哈希值&#xff0c;输出到文件digest.txt。 注意这个地方是sha1 是数字1而不是字母L 3. 利用RSA算法对摘要进行签名。 &#xff08;1&#…

RSA数字签名

目录 利用RSA-Tool加密消息利用RSA算法实现对称密钥的安全分配利用RSA算法生成数字签名 利用RSA-Tool加密消息 1&#xff0e;运行RSA-Tool&#xff0c;点击Start按钮&#xff0c;滑动鼠标生成一个随机数。点击Generate生成一对大质数p、q及Npq。 2&#xff0e;自己选定一个可…

密码技术-数字签名

一、数字签名 用私钥生成数字签名&#xff0c;用公钥验证签名 数字签名的方法 ① 直接对消息签名&#xff08;很少用这个&#xff09; &#xff08;1&#xff09;Alice 用自己的私钥对消息进行加密 &#xff08;2&#xff09;Alice 将消息和签名发送给 Bob &#xff08;3&…

总结数字签名实现身份验证

消息篡改和不可抵赖性 TCP协议确保数据能够正确发送到通信双方&#xff0c;加上数据加密算法保证数据安全传输&#xff0c;但是在HTTP应用中通信双方通常不清楚发送方的身份&#xff0c;尤其在客户端服务器通信下&#xff0c;通常一个服务器会处理多个客户端连接&#xff0c;结…

rsa签名算法c语言,数字签名算法rsa

数字签名算法消息传递模型 由消息发送方构建密钥对,这里由甲方完成。 由消息发送方公布公钥至消息接收方,这里由甲方将公钥公布给乙方。 注意如加密算法区别,这里甲方使用私钥对数据签名,数据与签名形成一则消息发送给乙方,私钥仅用于签名,公钥仅用于验证。 RSA RSA数字签…

数字签名原理简述

本文结合下面两个问题来讲解数字签名的基本原理。结合图片希望能给大家一个清晰简单明了的分析和讲解。 1. 问题描述: (1)用户A向远方的用户B发送一个消息,用户B如何确认所收到的消息在传输的过程中没被篡改过? (2)用户B收到了消息之后,如何防止A随之否认这个消息是…

密码学系列之七:数字签名

数字签名 1. 概述1.1 基本概念1.2 签名原理1.2.1 形式化定义1.2.2 签名过程 2 基于RSA的签名方案2.1 实现过程2.2 安全性分析 3 基于离散对数的签名方案3.1 ElGamal签名体制3.1.1 实现过程3.1.2 安全性分析 3.2 Schnorr签名体制3.2.1 实现过程3.2.2 安全性分析 3.3 DSA签名体制…

数字签名算法类别及用途

0x01 数字签名算法的类别 数字签名&#xff08;digital signature&#xff09;是一种电子签名&#xff0c;也可以表示为一种数学算法&#xff0c;通常用于验证消息&#xff08;例如&#xff0c;电子邮件、信用卡交易或数字文档&#xff09;的真实性和完整性。 在“数字签名论述…

数字签名-原理

数字签名 1. 从消息认证到数字签名1.1. 消息认证码的局限性1.2. 通过数字签名解决问题 2. 签名的生成和验证3. 数字签名的方法3.1 签名步骤3.2 过程图解 4. 数字签名无法解决的问题 “数字签名 — 消息到底是谁写的” 数字签名是一种将相当于现实世界中的盖章、签字的功能在计算…

什么是数字签名?

数字签名 数字签名 数字签名一、介绍二、功能三、流程四、数字证书 一、介绍 数字签名&#xff08;又称公钥数字签名&#xff09;是只有信息的发送者才能产生的别人无法伪造的一段数字串&#xff0c;这段数字串同时也是对信息的发送者发送信息真实性的一个有效证明。数字签名通…

一文彻底搞懂加密、数字签名和数字证书,看不懂你打我!

前言 这本是 2020 年一个平平无奇的周末&#xff0c;小北在家里刷着 B 站&#xff0c;看着喜欢的 up 主视频。 在一旁玩手机的女朋友突然问”你知道数字证书是来干啥的不&#xff0c;为啥浏览器提示证书不可信&#xff1f;” 你要说这个&#xff0c;那我可来劲了&#xff0c…

cisco 路由器 无线配置

配置环境&#xff1a;Cisco Packet Tracer 6.0 AP设备型号&#xff1a;1841 PC设备&#xff1a;Linksys-WPC300N模块的虚拟pc 第一步&#xff1a;配置接口ip R3(config)#interface Dot11Radio0/1/0 R3(config-if)#ip address 172.16.10.1 255.255.255.0 第二步&#xff1a;配置…

实验一 CISCO路由器的基本配置

要求: 1. 初始化配置&#xff1b; 2. 设置接口IP地址&#xff1b; &#xff08; F0/0 S1/0 &#xff09; 3. 测试&#xff1b; ( ping 、 telnet ) 4. 设置密码&#xff1b; &#xff08; console口、VTY接口和特权 &#xff09; 5. 查看。 &…

CISCO路由器基础配置和静态路由配置

学习Cisco的基础网络配置下载可以用Cisco公司开发的模拟器&#xff1a;Cisco packet tracer。本文的配置也都是用此模拟器配置的。 路由器 路由器的功能主要有以下几点&#xff1a; 1.实现网络互连&#xff0c;路由器支持各种局域网和广域网接口&#xff0c;主要用于互连局域…