第3章 关系规范化基础

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。




又如:给出上面已经介绍过的职工关系(职工号,姓名, 性别,年龄,职务),教师任课关系(教工号,姓名,职称, 课程号,课程名,课时数,课时费)和学生关系(学号, 姓名,性别,系号,系名,系主任名),求出它们的最小 函数依赖集。 分析:设它们的最小函数依赖集依次用FD1、FD2和FD3 表示,由以前对它们每个关系的函数依赖分析可以得出如 下: FD1={职工号→姓名,职工号→性别,职工号→年龄,职 工号→职务} FD2={教工号→姓名,教工号→职称,课程号→课程名, 课程号→课时数,(职称,课程号)→课时费} FD3={学号→姓名,学号→性别,学号→系号,系号→系 名,系号→系主任名}
第3章 关系规范化基础
一、各种函数依赖
1.函数依赖的概念 函数依赖就是讨论一个关系中属性值之间所存在的 函数关系。 在一个关系中,属性相当于数学上的变量,属性的 域相当于变量的取值范围,属性在一个元组上的取 值相当于属性变量的当前值。 例如:在下面的这个职工关系中,职工号、姓名、 性别、年龄、职务等属性都相当于变量;职工号属 性的域为四位十进制数字,性别属性的域为{男、女}。

5.求关系的侯选码应用举例

例1:设一个教学关系为(教师号,姓名,课程号, 课程名,课程学分,专业号,专业名,教学等级 分),假定每个教师有一个唯一的教师号,每门课 程有一个唯一的课程号,每个专业有一个唯一的专 业号,每个教师号对应一个姓名,每个课程号对应 一个课程名和一个课程学分,每个专业号对应一个 专业名,教学等级分是根据某个教师给某个专业上 某门课程的教学评价效果而得到的分数,每个教师 可以给不同的专业上不同的课程,请通过函数依赖 分析,求出该关系的候选码。
4.完全和部分函数依赖 定义:设一个关系为R(U),X和Y为属性集U上的子 集,若存在X→Y,同时X的一个真子集X′也能够函 数决定Y,即存在X′→Y,则称X→Y的函数依赖为部 分函数依赖,或者说,X部分函数决定Y,Y部分函 数依赖于X,可记作为X Y,X→Y的部分函数依赖 也称为局部函数依赖;否则若在X中不存在一个真子 集X′,使得X′也能够函数决定Y,则称X完全函数决 定Y,或Y完全函数依赖于X,可记作为X Y, X→Y的完全函数依赖也称为直接函数依赖。

例如:职工号同其他每个属性之间的函数依赖都是 完全函数依赖。“(职工号,性别)→年龄”的函 数依赖为部分函数依赖,因为在其中存在着“职工 号→年龄”的函数依赖。 又例如:设一个教师任课关系为(教工号,姓名, 职称,课程号,课程名,课时数,课时费),假定 每个教师可以讲授多门课程,每门课程可以由不同 教师来讲授。(教工号,课程号)的组合为此关系 的候选码,并可选定为此关系的主码。


例如:在上面介绍过的职工关系中,它的最小函数依赖集 FD1为:{职工号→姓名,职工号→性别,职工号→年龄, 职工号→职务},职工号为该关系的一个候选码;若在该 关系中还带有身份证号属性,则身份证号属性的每一个值 也能够唯一标识一个元组,身份证号也是一个候选码。 又如:在上面介绍过的教师任课关系中,它的最小函数依 赖集为: {教工号→姓名,教工号→职称,课程号→课程名,课程 号→课时数, (职称,课程号)→课时费} 求侯选码分析:一个属性子集(教工号,课程号),看它 能否成为此关系的候选码。由于它能够函数决定所有属性, 所以它是该关系的一个候选码,并且是唯一的候选码。

职工号 3050 3051 3074 3065 3053 姓名 张光 刘平 王海 陈敏 刘新 性别 男 男 男 女 女 年龄 36 48 32 43 28 职务 正处 副处 正科 副处 科员
单值函数和多值函数概念:元组中一个属性或一些 属性值对另一个属性值的影响相当于自变量值对函 数值的影响。当给定一个自变量值能求出唯一的一 个函数值时,称此为单值函数或单映射函数,否则 为多值函数。 如f(x)=2x, f(n)=(-1)^n, f(x)=x^3+1等都是单值函数。 属性之间的函数依赖概念:在一个关系中,若一个 或一组属性的值对另一个或一组属性值起到决定性 的作用,则称它们之间存在着函数依赖。

