首页 > 编程知识 正文

数据库函数依赖例题,数据库中的超键

时间:2023-05-05 08:22:34 阅读:36171 作者:204

一、函数依赖

1 .函数依赖

定义:设r(u )为属性集合U={ A1,A2,An }上的一个关系模型,x,y为u上的两个子集,对于r ) u的任意一个可能的关系r,r中的两组在x中属性值相等,y中的属性。

口语:在某关系r中,属性(组) y的值由属性(组) x的值决定。 另外,在关系r中,如果两个元组的x属性值相同,则可以说这两个元组的y属性值也相同。

为什么被称为函数依赖? 的定义:定义域中的任意x只对应一个y。 属性之间的依存关系:对于相同的x属性值,有y属性值,只对应一个。

本质:函数依赖的本质是反映某个关系中属性之间的制约关系或依赖关系。 函数依赖于数据。

例:1. U={学号、姓名、年龄、专业}

{学号}

{姓名、年龄、专业}

函数依赖分为非平凡函数依赖和平凡函数依赖。 非平凡的函数依赖:是的

但是,但是

被称为

依赖不平凡的函数。 也就是说,x决定y,但y不在x中,这被称为非平凡的函数依赖。 否则就是平凡的函数依赖。

2 .完全函数依赖和部分函数依赖

定义:在关系r(u )中,如果

且对于x任意的照片子集X‘有x’

y称为y的完全函数依赖于x,表示为: 否则,y函数部分依赖于x,标记为。

口语:完全函数依赖是指属性组x的所有属性都可以一起(即完全)决定属性y,不能去除任何属性。 相反,部分函数依赖是指属性组x的一些属性可以确定y,不需要全部。

如果Insight )属性(组) y的一些函数依赖于属性组x,则在属性组x中存在属性)组y的非控制冗馀。 在设计数据库时,必须避免这种情况。 (支持2NF。

例: U={学号、姓名、年龄、班号、班长、班号、成绩}

(学号、课号)。

欧陆

(学号、课号)。

{姓名、年龄}

(学号、课号)。

{成绩}

解释:一个学号决定性别和年龄,一个学号决定成绩。 于是,我

是的

有些函数是依赖的。

3 .传递函数依赖

定义:在r(u )中,如果

而且

据说z传递函数依赖于x。

白字:据说如果x函数确定y,y函数确定z,且y、z不包含在x中,z不包含在y中,y不能确定x,则z传递函数依赖于x。 小心!若

得到

但是,不能说z传递函数依赖于x。

Insight :传递函数依赖具有非控制冗馀性。

例:学生(学校编号、姓名、系编号、系部长) )。

{学号}

{系列号}

{系列号}

{系主任}

{学号}

{系主任}

传达“系部长”依赖“学号”。

图标:

注:上述照片来自哈佛大学战德臣老师的PPT

4 .关于函数依赖的概念

(1) .候补键

定义:将k作为r(u )的属性或属性的组合,如果

中,k称为r(u )上的候选键。

口语:关系r(u )中的属性)组)对于k,当u的完全函数依赖于k时,即k中的所有属性都可以一起决定u时,将k称为r ) u的候补。

(2) .主键

如果有多个候补键,可以选择其中一个候补键作为主键。

(3) .主属性

任意一个候补键中包含的属性称为主属性,其他属性称为非主属性。

(4) .门诊钥匙

r(u )中的属性)组) x是另一关系s ) u而不是r的候选时

的候选键,则称 X 为 R(U) 的外来键,简称外键。

白话:一个关系的外键是另一关系的候选键。

(5). 逻辑蕴含

定义:设 F 是关系 R(U) 中的一个函数依赖集合,X、Y 是 R 的属性子集,如果能从 F 这个函数依赖集合中推导出

,则称 F 逻辑蕴含

,或者说

是 F 的逻辑蕴含。记作

(6). 闭包

定义 :被 F 逻辑蕴含的所有函数依赖集合称为 F 的闭包,记作

白话:也就是说,能从 函数依赖集 F 中推导出的所有函数依赖组成的集合,称为 F 的闭包。(学过泛函的话应该能感觉到有种完备的概念)。

如果

,则称 F 是一个 全 函数依赖族。(函数依赖完备集)。

二、函数依赖的 Armstrong 公理及其引理

设 F 为 R(U) 的一组函数依赖,记为 R(U, F) 。

1. 函数依赖的 Armstrong 公理

(1). 自反律

,则

被 F 逻辑蕴含。

白话:若 属性集 Y 包含于 X,X 包含于 U,则

,则

。也就是说 如果属性集 Y 属于 X,则 X 可以决定 Y,又可以说 属性集 X 可以决定 他的属性 子集。(平凡函数依赖)

(2). 增广律

,且

,则

被 F 逻辑蕴含。

白话:如果

在 F 这个函数依赖集合中,另一属性(组) Z 是属性集 U 中的元素,那么从 F 中可以推导出 XZ 函数决定 YZ。

(3). 传递律

,且

,则

被 F 逻辑蕴含。

2. 函数依赖的 Armstrong 的引理

2.1 引理1

(1). 合并律

,则

。 证明:根据增广律可以得到

,再根据传递律得到,

(2). 伪传递律

,则

。 证明:证明方法依然是 增广律 和 传递律。

(3). 分解律

,则

。 证明:根据自反律可以得到

,再根据传递律,得证

2.2 引理2

如果 A1,A2,... ,An是属性,则

当且仅当对每个 Ai 有

2.3 属性(集)闭包 和 引理3

(1). 属性(集)闭包定义

对 R(U, F) ,

,令:

= Ai 用 armstrong 三个公理 可从 F 导出

,称

为 X 关于 F 的属性(集)闭包。

区分 闭包和属性(集)闭包: 闭包指的是 F的闭包,该集合包含的元素是函数依赖。 属性集闭包是 X属性(集) 关于 F 的属性(集)闭包,该集合包含的元素是属性。

(2). 引理3

若 从 F 这个函数依赖集合中可以用 Armstrong 公理 导出

,当且仅当

解释:只有 Y 这个属性 在 X 关于 F 的属性(集)闭包中,才能推出

,只要能推出 X 决定 Y,那 Y 一定在 X 关于 F 的属性(集)闭包中。

2.4 覆盖 和 引理4、5

(1) 覆盖

定义:对 R(U) 上的两个函数依赖集合 F、G,如果

,则称 F 和 G 也是等价的,也称作 F 覆盖 G 或者 G 覆盖 F。

(2) 引理4

(3) 引理5

每个函数依赖集 F 可被一个 其右端至多有一个属性的函数依赖集 G 覆盖。

2.5 最小覆盖

(1). 最小覆盖

F 满足:F 中每个函数依赖的右边部分都是单个属性;

对任何

,有 F -

不等价于 F;

对任何

,( F-

不等价于F。

则 F 为 最小覆盖 或者 最小依赖集。

解释: 对于第 2 点,如果去掉

这个函数依赖,那么从 F 中不能推导出

,也就是说 F 中的每一个函数依赖都是必需的,一个不能少。 对于第 3 点,Z 是 函数依赖的 左边部分 的一个子集,如果去掉

这个函数依赖,加上 X 子集

的依赖依然不等价于F,即

是不能由

代替的。

(2). 定理

每个函数依赖集 F 都有等价的最小覆盖 F‘。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。