当前课程知识点:计算思维导论 > 第五章 数据库技术与数据管理 > 5.3 数据库的规范化设计1 > 图文教学

我们来看下面的表格,表格中记录了学生有关的信息,也记录了课程有关的信息,以及学生选修了哪些课程的信息。

不难发现,这个表格有如下的问题:
◇ 数据冗余。
数据冗余是指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。可以说增加数据的独立性和减少数据冗余是信息资源管理和大规模信息系统获得成功的前提条件。在这个表格中张三的信息和计算思维导论课程的信息重复输入多遍,构成了数据的冗余。
◇ 插入异常
如果现在想在该表中增加一门课程,由于学号作为本表的主键,唯一标识实体,新增加的课程由于尚未学生选修,故无法添加到该表中。出现了插入异常。

◇ 删除异常
如果某位学生毕业了,比如张三同学毕业了,现在想把张三相关的信息删除,不难发现,数据库课程只有张三同学选,如果删除张三同学的记录,那么数据库课程的信息也随之被删除,出现了删除异常。
◇ 更新异常
如果课程信息发生变动,比如思维导论课程名称发生变化,则必须将课程名称列中所有课程名称为思维导论的都需要修改,如果漏改一个,则会出现更新异常。
出现上述四种问题,原因在于有太多相互之间联系的属性保存在同一关系中,这就造成了因一种信息被捆绑在其它信息上而产生的信息之间的相互依附存储的问题——数据依赖。
毫无疑问决绝上述问题,需要将没有太多相互联系的属性进行拆分,上述例子则需要拆分为三张表,将不关联的属性分别拆分到不同的表格中。如下图所示。


一个基本关系具有以下5条性质。
◇ 分量必须取原子值。即每个分量必须是不可再分的数据项。
◇ 列是同质的。即每列中的分量必须是具有相同的数据类型。
◇ 属性不能重名。即每一列的列名在一个关系中是唯一的。
◇ 行列的顺序无关。即哪一行在前,那一列在前可以是任意的。
◇ 任何两个元组不能完全相同。即关系中任意两行记录不能相同,通常由主键约束来保证。


范式(数据库设计范式,数据库的设计范式):是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则。在关系数据库中,这种规则就是范式。关系数据库中的关系必须满足一定的要求,即满足不同的范式。
目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、Boyce-Codd范式(BCNF)、第四范式(4NF)和第五范式(5NF)。
满足最低要求的范式是第一范式(1NF)。在第一范式的基础上进一步满足更多要求的称为第二范式(2NF),其余范式以次类推。一般说来,数据库只需满足第三范式(3NF)就行了。


在任何一个关系数据库中,第一范式(1NF)是对关系模式的基本要求,满足第一范式的数据库,必须首先满足关系的性质,不满足第一范式(1NF)的数据库就不是关系数据库。
所谓第一范式(1NF)是指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。简而言之,第一范式就是无表中有表的形式。比如下表中,通讯地址列就出现了多个值(省、市、...、邮编)。

针对表中有表的形式,需要对其进行拆分,通常有三种做法。
◇ 简单拆分法
可以将上述表格拆分为两种形式,一种方法是去掉首行,直通到顶,将各分量独立形成列,另一种方法是将各分量进行合并,成为同一个信息。这两种做法都不是很好,会丢失信息。如果需要检索通讯地址,由于第一种方法中,并没有指定从哪一列开始进行检索,故指代不明;第二种方法,虽将信息检索出来,但又苦于信息都在一起,无法明确细节,并非所我们需要的信息。


◇ 外键法
可以将复合属性进行拆分,拆分为新的一张表,形成一对多的联系,并用外键法,与其相连,保证数据虽然因为分家,依然可以进行关联。

这种方法虽然不丢失信息,但缺看不出隶属关系。什么意思?如何理解?我们换一个明显的例子。现有球员信息表,该表中有表中有表的形式,如下图所示。

如果用外键法拆分,就形成了下表。看出什么问题了吗?将原表拆分为两张表,一张球队表,一张球员表。球队表和球员表构成一对多关系,并将一的关键字放到多的关系中,形成外键。对于球员表来说,1球队的球员编号是正确的,1号球队的1号队员,1号球队的2号队员,...,到了2号球队就不正确了,2号球队的球员编号则从4开始了编号了,这显然和我们常规球员出场介绍方式有悖。我们期望介绍的时候是1号球队的1号队员,1号球队的2号队员,...,2号球队的1号队员,2号球队的2号队员,...,这种方式。


