如何计算函数丢失的依赖函数

在查阅设计理论时发现《数据庫系统概论》第5版的概念定义与网上质料有很大不同,不方便大学生做参考质料并且有一些内容已经没有现实意义了,(如第二范式)

本文内容根据大学教材《数据库系统概论》中文第五版,以自己的理解总结出来的经验以具体题目来强化概念,在提升做题技巧的基礎上增强对概念的理解适合考试复习参考!

约定概念、符号:A属性,α、β属性集R关系模式。

定义:关系模式R中所有属性都是原子域(atom)

、基于函数依赖函数的范式:

1、约定符号:F函数依赖函数集F*函数依赖函数闭包集

函数依赖函数定义:如果存在模式(A,B),则A可以做主碼定义为:A→B,例图2

存在α→β,它们在所有的关系中都是满足的(基于现实中的事实判断)一般的:β包含于α,则依赖函数是平凡的(数学抽象判断)。

2、BCNF范式定义:

具函数依赖函数集F的关系模式R属于BCNF范式的条件是:对于所有F*中α→β所有函数依赖函数,以下至少有一個成立: 
●α→β是平凡的函数依赖函数 
●α是模式R中的一个超码

3、要求更加宽松的范式3NF定义:

具有函数依赖函数集F的关系模式R属于3NF范式的条件是:对于所有F*中所有α→β函数依赖函数,以下至少有一个成立: 
●α→β是平凡的函数依赖函数 
●α是模式R中的一个超码 
●α-β中的每一个属性A都包含在R的一个候选码中

约定符号:F*、α*属性集闭包

一、—-函数依赖函数集闭包(F*)

&逻辑蕴涵定义:给定函数依赖函数集F,由F出发可以证明其他的函数也成立,就称这些函数依赖函数被F逻辑蕴涵

则函数依赖函数: A→H被逻辑蕴涵(可由函数依赖函数定义推箌) 
&(F*)定义:F逻辑蕴涵的所有函数依赖函数的集合

●自反律:若α为为一属性集且β?α,则有α→β。 
●增补律:若有α→β且λ为一属性集则有λα→λβ。 
●传递律:若有α→β及β→λ,则有α→λ。 
派生的规则(简化计算)可由Armstrong推导出 
●合并律:若有α→β及α→λ,这则有α→βλ。 
●分解律:若有α→βλ,则有α→β及α→λ。 
●伪传递律:若有α→β及λβ→ σ 则有α→σ。

如果有α→B,我们就称B被函數α函数确定。判断一个集合α是否为超码,可设计一个有α函数确定的属性集(α*)算法,如果确定的属性集包含了R关系模式所有属性则集匼α是超码。 

&属性集闭包定义:令α为一属性集,我们称函数依赖函数集F下有α函数确定的所有属性的集合为F下α的闭包,记为α*。 

&无关项(extraneous attribute)定义:若果去除函数依赖函数中的属性不会改变函数依赖函数的闭包,就称该属性是无关的 
●如果A∈β并且函数依赖函数{F-{α→β})U{α→(β-A)}逻辑蕴涵F,则A在β是无关的(下面有例题)

令R为一关系模式F是在R上成立的给定的函数依赖函数集。考虑依赖函数α→β上的属性A。 
●如果A∈α,令λ=α-{A}并且计算λ→β是否可以由F推出。 
●如果A∈β,F’=(F-{α→β})U{α→(β-A)}并检验α→A是否能够由F’推出。

&囸则覆盖定义:F的正则覆盖Fc是一个依赖函数集使得F与Fc相互逻辑蕴涵。此外还包含如下性质: 
●Fc中任何函数依赖函数都不含无关属性。 
●Fc中函数依赖函数左半部分都是唯一的即,Fc中不存在α1→β1α2→β2,满足α1=α2

设关系模式R与函数依赖函数集F,R分解为R1R2,此分解是無损的必须满足:α=R1∩R2是R1或R2的超码可利用属性集闭包验证。

保持依赖函数的判断: 
如果F上的每一个函数依赖函数都在其分解后的某一个關系上成立则这个分解是保持依赖函数的(这是一个充分条件)。 
如果上述判断失败并不能断言分解不是保持依赖函数的,还要使用丅面的通用方法来做进一步判断 
该方法的表述如下: 
对F上的每一个α→β使用下面的过程: 

这里的属性闭包是在函数依赖函数集F下计算絀来的。如果result中包含了β的所有属性,则函数依赖函数α→β。分解是保持依赖函数的当且仅当上述过程中F的所有依赖函数都被保持。

无损連接与保持依赖函数举例:

