计算机等级考试数据库07

上传人:宝路 文档编号:47921151 上传时间:2018-07-06 格式:PPTX 页数:41 大小:476.82KB
返回 下载 相关 举报
计算机等级考试数据库07_第1页
第1页 / 共41页
计算机等级考试数据库07_第2页
第2页 / 共41页
计算机等级考试数据库07_第3页
第3页 / 共41页
计算机等级考试数据库07_第4页
第4页 / 共41页
计算机等级考试数据库07_第5页
第5页 / 共41页
点击查看更多>>
资源描述

《计算机等级考试数据库07》由会员分享,可在线阅读,更多相关《计算机等级考试数据库07(41页珍藏版)》请在金锄头文库上搜索。

1、第7章 数据分析数据库应用基础DBAB7.1 规范化7.2 依赖7.3 冗余与更新异常7.4 关系的分类7.5 反规范化第7章数据分析DBAB7.1 规范化n通常情况下,一个实体所包含的属性,都是与 该实体有密切联系的,它们从不同的角度反映 了实体的各个特征。那么,在同一个实体内的 各属性间有没有一些特殊的联系呢?n为了便于讨论,在关系数据库理论中,采用关 系模式来描述需要分析的实体。关系模式是关 系的一种静态表示方式,在一定意义上它与表 示一个实体或一个表的结构是相同的。n例如学生(学号,姓名,性别,出生日期,民族,班级号,班级名称)DBAB7.1 规范化n通常,用“依赖”这一概念来描述数据

2、属性间 存在着的联系。当数据属性间的依赖出现不正 常的状况时,冗余和更新异常就会发生。n规范化是一种数据分析技术,该技术组织数据 属性以便它们可以组合起来形成无冗余的、稳 定的、灵活的并具有适应性的关系。n与E-R模型不同,规范化将把工作的重点放在关 系内部的数据属性上,而不在关系间的联系。 规范化的最终目的是解决属性间不合理的依赖 ,避免或减少冗余和更新异常的发生,构建合 理、适用的关系。DBAB7.1 规范化n规范化的工作实际上并不复杂。n最好的办法就是每个关系只有一个主题。n如果某个关系的主题有两个或多个,就应该把 它分解成多个关系,使得每个关系都只有一个 主题。DBAB7.2 依赖n数

3、据依赖表示数据间存在的一种限制或制 约关系。n在确定实体时,总是把一些相关的数据项 定义为该实体的属性。这里的“相关”可 以从不同层面上来理解,一是指数据与实 体的主题具有业务意义上的关联,二是数 据项之间存在某种意义上的关联。DBAB7.2 依赖n例如n“学生”实体具有这样一些属性:学号、姓名、性 别、出生日期、民族、政治面貌、专业、班级,等 等。n可以看出,这些属性从不同的角度描述了学生的多 种特征,它们的出现是与学生相关的。可以发现大 多数属性值都与学号有关系。当学号不同的时候, 相应姓名、性别、出生日期等值将是不同的。n如果学号是主键,每指定一个学号就将找到惟一一 个学生的姓名、性别、

4、出生日期。可以看出姓名、 性别、出生日期等值的确定是受学号直接影响的。DBAB7.2.1 函数依赖n函数依赖是属性之间的一种联系,假设给定了 一个属性的值,就可以获得或查知另一属性的 值。n学生(学号,姓名,性别,身份证号,民族,专业 ,班级),其中,以学号属性为主键。n表中的“学号”、“身份证号”属性,可以决定其 他属性的值,而其他属性则没有这种特点。通常, 把可以决定其他属性的属性称为决定因素。n如果属性X的值决定属性Y 的值,那么属性Y函数依赖于 属性X。也就是说,如果知道X 的值,就可以获得Y的 值。函数依赖可记为:XY。DBAB7.2.1 函数依赖n上例中存在两个函数依赖,即:n学号

5、(姓名,性别,身份证号,民族,专业,班 级);n身份证号(姓名,性别,学号,民族,专业,班 级)。学号姓名性别身份证号民族专业班级图 7.1 学生依赖关系图DBAB7.2.1 函数依赖n考试成绩(学号,课程,成绩)n学号或课程不能单独决定成绩n学号和课程共同决定成绩n本例的函数依赖可记为:(学号,课程)成绩学号课程成绩图7.2 成绩依赖关系图DBAB7.2.1 函数依赖n有时决定因子也可能不是主键。学号姓名性别项目号项目名称图 7.3 学生体育活动依赖关系图DBAB7.2.2 部分依赖n当使用多个属性作为关系的复合主键时,属性 间除了存在以完整主键为基础的依赖关系外, 还有可能出现一种仅以主键

