MySQL之数据库三大范式
一、什么是范式?
范式是数据库遵循设计时遵循的一种规范,不同的规范要求遵循不同的范式。
(范式是具有最小冗余的表结构)
数据库有六种范式(1NF/2NF/3NF/BCNF/4NF/5NF)
标题为什么是三大范式呢??
首先我们最常用的就是第一范式、第二范式、第三范式
并且数据库设计时只需遵循这三个范式即可。
二、 三大范式
第一范式(1NF)
-列都是不可再分第一范式的目标是确保每列的原子性:如果每列都是不可再分 的最小数据单元(也称为最小的原子单元),则满足第一范式(1NF)
第二范式(2NF)
-每个表只描述一件事情
首先满足第一范式,并且表中非主键列不存在对主键的部分依赖第二范式要求每个表只描述一件事情
第三范式(3NF)
- 不存在对非主键列的传递依赖
第三范式定义是,满足第二范式,并且表中的列不存在对非主键列的传递依赖。也就是(要求每一列数据都和主键直接相关而不能间接相关)优点:
- 减少数据冗余:避免相同数据在多个地方重复存储,减少存储空间需求。
- 确保数据一致性:通过消除传递依赖,减少因数据更新不一致导致的错误。
- 简化数据管理:使数据库结构更清晰,便于维护和扩展。
primary key(id)
| id | name | sex_code | sex_desc | phone | address |
|---|---|---|---|---|---|
| 001 | 张三 | 0 | 男 | 17835201234 | 山西省运城市xx村 |
| 002 | 李四 | 0 | 男 | 17735204567 | 山西省吕梁市yy村 |
| 003 | 王五 | 1 | 女 | 18835207890 | 山西省太原市zz村 |
表中sex_desc依赖于sex_code,而sex_code依赖于id(主键),从而推出sex_desc依赖于id(主键);sex_desc不直接依赖于主键,而是通过依赖于非主键列而依赖于主键,属于传递依赖,不符合3NF。
修改表使满足3NF后:
学生表(student) primary key(id)
| id | name | sex_code | phone | address |
|---|---|---|---|---|
| 001 | 张三 | 0 | 17835201234 | 山西省运城市xx村 |
| 002 | 李四 | 0 | 17735204567 | 山西省吕梁市yy村 |
| 003 | 王五 | 1 | 18835207890 | 山西省太原市zz村 |
性别代码表(sexcode) primary key(sex_code)
| sex_code | sex_desc |
|---|---|
| 0 | 男 |
| 1 | 女 |
将原来的student表进行拆分后,两个表都满足3NF
三、三大范式的缺点
数据冗余消除过度:三大范式的设计原则是尽量消除数据冗余,使每个数据项只在数据库中存储一次。然而,过度消除冗余可能导致数据库的关系复杂化,增加了查询和维护的复杂性。有时候,在某些情况下,一些冗余数据可能会提高查询性能或简化数据处理逻辑,但三大范式的设计原则不允许这种冗余存在。
查询性能受影响:三大范式的设计原则使得数据库中的数据被分解为多个关系表,这样在进行复杂查询时需要进行多个表的连接操作。这样的查询操作可能会增加数据库的负载,导致查询性能下降。尤其是在大型数据库中,复杂的查询可能需要花费大量的时间来执行。
数据更新复杂:三大范式的设计原则使得数据库中的数据被分解为多个关系表,这样在进行数据的插入、更新和删除操作时需要同时更新多个表。这样的操作可能会增加数据更新的复杂性,容易出现数据不一致的问题。同时,由于多表更新的复杂性,可能需要使用事务来保证数据的一致性,进一步增加了数据库的负载和复杂性。
数据完整性限制:三大范式的设计原则强调数据的一致性和完整性,要求每个关系表中的数据项必须符合某种规范或约束条件。这些约束条件可能会限制某些特殊情况下的数据录入,使得数据库的灵活性受到了一定的限制。有时候,为了满足特定的需求,可能需要违反某些范式的设计原则。
难以理解和维护:三大范式的设计原则使得数据库中的数据被分解为多个关系表,这样数据库的结构变得更加复杂。这对于数据库管理员和开发人员来说可能会增加理解和维护的难度。尤其是在数据库规模较大、关系较复杂的情况下,可能需要更多的时间和精力来理解和维护数据库的结构。
相关文章:
MySQL之数据库三大范式
一、什么是范式? 范式是数据库遵循设计时遵循的一种规范,不同的规范要求遵循不同的范式。 (范式是具有最小冗余的表结构) 范式可以 提高数据的一致性和 减少数据冗余和 更新异常的问题 数据库有六种范式(1NF/2NF/3NF…...
[大数据]Hudi
G:\Bigdata\17.hudi\大数据技术之数据湖Hudi 第1章 Hudi概述 1.1 Hudi简介 Apache Hudi(Hadoop Upserts Delete and Incremental)是下一代流数据湖平台。Apache Hudi将核心仓库和数据库功能直接引入数据湖。Hudi提供了表、事务、高效的upserts/delete、高级索引、流摄取服…...
jenkins harbor安装
Harbor是一个企业级Docker镜像仓库。 文章目录 1. 什么是Docker私有仓库2. Docker有哪些私有仓库3. Harbor简介4. Harbor安装 1. 什么是Docker私有仓库 Docker私有仓库是用于存储和管理Docker镜像的私有存储库。Docker默认会有一个公共的仓库Docker Hub,而与Dock…...
JavaScript 高级特性与 ES6 新特性:正则表达式的深度探索
在现代 JavaScript 开发中,正则表达式(Regular Expressions)和高级特性、ES6 新特性的结合使用,能够极大地提升代码的简洁性、可读性和功能性。本文将深入探讨 JavaScript 中的正则表达式及其在高级特性和 ES6 新特性中的应用&…...
正则表达式——参考视频B站《奇乐编程学院》
智能指针 一、背景🎈1.1. 模式匹配🎈1.2. 文本替换🎈1.3. 数据验证🎈1.4. 信息提取🎈1.5. 拆分字符串🎈1.6. 高级搜索功能 二、原料2.1 参考视频2.2 验证网址 三、用法3.1 限定符3.1.1 ?3.1.2 *3.1.3 3.1.…...
【FFmpeg】FFmpeg 内存结构 ⑥ ( 搭建开发环境 | AVPacket 创建与释放代码分析 | AVPacket 内存使用注意事项 )
文章目录 一、搭建开发环境1、开发环境搭建参考2、项目搭建 二、AVPacket 创建与释放代码分析1、AVPacket 创建与释放代码2、Qt 单步调试方法3、单步调试 - 分析 AVPacket 创建与销毁代码 三、AVPacket 内存使用注意事项1、谨慎使用 av_init_packet 函数2、av_init_packet 函数…...
【多模态文档智能】OCR-free感知多模态大模型技术链路及训练数据细节
目前的一些多模态大模型的工作倾向于使用MLLM进行推理任务,然而,纯OCR任务偏向于模型的感知能力,对于文档场景,由于文字密度较高,现有方法往往通过增加图像token的数量来提升性能。这种策略在增加新的语言时࿰…...
Mybatis动态sql执行过程
动态SQL的执行原理主要涉及到在运行时根据条件动态地生成SQL语句,然后将其发送给数据库执行。以下是动态SQL执行原理的详细解释: 一、接收参数 动态SQL首先会根据用户的输入或系统的条件接收参数。这些参数可以是查询条件、更新数据等,它们…...
leetcode 31 Next Permutation
题意 找到下一个permutation是什么,对于一个数组[1,2,3],下一个排列就是[1, 3, 2] 链接 https://leetcode.com/problems/next-permutation/ 思考 首先任何一个permutation满足一个性质,从某个位置往后一定是降序。…...
每日一练 | 华为 eSight 创建的缺省角色
01 真题题目 下列选项中,不属于华为 eSight 创建的缺省角色的是: A. Administrator B. Monitor C. Operator D. End-User 02 真题答案 D 03 答案解析 华为 eSight 是一款综合性的网络管理平台,提供了多种管理和监控功能。 为了确保不同用…...
PyTorch基本使用-自动微分模块
学习目的:掌握自动微分模块的使用 训练神经网络时,最常用的算法就是反向传播。在该算法中,参数(模型权重)会根据损失函数关于对应参数的梯度进行调整。为了计算这些梯度,PyTorch 内置了名为 torch.autogra…...
libevent-Reactor设计模式【1】
一、Libevent概述 1、简介 Libevent 是一个用C语言编写的、轻量级的开源高性能事件通知库,主要有以下几个亮点:事件驱动( event-driven),高性能;轻量级,专注于网络,不如 ACE 那么臃肿庞大&#…...
奇奇怪怪的错误-Tag和space不兼容
报错信息如下: TabError: inconsistent use of tabs and spaces in indentation make: *** [Makefile:24: train] Error 1不能按Tab,要老老实实按space 不过可以在编辑器里面改,把它们调整成一致的;...
29.攻防世界ics-06
ics-06 难度:1 方向:Web 题目描述: 云平台报表中心收集了设备管理基础服务的数据,但是数据被删除了,只有一处留下了入侵者的痕迹。 进入靶场 发现有一处能点动 多了个id1 我其实尝试改过id数,不过没什么变化…...
强化学习路径规划:基于SARSA算法的移动机器人路径规划,可以更改地图大小及起始点,可以自定义障碍物,MATLAB代码
一、SARSA算法概述 SARSA(State-Action-Reward-State-Action)是一种在线强化学习算法,用于解决决策问题,特别是在部分可观测的马尔可夫决策过程(POMDPs)中。SARSA算法的核心思想是通过与环境的交互来学习一…...
【MFC】如何读取rtf文件并进行展示
tf是微软的一个带格式的文件,比word简单,我们可以用写字板等程序打开编辑。下面以具体实例讲解如何在自己程序中展示rtf文件。 首先使用VS2022创建一个MFC的工程。 VIEW类需要选择richview类,用于展示,如下图: 运行效…...
Vulhub:Log4j[漏洞复现]
CVE-2017-5645(Log4j反序列化) 启动靶场环境 docker-compose up -d 靶机IPV4地址 ifconfig | grep eth0 -A 5 ┌──(root㉿kali)-[/home/kali/Desktop/temp] └─# ifconfig | grep eth0 -A 5 eth0: flags4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 in…...
面向预测性维护的TinyML技术栈全面综述
论文标题:A Holistic Review of the TinyML Stack for Predictive Maintenance(面向预测性维护的TinyML技术栈全面综述) 作者信息:Emil Njor, Mohammad Amin Hasanpour, Jan Madsen, Xenofon Fafoutis,均来自丹麦技术…...
沈阳理工大学《2024年811自动控制原理真题》 (完整版)
本文内容,全部选自自动化考研联盟的:《沈阳理工大学811自控考研资料》的真题篇。后续会持续更新更多学校,更多年份的真题,记得关注哦~ 目录 2024年真题 Part1:2024年完整版真题 2024年真题...
用前端html如何实现2024烟花效果
用HTML、CSS和JavaScript编写的网页,主要用于展示“2024新年快乐!”的文字形式烟花效果。下面是对代码主要部分的分析: HTML结构 包含三个<canvas>元素,用于绘制动画。引入百度统计的脚本。 CSS样式 设置body的背景为黑…...
2026 河北 GEO 优化服务商测评:理性看实力,盘古开物AI智推适配才是硬道理
覆盖石家庄、唐山、保定、邯郸、邢台,立足华北,辐射全国,不搞噱头,只讲真实能力随着生成式 AI 全面融入商业营销,GEO 优化已经从河北企业的可选服务,变成抢占区域流量、提升线上可见度的重要方式。尤其制造…...
从RTL代码到SDC约束:手把手教你为PLL/DCM生成的时钟写对时序约束
从RTL代码到SDC约束:手把手教你为PLL/DCM生成的时钟写对时序约束 在数字芯片设计流程中,时钟约束的正确性直接影响着时序收敛的效率和质量。很多工程师能够熟练编写RTL代码,却在转换为SDC约束时遇到困惑——特别是当设计中使用PLL、DCM或自定…...
从开发者视角浅谈Taotoken用量看板对于日常调试与优化的辅助作用
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 从开发者视角浅谈Taotoken用量看板对于日常调试与优化的辅助作用 在日常开发工作中,当我们接入大模型API来构建智能功能…...
Taotoken用量看板与成本管理,让团队模型开销一目了然
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Taotoken用量看板与成本管理,让团队模型开销一目了然 当团队开始将多个大语言模型应用于不同业务场景时,一…...
别再手动接线了!用ESP-01S转接板5分钟搞定AT固件烧录(附固件下载)
5分钟极简ESP-01S固件烧录指南:转接板避坑全攻略 当你第一次拿到ESP-01S模块时,是否被那密密麻麻的引脚和复杂的接线图吓到?作为物联网开发的入门神器,ESP-01S确实性价比极高,但传统的手动接线烧录方式让不少新手望而…...
安卓截屏限制FLAG_SECURE原理与MT管理器绕过实战
1. 截屏限制不是“锁”,而是“提示灯”——先破除一个普遍误解 很多人一看到“App禁止截屏”,第一反应是“这App在防我”,继而联想到银行类App、考试系统、视频平台的“安全策略”,甚至下意识觉得背后有某种“硬隔离”或“内核级防…...
hccl 集合通信架构剖析:Ring-AllReduce 与通信-计算重叠设计
前言 分布式训练做多了会发现,多卡之间的通信往往比计算更吃时间。八张昇腾NPU跑一个LLaMA-70B,AllReduce在总耗时里能占30-40%,这个比例在卡数更多的时候还会继续涨。昇腾CANN的hccl(Huawei Collective Communication Library&am…...
生产级机器学习服务:容器化API与可观测性实战指南
1. 项目概述:当模型走出Jupyter,真正开始呼吸真实世界空气“From Notebook to Production: Running ML in the Real World (Part 4)”——这个标题里藏着一个被无数数据科学家反复咀嚼、又悄悄咽下的苦涩真相:我们花了80%的时间调参、画图、在…...
别再傻傻分组了!3DMax里用‘附加’和‘塌陷’合并模型,这才是真的一体化
3DMax模型合并实战:从分组误区到一体化操作进阶 在3D建模领域,许多初学者常陷入一个典型误区——将"分组"等同于"合并"。我曾亲眼见证一位同事在交付建筑模型时,因误用分组功能导致整个场景在导入渲染引擎后分崩离析。这…...
跨平台B站视频下载终极指南:如何用BilibiliDown轻松搞定离线观看
跨平台B站视频下载终极指南:如何用BilibiliDown轻松搞定离线观看 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh…...