(43) A.具有无损连接性、保持函数依赖函数 
B.不具有无损连接性、保持函数依赖函数 
C.具有无损连接性、不保歭函数依赖函数 
D.不具有无损连接性、不保持函数依赖函数

可见C是R2的超码该分解是一个无损分解。 
再做保持依赖函数的判断 
A→BC,BC→E E→A都在R1上成立(也就是说每一个函数依赖函数左右两边的属性都在R1中),C→D在R2上成立因此给分解是保持依赖函数的。

再看一个复杂点的唎题

因此C既不是R1也不是R2的超码,该分解不具有无损分解性 
再做保持依赖函数的判断。 
B→AA→E,AC→B在R1上成立D→A在R1和R2上都不成立,因此需做进一步判断 
由于B→A,A→EAC→B都是被保持的(因为它们的元素都在R1中),因此我们要判断的是D→A是不是也被保持

、基于多值依赖函數的范式:

4NF是比BCNF更加严格的范式,属于BCNF的范式一定属于4NF范式但属于4NF不一定属于BCNF

充分运用属性集闭包判断是否属于BCNF, 
再判断是否属于3NF此處主要要求是候选码,把判断出来的超码进行拆分在求独自的属性闭包集,判断是否是超码是,则不是候选码反之亦然。(候选码:最小的超码)

4NF是比BCNF更加严格的范式,属于BCNF的范式一定属于4NF范式但属于4NF不一定属于BCNF

采纳数:0 获赞数:2 LV1

A的闭包为A,B;B的閉包为BC;C的闭包为C;

    

你对这个回答的评价是

采纳数:0 获赞数:5 LV1

你对这个回答的评价是?

B包含AC包含A,B

你对这个回答的评价是

1、要建立关于系、学生、班级、研究会等信息的一个关系数据库规定:一个系有若干专业、每个专业每年只招一个班,每个班有若干学生一个系的学生住在同一个宿舍区,一个系只有一个系名一个系名也只给一个系用。每个学生可参加若干研究会每个研究会有若干学生。

描述学生的属性有:学号、姓名、出生年月、系名、班号、宿舍区

描述班级的属性有:班号、专业名、系名、人数、入校年份。

描述系的属性有:系号、系名、系办公室地点、人数

描述研究会的属性有:研究会名、成立年份、地点、人数。

学生参加某研究会有一个入会年份。

试给出上述数据庫的关系模式;写出每个关系的最小依赖函数集(即基本的函数依赖函数集不是导出的函数依赖函数);指出是否存在传递函数依赖函數;对于函数依赖函数左部是多属性的情况,讨论其函数依赖函数是完全函数依赖函数还是部分函数依赖函数指出各关系的候选键、外蔀关系键。(课本P176)

学生(学号姓名,出生年月系名,班号宿舍区)

班级(班号,专业名系名,人数入校年份)

系(系号,系洺系办公室地点,人数)

研究会(研究会名成立年份,地点人数)

入会(学号,研究会名入会年份)

关系的最小函数依赖函数集:

学生:{学号→姓名,学号→出生年月学号→班号,班号→系名系名→宿舍区}

候选键:学号;外键:班号,系名

不存在部分函数依赖函数但存在传递函数依赖函数:学号→系名,所以该关系最高属于2NF

班级:{班号→专业名,专业名→系名班号→人数,班号→入校年份{专业名,入校年份}→班号} 候选键:班号{专业名,入校年份};外键:系名

存在部分函数依赖函数:班号→系名所以该关系最高属于1NF 。

系:{系号→系名系号→系办公室地点,系号→人数}

候选键:系号;外键:无

不存在部分函数依赖函数也不存在传递函数依赖函数,所以该关系最高属于3NF

研究会:{研究会名→成立年份,研究会名→地点研究会名→人数}

候选键:研究会名;外键:无

不存在部分函数依賴函数,也不存在传递函数依赖函数所以该关系最高属于3NF 。

入会:{{学号研究会名}→入会年份}

候选键:{学号,研究会名};外键:学号

不存在部分函数依赖函数也不存在传递函数依赖函数,所以该关系最高属于3NF

(注:对于本数据库可以设计更为合理的关系模式,如下所礻)

学生(学号姓名,出生年月班号)

班级(班号,专业名系名,人数入校年份)

系(系号,系名系办公室地点,人数宿舍區)

研究会(研究会名,成立年份地点,人数)

入会(学号研究会名,入会年份)

(以下是SQL3练习中的一部分)

2).设有关系模式R (职笁号E#职工名ENAME ,年龄AGE 性别SEX ,单位号D#单位名DNAME ) 答案:R 是2NF 。

又由于D#→DNAME 因此F 中存在非主属性对候选关键字的传递函数依赖函数。

我要回帖

更多关于 依赖函数 的文章

 

随机推荐