某学校要建立一个来描述学生的一些情况,由现实世界的 已知事实得到如下对应关系: (1)一个系有若干名学生,一个学生只属于一个系; (2)一个系只有一名负责人; (3)一个学生可以选修多门课程,每门课程有若干学生选修; (4)每个学生学习每一门课程都有一个成绩。 根据上述情况,可以找出如下一组属性: U={学号,姓名,系编号,系名称,系负责人,课程号,课程名称,成绩} 最简单的设计是,采用一个总的关系模式,把所有的属性组合成 一个关系模式,即这个描述学生情况的模式是只有一个关系模 式的集合。形式如下: SA(学号,姓名,系编号,系名称,系负责人,课程号,课程名称,成绩) 在这个关系模式中,存在如下函数依赖: (学号,课程号)→姓名 (学号,课程号)→系编号 (学号,课程号)→系名称 (学号,课程号)→系负责人 (学号,课程号)→课程名称 (学号,课程号)→成绩 由主键的定义可知(学号,课程号)是主键,即学号和课程号可 以唯一地确定一个元组。
由于上述几个问题,该学生模式设计不是一个好设计。 一个好的模式应当不会发生插入和删除异常,冗余尽可能 少。 插入异常和删除异常统称为存储异常。为什么会产生这种存 储异常呢?这是因为这个关系模式中的函数依赖对于关系模式而 言,存在一些不好的性质,这一点将在后面介绍。 现在把这个学生模式改造一下,分成如下4个关系模式: SB(学号,姓名,系编号) DT(系编号,系名称,系负责人) SC(学号,课程名,成绩) C(课程号,课程名称) 这4个关系模式都不会发生存储异常,数据的冗余也得到了控制。 一个关系模式的函数依赖会有哪些不好的性质,如何改造一 个不好的关系模式,这就是规范化理论讨论的内容。
2.关系的规范化 在关系模式的设计中,函数依赖起着重要作用,关系模式设 计的好坏依赖于它的函数依赖是否满足特定的要求。满足特定要 求的模式称为范式(Normal Form)。满足不同程度要求的模式 为不同范式。 关系模型的奠基人E.F.Codd在1971年至1972年间系统地提出 了第一范式( 1NF)、第二范式( 2NF)和第三范式( 3NF)的 概念,讨论了规范化问题。1974年,E.F.Codd和 Boyce 又共同提 出了一个新范式,即BCNF。1976年Fagin 提出第四范式(4NF)。 现在已有人提出第五范式(5NF)。 所谓“第几范式”是表示关系模式的某一种级
别,因此,范 式这个概念可以理解成符合某种级别的关系模式的集合。一般地, 如果R属于第x范式,那么就可以写成R∈xNF。 各种范式之间的关系满足5NF ? 4NF ? 3NF ? 2NF ? 1NF, 如下图所示。
∪
∪ ∪ ∪
1NF 2NF 3NF 4NF 5NF 各种范式之间的关系
一个低一级范式的关系模式,通过模式分解可以转换为若 干个高一级范式的关系模式的集合,这种过程叫做规范化。 3.第一范式
定义 设R是一个关系模式,如果R中每一个属性A的值域中的每 一个值都是不可分解的,则称R属于第一范式,记作R∈1NF。 【例】有一关系模式SC1(学号,课程),学生和选修课程的记录如下 表所示
学生选修课程的记录 学号 007501 课程 (程序设计,操作系统,)
007101
(电工学,继电保护)
在上述模式中,课程属性值是可分解的,因此SC1∈ 1NF。
在关系模式SC1中存在两个问题: (1)更新操作困难。如果学号为007501的学生想把选修课程改为{电 工学,继电保护},则DBMS在处理上将面临二义性问题:是修改第一 个元组的课程属性值,还是修改第一个元组的学号属性值? (2)增加属性存在问题。若增加一个属性“ 成绩 ”,那么该属性值 表达的含义不清。 此问题应这样解决:将课程属性的属性值拆开,形成如下关系模式 SC2(学号,课程)(见下表所示)。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-37193-11.html
实力提升才是最关键的
你赚发了
说明你开始走下坡路了
一箭双雕