数据库系统概论的范式转换问题

一、一个关系模式的码的求解方法

求候选码的简单方法方法:
(1)如果有属性不在函数依赖集中出现,那么它必须包含在候选码中;
(2)如果有属性不在函数依赖集中任何函数依赖的右边出现,那么它必须包含在候选码中;
(3)如果有属性只在函数依赖集的左边出现,则该属性一定包含在候选码中。
(4)如果有属性或属性组能唯一标识元组,则它就是候选码;

之后对于根据上述方法剔除和加入的key进行组合判断,即将已经选出来的key和其余剩下的属性进行一一组合,然后判断即可

例题:

(1)R<U,F>,U=(A,B,C,D,E,G),F={AB-->C,CD-->E,E-->A.A-->G},求候选码?
  因G只在右边出现,所以G一定不属于候选码;

而B,D只在左边出现,所以B,D一定属于候选码;

BD的闭包还是BD,则对BD进行组合,除了G以外,BD可以跟A,C,E进行组合

先看ABD  ABD本身自包ABD,而AB-->C,CD-->E,A-->G,所以ABD的闭包为ABDCEG=U

再看BDC  CD-->E,E-->A,A-->G,BDC本身自包,所以BDC的闭包为BDCEAG=U

  最后看BDE  E-->A,A-->G,AB-->C,BDE本身自包,所以BDE的闭包为BDEAGC=U

  因为(ABD)、(BCD)、(BDE)的闭包都是ABCDEG所以本问题的候选码有3个分别是ABC、BCD和BDE

二、转换为2nf的方法

这个一般画图就能解决,只要把非主属性对key的部分依赖的部分隔离为一个新的关系就好了。

三、转换为3nf的方法(这里直接写保持依赖and无损分解的转换方法)

1.求解最小依赖集(对每一个依赖关系逐一去掉,判断去掉这个依赖是否对整个依赖集有影响),直接上题

例1:关系模式R<U,F>,其中U={C,T,H,R,S,G},
F={CS→G,C→T,TH→R,HR→C,HS→R},将其分解成3NF并保持函数依赖。
解:根据算法进行求解     
(一)计算F的最小函数依赖集
      ① 利用分解规则,将所有的函数依赖变成右边都是单个属性的函数依赖。由于F的所有函数依赖的右边都是单个属性,故不用分解。
      ② 去掉F中多余的函数依赖
      A.设CS→G为冗余的函数依赖,则去掉CS→G,得:
      F1={C→T,TH→R,HR→C,HS→R}
      计算(CS)F1+:
      设X(0)=CS
      计算X(1):扫描F1中各个函数依赖,找到左部为CS或CS子集的函数依赖,找到一个C→T函数依赖。故有X(1)=X(0)∪T=CST。
      计算X(2):扫描F1中的各个函数依赖,找到左部为CST或CST子集的函数依赖,没有找到任何函数依赖。故有X(2)=X(1)。算法终止。
      (CS)F1+= CST不包含G,故CS→G不是冗余的函数依赖,不能从F1中去掉。
      B.设C→T为冗余的函数依赖,则去掉C→T,得:
      F2={CS→G,TH→R,HR→C,HS→R}
      计算(C)F2+:
      设X(0)=C
      计算X(1):扫描F2中的各个函数依赖,没有找到左部为C的函数依赖。故有X(1)=X(0)。算法终止。故C→T不是冗余的函数依赖,不能从F2中去掉。
      C.设TH→R为冗余的函数依赖,则去掉TH→R,得:
      F3={CS→G,C→T,HR→C,HS→R}
      计算(TH)F3+:
      设X(0)=TH
      计算X(1):扫描F3中的各个函数依赖,没有找到左部为TH或TH子集的函数依赖。故有X(1)=X(0)。算法终止。故TH→R不是冗余的函数依赖,不能从F3中去掉。
      D.设HR→C为冗余的函数依赖,则去掉HR→C,得:
      F4={CS→G,C→T,TH→R,HS→R}
      计算(HR)F4+:
      设X(0)=HR
      计算X(1):扫描F4中的各个函数依赖,没有找到左部为HR或HR子集的函数依赖。故有X(1)=X(0)。算法终止。故HR→C不是冗余的函数依赖,不能从F4中去掉。
      E.设HS→R为冗余的函数依赖,则去掉HS→R,得:
      F5={CS→G,C→T,TH→R,HR→C}
      计算(HS)F5+:
      设X(0)=HS
      计算X(1):扫描F5中的各个函数依赖,没有找到左部为HS或HS子集的函数依赖。故有X(1)=X(0)。算法终止。故HS→R不是冗余的函数依赖,不能从F5中去掉。即:F5={CS→G,C→T,TH→R,HR→C,HS→R}
      ③ 去掉F5中各函数依赖左边多余的属性(只检查左部不是单个属性的函数依赖),没有发现左边有多余属性的函数依赖。
