数据库系统概论——函数依赖及范式

数据库系统概论——函数依赖及范式

函数依赖

定义

函数依赖指的是关系模式在任何时刻的关系实例均要满足的约束条件

R(U)是一个属性集U上的关系模式,XYU的子集,对于R(U)的任意一个可能关系rr中不可能存在两个元组在X上相等且,在Y上的属性不相等,则称X函数确定YY函数依赖于X,记为X → Y,称X为这个函数依赖的决定属性组,也称为决定因素(Determinant

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

函数依赖是语义范畴的概念,只能根据数据的语义来确定函数依赖,但设计者可以做强制规定使得函数依赖成立

平凡与非平凡函数依赖

对于任一关系模式,平凡函数依赖是必然成立的,它不反映新的语义,一般只讨论非平凡的函数依赖

  • 非平凡函数依赖

X → Y X \rightarrow Y XY Y ⊈ X Y \nsubseteq X YX,则称 X → Y X \rightarrow Y XY是非平凡函数依赖

例如,(dept_name, building)$ \rightarrow $ budget

  • 平凡函数依赖

X → Y X \rightarrow Y XY Y ⊆ X Y \subseteq X YX,则称 X → Y X \rightarrow Y XY是平凡函数依赖

例如,(dept_name, building)$ \rightarrow $ dept_name(dept_name, building)$ \rightarrow $ building

完全与部分函数依赖

在关系模式R(U)中,若$ X \rightarrow Y , 且 对 于 任 一 个 真 子 集 ‘ ‘ ‘ X ′ ‘ ‘ ‘ , 都 有 ,且对于任一个真子集```X'```,都有 X X’ \nrightarrow Y , 则 称 ‘ ‘ ‘ Y 完 全 依 赖 于 X ‘ ‘ ‘ , 记 为 ,则称```Y完全依赖于X```,记为 YX X \rightarrow(F) Y , 否 则 , 称 ‘ ‘ ‘ Y 部 分 依 赖 于 X ‘ ‘ ‘ , 记 为 ,否则,称```Y部分依赖于X```,记为 YX X \rightarrow § Y $

所有属性共同确定则为完全依赖,部分即可确定即为部分依赖

传递函数依赖

在关系模式R(U)中,若$ X \rightarrow Y 且 且 Y \nsubseteq X 且 且 Y \nrightarrow X 且 且 Y \rightarrow Z , 则 称 Z 对 X 传 递 函 数 依 赖 ( ‘ ‘ ‘ t r a n s i t i v e f u n c t i o n a l d e p e n d e n c y ‘ ‘ ‘ ) , 记 为 ,则称Z对X传递函数依赖(```transitive functional dependency```),记为 ZXtransitivefunctionaldependency X /rightarrow (transitive) Y$

特别地,若$ Y \rightarrow X$,则Z直接依赖于X

K为关系模式R<U,F>中的属性或属性组合,若$ K \rightarrow (F) U $,则K称为R的一个候选码(Candidate Key

特别地,若U部分函数依赖于K,即$ K \rightarrow § U $,则称K为超码(Surkey),候选码是最小的超码,即K的任意一个真子集都不是候选码

主属性与非主属性

  • 主属性

主属性(prime attribute)指的是包含在任意一个候选码的属性

  • 非主属性

非主属性(nonprime attribute)指的是包含在任何码中的属性

全码

全码(All-key)指的是整个属性组都是码的码

外码

在关系模式R<U, F>中,U中属性或属性组X并非R的码,但X是另一个关系模式的码,则称XR的外码(Foreign key),其与主码一起提供了表示关系间的手段

范式

范式指的是符合某一种级别的关系模式的集合,关系数据库中的关系必须满足一定的要求,满足不同程度要求的为不同范式,若某关系模式R为第n范式,可记为$R \subseteq nNF $

范式的种类

  • 第一范式(1NF)

  • 第二范式(2NF)

  • 第三范式(3NF)

  • BC范式(BCNF)

  • 第四范式(4NF)

  • 第五范式(5NF)

范式的联系

$ 1NF \supset 2NF \supset 3NF \supset BCNF \supset 4NF \supset 5NF $

规范化过程

规范化过程(normalization)指的是一个低一级范式的关系模式通过模式分解(schema decomposition)可以转换为若干个高一级范式的关系模式的集合的过程

第一范式

定义

第一范式(1NF)指的是要求关系模式R中所有属性都是不可分的基本数据项的范式,记为 R ⊆ 1 N F R \subseteq 1NF R1NF,第一范式是对关系模式的最起码要求

第一范式可能出现的问题

若一个关系模式只满足第一范式,则可能会导致插入异常、删除异常、数据冗余度大、修改操作复杂等问题

第一范式可能出现问题的原因

第一范式的非主属性可能会部分函数依赖于码,如此一来,对于码中的某个属性可以唯一确定非主属性集合,但是结合码中其他的属性则可能对应多个相同的非主属性集合,即可能造成异常

第二范式

定义

若关系模式R满足第一范式且每一个非主属性都完全依赖于R,则称该关系模式满足第二范式(2NF),记为$ R \subseteq 2NF$

第一范式出现问题的解决方案

采用投影分解的方法,将一个关系模式分解为两个关系模式并消除部分函数依赖,使得非主属性对码都是完全函数依赖,都满足```2NF``,从使得插入异常、删除异常、数据冗余度大、修改操作复杂等问题得到一定程度的解决

第二范式可能出现的问题

虽然通过将1NF关系模式通过投影分解的方法可以消除非主属性对码的部分函数依赖,但是还不能完全消除关系模式个中的各种异常情况和数据冗余,还是可能出现插入异常、删除异常、数据冗余度大、修改操作复杂等问题

第二范式可能出现问题的原因

非主属性传递函数依赖码,导致主属性可能对应多个相同的非主属性集合

第三范式

定义

关系模式$ R<U,F> \in 1NF , 若 R 中 不 存 在 这 样 的 码 ‘ ‘ ‘ X ‘ ‘ ‘ 、 属 性 组 ‘ ‘ ‘ Y ‘ ‘ ‘ 及 非 属 性 组 ‘ ‘ ‘ Z ‘ ‘ ‘ ( ,若R中不存在这样的码```X```、属性组```Y```及非属性组```Z```( RXYZ Y \nsupseteq Z ) , 使 得 ),使得 使X \rightarrow Y, Y \rightarrow Z, Y \nrightarrow X 成 立 , 即 不 存 在 传 递 函 数 依 赖 , 则 称 R < U , F > 满 足 第 三 范 式 , 记 为 成立,即不存在传递函数依赖,则称R<U,F>满足第三范式,记为 R<U,F> R<U,F> \subseteq 3NF$

第三范式的一些性质

  • 3NF关系模式的每个非主属性既不部分函数依赖于候选码也不传递函数依赖于候选码

  • 若$ R \in 3NF , 则 ,则 R \in 2NF$

  • 3NF关系并不能完全消除关系模式中的各种异常情况和数据冗余

第二范式可能出现问题的解决方案

采用投影分解的方法,将一个关系模式分解为两个关系模式并消除传递函数依赖,即使其属于3NF

第三范式可能出现的问题

仍可能出现插入异常、删除异常、数据冗余度大、修改操作复杂等问题

第三范式可能出现问题的原因

主属性部分函数依赖或传递函数依赖于非主属性

第三范式可能出现问题的解决方案

采用投影分解法,将一个关系模式分解为两个关系模式并消除主属性对非主属性的部分函数依赖和传递函数依赖

BC范式

BC范式(Boyce Codd Normal From)是由Boyce和Codd提出的,也称为扩展的3NF

定义

关系模式$ R<U,F> \in 1NF $,若对于R的每个函数依赖 X → Y X \rightarrow Y XY且$ X \nsupseteq Y 时 , ‘ ‘ ‘ X ‘ ‘ ‘ 必 含 有 码 , 则 称 时,```X```必含有码,则称 X R \in BCNF $,即在关系模式R中每个决定因素都包含码

性质

  • 所有非属性码对于每个码都是完全函数依赖

  • 所有非属性码对于每个不包含它的码都是完全函数依赖

  • 没有任何属性完全依赖于非主属性的任何一组属性

  • BCNF关系必然属于3NF

  • 若一个关系数据库中的所有关系模式都属于BCNF,那么在函数依赖范畴内,它已经实现了模式的彻底分解,达到最高的规范化标准,消除了操作异常的诸多问题

鸣谢

数据库系统概论(第5版)
数据库系统概念(原书第6版)

最后

  • 由于博主水平有限,不免有疏漏之处,欢迎读者随时批评指正,以免造成不必要的误解
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值