基本函数依赖和候选键_白话详解数据库函数依赖和Armstrong公理及其引理

一、函数依赖

1. 函数依赖

定义:设 R(U) 是属性集合 U={ A1, A2, ... , An } 上的一个关系模式,X, Y 是 U 上的两个子集,若对 R(U) 的任意一个可能的关系 r ,r 中不可能有两个元组满足在 X 中的属性值相等而在 Y 中的属性值不等,则称 “ X 函数决定 Y ” 或 “ Y函数依赖于X ” ,记作

白话:在一个关系 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 = {学号,姓名,年龄,班号,班长,课号,成绩 }

{学号,课号}

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 不是 R 的候选键,却是另一关系 S(U) 的候选键,则称 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
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值