故最小函数依赖集为:F={CS→G,C→T,TH→R,HR→C,HS→R}

2.对于最小依赖集里的依赖,若存在两侧均未出现的属性,则将这些属性划分为一个集合

3.如果要求连接成无损,则直接再添加一个候选码

已知R(ABCDE), F={A ->D,E->D,D->B,BC->D,DC->A}求保持函数依赖的3NF分解,和具有无损连接性及保持函数依赖的3NF分解

第一步:保函依赖分解题,先求最小依赖集。先求出R的最小依赖集,可得F={A ->D,E->D,D->B,BC->D,DC->A}

第二步:依赖两侧未出现,分成子集放一边,剩余依赖变子集。首先可以发现没有不出现在两侧的元素,然后我们将各依赖分别划分为子集得{AD} {ED} {DB} {BCD} {DCA},即为所求保持函数依赖的3NF分解

第三步:若要连接成无损,再添候选做子集。找到R的一个候选码,所谓候选码即能决定整个关系的,我们通过找未出现在依赖右边的和两侧均为出现的元素即可求得,可以发现C E未出现在右边,因此候选码为{CE}。故所求具有无损连接性及保持函数依赖的3NF分解为{AD} {ED} {DB} {BCD} {DCA} {CE}

 三、转BCNF

将关系模式R<U,F>分解为一个BCNF的基本步骤是

1).求出候选关键字,检查R中关系模式是否符合BCNF,若都符合输出即可

2).查看每个关系模式左部是否含有候选关键字,若R中有关系模式S不符合BCNF,则必有X->A属于F+,且X不是S的候选关键字。因为XA不包含S的全部属性,把S分为{S1,S2},其中S1=XA,S2=(S-A)X,分别计算其最小函数依赖集,并将{S1,S2}代替S代入第一步中。

四、综合例题

例2.关系模式R<U,F>,有U={A,B,C,D,E,F,G},F={B->G,CE->B,C->A,CE->G,B->D,C->D},

(1)将关系模式分解为3NF且保持函数依赖

(2)将关系模式分解为BCNF

将关系模式分解为3NF且保持函数依赖:

假设B->G冗余,则(B)+=BD,没有G故不冗余。

假设CE->B冗余,则(CE)+=CEGDA,没有B故不冗余。

假设C->A冗余,则(C)+=CD,故不冗余。

一次可以得到最小函数依赖集Fm={B->G,CE->B,C->A,B->D,C->D}。

之后将左部相同的组合并成一个组有:(BDG),(CEB),(CAD).

所以将关系模式分解为3NF且保持函数依赖的结果为:(BDG),(CEB),(CAD).

将关系模式分解为BCNF:

首先求出关系模式的候选关键字(CE)

因为Fm={B->G,CE->B,C->A,B->D,C->D}。

开始找左部不包含CE的关系模式,第一个为B->G,

将其分为R1={(BG),{B->G}}与R2={(ABCDE),{CE->B,C->A,B->D,C->D}}。注意G不能出现在R2中,要根据与G相关的关系模式进行替代。

求R1与R2的最小函数依赖集,步骤均是按照上述算法严格进行的。

R1,R2最小函数依赖集是其本身。

然后再进行分解,R1符合BCNF,继续分解R2:

B->D,左部不含码,于是分解为R2={(BD),{B->D}},R3={(ABCE),{CE->B,C->A}}。

R2,R3的最小函数依赖集均是其本身。

于是BCNF分解的最后结果为{(BG),(BD),(ABCE)}。

原文地址:https://www.cnblogs.com/buaawtt/p/11069910.html

时间: 2024-10-15 06:41:00

数据库系统概论的范式转换问题的相关文章

数据库系统概论(第四版)习题解答

数据库系统概论(第四版) 第1章 绪论 1 .试述数据.数据库.数据库系统.数据库管理系统的概念. 答:( l )数据( Data ) :描述事物的符号记录称为数据.数据的种类有数字.文字.图形.图像.声音.正文等.数据与其语义是不可分的.解析在现代计算机系统中数据的概念是广义的.早期的计算机系统主要用于科学计算,处理的数据是整数.实数.浮点数等传统数学中的数据.现代计算机能存储和处理的对象十分广泛,表示这些对象的数据也越来越复杂.数据与其语义是不可分的. 500 这个数字可以表示一件物品的价格

《数据库系统概论》--目录

<数据库系统概论>  第5版 <数据库系统概论>--1.绪论 <数据库系统概论>--2.关系操作 <数据库系统概论> -- 3.1SQL概论和DDL

