狂学数据库之关系模式的设计问题及数据的函数依赖狂学数据库之关系模式的设计问题及数据的函数依赖
关系模式的设计问题及数据的函数依赖关系模式的设计问题及数据的函数依赖一. 关系模式的设计问题1.1 数据依赖1.2 数据依赖对关系模式的影响二. 数据的函数依
赖2.1 函数依赖2.1.1 函数依赖的定义2.1.2 函数依赖的3种基本情形2.2 函数依赖和码(关键字)的联系2.3 最小函数依赖集
一一. 关系模式的设计问题关系模式的设计问题
1.1 数据依赖数据依赖
关系数据库是以关系模型为基础的数据库,它利用关系描述现实世界。一个关系既可用 来描述一个实体及其属性,也可用来
描述实体间的一种联系。关系模式是用来定义关系的, 一个关系数据库包含一组关系,定义这组关系的关系模式的全体就构
成了该数据库的模式。
关系模式的核心问题是数据依赖性.数据依赖是对可能成为关系模式当前值的那些关系 的约束,是一个关系中属性(或属性组)与
属性(或属性组)之间的相互依赖关系,是客观 存在着的语义。
数据依赖是通过一个关系中属性间值的依赖与否体现出数据间的相互关系,它是现实世数据依赖是通过一个关系中属性间值的依赖与否体现出数据间的相互关系,它是现实世 界属性间相互联系的抽象界属性间相互联系的抽象 ,是数据内,是数据内
在的性质,是语义的体现。在的性质,是语义的体现。
其中最重要的是函数依赖 (Functional Dependency,FD)和多值依赖(Multivalued Dependency, MVD)。
1.2 数据依赖对关系模式的影响数据依赖对关系模式的影响
函数依赖普遍地存在于现实生活中。比如,描述一个学生的关系,可以有学号(Sno)、 姓名(Sname)、所在系(Sdept)等几个属
性。由于一个学号只对应一个学生,一个学生只在一 个系。因而当“学号”值确定之后,姓名及其所在系的值也就被唯一地确定
了。属性间的这属性间的这 种依赖关系类似于数学中的函数种依赖关系类似于数学中的函数。
理想的模式应当不会发生插入异常,删除异常,更新异常,数据冗余应尽可能少.一个关系 模式之所以会产生上述问题,是由存在于
模式中的某些数据依赖引起的.规范化理论正是用 来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入
异常,删除 异常,更新异常和数据冗余问题
二二. 数据的函数依赖数据的函数依赖
2.1 函数依赖函数依赖
2.1.1 函数依赖的定义函数依赖的定义
设 R(U)是属性集 U 上的关系模式,X、Y 是 U 的一个子集。r 是 R(U)中的任意给定的 一个关系。若对于 r 中任意两个元组 s
和 t,当 s[X]=t[X]时,就有 s[Y]=t[Y],则称属性子集 X 函数决定属性子集 Y 或者称 Y 函数依赖于 X,否则就称 X 不函数决定
Y 或者称 Y 不函 数依赖于 X。
如果 Y 函数依赖于 X,则记为 X→Y。
如果 X→Y,则称 X 为决定因素( determinant)。
如果 X→Y,且 Y→X,则记为 X←→Y。
如果 Y 不函数依赖于 X,则记为 X↛Y。
比如在学习生活中:
学号→姓名(每个学号只能有一个学生姓名)
学号→系别(每个学号只能在一个系)
学号→图书证号(每个学号只能有一个图书证号)
系别→系主任(每个系只能由一名系主任
2.1.2 函数依赖的函数依赖的3种基本情形种基本情形
(1)平凡与非平凡函数依赖平凡与非平凡函数依赖