当前位置: 首页 > 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.hn-smt.com/news/334/

相关文章:

  • CSP-S2025 游记
  • 「LG3600-随机数生成器」题解
  • MathType7下载包安装教程2025最新下载+安装+汉化激活(附安装包,超详细)
  • 2025强网杯ezphp复现
  • 漏洞报告被拒绝的常见原因及避免方法
  • 【IEEE出版 | 重庆邮电大学主办 | 多届次、高层次】第六届人工智能与计算机工程国际学术会议(ICAICE 2025)
  • Docker容器里面部署的Jenkins的Java17升级到21版本(无需删除之前容器,内部在线升级) - 攻城狮
  • 报表知识
  • 渐进过程中大O与小o混用
  • 消息队列的有序性
  • 【LTDC】DMA2D —— 嵌入式系统的 GPU
  • unity管理器设计:Manager of Managers
  • iview table 排序 columns 里面写 sortable: custom 不要写 sortable: true 不然会进行二次内部排序序号等 字段。
  • 本地运行nginx服务,模拟线上环境访问项目
  • git提交远程项目步骤
  • 2025 年搅拌器搅拌设备,侧入式搅拌设备,斜插式揽拌设备,卧式搅拌设备厂家最新推荐,聚焦资质、案例、售后的五家企业深度解读
  • 2025 年环保搅拌设备,搅拌装置设备,框式搅拌设备厂家最新推荐,实力品牌深度解析采购无忧之选!
  • CorelDRAW的shell扩展ShellXP.dll导致资源管理器explorer.exe卡死/冻结/无响应/挂起
  • 2025 年定制矿车,大型矿车,固定式矿车厂家最新推荐,产能、专利、环保三维数据透视
  • 醒图电脑版下载与安装教程(2025最新版)
  • 2025 年江苏电缆附件,热缩电缆附件,冷缩电缆附件,预制电缆附件厂家最新推荐,产能、专利、环保三维数据透视
  • Android Studio 使用glibc2.28的版本
  • 2025年10月兰花油品牌推荐榜:五款精华油深度对比与选购指南
  • 2025年浅拾兰花双萃致臻精华油:从成分与技术维度解析其护肤功效
  • 2025 年进口螺杆泵,萨伯特螺杆泵,污泥螺杆泵厂家最新推荐,实力品牌深度解析采购无忧之选!
  • 为什么 AI 模型的最小理解单位是「特征」?
  • 2025年移动车载变电站厂家最新推荐榜:陕西四方华能凭硬实力成优选
  • XiaoQuQu 的 2025 CSP-S 第二轮模拟 ROUND2
  • 2025年硬密封闸阀厂家权威推荐榜单:手动闸阀/明杆闸阀/法兰闸阀源头厂家精选
  • 深入解析:ArcGIS Manager Server Add Host页面报错 HTTP Status 500