回到目录
2.5.4.1 规范化问题的提出
2.5.4.1.1 规范化理论的重要内容 关系的规范化理论最早是由关系的创始人 E.F.Cold提出的,后经许多专家学者对关系理论作
了深 入的研究和发展,形成了一整套有关关系设计的理论。 在该理论出现以前,层次和网状的设计只是遵循其 模型本身固有的原则,而无具体的理论依据可言,因而带有盲 目性,可能在以后的运行和使用中发生许多预想不到的问题。 在关系系统中,关系模型包括一组关系模式,并且 各个关系不是完全孤立的。如何设计一个合适的关系系 统,关键是关系模式的设计,一个好的关系模式 应该包括多少关系模式,而每一个关系模式又应该包括哪些属 性,又如何将这些相互关联的关系模式组建成一个适合的关系 模型,这些工作决定了整个系统运行的效率,也是系统成败的 关键所在,所以必须在关系的规范化理论的指导下逐步 完成。
关系的规范化理论主要包括三个方面的内容:函数 依赖、范式(Normal Form)和模式设计。其中函数依赖起着 核心作用,是模式分解和模式设计的基础,范式是模式分解的 标准。 2.5.4.1.2 不合理的关系模式存在的存储异常问题 的逻辑设计为什么要遵循一定的规范化理论? 什么是好的关系模式? 某些不好的关系模式可能导致哪些问题? 下面通过例子对这些问题进行分析。
[例1]要求设计教学管理,其关系模式,SCD如下: SCD(SNO,SN,AGE,DEPT,MN,CNO,SCORE) 其中 SNO表示学生学号, SN表示学生姓名, AGE表示学生年龄, DEPT表示学生所在系别, MN表示系主任姓名, CNO表示课程号, SCORE表示成绩。
根据实际情况,这些数据有以下语义规定:
(1)
一个系有若干个学生,但一个学生只属于一个系;
(2) 一个系只有一名系主任,但一个系主任可以同时兼几个系的系主任;
(3) 一个学生可以选修多门功课,每门课程可被若干个学生选修; (4) 每个学生学习的课程有一个成绩。 在此关系模式中填入一部分具体的数据,则可得到SCD 关系模式的实例,即一个教学管理,如下图所示。
SNO S1 SN 赵军 AGE 17 DEPT 计算机 MN 刘军航 CNO C1 SCORE 90
S1
S2 S2 S2 S2 S3 S3 S3 S4
赵军
钱进 钱进 钱进 钱进 张伟 张伟 张伟 李平
17
18 18 18 18 20 20 20 20
计算机
信息 信息 信息 信息 信息 信息 信息 自动化
刘军航
王平 王平 王平 王平 王平 王平 王平 刘军航
C2
C5 C6 C7 C5 C1 C2 C1
85
57 80 70 0 70 85 93
根据上述的语义规定并分析以上关系中的数据,我们可以 看出,(SNO,CNO)属性的组合能唯一标识一个元组,所以 (SNO,CNO)是该关系模式的主键。但在进行的操作 时,会出现以下几方面的问题。
(1)数据冗
余。每个系名和系主任的名字存储的次数等于该系的学生人 数乘以每个学生选修的课程,同时学生的姓名、年龄也都要重复存储多次, 数据的冗余度很大,浪费了存储空间。 (2)插入异常。如果某个新系没有招生,尚无学生时,则系名和系主任的 信息无法插入到中。因为在这个关系模式中,(SNO,CNO)是主 键。根据关系的实体完整性约束,主键的值不能为空,而这时没有学生, SNO和CNO均无值,因此不能进行插入操作,另外,当某个学生尚未选课, 即CNO未知,实体完整性约束还对规定,主键的值不能部分为空,同样也 不能进行插入操作。 (3)删除异常。当某系学生全部毕业而没有招生后时,要删除全部学生 的距离,这时系名、系主任也随之删除,而现实总这个系仍然存在,但在 中却无法找到该系的信息。另外,如果某个学生不再选修C1 课程, 本应该只删去C1,但C1是主键的一部分,为保证实体完整性,必须将整 个元组一起删掉,这样,有关学生的所有句路的其他信息也随之丢失。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-35948-8.html
不可以咩
日本国土只有中国三十分之一
人家10多20年的东西拿出来照样用