MySQL数据库范式
文章目录
- MySQL数据库范式
- 1、范式的优缺点
- 2、第一范式
- 3、第二范式
- 4、第三范式
- 5、BC范式
- 6、第四范式
MySQL数据库范式
1、范式的优缺点
- 应用数据库范式的好处:
- 减少数据冗余(这是最主要的好处,其他好处都是由此而附带的)
- 消除异常(插入异常,更新异常,删除异常)
- 让数据组织的更加和谐
- 范式设计的缺点:
- 范式越高,意味着表越多,多表联合查询的机率就越大,SQL的效率就变低
- 表越多时,在做更新、删除、插入数据时需要维护的表越多,同样会降低数据库的效率
- 因此:
并不是应用的范式越高越好,视实际情况而定。第三范式已经很大程度上减少了数据冗余,并且基本预防了数据插入异常,更新异常,和删除异常了。
2、第一范式
- 第一范式: 每一列保持原子特性
列都是基本数据项,不能够再进行分割,否则设计成一对多的实体关系
注:不符合第一范式不能称作关系型数据库
- 例如:表中的地址字段,可以再细分为省,市,区等不可再分割(即原子特性)的字段
3、第二范式
- 第二范式:属性完全依赖于主键-主要针对联合主键
非主属性完全依赖于主关键字,如果不是完全依赖主键(即不全依赖联合主键中的所有关键字),应该拆分成新的实体,设计成一对多的实体关系
- 例如:选课关系表为SelectCourse(学号, 姓名, 年龄, 课程名称, 成绩, 学分),(学号,课程名称)是联合主键,但是学分字段只和课程名称有关,和学号无关,相当于只依赖联合主键的其中一个字段,不符合第二范式。
4、第三范式
- 第三范式:属性不依赖于其它非主属性
要求一个数据库表中不包含已在其它表中已包含的非主关键字信息
注:一般关系型数据库满足第三范式就可以了
- 示例:学生关系表为Student(学号, 姓名, 年龄, 所在学院, 学院地点, 学院电话),学号是主键,但是学院电话只依赖于所在学院,并不依赖于主键学号,因此该设计不符合第三范式,应该把学院专门设计成一张表,学生表和学院表,两个是一对多的关系。
5、BC范式
- BC范式:每个表中只有一个候选键
BC范式是在第三范式的基础上的一种特殊情况,即每个表中只有一个候选键(在一个数据库中每行的值都不相同,则可称为候选键)
- 示例:每一个员工的email都是唯一的(不可能两个人用同一个email),则此表不符合BC范式,对其进行BC范式化后的关系图为
- 注意:
在要求更好的查询效率时,可以不遵循BC范式(多一个候选键,就多一份表,更多可能需要进行联合查询),候选键储存在主表上也是没有问题的,并不会造成数据的冗余,在一定程度上提高查询效率
6、第四范式
- 第四范式:消除表中的多值依赖(减少维护数据一致性的工作)
比如:noNF表中的skill技能这个字段,有的人是“java,mysql”,有的人描述的是“Java,MySQL”,这样数据就不一致了,解决办法就是将多值属性放入一个新表
样数据就不一致了,解决办法就是将多值属性放入一个新表
[外链图片转存中…(img-n7yeQkem-1680516329350)]
相关文章:

MySQL数据库范式
文章目录MySQL数据库范式1、范式的优缺点2、第一范式3、第二范式4、第三范式5、BC范式6、第四范式MySQL数据库范式 1、范式的优缺点 应用数据库范式的好处: 减少数据冗余(这是最主要的好处,其他好处都是由此而附带的)消除异常&…...
通过多层方法重塑网络安全
多年来,网络安全威胁的复杂性不断增加。此外,随着远程和混合工作场所模式的兴起,网络犯罪分子可以利用的漏洞数量显着增加。由于可能存在的网络威胁的范围如此之广,因此没有一种单一的解决方案可以应对所有威胁。 由于多种原因&a…...
Golang学习+深入(四)-运算符
目录 一、概述 1、算数运算符 2、关系运算符 3、逻辑运算符 4、赋值运算符 5、运算符优先级 6、位运算符 7、其他运算符 二、进制 1、进制转换 1、其他进制转十进制 2、十进制转其他进制 3、二进制转其他进制 4、其他进制转二进制 5、二进制在运算中的说明 三、…...
C++ 运算符重载:C++ 运算符重载的高级技巧和最佳实践
C 运算符重载:深入剖析与实现I. 引言A. 什么是运算符重载B. 为什么要使用运算符重载C. C运算符重载的优缺点II. 运算符重载基本概念A. 运算符重载的定义B. 运算符重载的分类1. 一元运算符2. 二元运算符C. 限制与规范1. 无法重载的运算符2. 重载运算符的规范与建议II…...

软件测试找了2个月了,找不到工作怎么办?
那就问你一些问题,看你能回答多少 1:测试流程是什么?测试用例包含哪些内容?测试用例设计都有哪些?给你一个一次性杯子,你会怎么测试? 2:数据库怎么查看前十行数据?内连接和外连接的区别&#…...
满足高并发的TB API接口接入说明
大家都知道,淘宝的反爬虫机制十分严,而很多时候,没办法高效的拿到数据内容响应终端需求,而依赖爬虫就会造成动不动就出现滑块验证,让人很无解。这里我们分享让采集不再出现任何滑块验证码,完全解密通过&…...

