当前位置: 首页 > 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://www.zskr.cn/news/32032.html

相关文章:

  • 上周动手动脑补交
  • ask_skill
  • 最小树形图
  • 网络安全资源大全:助你紧跟前沿威胁与防御技术
  • Win11 使用 Copy v86 在线网页运行 VC6 学习 C 语言的可行性
  • 现代c++编程体验2
  • Excel高性能异步导出完整方案!
  • 「LG3600-随机数生成器」题解
  • 计算机毕业设计springboot音乐畅听系统 基于Spring Boot框架的智能音乐播放系统编写 Spring Boot驱动的音乐在线欣赏平台构建
  • 2025年土地报批技术服务品牌
  • 2025年土地报批技术服务品牌Top10排行榜
  • 2025 圆木/方木/原木多片锯设备推荐榜:河北普悦机械源头厂家凭核心技术登顶,4家优质企业各展优势
  • 2025年多功能综合杆厂家排名前十推荐
  • 常用Web 实时通信技术:原理+选型,一篇通关
  • 第二十四篇
  • 2025年西安楼房地产排名、口碑推荐榜单、公司推荐排行、开发商排名及高评价楼房地产分析
  • 扩展欧几里德算法
  • 2025年市面上别墅石材品牌、行业内别墅石材公司、市场别墅石材供应商、目前别墅石材源头厂家、口碑好的别墅石材品牌推荐排行榜
  • 根号分治、分块、莫队
  • 集采带量下医疗器械生产厂家如何通过数字化转型实现降本增效
  • 告别命名误区!深度剖析TurtleBot3 vs. TurtleBot4 开源平台
  • 102302105汪晓红作业1
  • 【IEEE出版 | 重庆邮电大学主办 | 多届次、高层次】第六届人工智能与计算机工程国际学术会议(ICAICE 2025)
  • 解决Java项目在复杂网络环境下访问外网不通的问题
  • Docker容器里面部署的Jenkins的Java17升级到21版本(无需删除之前容器,内部在线升级) - 攻城狮
  • 【IEEE出版 | 往届均已完成见刊检索 | 见刊检索稳定】第七届信息与计算机前沿术国际学术会议(ICFTIC 2025)
  • 动态点分树
  • 2025年隔热条厂家权威推荐榜:尼龙隔热条/PA66尼龙隔热条/建筑用隔热条/断桥铝门窗隔热条/幕墙隔热条/阳光房隔热条/国标隔热条精选
  • 「Gym 104901F」Say Hello to the Future
  • 渐进过程中大O与小o混用