第一节 数据表的设计规则
没有教程在教学EXCEL的时候,涉及到数据表的设计规则。但建立良好的数据表设计规范,有助于在今后的EXCEL操作中减少错误、提升效率,并容易学习更专业的数据处理工具,如ACCESS数据库、SQL数据库、POWER BI等。
在数据库(为什么在这里要提到数据库,请在网络中搜索“数据库思维”,以利于后续的学习)设计中,三范式(第一范式、第二范式、第三范式)是用于确保数据表结构合理、减少冗余和提高数据完整性的设计原则。虽然Excel本身并不是一个关系型数据库,但遵守上述的三范式,可以为EXCEL的使用带来严谨的好习惯。
1.1第一范式(1NF):原子性
第一范式要求数据表中的每个字段都是不可再分的最小数据单元,即表中的每个属性(列)必须是原子的,不能包含多个值。
实例1:未满足1NF的情况
假设我们有一个学生选课表,记录学生选修的课程信息,如下所示:
学号 | 姓名 | 选修课程 |
1001 | 张三 | 数学、物理 |
1002 | 李四 | 英语、化学、生物 |
1003 | 王五 | 数学、英语 |
在这个表中,“选修课程”字段包含了多个值(多门课程),这违反了第一范式的要求。
满足1NF的设计
为了满足第一范式,我们需要将“选修课程”字段拆分成多个独立的字段,或者将表拆分成多行,确保每个字段只包含单一值:
学号 | 姓名 | 选修课程 |
1001 | 张三 | 数学 |
1001 | 张三 | 物理 |
1002 | 李四 | 英语 |
1002 | 李四 | 化学 |
1002 | 李四 | 生物 |
1003 | 王五 | 数学 |
1003 | 王五 | 英语 |
这样,每个字段都只包含单一值,满足了第一范式的要求。
1.2第二范式(2NF):消除部分依赖
第二范式要求在满足第一范式的基础上,表中的非主属性必须完全依赖于主键。如果主键是组合主键,则非主属性不能只依赖于主键的一部分。
实例2:未满足2NF的情况
假设我们有一个订单表,记录订单信息,如下所示:
订单号 | 客户号 | 客户姓名 | 产品号 | 产品名称 | 数量 |
001 | 101 | 张三 | 201 | 笔记本 | 2 |
002 | 102 | 李四 | 202 | 手机 | 1 |
003 | 101 | 张三 | 203 | 平板 | 3 |
在这个表中,主键是“订单号”,但“客户姓名”只依赖于“客户号”,而不是“订单号”。这违反了第二范式的要求。
满足2NF的设计
为了满足第二范式,我们需要将表拆分成两个表:一个客户表和一个订单表,确保非主属性完全依赖于主键:
客户表:
客户号 | 客户姓名 |
101 | 张三 |
102 | 李四 |
订单表:
订单号 | 客户号 | 产品号 | 产品名称 | 数量 |
001 | 101 | 201 | 笔记本 | 2 |
002 | 102 | 202 | 手机 | 1 |
003 | 101 | 203 | 平板 | 3 |
这样,客户表中的“客户姓名”完全依赖于“客户号”,订单表中的所有非主属性也完全依赖于“订单号”,满足了第二范式的要求。
1.3第三范式(3NF):消除传递依赖
第三范式要求在满足第二范式的基础上,表中的非主属性之间不能存在传递依赖关系。即非主属性之间不能相互依赖。
实例3:未满足3NF的情况
假设我们有一个课程表,记录课程信息,如下所示:
课程号 | 课程名称 | 教师姓名 | 教师职称 |
001 | 数学 | 王老师 | 教授 |
002 | 英语 | 李老师 | 副教授 |
003 | 物理 | 张老师 | 讲师 |
在这个表中,“教师职称”依赖于“教师姓名”,而“教师姓名”又依赖于“课程号”,这形成了传递依赖(课程号 → 教师姓名 → 教师职称),违反了第三范式的要求。
满足3NF的设计
为了满足第三范式,我们需要将表拆分成两个表:一个课程表和一个教师表,消除传递依赖:
教师表:
教师姓名 | 教师职称 |
王老师 | 教授 |
李老师 | 副教授 |
张老师 | 讲师 |
课程表:
课程号 | 课程名称 | 教师姓名 |
001 | 数学 | 王老师 |
002 | 英语 | 李老师 |
003 | 物理 | 张老师 |
这样,课程表中的“教师姓名”只依赖于“课程号”,教师表中的“教师职称”只依赖于“教师姓名”,消除了传递依赖,满足了第三范式的要求。
总结
通过上述Excel表的设计实例,我们可以看到:
第一范式(1NF):确保每个字段都是不可再分的最小数据单元。
第二范式(2NF):在满足1NF的基础上,非主属性必须完全依赖于主键。
第三范式(3NF):在满足2NF的基础上,非主属性之间不能存在传递依赖。
这些范式有助于减少数据冗余、提高数据完整性和一致性,是数据库设计中的重要原则。
上面的内容,包括下面的第二节,我没看到哪一本教EXCEL的书讲过这些,但请相信,建立严格的表设计思路,会为你今后的工作带来莫大的收益!这也是我的血泪教训,现在写出来,请大家不要重复踩?。