当前位置: 首页 > news >正文

数据库三大范式、Union和Union all的区别

数据库三大范式

  1. 什么是范式
  • 范式就是我们在设置数据库的表时,一些共同需要遵守的规范
  • 掌握这些设计时的范式,可以让我们在项目之初,设计库的表结构更加合理和优雅
  1. 三大范式之间的关系
  • 三大范式之间,是逐级递进的关系,也就是说后一个范式是在前一个范式的基础上推行。(这三者之间不能颠倒,后者都是建立在前者之上的,顺序不能颠倒。)
  1. 什么是第一范式
  • 表库设计时,主要是为了确保原子性,也就是存储的数据具有不可再分性。
注意:这里的原子性不等同于MySQL特点中的原子性

MySQL特性之原子性

  • 指事务是操作数据库的基本单位,要么全部执行成功,要么全部失败回滚
  • 这样做确保了数据库在任何情况下都能保持一致的状态,不会出现中间数据

第一范式的原子性

  • 指一个字段不可再分割,其中不能包含其他更小的数据单元。也就是说,一个字段的数据不能再被进一步分解为更小的数据单元
    举例:
+----------------------+--------+-------+
| student              | course | score |
+----------------------+--------+-------+
| 张三,男,185cm      | 语文   |    95 |
| 李四,男,185cm      | 数学   |   100 |
| 王五,男,185cm      | 英语   |    88 |
| 赵六,女,170cm      | 语文   |    99 |
| 钱七,女,170cm      | 数学   |    90 |
+----------------------+--------+-------+

按照第一范式的要求 : 每个字段不可在分割,应为下表所示

+--------------+-------------+----------------+--------+-------+
| student_name | student_sex | student_height | course | score |
+--------------+-------------+----------------+--------+-------+
| 张三         | 男          | 185cm          | 语文   |    95 |
| 李四         | 男          | 185cm          | 数学   |   100 |
| 王五         | 男          | 185cm          | 英语   |    88 |
| 赵六         | 女          | 170cm          | 语文   |    99 |
| 钱七         | 女          | 170cm          | 数学   |    90 |
+--------------+-------------+----------------+--------+-------+

第一范式(1NF)小结

  • 第一范式,我们通常也叫 1NF
  • 第一范式要求我们必须遵守原子性,即数据库表的每一列都是不可分割,每列的值具有原子性,不可再分割,每个字段的值都只能是单一值。
  1. 什么是第二范式
  • 首先第二范式是在满足第一范式的基础上
  • 其次第二范式要求表中的所有列,其数据依赖于主键。即一张表只存储同一类型的数据,不能有任何一列数据与主键没有关系
+--------------+-------------+----------------+
id| student_name | student_sex | student_height | 
+--------------+-------------+----------------+
1| 张三         | 男          | 185cm          |
2| 李四         | 男          | 185cm          |
3| 王五         | 男          | 185cm          |
4| 赵六         | 女          | 170cm          |
5| 钱七         | 女          | 170cm          |
+--------------+-------------+----------------+
+-----------+-------------+
| course_id | course_name |
+-----------+-------------+
|         1 | 语文        |
|         2 | 数学        |
|         3 | 英语        |
+-----------+-------------+
+----------+------------+-----------+-------+
| id | student_id | course_id | score |
+----------+------------+-----------+-------+
|        1 |          1 |         1 |    95 |
|        2 |          1 |         2 |   100 |
|        3 |          1 |         3 |    88 |
|        4 |          2 |         1 |    99 |
|        5 |          2 |         2 |    90 |
+----------+------------+-----------+-------+

第二范式(2NF)小结

  • 第二范式,我们通常也叫 2NF
    ○ 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的
    ○ 满足第二范式(2NF)必须先满足第一范式(1NF)
  • 第一范式要求我们必须遵守原子性
  • 第二范式要求表中的所有列,其数据依赖于主键
    ○ 即一张表只存储同一类型的数据,不能有任何一列数据与主键没有关系
    ■ 如果表是单主键,那么主键以外的列必须完全依赖于主键,其它列需要跟主键有关系
    ■ 如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分
  1. 什么是第三范式
  • 首先第三范式是在满足第二范式的基础上
  • 其次第三范式要求表中每一列数据不能与主键之外的字段有直接关系
    ○ 表中的非主键列必须和主键直接相关而不能间接相关
    ○ 非主键列之间不能相关依赖,不存在传递依赖
+------------+--------+------+--------+--------------+--------------+
| student_id | name   | sex  | height | department   | dean         |
+------------+--------+------+--------+--------------+--------------+
|          1 | 张三   | 男   | 185cm  | 计算机系     | 老大     |
|          2 | 李四   | 女   | 170cm  | 金融系       | 老二     |
|          3 | 王五   | 女   | 170cm  | 金融系       | 三弟     |
+------------+--------+------+--------+--------------+--------------+
+------------+--------+------+--------+---------------+
| student_id | name   | sex  | height | department_id |
+------------+--------+------+--------+---------------+
|          1 | 张三   | 男   | 185cm  |             1 |
|          2 | 李四   | 女   | 170cm  |             2 |
+------------+--------+------+--------+---------------+
+---------------+-----------------+-----------------+
| department_id | department_name | department_dean |
+---------------+-----------------+-----------------+
|             1 | 计算机系        | 老大        |
|             2 | 金融系          | 老二        |
+---------------+-----------------+-----------------+

