![494879a0198846f7765fcc4fc9210483.gif](https://img-blog.csdnimg.cn/img_convert/494879a0198846f7765fcc4fc9210483.gif)
关注【新精英充电站】能力提升看得见!
Access 数据表从外观上与 Excel电子表格十分相似, 而实际上, 两者有着本质上的区别。因为, Access 数据表和 Excel 电子表格面向的对象是完全不同的。
Excel 完全面向电子表格, 它鼓励用户尽量将所有的数据都放在一个表格之中, 如果 Access 数据表也跟Excel 一样, 就会出现以下问题。
表不可控制地增长:例如, 将所有的信息都包含在同一个表中,如果表中的某个字段又包含若干个属性, 这些属性又需要分别用字段表示出来, 就会使表中的字段不可控制地增长。
数据维护和更新困难:如果需要对某个字段进行修改, 就需要对整个表进行搜索, 然后逐一修改。如果需要输入一条新的记录, 需要输入的字段就很多, 但是其中大部分都是重复无用的数据。
极大的资源浪费:在一个表中保存所有的数据, 必定会存在大量的冗余数据, 会浪费磁盘的空间。在使用数据时, 对数据进行操作时, 也会大量浪费内存、 网络等资源。
所以, 在设计数据库中使用的表时, 需要对其进行一定的规范化处理,只有这样, 才能设计出性能优良的数据库应用程序。
在关系型数据库中, 设计数据库必须遵循一定的规则, 这些规则就是范式。目前, 关系型数据库有 6 种范式, 分别是第一范式(1NF)、 第二范式(2NF)、 第三范式(3NF)、第四范式(4NF)、 第五范式(5NF)和第六范式(6NF)。
满足最低要求的范式称为第一范式, 在第一范式的基础上, 满足更多条件的称为第二范式, 以此类推。
虽然关系型数据库有6种范式,但在实际的使用过程中,一般只需要满足前3种范式就可以制作出优良的数据库,所以,只需要了解前3种范式。
1.第一范式
规范化的第一个阶段为第一范式, 这是所有关系型数据库必须满足的基本条件, 具体的要求是:表中的每一个元素只能包含一个唯一值。
1NF 包含有两层含义。第一层含义是表中的第一个字段只能包含一个属性, 即每一个字段只能有一个值。
如下图所示, 该表中的联系方式字段中包含了两个值, 就是一个不满足 1NF 的表。
![dbfc492d017ddcda016217ffe48661c1.png](https://img-blog.csdnimg.cn/img_convert/dbfc492d017ddcda016217ffe48661c1.png)
如果要让上表满足 1NF, 解决的方法有两种。
第一种:将联系方式字段拆分为两个字段, 如下图所示。
![f9b630b20838fb90e2a2cdafd412ab51.png](https://img-blog.csdnimg.cn/img_convert/f9b630b20838fb90e2a2cdafd412ab51.png)
第二种:将包含两个联系方式的记录拆分为两条记录,如下图所示。
![94861bed89cba3a860edd43a9e8e2690.png](https://img-blog.csdnimg.cn/img_convert/94861bed89cba3a860edd43a9e8e2690.png)
1NF 的第二层含义是不能有两个完全相同的字段, 如第一种的图片所示的【联系方式】 字段, 如果直接拆分为两个联系方式字段, 就不能满足要求。
2.第二范式
满足 1NF 之后的表就可以在关系数据库中使用了, 但仅满足 1NF的表还是会存在诸多问题。
例如,下图中的销售表, 由货号、 工号、 姓名、 部门、 商品名称、 销售数量、 价格和总价几个字段组成, 主键由货号和工号构成, 每一个字段都是一个完全独立的属性, 符合 1NF。
![57a0554068bf0fa21b6abcf27bdd0c0e.png](https://img-blog.csdnimg.cn/img_convert/57a0554068bf0fa21b6abcf27bdd0c0e.png)
虽 然 上图的 表 格 看 似 符 合1NF, 但在使用时仍然会出现诸多问题, 简单分析一下, 可能会出现的问题有以下几个。
数据冗余:某些员工的姓名出现了多次, 商品名称也出现了多次,导致同一种商品的价格也出现了多次。
更新异常:如果需要对其中的某些数据进行更新, 则需要对整个表格进行搜索, 否则就可能出现异常。例如, 要将洗发水的价格更改为“45”, 则需要对所有销售了洗发水的员工进行查找和修改,否则就会出现一种商品对应两个价格的情况。
插入异常:如果某个员工没有销售某件商品, 则销售数量为空,这个员工的信息就不能被输入到表格中。
删除异常:如果某个员工的销售记录错误, 需要删除, 在删除这条记录的时候, 会将员工的基本信息一起删除。
想要避免销售表中出现这些问题, 就需要了解数据库第二个规范化的要求, 即第二范式(2NF)。
第二范式的具体内容是:每一个非主键关键字完全依赖于主键。
根据 2NF 来分析销售表可以发现,【价格】字段完全依赖于主键【货号】 和【销售数量】, 而【姓名】【部门】 字段依赖于【工号】, 而【总价】依赖于【销售数量】 和【价格】, 所以【销售表】 并不符合 2NF。
如果想让销售表符合 2NF, 需要将其拆分为员工、 商品和各产品的销售情况这样几张表, 拆分后的效果如下图所示。
![1d5cc77862a125229fdc7d27702f8adf.png](https://img-blog.csdnimg.cn/img_convert/1d5cc77862a125229fdc7d27702f8adf.png)
3.第三范式
规范化的最后一步称为第三范式(3NF), 它要求移除所有可以派生自表中其他字段包含的数据的字段。
满足 2NF 的表已经是一个合格的数据表, 但是, 满足了 2NF 的表仍然可能会存在一定的问题。
如下图中的【商品信息表】中,主键为商品编码, 其余所有字段数据都依赖于商品编码。
![38c48a5d6f2677cb39f7fa37e2c92b52.png](https://img-blog.csdnimg.cn/img_convert/38c48a5d6f2677cb39f7fa37e2c92b52.png)
但是, 分析表中的字段时, 还可以发现除【分厂地址】 和【分厂电话】依赖于主键外, 其中不包含其他表中已包含的非主键字段。
所以,上图中的表并不符合3NF, 如果数据库中没有其他表, 要使该表符合 3NF, 可以将其拆分为如下图的【商品信息】 表和下图所示的【分厂信息】 表。
![0dbc660e04d139e8372862fe61d606cf.png](https://img-blog.csdnimg.cn/img_convert/0dbc660e04d139e8372862fe61d606cf.png)
![a6e10f381bf07b86a210b9d79178b65c.png](https://img-blog.csdnimg.cn/img_convert/a6e10f381bf07b86a210b9d79178b65c.png)
这些知识点,你都掌握了吗?
---------------------------------------------
本文内容摘自
北京大学出版社出版
《Access 2016完全自学教程》
▼
集Access所有功能、妙招技法、行业应用、专家经验于一体的办公技能宝典
本书以Access 2016 软件为平台,从办公人员的工作需求出发,配合大量典型案例,全面而系统地介绍了Access 2016 在文秘、人事、统计、财务、市场营销等多个领域中的应用,帮助读者轻松高效地完成各项办公事务。无论你有无Access基础,只要想学习Access技能,本书都值得你拥有!
推荐阅读3种方法,教你快速创建出需要的数据表
认识Access数据库6大对象,正确区分与Excel的区别
![2aebe168a8500735c3c859f1081eb59e.png](https://img-blog.csdnimg.cn/img_convert/2aebe168a8500735c3c859f1081eb59e.png)
![05c9068aa5a3f77d74b0a054de867ef7.png](https://img-blog.csdnimg.cn/img_convert/05c9068aa5a3f77d74b0a054de867ef7.png)
Access数据表的3个范式就分享完了,阅读文章的你,请顺便给我们点温暖和鼓励,转发/点在看,或留言勾搭。