DBMS-2.2 数据库设计(2)——数据库规范化设计理论

本文章的素材与知识来自李国良老师和冠宇老师

  • 依赖理论

对于关系数据库中的依赖,分为函数依赖、多值依赖和连接依赖。

一.函数依赖

1.函数依赖

(1)定义:

(2)理解:

  • 通俗地讲,对于关系R中的两个属性或属性组X和Y,如果X的值能决定Y的值,则X->Y。
  • 其中X和Y可能由一个属性构成,也可能由多个属性构成。
  • 函数依赖X->Y要求当X的值相同时,Y的值一定相同;但不要求X的值不同时的情况,即允许当X的值不同时,Y的值仍可能相同。
  • 一个函数依赖X->Y要成立,不仅要求当前关系R中的已有数据均满足函数依赖条件,还要求关系R的所有可能取值都要满足函数依赖条件。即当前已有的数据要满足X->Y,未来可能添加的数据也必须满足X->Y。

(3)意义:函数依赖反映了一个关系中属性或属性组之间相互依存、相互制约的关系,同时具有对现实世界的反映。例如:国家—>首都。

(4)分类:函数依赖还可以进一步细分为 平凡函数依赖和非平凡函数依赖、部分函数依赖和完全函数依赖、传递函数依赖。这三种分类不冲突,一个函数依赖可以同时是平凡(或非平凡)、部分(或完全)、传递的。

2.平凡和非平凡函数依赖

(1)定义:

(2)理解:

  • 平凡函数依赖是无意义的,因为关系的所有属性或属性集X均满足X->X,即均满足平凡函数依赖。
  • 因此平常所指的函数依赖默认都是非平凡函数依赖。例如说X->Y,那么我们不考虑Y是X的子集的情况。
3.部分和完全函数依赖

(1)定义:

(2)理解:

  • 通俗地讲,对于函数依赖X->Y,只要X少了一个属性就无法决定Y,则称Y完全函数依赖于X;如果X少了一个或多个属性后仍能决定Y,则称Y部分函数依赖于X。

(3)平凡非平凡 + 部分完全:

上述提到一个函数依赖的平凡非平凡与部分完全是不冲突的,因此下面来对这两个属性作排列组合,探讨其可行性。

  • 平凡+部分:可行。X->X
  • 平凡+完全:可行。(X,Y)->(X,Y)
  • 非平凡+部分:可行。(X,Y)->Z 且 X->Z
  • 非平凡+完全:可行。(X,Y)->Z
4.传递函数依赖

(1)定义:

(2)理解:

  • 为什么当Y->X时,就有X->Z?若Y->X,又因为Y->Z,则有Y是该关系的候选键;又因为X->Y,所以X也是该关系的候选键,因此有X->Z。
  • 传递函数依赖的定义中,仅限制了Y!->X,但是未限制Z->Y。
5.从函数依赖的角度理解关系的键

(1)

(2)通俗地讲,对于关系R的属性集U,X是U中的一个属性,如果U中所有属性都完全函数依赖于X,则X可以作为该关系R的一个候选键。

(3)所有在候选键中的属性都为主属性,不在任一候选键中的属性为非主属性。

(4)对于一个候选键内部的所有主属性之间,不存在任何函数依赖,包括部分完全、传递非传递。

(5)对于同一个关系模式的不同候选键,它们的属性个数是可能不同的!例如:对于关系模式R<U,F>,U={ A,B,C },F={ A->B,A->C,(B,C)->A },那么根据上述候选键的性质,该关系模式R的候选键有:(A)和(B,C)。

二.多值依赖

1.多值依赖

(1)定义:

(2)理解: 

  • 通俗地讲,多值依赖X->->Y,就是给一个X,能决定一组Y的值,且这组Y的值只与X有关。

(3)示例

该关系中,给一个Sno可以决定一组Phone,因为一个学生可以有多个手机号;且Phone的值只取决于Sno,与Email无关;因此构成多值依赖Sno->->Phone。

同样地,给一个Sno可以决定一组Email,因为一个学生可以有多个邮箱;且Email的值只取决于Sno,与Phone无关;因此构成多值依赖Sno->->Email。

(4)函数依赖与多值依赖的关系

  • 函数依赖是对于属性或属性集X和Y,给一个X可以决定一个Y。
  • 多值依赖是对于属性或属性集X和Y,给一个X可以决定一组Y。
  • 函数依赖是一种特殊的多值依赖,当X->->Y,且这组Y里面实际只有一个值的时候,则多值依赖X->->Y就成为了函数依赖X->Y。因此函数依赖又称为单值依赖。
2.平凡和非平凡多值依赖

(1)定义:

(2)理解:

  • 平凡和非平凡多值依赖,就是看除了X、Y以外,关系R中是否还有其他属性或属性集:若只有X、Y,则是平凡多值依赖;若除X、Y以外还有其他属性或属性集,则是非平凡多值依赖。

三.连接依赖

1.连接依赖

(1)定义:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值