6、的一部分为基础的 依赖关系,这种依赖关系称为部分依赖。药品供应(药品号,供应商号,品名,规格,单位,供 应商名称,供应商地址,供应商电话)图7.5药品供应依赖关系图药品号供应商号品名规格单位供应商名称供应商地址供应商电话DBAB7.2.2 部分依赖n存在部分依赖现象的关系是不合理的,并且会在 数据处理时引起冗余、更新异常等诸多问题,应 该加以解决。供应商药品图7.6 药品供应ER图采购供应药品图7.7 改进后的药品供应ER图DBAB7.2.2 部分依赖n为了解决可能出现的异常而将一个有问题的关系 分解成二个或多个关系的方法,称为模式分解。n完成模式分解后,总是会得到多于原数目的新关 系。n药品

7、供应(药品号,供应商号,药品品名,药品规格 ,药品单位,供应商名称,供应商地址,供应商电话 )。n药品(药品号,药品名称,药品规格,药品单位)n供应商(供应商号,供应商名称,供应商地址,供应 商电话)n药品采购(药品号,供应商号)DBAB7.2.3 传递依赖n在数学上,相等具有传递性。即,如果A=B,B=C,则A=C。n在函数依赖中,也有类似的传递存在,即:若X决定Y(反之不可),而Y能决定Z,则X就能决定Z,这就是传递依赖。DBAB7.2.3 传递依赖n创建一个打算用来存储病人挂号的情况的表,在该表中 除病人挂号的基本数据外,出于管理和统计需要,表中 还包括挂号涉及到的科室,以及接诊医生的数

8、据。图7.9门诊挂号依赖关系图挂号单号日期姓名性别年龄医生号医生姓名医生性别职称科室号科室名称科室负责人科室电话图 7.8 门诊挂号关系DBAB7.2.3 传递依赖n观察该关系的结构后,会发现存在这样的问题 :n如果一位医生每天要接诊30位病人,他的信息每天会 重复存储30次;n某个科室某天有400位病人挂号,科室的信息将在这 400条记录中重复出现;n如果某医生没有接待过病人,该医生的信息将不会 存在;n如果某科室无人挂号,该科室的信息也将不会存在;n刚调入本院的医生信息存放在哪里?n新成立的科室的信息放在哪里?DBAB7.2.3 传递依赖n观察该关系的结构后,会发现存在这样的问题 :n如果

9、一位医生每天要接诊30位病人,他的信息每天会 重复存储30次;n某个科室某天有400位病人挂号,科室的信息将在这 400条记录中重复出现;n如果某医生没有接待过病人,该医生的信息将不会 存在;n如果某科室无人挂号,该科室的信息也将不会存在;n刚调入本院的医生信息存放在哪里?n新成立的科室的信息放在哪里?DBAB7.2.3 传递依赖n该关系的结构存在着多个传递依赖:n挂号单号医生号,医生号科室号。n挂号单号医生号,医生号(医生姓名,医生性 别,职称)。n医生号科室号,科室号(科室名称,科室负责 人,科室电话)。n存在传递依赖,就存在冗余和更新异常,应对 所存在的传递依赖加以解决,解决传递依赖方

10、法还是模式分解。DBAB7.2.3 传递依赖n把当前关系模式里的在传递依赖中充当低层次 的决定因素的属性,及函数依赖于它的那些属 性分离出来组成新的关系模式。n为了维持分离出来的关系与原关系的联系,可 在原关系中保留该决定因素,即用它作为外 键。DBAB7.3 冗余与更新异常n如果关系中数据属性间出现了部分依赖或传递 依赖,就会引起数据的冗余。n由于存在数据冗余,当对数据进行更新时就会 有更新异常发生。n对于存在此类问题的关系应予以解决,方法是 模式分解。DBAB7.3.1 冗余n部分依赖和传递依赖的存在意味着可能存在数 据冗余。n数据冗余的存在,将导致以下这样一些的问题 :n首先,在一个表中

11、保存了大量的重复数据,这些数 据将占用一定数量的存储空间,造成浪费,并且影 响处理速度;n其次,如果要更新一项数据,就必须同时更新表中 的所有具有相同意义的值。n例如,若挂号单中不仅包含医生号也含有医生姓名,则当 医生姓名被修改时,更新将针对挂号单中所有与指定医生 号的记录进行。否则,就会出现医生号与医生姓名不一致 的情况。DBAB7.3.1 冗余n解决了不良的依赖之后,总会比开始时多出一 些关系。n各个关系之间通过在子关系中放置的父关系的 主键作为外键来建立联系。n当一个子关系与多个父关系有联系,在这个子 关系可以有多个外键。n如果主键不改,放在子关系中的外键值也不会 改动。当父关系中非键属