二、最小函数依赖集 若属性或属性集X能够函数决定相应的属性或属性集 Y,则称X函数决定Y,或者说Y函数依赖于X,记作 X→Y。可以是完全依赖、部分依赖、平凡依赖、非 平凡依赖、传递依赖等5种。

1.函数依赖之间的变换规则
设一个关系为R(U),其中X、Y、Z、W是U上的子 集,则函数依赖存在着以下一些常用的变换规则: (1) 自反性:若X⊇Y,则存在X→Y。 如(学生号,课程号)→学生号,(学生号,课程 号)→课程号。 (2) 增广性:若X→Y,则存在XZ→YZ。 如学生号→系号,则“(学生号,课程号)→(系 号,课程号)”同样成立。 (3) 传递性:若X→Y和Y→Z,则存在X→Z。 因为X惟一对应Y,Y惟一对应Z,所以X也惟一对应 Z,X到Z存在着依赖关系。如教工号→职称,职称→ 职务工资,则存在教工号→职务工资。

2.最小函数依赖集 定义:设一个关系为R(U),X和Y为U的子集,若 X→Y为完全函数依赖,同时Y为单属性,则称X→Y 为R的最小函数依赖。由R中所有最小函数依赖构成 R的最小函数依赖集,并且在最小函数依赖集中不允 许包含有冗余的传递函数依赖。 例如:设一个关系为R(A,B,C,D),它的函数依赖集 为FD={A→B,B→C,A→C,B→D},判断它是否为R 的最小函数依赖集。 分析:由FD中的A→B和B→C可得到A→C,所以给 出的A→C是冗余的,应去掉。原FD不是R的一个最 小函数依赖集,若修改为FD={A→B,B→C,B→D}, 就成为R的最小函数依赖集。






3.平凡和非平凡函数依赖 定义:设一个关系为R(U),X和Y为属性集U上的子集, 若X→Y且X不包含Y,则称X→Y为非平凡函数依赖,否 则若X⊇Y则称X→Y为平凡函数依赖。 若X⊇Y,则平凡函数依赖X→Y必然存在,或者说整体总 是决定局部的。平凡函数依赖称为函数依赖的自反性。 例如:职工号总能函数决定它本身,记作“职工号→职工 号”。 又如:“(职工号,性别)→职工号”和“(职工号,性 别)→性别”为平凡函数依赖。 通常,主要讨论的是非平凡函数依赖,即X→Y且X⊉Y。 职工号→性别就是非平凡函数依赖。“(职工号,姓名) →性别”也是非平凡函数依赖。



注意:(教工号,课程号)到教工号、姓名、职称、 课程号、课程名、课时数等是部分函数决定,而到 课时费是传递函数决定。即“(教工号,课程号) →(职称,课程号)→课时费”是伪传递性。 再如:在上面介绍的学生关系中,它的最小函数依 赖集为:{学号→姓名,学号→性别,学号→系号, 系号→系名,系号→系主任名},学号是学生关系的 一个候选码。

对此关系进行函数依赖分析:该关系中存在“教工 号→姓名”和“教工号→职称”这两个完全函数依 赖。该关系中又存在着“课程号→课程名”和“课 程号→课时数”这两个完全函数依赖。一个教师所 讲某门课程的课时费通常是由教师的职称和课程号 共同决定的,即存在“(职称,课程号)→课时费” 这个完全函数依赖。 该关系的侯选码为(教工号,课程号),“(教工 号,课程号)→姓名”,“(教工号,课程号)→ 职称”,“(教工号,课程号)→课程名”, “(教工号,课程号)→课时数”等都是部分函数 依赖。(教工号,课程号)→课时费也是完全函数 依赖,但又是传递函数依赖。
Leabharlann Baidu
(6) 伪传递性:若X→Y和WY→Z,则存在WX→Z。 如把WY→Z中的Y替换成它的决定因素X属性后,函 数依赖WX→Z仍然成立。因为X→Y,根据增广性, 两边同时添加W,所以WX→WY,又因为WY→Z, 根据传递性,所以存在WX→Z。又如教工号→职称, (职称,工龄)→基本工资,则存在(教工号,工 龄)→基本工资的传递依赖。 (7) 合并性:若X→Y和X→Z,则存在X→YZ。 如学生号→姓名,学生号→性别,则学生号→(姓 名,性别)。 (8) 分解性:若X→Y,且Y⊇Z,则存在X→Z 如学生号→(姓名,性别),则存在学生号→姓名, 学生号→性别。
3.根据最小函数依赖集求出关系中的侯选 码
候选码定义:设一个关系为R(U),X为U的一个子集, 若X能够函数决定U中的每个属性,并且X的任何真 子集都不能函数决定U中的每个属性,则称X为关系 R的一个候选码。 等价定义:若关系中的一个属性或属性组能够函数 决定整个元组,并且它的任何真子集都不能函数决 定整个元组,则它被称为该关系的一个候选码。