Themis Pro版将正式推出,3次迭代到底在酝酿什么?
最近在社区内讨论火热的Themis Pro,终于要来了!4月2日Themis官网(themis.capital )全新升级改版上线,并宣布Themis Pro 即将于4月下旬正式推出。 Themis Pro 是基于Ve(3,3)模型在FVM公链上搭建的新一代去中…...
边缘检测和轮廓检测
边缘检测 什么是边缘: * 图像中像素值发生剧烈变化的位置(高频信息区域) * 这些区域往往都是图像的边缘 方法:滤波、形态学处理等 边缘的作用 本质上,边缘是不同区域之间的边界。 其中包含了图像的区域信息,形状信息 一方面,可以利用这些信息来作为特征对图像进行理解(甚至…...

二分法模板以及例题 (三)
167. 两数之和 II - 输入有序数组 输入:numbers [2,7,11,15], target 9 输出:[1,2]。 解释:2 与 7 之和等于目标数 9 。因此 index1 1, index2 2 。返回 [1, 2] 解题思路:首先散列表可以直接秒了,双指针也秒了 二分…...

向下转型和向上转型(易理解)
向上转型:父类引用指向子类对象 定义A B C D 四个类,分级继承 对象 a 的编译类型是A,运行类型是B,A是B的父类,父类的引用 a 指向的是B这个子类的对象,因为new的是B这个类,创建的也就是B这个类的…...

华为OD机试用JS实现 -【机智的外卖员】(2023-Q2 押题)
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:机智的外卖员 题目描述: 外…...
同态加密:一个基于多方计算的CKKS方案
这篇文章主要介绍LattiGo团队搞出来的一个多方同态加密的工作。个人觉得比较优雅,而且有库支持,方便把玩,所以记一下。 在攒毕业论文的时候整了这么个看上去很烂,但是(个人觉得)有一点意思的烂活࿰…...

最小生成数
题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。 输入格式 第一行包含两个整数 �,�N,M,表示该图共有 �N 个结点和 �M 条无向边。 接下来 …...

【模板】树状数组
目录: 单点修改,区间查询: 题目描述: lowbit()运算: 插入、修改单点数据: 计算前缀和: 完整代码: 区间修改,单点查询: 计算差分数组: 计算每个点的…...
网站都变成灰色了,怎么实现的?
有些时候我们需要把网站页面变成黑白色或灰色,特别是对于一些需要悼念的日子,以及一些影响力很大的伟人逝世或纪念日的时候,都会让网站的全部网页变成灰色(黑白色),以表示我们对逝者或者英雄的缅怀和悼念。…...

NeRF详解
论文标题:《NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis》 论文地址:https://arxiv.org/abs/2003.08934 推荐代码:https://github.com/yenchenlin/nerf-pytorch 文章目录前言隐式表达NeRF的训练位置编码体渲染&…...

Java之静态代码块和静态类、静态导入
前言 在上一篇文章中给大家讲解了static静态关键字,以及静态变量、静态常量和静态方法等内容。但是关于static,还有其他的一些内容,比如静态类、静态代码块和静态导入等,接下来给大家继续分析讲解。我们一起来看看这些内容都是怎…...

Python3 File isatty() 、os.chflags()方法
Python3 File isatty() 方法Python3 File(文件) 方法概述isatty() 方法检测文件是否连接到一个终端设备,如果是返回 True,否则返回 False。语法isatty() 方法语法如下:fileObject.isatty(); 参数无返回值如果连接到一个终端设备返回 True&…...

【SH_CO_TMT_PACKAGE保留60天数据和增加索引】
1. 保留60天数据 DELETE FROM SH_CO_TMT_PACKAGE WHERE CREATED_ < SYSDATE - 195SH_CO_TMT_PACKAGE 这个表是tmt的数据统计表,数据量极大,大概有1500W 里头的数据都是从TMT机台运行状况表(比如满管率,断丝数,下次落纱时间)同步过来的。 朗通针对这些数据,做了个…...
2022蓝桥杯省赛——数位排序
问题描述 小蓝对一个数的数位之和很感兴趣, 今天他要按照数位之和给数排序。当两个数各个数位之和不同时, 将数位和较小的排在前面, 当数位之和相等时, 将数值小的排在前面。 例如, 2022 排在 409 前面, 因为 2022 的数位之和是 6, 小于 409 的数位之和 13 。 又如, 6 排在 …...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

华为OD机试-食堂供餐-二分法
import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...
Spring Boot+Neo4j知识图谱实战:3步搭建智能关系网络!
一、引言 在数据驱动的背景下,知识图谱凭借其高效的信息组织能力,正逐步成为各行业应用的关键技术。本文聚焦 Spring Boot与Neo4j图数据库的技术结合,探讨知识图谱开发的实现细节,帮助读者掌握该技术栈在实际项目中的落地方法。 …...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

自然语言处理——Transformer
自然语言处理——Transformer 自注意力机制多头注意力机制Transformer 虽然循环神经网络可以对具有序列特性的数据非常有效,它能挖掘数据中的时序信息以及语义信息,但是它有一个很大的缺陷——很难并行化。 我们可以考虑用CNN来替代RNN,但是…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...