∪ ∪ ∪
1NF 2NF 3NF 4NF 5NF 各种范式之间的关系
一个低一级范式的关系模式,通过模式分解可以转换为若 干个高一级范式的关系模式的集合,这种过程叫做规范化。 3.第一范式
定义 设R是一个关系模式,如果R中每一个属性A的值域中的每 一个值都是不可分解的,则称R属于第一范式,记作R∈1NF。 【例】有一关系模式SC1(学号,课程),学生和选修课程的记录如下 表所示
学生选修课程的记录 学号 007501 课程 (程序设计,操作系统,)
007101
(电工学,继电保护)
在上述模式中,课程属性值是可分解的,因此SC1∈ 1NF。
在关系模式SC1中存在两个问题: (1)更新操作困难。如果学号为007501的学生想把选修课程改为{电 工学,继电保护},则DBMS在处理上将面临二义性问题:是修改第一 个元组的课程属性值,还是修改第一个元组的学号属性值? (2)增加属性存在问题。若增加一个属性“ 成绩 ”,那么该属性值 表达的含义不清。 此问题应这样解决:将课程属性的属性值拆开,形成如下关系模式 SC2(学号,课程)(见下表所示)。
学号 007501
007501 显然,SC2∈1NF 007501 007101 007101
解决关系模式SC1问题的方案
课程 程序设计
操作系统 电工学 继电保护
4.第二范式
定义 如果R∈1NF,且每一个非主属性完全函数依赖于主键则R∈2NF。 【例】有一关系模式SGD(学号,姓名,系名称,系负责人,课程号, 成绩) 在该模式中,有以下函数依赖存在: F (学号,课程号)P 成绩 学号→姓名 (学号,课程号)P 姓名 学号→系名称 (学号,课程号)P 系名称 学号→系负责人 (学号,课程号) 系负责人 系名称→系负责人 通过分析及由主键的定义可知SGD中的主键为(学号,课程号), 因此,姓名,系名称,系负责人,成绩均是非主属性,而非主属性中 只有成绩是完全依赖于主键,其他属性是部分函数依赖于主键,因此, 关系模式SGD不符合2NF定义,即SGD∈2NF。 经过以上分析,可以得到两个结论: (1)从1NF关系中消除非主属性对关系键的部分函数依赖,则可得到 2NF关系。 (2)如果R的关系键为单属性,或R的全体属性均为主属性,则R∈2NF。
一个关系模式R不属于2NF,就会产生以下问题:
(1)插入异常 (2)删除异常 (3)修改复杂
详
细内容参见本书相关章节
分析上面的例子可知,问题的关键在于非主属性有两种,一种对 主键完全函数依赖,比如成绩;另一种对主键部分函数依赖,比如姓 名、系名称和系负责人。对于第二种情况,如果进行关系模式分解, 消除非主属性对主键的部分依赖,就可以解决关系模式SGD∈ 2NF存 在的3个问题。 下面将SGD分解为两个关系模式: SG(学号,课程名,成绩) SD(学号,姓名,系名称,系负责人) SG的主键是(学号,课程号),SD的主键是学号,从前面的函 数依赖分析中得知,关系模式SG和 SD的非主属性对主键都是完全函 数依赖,因此,SG∈2NF,SD∈2NF。
5.第三范式
定义 如果R∈2NF,且每一个非主属性不传递函数依赖于主键,则 R∈3NF。 【例】 考察上例中的两个关系模式SG和SD。显然,SG中不存在传 递函 数依赖,因此,SG∈3NF,下面分析SD中的函数依赖: 学号→系名称 系名称→学号 系名称→系负责人 由传递函数依赖的定义可得: 学号
T
系负责人
∈ 因此SD 3NF
一个关系模式R不属于3NF,同样会产生类似于上节的问题。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-35948-12.html
其实
没有看懂
#fx_4walls##f