4.根据实际需要给关系添加候选码
如平常使用的标识系列---职工编号、学生号、身份 证号、借书证号、驾驶证号、车牌号、银行账号、 订单号、合同号、图书编号、设备编号、零件编号、 住址编号等都是人们为处理对象的方便而附加的候 选码。 如在学生号编码中,可以规定前两个字符表示所在 系或学院的编码,中间两个字符表示所学专业的编 码,最后三个字符表示在该专业中学生的数字顺序 号,这样每个学生号编码为7个字符组成的字符串。 例如12-30-125就是一个9字符的学生号编码。


例如:设一个学生关系为(学号,姓名,性别,系号,系 名,系主任名),通常每个学生只属于一个系,每个系有 许多学生,每个系都对应唯一的系名和系主任名。 函数依赖分析:在该关系中,存在“学号→姓名”、“学 号→性别”、“学号→系号”的完全函数依赖,又存在 “系号→系名”和“系号→系主任名”的完全函数依赖。 还存在“学号→系名”和“学号→系主任名”这两个完全 函数依赖,它是通过系号属性而传递的函数依赖,所以称 这两个函数依赖是传递函数依赖。 包括平凡函数依赖、非平凡函数依赖、部分函数依赖、完 全函数依赖、传递函数依赖等5种。在非平凡函数依赖中, 又分为部分函数依赖、完全函数依赖(直接函数依赖)和 传递函数依赖。

2.函数依赖的定义 定义:设一个关系为R(U),X和Y为属性集U上的子 集,若对于X上的每个值都有Y上的一个唯一值与之 对应,则称X和Y之间存在函数依赖,并称X函数决 定Y,或称Y函数依赖于X,记作X→Y,称X为此函 数依赖的决定因素。 例如:设一个职工关系为(职工号,姓名,性别, 年龄,职务),职工号用来标识每个职工,选作为 该关系的主码。职工号函数决定姓名,或称姓名函 数依赖于职工号,记作“职工号→姓名”,职工号 为该函数依赖的决定因素。职工号函数决定性别、 年龄、职务等描述职工特征的每个属性,可以分别 记作为“职工号→性别”、“职工号→年龄”、 “职工号→职务”。

4) 复合性:若X→Y和Z→W,则存在XZ→YW。 如学生号→姓名,课程号→课程名是两个独立的函 数依赖,把它们左、右对应组合后,变为(学生号, 课程号)→(姓名,课程名)仍然是一对函数依赖。 (5) 自增性:若X→Y,则存在WX→Y。 如学生号→姓名,则存在:(学生号,课程号)→ 姓名,不过由原来的直接依赖变为现在的部分依赖。




5.传递函数依赖 定义:一个关系为R(U),X,Y和Z为属性集U上的子集, 其中存在X→Y和Y→Z,但Y不反过来决定X,同时Y不包 含Z,则存在X→Z,称此为传递函数依赖,即X传递函数 决定Z,或者说Z传递函数依赖于X。 注意:在这里必须强调的是Y不反过来函数决定X,因为 如果X→Y同时Y→X,则X和Y为相互决定的函数依赖关 系,记作为“X←→Y”,这样X和Y是等价的,在函数依 赖中是可以互换的,X→Z就是直接函数依赖,而不是传 递函数依赖了。 另外,Y不包含Z也是必须满足的条件,因为如果Y⊇Z, 则X→Y必然包含着X直接函数决定Y中的每个子集,这使 得X→Z为直接函数依赖而不是传递函数依赖。

相互函数依赖:若规定不允许职工有重名,则姓名 也能够唯一标识一个元组,这样姓名也能够函数确 定其他每个属性,此时职工号和姓名在取值上一一 对应,相互成为决定因素,即构成相互函数依赖, 记作为“职工号←→姓名”。 若一个关系中的属性子集X不能函数决定另一个属性 子集Y,则记作X Y,读作X不能函数决定Y,或Y不 能函数依赖于X。
相关文档
最新文档