数据库系统概论学习笔记-第一章绪论

数据库系统概论-第一章绪论 写在前面:寒假来临,除却走亲戚和同学聚餐,王者荣耀等游戏上分花销一点时间之外,自认为要花一点时间学习数据库和Android,以此来为下学期和共建项目打下一丢丢的基础.为了鞭策自己,定了一个小目标( 一个亿),每个两至三天我会发表一篇数据库或Android学习笔记.还是那句话你的才华撑不住你的野心时,那就静下来学习吧 . 数据库系统概述 数据库常用的术语和基本概念 数据库基本概念 数据(Data) 数据是数据库中存储的基本对象,可以对数据做如下定义:描述事物的符号记录称

《数据库系统概论(第5版)》课后习答案 王珊、萨师煊编著版 课后题解析 高等教育出版社出版 答

<数据库系统概论(第5版)>课后习答案 王珊.萨师煊编著版 课后题解析 高等教育出版社出版 答案与解析 <数据库系统概论(第5版)> 王珊.萨师煊编著版 第二篇 第1章 课后答案与解析 完整答案在页面最下方 前言第一篇 基 础 篇 课后习题答案与解析第1章 绪论 课后习题答案与解析1.1 数据库系统概述1.2 数据模型1.3 数据库系统的结构1.4 数据库系统的组成1.5 小结习题本章参考文献第2章 关系数据库 课后习题答案与解析2.1 关系数据结构及形式化定义2.2 关系操作2.

数据库系统概论学习笔记(一)

时间:第一周     年级:大三    学生:南通大学网络工程何季生 2017.9.14 一.绪论 1.1数据库系统概述 1.数据 描述事物的符号记录称为数据.数据的含义称为数据的语义,数据与其语义是不可分的.例如93是一个数据,他可以是一位同学的成绩,也可以是他的体重,还可能是一个班的人数. 2.数据库 数据库顾名思义就是存放数据的仓库.严格来讲,数据是长期储存在计算机内,有组织的,可共享的大量数据的集合.数据库中的数据按一定的数据模型组织.描述和储存,具有较小的亢余度(redundancy)

数据库系统概论 复习笔记。

大学课本复习笔记,知识点总结. 2012-08-15 数据模型中的 型,Type, 学号,姓名.... 值,Value, 0001, Ender..... 数据库系统的三级模式,两级映射, 外模式,External Schema/Sub Schema, 是用户能看得到的直接使用的.一个数据库有多个外模式,应用于用户的不同需求.但每个应用程序只能使用一个外模式.保证安全.每个用户只能访问对应的外模式. 模式,Schema, 是数据库中全体数据的逻辑结构和特征的描述,只涉及 型Type的描述.模式的

【数据库系统概论】绪论----数据库系统概论(三)

1.2.7 关系模型 关系模型是目前最重要的一种数据模型. 一.关系模型的数据结构 关系模型是由一组关系组成的,每个关系的数据结构是一张规范化的二维表. 关系:一个关系通常对应一张表 元组:表中一行即为一个元组 属性:一列 码:某个属性组可以唯一确定一个元组 域:属性的取值范围 分量:元组中的一个属性值 关系模式:用表模型来描述:关系名(属性1,属性2,...属性n) 关系模型要求必须是规范的,即要求关系满足一定的规范要求(范式要求). 二.关系数据模型的操纵与完整性约束 操纵主要有:插入.删除

《数据库系统概论》相关名词解释

数据:用于描述事物的符号记录,数据与其语义是不可分的 数据库:是长期存储在计算机内的.有组织的.可共享的数据集合 数据库系统:是计算机系统引入数据库后的一个系统,由数据库.数据库管理系统.应用系统.管理员.用户[五个部分]组成.数据库系统的核心是数据库管理系统,基础是数据模型.数据库具有数据结构化.共享性高.冗余度低.易扩充的特点 数据库管理系统:是位于用户与操作系统之间的一层系统,用于高效地定义.存取.运行管理.建立维护数据.常见的有Oracle公司的mysql,Microsoft公司的SQL

数据库系统概论【设计与应用开发篇】

一.关系数据理论 作为一个二维表,关系要符合一个最基本的条件:每一个分量必须是不可分割的数据项.满足了这个条件的关系模式就属于第一范式(1NF) 数据依赖是一个关系内部属性与属性之间的一种约束关系.这种关系是通过属性间值得相等与否体现出来的数据间相关联系.包括:函数依赖(Functional Dependency,FD)和多值依赖(Multi-Valued Dependency,MVD). 关系数据库规范化过程主要克服数据库逻辑结构中的问题:      (1).数据冗余     (2).更新异常