(1)插入异常 (2)删除异常 (3)修改复杂
详细内容参见本书相关章节
解决上述问题的办法是将关系模式SD分解,消除关系模式SD中存 在的传递函数依赖。
下面将SD分解为两个关系模式: SDN(学号,姓名,系名称) DM(系名称,系负责人) SDN的主键是学号,DM的主键是系名称。显然,在这两上关系模 式中既不存在部分函数依赖,也不存在传递函数依赖,因此SDN∈3NF, DM∈2NF。
6.BCNF
BCNF(Boyce Codd Normal Form)是由Boyce与Codd提出的。它 比3NF更进了一步,是修正的第三范式,有时也称为扩充的第三范式。 定义 关系模式R∈1NF,若X→Y且Y X时X必含有主键,则 R∈BCNF。由于3NF不能很好地处理含有多个候选键和候选键是组合 项的情况,因此人们定义了一个更强的范式BCNF,一个满足BCNF的 关系模式有以下特点: (1)所有非主属性对每一个主键都是完全函数依赖; (2)所有的主属性对每一个不包含它的主键也是完全函数依赖; (3)没有任何属性完全函数依赖于非主键的任何一组属性。
∪
可以证明,若R∈BCNF,则R∈3NF,但是若R∈3NF,则R不一 定属于BCNF。由于R∈BCNF,按定义排除了任何属性对主键的部分 函数依赖和传递函数依赖,所以R∈3NF。下面用几个例子说明属于 3NF的关系模式不一定属于BCNF。 考察关系模式SG(学号,课程号,成绩),它只有一个主键(学 号,课程号),并且没有任何属性对(学号,课程号)部分函数依赖 或传
递函数依赖,所以SG∈3NF。同时,SG中(学号,课程号)是 唯一的决定因素,所以SG∈BCNF。 在关系模式SDN(学号,姓名,系名称)中,假设姓名具有唯一性 即没有同名人,那么SDN就有两个主键,这两个主键都由单个属性组 成,其他属性不存在对主键的传递函数依赖与部分函数依赖,所以 SDN∈3NF,同时SDN中除学号,姓名之外没有其他决定因素,所以 SDN也属于BCNF。 【例】有一关系模式SCT(学生,课程,教师),在该关系模式中, 存在如下对应关系: (1)对于每门课,每个学生的授课教师只有一位; (2)每位教师只讲授一门课; (3)每门课可由不同教师讲授。
由语义可得到如下函数依赖: (学生,课程)→教师 教师→课程 (学生,教师)→课程 这些对应关系可用右图表示。
学生
教师 课程 学生
课程
教师 关系模式SCT的函数依赖
显然,这个关系模式有两个候选键(学生,课程)和(课程,名 次),并且没有非主属性对主键的部分函数依赖或传递函数依赖,因 此,SCP∈3NF。另外,除(学生,课程)和(课程,名次)之外没有 其他决定因素,所以,SCP∈BCNF。 不满足BCNF的关系模式同样存在着更新异常。假设在SCT(学生, 课程,教师)中,存在这样的元组(王峰,计算机网络,孙效),当删 除信息“王峰学习计算机网络课程”时,将同时失去“教师孙效主讲计 算机网络课程”这一信息。 为什么会产生更新异常呢?因为教师是决定因素,但却不是候选 键。如何解决这个问题呢?仍然采用关系模式分解的办法。 如果将SCT分解为如下两个关系模式: SC(学生,课程) TC(教师,课程) 则SC∈BCNF,TC∈BCNF,这样分解之后解决了SCT中存在的更新 异常问题 一个模式中的关系模式如果都属于BCNF,那么在函数依 赖范畴内,它已消除了插入和删除异常。 3NF 的“不彻底性 ”表现在 存在主属性对主键的部分函数依赖或传递函数依赖。
上一
函数依赖和多值依赖是两种最重要的数据依赖。 本书只介绍函数依赖,多值依赖不属于本科教学范畴, 这里不作介绍。如果只考虑函数依赖,则属于BCNF 的关 系模式其规范化程度是最高的。 规范化的基本思想是逐步消除数据依赖中不合适的部 分,使模式中的各关系模式达到某种程序的分离, 让一个关系描述一个概念或一个实体或实体之间一种联系。 若一个关系描述多于一个的概念时就把这些概念分离出去。 因此,所谓规范实质上是概念的单一化。 在关系中,对关系模式的基本要求是满足第一 范式。这样的关系模式就是合法的、允许的。但是,人们 根据实际情况,可以将关系模式逐步分解达到2NF,3NF, BCNF。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-35948-13.html
虽然我们现在应该在军事上做好最坏的打算
你就不能说让国产手机淘汰美国苹果吗
美舰根本进不了12海里