◇ 弱实体法
在现实世界中,有时某些实体对于另一些实体有很强的依赖关系,即一个实体的存在必须以另一实体的存在为前提。前者就称为“弱实体”,后者称为“强实体”。比如在人事管理系统中,职工子女的信息就是以职工的存在为前提的,子女实体是弱实体,子女与职工的联系是一种依赖联系。
在ER模型中也称(实体-联系图(Entity Relationship Diagram),弱实体用双线矩形框表示。与弱实体的联系用双线菱形框表示。弱实体主键的一部分或全部从其强实体中获得。
球队球员的例子中,表格拆分如下:

弱实体的方法进行拆分,对于球队球员的例子来说,是最为适合的。

-1.1 计算与计算思维1
--计算与计算思维1
--图文教学
--1-1 巩固练习--作业
-1.2 计算与计算思维2
--计算与计算思维2
--图文教学
--1-2 巩固练习--作业
-1.3 计算工具与计算机
--计算工具与计算机
--图文教学
--什么是摩尔定律?
--1-3 巩固练习--作业
-实验1-1 初识计算思维
--计算机发展简史
--这才是大学
--实验1-1 初识计算思维
-本章小结
--知识点回顾
--习题与解析
--章节自测--作业
-2.1 初识二进制
--初识二进制
--图文教学
--2-1 巩固练习--作业
-2.2 二进制的运算
--二进制的运算
--图文教学
--2-2 巩固练习--作业
-2.3 数制转换
--数制转换
--常见进制
--图文教学
--数制转换口诀
--2-3 巩固练习--作业
-2.4 数的表示
--数的表示
--图文教学
--负数补码问题
--2-4 巩固练习--作业
-2.5 字符编码
--字符编码
--图文教学
--汉字编码问题
--2-5 巩固练习--作业
-2.6 声音图像编码
--声音图像编码
--延伸学习:小趣闻
--图文教学
--2-6 巩固练习--作业
-本章小结
--知识点回顾
--习题与解析
--本章测验--作业
-3.1 计算机系统构成
--计算机系统构成
--图文教学
--3-1 巩固练习--作业
-3.2 主板
--主板
--图文教学
--主板的作用
--3-2 巩固练习--作业
-3.3 接口与总线
--接口与总线
--图文教学
--总线和接口的区别
--3-3 巩固练习--作业
-3.4 CPU
--CPU
--延伸学习:从沙子到CPU的制造过程告诉你造芯片到底有多难
--图文教学
--什么是主频?
--3-4 巩固练习--作业
-3.5 内存
--内存
--图文教学
--主流内存类型
--3-5 巩固练习--作业
-3.6 外存
--外存
--图文教学
--硬盘类型
--3-6 巩固练习--作业
-3.7 输入输出设备
--输入输出设备
--图文教学
--微机故障检测
--I/O设备
--3-7 巩固练习--作业
-3.8 计算机工作原理
--计算机工作原理
--图文教学
--人类与计算机
--3-8 巩固练习--作业
-3.9 操作系统1
--图文教学
--虚拟内存?
--3-9 巩固练习--作业
-3.10 操作系统2
--图文教学
--操作系统
--3-10 巩固练习--作业
-实验3-1 计算机原理与硬件组装
--上机实验3-1:计算机工作原理与硬件组装
-本章小结
--知识点回顾
--习题与解析
--章节自测--作业
-4.1 初识网络
--初识网络
--图文教学
--4.1 巩固练习--作业
-4.2 网络分类
--网络分类
--图文教学
--校园网
--4.2 巩固练习--作业
-4.3 网络体系结构
--网络体系结构
--图文教学
--4.3 巩固练习--作业
-实验4-1:简单网络布线
-4.4 网络设备
--网络设备
--图文教学
--4.4 巩固练习--作业
-实验4-2:将计算机添加到现有网络中
-4.5 局域网搭建
--局域网搭建
--图文教学
--4.5 巩固练习--作业
-实验4-3 无线路由器连接与设置
-4.6 IP与域名系统
--IP与域名系统
--图文教学
--4.6 巩固练习--作业
-实验4-4:测试无线连接
-4.7 划分子网
--划分子网
--图文教学
--子网掩码
--4.7 巩固练习--作业
-4.8 Internet 服务
--工信部部长谈5G
--图文教学
--4.8 巩固练习--作业
-4.9 数字公民与网络安全
--图文教学
--数字签名
--4.9 巩固练习--作业
-本章小结
--知识点回顾
--习题与解析
--章节自测--作业
-5.1 数据库基本概念
--数据库基本概念
--图文教学
--5.1 巩固练习--作业
-5.2 数据库的设计方法
--图文教学
--数据库的设计步骤
--5.2 巩固练习--作业
-5.3 数据库的规范化设计1
--图文教学
--为什么要规范化数据库设计?如果不规范化设计会有什么问题?
--5.3 巩固练习--作业
-5.4 数据库的规范化设计2
--图文教学
--规范化设计数据库
--5.4 巩固练习--作业
-5.5 ACCESS数据库的创建与查询
--图文教学
--主键与外键
--5.5 巩固练习--作业
-5.6 关系代数理论
--关系代数理论
--图文教学
--5.6 巩固练习--作业
-5.7 SQL语句查询
--SQL语句查询
--图文教学
--5.7 巩固练习--作业
-实验5-1:数据库设计与实现(PBL直播课)
-本章小结
--知识点回顾
--习题与解析
--章节自测--作业
-6.1 逻辑思维及其训练方法
--图文教学
--白马非马论
--6-1 巩固练习--作业
-6.2 命题及命题判断
--命题及命题判断
--图文教学
--命题判断条件
--6.2 巩固练习--作业
-6.3 命题符号化
--命题符号化
--图文教学
--蕴含运算符
--6-3 巩固练习--作业
-6.4 布尔代数与真值表
--布尔代数与真值表
--图文教学
--构造真值表
--6-4 巩固练习--作业
-6.5 命题演算和逻辑推理
--图文教学
--永真式和永假式
--6-5 巩固练习--作业
-实验6-1:用真值表进行逻辑推理(PBL录屏课)
-本章小结
--知识点回顾
--习题与解析
--章节自测--作业
-7.1 什么是问题求解
--什么是问题求解
--图文教学
--7-1 巩固练习--作业
-7.2 算法与算法描述
--算法与算法描述
--图文教学
--算法描述方法
--7-2 巩固练习--作业
-7.3 顺序结构设计
--顺序结构设计
--图文教学
--温度转换问题
--7-3 巩固练习--作业
-7.4 选择结构设计
--选择结构设计
--图文教学
--7-4 巩固练习--作业
-7.5 循环结构设计
--循环结构设计
--图文教学
--7-5 巩固练习--作业
-7.6 算法策略基础之数组
--图文教学
--7.6 巩固练习--作业
-7.7 算法策略基础之函数
--图文教学
--用户自定义函数
--7.7 巩固练习--作业
-实验7-1:Raptor的基本操作(PBL录屏课)
-7.8 算法策略之枚举法
--算法策略之枚举法
--图文教学
--7-8 巩固练习--作业
-7.9 算法策略之递归法
--算法策略之递归法
--图文教学
--德罗斯特效应
--7.9 巩固练习--作业
-7.10 算法策略之递推法
--算法策略之递推法
--图文教学
--7-10 巩固练习--作业
-7.11 算法策略之迭代法
--算法策略之迭代法
--图文教学
--7-11 巩固练习--作业
-实验7-2:算法设计与分析(PBL直播课)
-7.12 算法策略之分治法
--算法策略之分治法
--图文教学
--分治法思想
--7-12 巩固练习--作业
-7.13 算法策略之动态规划
--图文教学
--什么是动态规划?
--7-13 巩固练习--作业
-7.14 算法策略之贪心算法
--图文教学
--贪心策略
--7.14 巩固练习--作业
-7.15 算法策略之回溯法
--算法策略之回溯法
--图文教学
--回溯现象
--7-15 巩固练习--作业
-7.16 算法策略之查找算法
--图文教学
--7-16 巩固练习--作业
-7.17 算法策略之排序算法
--图文教学
--冒泡排序
--7-17 巩固练习--作业
-本章小结
--知识点回顾
--习题与解析
--章节自测--作业
-8.1 数据挖掘概述
--数据挖掘概述
--图文教学
--数据挖掘案例
--8-1 巩固练习--作业
-8.2 数据采集
--数据采集
--图文教学
--数据采集
--8-2 巩固练习--作业
-8.3 数据探索之数据质量分析
--图文教学
--异常值处理
--8-3 巩固练习--作业
-8.4 数据探索之数据特征分析
--图文教学
--帕累托法则
--8-4 巩固练习--作业
-8.5 数据特征分析之分布分析
--图文教学
--分组方法
--8-5 巩固练习--作业
-8.6 数据特征分析之统计分析
--图文教程
--加权平均数
--8-6 巩固练习--作业
-8.7 数据特征分析之统计分析(续)
--图文教学
--无量纲数
--8-7 巩固练习--作业
-8.8 数据预处理
--数据预处理
--图文教学
--数据预处理
--8-8 巩固练习--作业
-8.9 数据挖掘之分类
--数据挖掘之分类
--图文教学
--8-9 巩固练习--作业
-8.10 数据挖掘之预测
--数据挖掘之预测
--图文教学
--分类与预测
--8-10 巩固练习--作业
-8.11 数据挖掘之聚类分析
--图文教学
--聚类和分类
--8-11 巩固练习--作业
-8.12 数据挖掘之关联规则
--图文教学
--智能推荐系统
--8-12 巩固练习--作业
-本章小结
--知识点回顾
--习题与解析
--章节自测--作业
-期中考试(1-4章)
-期末考试(5-8章)