第三范式(3NF)小结

  • 第三范式,我们通常也叫 3NF
    ○ 第三范式(3NF)是在第二范式(2NF)的基础上建立起来的
    ○ 满足第三范式(3NF)必须先满足第二范式(2NF)
  • 第一范式要求我们必须遵守原子性
  • 第二范式要求表中的所有列,其数据依赖于主键
    ○ 即一张表只存储同一类型的数据,不能有任何一列数据与主键没有关系
    ■ 如果表是单主键,那么主键以外的列必须完全依赖于主键,其它列需要跟主键有关系
    ■ 如果表是复合主键,那么主键以外的列必须完全依赖于主键,不能仅依赖主键的一部分
  • 第三范式要求表中每一列数据不能与主键之外的字段有直接关系
    ○ 表中的非主键列必须和主键直接相关而不能间接相关
    ○ 非主键列之间不能相关依赖,不存在传递依赖

union和union all 的区别

  • 在 SQL 中,UNION和UNION ALL都是用于合并多个SELECT语句的结果集的操作符,但二者的核心区别在于是否去除重复记录以及由此带来的性能差异。

1. 核心区别:是否去重

  • UNION:会自动去除合并后结果集中的重复行(即完全相同的记录)。
    为了实现去重,UNION会对结果集进行排序和比对,这会消耗额外的计算资源。
  • UNION ALL:直接合并所有结果集,保留所有记录(包括重复行),不会进行去重操作。
    由于无需处理去重,UNION ALL的执行效率通常远高于UNION。

2. 前提条件(两者共通) 使用UNION或UNION ALL时,需保证多个SELECT语句满足以下条件:

  • 返回的列数必须相同;
  • 对应位置的列数据类型必须兼容(无需完全一致,但需可隐式转换)。

示例说明

假设有两个表table1和table2,数据如下:

  • table1:(1, 'a')、(2, 'b')
  • table2:(2, 'b')、(3, 'c')
    使用UNION:
SELECT * FROM table1
UNION
SELECT * FROM table2;

结果(去重后):

(1, 'a')、(2, 'b')、(3, 'c')
使用UNION ALL:

SELECT * FROM table1
UNION ALL
SELECT * FROM table2;

结果(保留重复):

(1, 'a')、(2, 'b')、(2, 'b')、(3, 'c')
总结

  • 若需合并结果并去除重复,用UNION(但性能较低);
  • 若确定无重复记录,或允许保留重复,优先用UNION ALL(性能更优)。
http://icebutterfly214.com/news/334/

相关文章:

  • go包装bing搜索
  • 鼾声识别芯片方案和睡眠产品的应用场景
  • 2025年工程管理软件公司综合推荐榜:助力建筑行业数字化升级
  • Excel高性能异步导出完整方案!
  • 2025年多功能综合杆厂家排名前十推荐
  • 2025年度在线网站客服系统综合排行榜正式发布
  • JDD Oxygen智能零售论坛 | 《大模型时代的广告营销变革与实践》
  • 2025年市面上新加坡留学品牌、行业内公司及口碑产品推荐排行
  • 11-文件上传
  • TensorFlow与PyTorch深度对比分析:从基础原理到实战选择的完整指南 - 指南
  • Navicat 17 超详细保姆级下载安装教程:附激活工具使用步骤​
  • el-date-picker样式修改
  • 浅谈 Agent 开发工具链演进历程
  • 电梯调度算法结对编程作业
  • 2025质量可靠的义乌刺绣工厂推荐榜
  • DP1312多协议高性能读卡芯片支持A/B/Felaca/18092智能门锁读卡器模拟卡兼容PN512 - 动能世纪
  • 2025年10月兰花油品牌推荐榜单:多维度深度对比与选择指南
  • 2025 年1KV 冷缩硅橡胶电缆附件,冷热缩电缆附件,绕包电缆附件,熔接电缆附件厂家最新推荐,产能、专利、环保三维数据透视
  • 低代码开发便捷的技术深度解析
  • 2025年浅拾兰花双萃致臻精华油:从成分与科技维度解析其护肤功效
  • 销售公司绩效考核全攻略:维度、原则与数字化赋能方案
  • 题解:P4434 [COCI 2017/2018 #2] ​​Usmjeri
  • 小程序-跳转到公众号
  • 如何解决一堆向量的问题?10、Self-attention - -一叶知秋
  • 洞悉过往,一目了然:浅述视频融合平台EasyCVR如何实现海量视频录像的智能检索与高效回看
  • 2025年国内外五款AI编程工具深入对比与推荐排行
  • CSPS 前后的话
  • 2025 年 10 月云仓 ERP,云仓 saas 系统,云仓代发系统公司最新推荐,技术实力与市场口碑深度解析
  • iOS混淆实战用多工具组合把IPA加固做成可复用的工程能力(iOS混淆 IPA加固 无源码混淆
  • cyclonessd ROS2 lidar topic 数据丢帧 系统配置