12、性发生变化时,只需 在父表中执行更新操作,与子表毫不相干。DBAB7.3.2 更新异常n如果出现了一个实体的事实的增加受制于另一 个实体的某个事实的情况,就是出现了插入异 常。换句话来说,插入异常就是一个实体的事 实直到有了另外一个实体的事实时才能插入的 现象。n职工(职工编号,姓名,性别,部门编号,部门名称,部门负 责人)n假设该公司有1000名职工,12个部门,每个职工只能属于一个 部门。n如果公司根据业务的发展成立了新部门,但还没有决定让哪些 职工加入该部门。这时,会尴尬地发现这个新部门的信息是不 能形成新记录并插入到表中的。因为,新记录中的职工编号不 能为空!DBAB7.3.2 更新异

13、常n删除一个实体的事实的同时,不在意地删除了 关于另一个实体的事实叫做删除异常。n还有一种发生在数据修改时的更新异常。如果 一个部门的负责人更换了,而这个部门有130名 职工,这就意味着必须更新在这130条职工记录 中存储着的负责人数据。如果有些记录被漏掉 了,没有更新,就将出现同一部门的负责人信 息不一致的情况。DBAB7.3.2 更新异常n删除一个实体的事实的同时,不在意地删除了 关于另一个实体的事实叫做删除异常。n还有一种发生在数据修改时的更新异常。如果 一个部门的负责人更换了,而这个部门有130名 职工,这就意味着必须更新在这130条职工记录 中存储着的负责人数据。如果有些记录被漏掉

14、了,没有更新,就将出现同一部门的负责人信 息不一致的情况。n产生更新异常的原因是关系模式设计的不好, 关系中存在有不良的函数依赖。DBAB7.3.2 更新异常n解决更新异常的方法也是对关系进行分解。n如果按职工、部门两个主题将原来的一个关系分解 成两个关系,该例中的更新异常的情况就会自动消 失。分解后的关系为:n部门(部门编号,部门名称,部门负责人)n职工(职工编号,姓名,性别,部门编号)n可以使用参照完整性约束来控制职工关系中的部门 编号必须是某个存在于部门关系中的主键值。DBAB7.4 关系的分类n关系可以根据其中易出现的更新异常的类型进 行分类。n一个关系如果符合某个范式的要求,就可以说

15、 该关系在某范式中。这些范式是嵌套的,就是 说属于某个范式的关系也属于之前的范式。n所谓“第几范式”,是表示关系的某一种级 别。一个低一级范式的关系模式,通过模式分 解可以转换为若干个高一级范式的关系模式的 集合,这个过程就是规范化的具体工作内容。DBAB7.4 关系的分类第一范式(1NF) 第二范式(2NF) 第三范式(3NF) Boyce-Cood范式 (BCNF) 第四范式(4NF) 第五范式(5NF)DBAB7.4.1 第一范式n一个表要成为关系必须遵守以下规则:n表的每一格必须是单值的,数组和重复的组都不能 作为值;n任意一列(属性)的所有条目都必须是同一类型的 ,每一列都有惟一的名

16、字,但列在表中的顺序是没 有意义的;n表中任意两行(元组)不能相同,行的顺序是没有 意义的。n任何符合关系定义的数据表都在第一范式中。n从实体的角度来描述,就是如果所有属性对于 实体的单个实例都只具有一个值,则这个实体 是第一范式的。DBAB7.4.1 第一范式出版社号出版社名称图书CBS01电子工业出版社数据库原理、JAVA程序设计、数据结构、CBS02清华大学出版社算法设计、操作系统、组合数学、CBS03国防科技出版社通信系统概论、网络安全、电子商务概论、CBS08机械工业出版社微机原理、数字信号处理、计量经济学、解决的办法就是分解解决的办法就是分解。 根据根据需要把一个关系分解成两个关系需要把一个关系分解成两个关系:出版社出版社(出版社号出版社号,出版社名称),出版社名称)图书图书(书号书号,书名,书名,出版社号出版社号)由于该属性为多值,该表不在1NFDBAB7.4.2 第二范式n如果一个关系的所有非键属性都依赖于整个主 键,那么该关系就属于第二范式。n即第二范式中不存在部分依赖。根据这一定义 ,每个以单个属性作

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号