mysql 函数依赖关系_边学边思考数据库中函数依赖与多值依赖的辨析

我们先复习下什么是函数:函数是发生在集合之间的一种对应关系(我喜欢用图理解) 数据库中讨论得比较多是非平凡函数依赖,而平凡意义不大) 因为成绩不是(学号,课程)的子集。 部分函数依赖:(学号,姓名)→ 性别 因为(学号,姓名)→ 性别 且 学号 →

我们先复习下什么是函数:函数是发生在集合之间的一种对应关系(我喜欢用图理解)

371bd9b6bf817b79242484856c37c9de.png数据库中讨论得比较多是非平凡函数依赖,而平凡意义不大)

因为成绩不是(学号,课程)的子集。

部分函数依赖:(学号,姓名)→ 性别

因为(学号,姓名)→ 性别 且 学号 → 性别

完全函数依赖:(学号,课程号)→ 成绩

因为(学号,课程号)→ 成绩,学号 —\→ 成绩,课程号 —\→ 成绩。

传递函数依赖: 学号 → 系主任

因为学号 → 系名,系名 → 系主任 且 系名 —\→ 学号。

而多值依赖呢?给出定义

多值依赖的定义:

设R(U)是一个属性集合U上的一个关系模式,X, Y, 和Z是U的子集,并且Z=U-X-Y,多值依赖X->->Y成立当且仅当对R的任一个关系r,r在(X,Z)上的每个值对应一组Y的值,这组值仅仅决定于X值而与Z值无关。

若X->->Y,而Z=空集,则称X->->Y为平凡的多值依赖。否则,称X->->Y为非平凡的多值依赖。

依然用函数的映射关系来理解,引入f(x,y),假设f(x,y)=+-(x^),若z=f(x,y),则一个x值可以得出两个互为相反数的z。在这个二元函数关系中,y的取值事实上是不影响结果的。类比到关系模式上,即x为X集的属性值,y为Y集的属性值,z为Z集的属性值。

看看一个例子

(课程C) ——(教师T)—(参考书B)

数据库概率 —顾国生老师——数学分析

数据库概率 —顾国生老师——高等代数

数据库概率 —顾国生老师——微分方程

上述例子U{C,T,B},其中课程C和教师T唯一确定一组B,却与T无关,经由C决定,然而T并不是空集,所以是非平凡的多值依赖。

事实上,当T为空的时候,如果C中的每一个值c对应B中的一个确定的值,则变为函数依赖,所以函数依赖是多值依赖的一种特殊情况。

总计下:

1. 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。

2. 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。(例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立)

3. 函数依赖通常以集合抽闲出来讨论。

4. 数据库设计者根据需求对函数关系进行制定。例如认为“姓名→年龄”在特定表中可行。

5. 数据库设计者根据现实规定做强制要求。例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定

的函数依赖,若发现有同名人存在, 则拒绝装入该元组。

f68f2add0b68e4f9810432fce46917b7.png

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值