建立正确的数据处理思维
我们用一个“学生信息管理”的例子,一步步来看如何应用这三个范式。
-
学号|学生姓名|课程名称|课程学分|系别|系办电话|学科成绩
-
1001|张三|数据库|4|计算机系|88880001|90
-
1001|张三|数据结构|3|计算机系|88880001|85
-
1002|李四|数据库|4|电子系|88880002|95
这张表虽然信息全,但存在很多问题:
-
数据大量重复(如“计算机系”和它的电话),
-
修改学分或系办电话需要更新多行,
-
如果删除所有学生记录,课程和系别信息也会丢失。
为了解决这些问题,我们需要引入范式。
一、数据存储三范式
第一范式 1NF:原子性
核心:表中的每一列都必须是不可再分的单一属性。
例子: 上面的“大宽表”已经满足了第一范式,因为每一列(如“学生姓名”、“课程名称”)都是单一值。 反例: 如果有一列叫“联系方式”,里面同时存了“手机号”和“家庭电话”,那就不符合1NF。应该拆分成“手机号”和“家庭电话”两列。
小结: 不相关的内容绝不放在一个格子里。
第二范式 2NF:消除部分依赖
核心: 在满足1NF的基础上,表中的非主键列必须完全依赖 于整个主键,而不能只依赖于主键的一部分(这主要针对联合主键)。
分析:
-
1. 在上面的“大宽表”中,我们需要用 (学号, 课程名称) 作为联合主键,才能唯一确定一行记录(一个学生的某一门课成绩)。
-
2. 但是,学生姓名只依赖于 学号,课程学分只依赖于 课程名称。它们并没有完全依赖于 (学号, 课程名称) 这个整体。这就是“部分依赖”。
解决方案: 将存在部分依赖的字段拆分到独立的表中。
-
学生表 (学号, 学生姓名, 系别, 系办电话)
-
课程表 (课程名称, 课程学分)
-
成绩表 (学号, 课程名称, 学科成绩)
现在,每个非主键字段都完全依赖于自己表的主键了。
小结 :表里所有数据,都必须完完整整靠整行主键决定,不能靠一半。
第三范式 3NF:消除传递依赖
核心: 在满足2NF的基础上,表中的非主键列必须直接依赖 于主键,而不能依赖于其他非主键列。也就是不能存在 A → B → C 这样的“传递依赖”。
分析: 我们来看拆分后的学生表 (学号, 学生姓名, 系别, 系办电话)。主键是 学号。 学号 决定了 系别,而 系办电话 实际上是由 系别 决定的。 这就形成了一个传递依赖链:学号 → 系别 → 系办电话。系办电话 并没有直接依赖于主键 学号。 解决方案: 将存在传递依赖的字段再次拆分。 学生表 (学号, 学生姓名, 系别) 系别表 (系别, 系办电话) 现在,学生表中的 系别 作为一个“外键”,指向系别表。系办电话 信息只在系别表中存储一次。
小结: 不要在一张表里,通过 A 字段推导出 B 字段;能用编号关联,就绝不重复存文字。
精简知识点
-
1. 1NF :一格只存一件事,不混装
-
2. 2NF :一表只做一件事,字段全靠主键定
-
3. 3NF :文字别重复存,用编号查表,表内不传递绕弯子
拓展知识点: 了解一维表格和二维表格
二、重点学习EXCEL的快捷键
(一)基础操作快捷键
-
Ctrl + N:新建工作簿 -
Ctrl + O:打开现有工作簿 -
Ctrl + S:快速保存 -
Ctrl + W:关闭当前工作簿 -
Ctrl + P:打开打印界面 == -
Ctrl + Z==:撤销上一步操作 == -
Ctrl + Y==:恢复撤销的操作 == -
Ctrl + F==:查找内容 == -
Ctrl + H==:替换内容 == -
Ctrl + A==:全选当前数据区域(按两次全选工作表)
(二)导航与选择快捷键 快捷键 功能说明 Ctrl + ↑/↓/←/→ 快速跳转到数据区域边缘 Shift + ↑/↓/←/→ 扩展选择单元格范围 Ctrl + Shift + ↑/↓/←/→ 选择整行/列到数据末尾 Ctrl + Home 跳转到工作表开头(A1单元格) Ctrl + End 跳转到数据区域末尾 Alt + PageUp/PageDown 向左/右滚动一屏(笔记本可能需要配合Fn键)
(三)单元格编辑快捷键
-
F2:进入单元格编辑模式 -
Ctrl + Enter:在选中的多个单元格中同时输入相同内容 -
Alt + Enter:在单元格内换行(输入多行文本) == -
Ctrl + D==:向下填充(复制上方单元格内容) == -
Ctrl + R==:向右填充(复制左侧单元格内容) -
Ctrl + ;:插入当前日期 -
Ctrl + Shift + ;:插入当前时间 -
Delete:清除单元格内容(保留格式) -
Ctrl + -:删除选中的行/列/单元格 -
Ctrl + Shift + +:插入行/列/单元格
(四)格式调整快捷键
-
Ctrl + B:加粗/取消加粗 -
Ctrl + I:斜体/取消斜体 -
Ctrl + U:下划线/取消下划线 == -
Ctrl + 1==:打开“设置单元格格式”对话框
(五)公式与数据操作快捷键
-
F4:切换单元格引用方式(绝对/相对引用,如 A1 → $A$1) -
Alt + =:自动求和(SUM函数) -
F9:手动重新计算所有公式 == -
Ctrl + Shift + L==:启用/取消筛选(数据透视表同样适用) == -
Alt + D + S==:打开“排序”对话框(依次按键)
(六)其他高效技巧
-
快速填充(Flash Fill) 输入示例后按 Ctrl + E (自动提取或拆分数据,如分离姓名和电话)。
-
复制可见单元格 选中区域 → Alt + ; → 再按 Ctrl + C(跳过隐藏行复制)。
-
快速跳转到指定单元格 按 F5 或 Ctrl + G ,输入目标单元格地址(如 X100)。
-
批量插入批注 选中区域 → Shift + F2。
-
掌握 ALT 快捷键
举例:ALT+H+M+U:取消合并单元格
三、建立数据源表和查询表的概念
日常做表格、做报表、做统计,第一件事就是把这两张表彻底分开 ,这是 Excel 专业用法的核心。
1. 什么是数据源表?
(1) 数据源表 = 原始基础数据表
-
只存原始明细 。
-
一行一条真实记录,结构规整:表头固定、列不乱插 。
-
是所有报表、统计、透视表、函数引用的唯一源头 。
(2) 在遵循“三范式”的基础上,数据源表注意不要有以下几个动作:
-
不要排版。
-
不要用各种“合并单元格”,改用**“跨列居中”** (Ctrl+1设置单元格格式——对齐——水平对齐——跨列居中)。
-
不要“合计、小计”。
-
按年、月下载、录入的数据,不要分表存放 ,而要纵向存放在一张表中,并将原表头的一些共用信息如“日期"、”部门“等,建立新列存放。
-
每张表只能有一行标题行,且在第一行。
举例:
-
每日销售流水表
-
员工信息明细表
-
费用报销明细表
-
库存进出明细表
2. 什么是查询表
查询表 = 结果报表 / 统计报表 ,查询表相当于”虚拟表“,不存放真实数据,只存放数据关系集合。
特点:
-
不手动录原始数据 ,全部从数据源表引用、统计、计算。
-
可以做汇总、筛选、条件统计、透视、图表、排版美化。
-
专门给人看、给领导看、用来打印、做分析。
-
数据绝不手动改 ,改只改数据源,查询表自动更新。
举例:
-
月度销售汇总表
-
部门费用统计表
-
员工工资查询表
-
库存余量统计表
作用 :相当于前台展示,只负责 “展示、分析、出结果”。
3.为什么一定要分开?(核心价值)
-
避免重复录入 原始数据只录一次,所有查询报表都从它取数,不用反复抄数据。
-
修改只改一处 数据源改一行,所有查询表、公式、透视表全部自动跟着变,不用每张表挨个改。
-
不会改错原始数据 查询表只看结果、不碰原始明细,避免误删、误改基础数据。
-
方便做函数、透视表、Power Query 只要数据源结构标准(符合”三范式“),VLOOKUP/XLOOKUP、SUMIFS、数据透视表、Power Query 都能稳定运行,不会因为乱改列、合并单元格报错。
-
报表整洁、可复用 查询表可以随便排版、加颜色、合并单元格、做图表,不影响底层原始数据。
4.引用数据源表的函数
-
1. 按编号查单个信息 → XLOOKUP
-
2. 旧版 Excel 只能用 → VLOOKUP
-
3. 按条件求和统计 → SUMIFS
-
4. 批量筛选整片数据 → FILTER (365/2021 及以上)
-
5. 不想写公式、长期用 → 数据透视表 / Power Query
四、必知必会函数
XLOOKUP、SUM/SUMIF/SUMIFS、AVERAGE、COUNT / COUNTA / COUNTIF、IF、AND、OR、LEFT / RIGHT / MID、MAX / MIN、FILTER、TRIM
五、进阶之路
上述内容——数据透视表——power query(数据清理)——power pivot(超级透视表)——SQL(结构化查询语言,取数不求人)——python(办公自动化)