《数据库范式理解例题3561.pdf》由会员分享,可在线阅读,更多相关《数据库范式理解例题3561.pdf(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、范式分解 主属性:包含在任一候选关键字中的属性称主属性;非主属性:不包含在主码中的属性称为非主属性;函数依赖:是指关系中一个或一组属性的值可以决定其它属性的值;函数依赖正象一个函数 y=fx 一样,x 的值给定后,y 的值也就唯一地确定了;如果属性集合 Y 中每个属性的值构成的集合唯一地决定了属性集合 X 中每个属性的值构成的集合,则属性集合 X 函数依赖于属性集合 Y,计为:YX;属性集合Y 中的属性有时也称作函数依赖 YX 的决定因素 determinant;例:身份证号姓名;部分函数依赖:设 X,Y 是关系R 的两个属性集合,存在 XY,若 X 是 X 的真子集,存在 XY,则称 Y 部
2、分函数依赖于X;完全函数依赖:在 RU 中,如果 Y 函数依赖于 X,并且对于X 的任何一个真子集X,都有 Y 不函数依赖于 X,则称 Y 对 X 完全函数依赖;否则称 Y 对X 部分函数依赖;例;举个例子就明白了;假设一个学生有几个属性 SNO 学号 SNAME 姓名 SDEPT 系 SAGE 年龄 CNO 班级号 G 成绩 对于 SNO,SNAME,SDEPT,SAGE,CNO,G 来说,G 完全依赖于 SNO,CNO,因为 SNO,CNO 可以决定 G,而 SNO 和 CNO 都不能单独决定 G;而 SAGE 部分函数依赖于 SNO,CNO,因为 SNO,CNO 可以决定 SAGE,而单
3、独的 SNO 也可以决定 SAGE;传递函数依赖:设 RU 是属性集 U 上的关系,x、y、z 是 U 的子集,在 RU 中,若 xy,但 yx,若 yz,则 xz,称 z 传递函数依赖于 x,记作 XTZ;如果 X-Y,Y-Z,则称 Z 对 X 传递函数依赖;计算 X+属性的闭包 算法:a.初始化,令 X+=X;b.在 F 中依次查找每个没有被标记的函数依赖,若“左边属性集”包含于 X+,则令 X+=X+“右边属性集”,并为访问过的函数依赖设置标记;c.反复执行 b 直到 X+不改变为止;检验给定的任意函数依赖 A1A2.An-B 是否蕴含于依赖集 S:分析:根据属性集闭包的定义,可知 A1
4、A2.An-A1,A2,.,An+蕴含于 S;只 要 证 明 B 在 A1,A2,.,An+中,那 么 函 数 依 赖A1A2.An-B 肯定蕴含于依赖集 S 中 求解过程:1 利用依赖集计算闭包 2 如果 B 在闭包中,则函数依赖 A1A2.An-B 是否蕴含于 依赖集 S,否则不蕴含于 S 例 总结:判定函数依赖 XY 是否能由 F 导出的问题,可转化为求X+并判定 Y 是否是 X+子集的问题;即求 F 闭包的问题可转化为求属性集闭包的问题;函数依赖的闭包:定义:若 F 为关系模式 RU 的函数依赖集,我们把 F 以及所有被 F逻辑蕴涵的函数依赖的集合称为 F 的闭包,记为 F+求函数依赖
5、闭包,基于函数依赖推理规则 函数依赖推理规则:若 XY-Z,则 X-Z,Y-z 错 正确的:若 X-Y,则 XZ-YZ 若 X-Y,X-Z,则 X-YZ 若 X-Y,Z 属于 Y,则 X-Z 若 X-Y,Y-Z,则 X-Z 若X-YZ,则X-Y,X-Z/可以把每个函数依赖的右边的属性分解,从而使其右边只出现一个属性 伪传递率:若 A-B,BC-D,则 AC-D 范式 第一范式 1NF:属性,属性值,字段不可分 就是无重复的列 不满足 1NF 的数据库就不是关系数据库 例:第二范式 2NF:符合 1NF,每一个非主属性完全依赖于码,不能存在部分依赖,有主键,非主键字段依赖主键;唯一性 一个表只说
6、明一个事物;例:不符合第二范式的例子:表:学号,姓名,年龄,课程名称,成绩,学分;这个表明显说明了两个事务:学生信息,课程信息;存在问题:数据冗余,每条记录都含有相同信息;删除异常:删除所有学生成绩,就把课程信息全删除了;插入异常:学生未选课,无法记录进数据库;更新异常:调整课程学分,所有行都调整;修正:学生:Student 学号,姓名,年龄;课程:Course 课程名称,学分;选课关系:SelectCourse 学号,课程名称,成绩;满足第 2 范式只消除了插入异常;第三范式 3NF:符合 2NF,并且,消除传递依赖,非主键字段不能相互依赖;每列都与主键有直接关系,不存在传递依赖;若所有的属
7、性都是主属性,则属于第三范式 要求一个数据库表中不包含已在其它表中已包含的非主关键字信息 例:不符合第三范式的例子:学号,姓名,年龄,所在学院,学院联系电话,关键字为单一关键字学号;存在依赖传递:学号 所在学院 学院地点,学院电话 存在问题:数据冗余:有重复值;更新异常:有重复的冗余信息,修改时需要同时修改多条记录,否则会出现数据不一致的情况 删除异常 修正:学生:学号,姓名,年龄,所在学院;学院:学院,地点,电话;总结:1nf:不可分 2nf:一个表说明一个事物,唯一性 3nf:对字段冗余性的约束,即任何字段不能由其他字段派生出来,它要求字段没有冗余;bcnf:是 3NF 的改进形式 BCN
8、F 意味着在关系模式中每一个决定因素都包含候选键,也就是说,只要属性或属性组 A 能够决定任何一个属性 B,则A的子集中必须有候选键;BCNF范式排除了任何属性对候选键的传递依赖与部分依赖;满足 BCNF 条件 1 所有非主属性对每一个候选键都是;2 所有的主属性对每一个不包含它的候选键,也是完全函数依赖;3 没有任何属性完全函数依赖于非候选键的任何一组属性;候选键 又称候选码,候选关键字,码,candidate key 设 K 是一个 RU 中的属性或属性集合注意可以是属性集合,也即多个属性的组合,若 K 完全函数确定 U,则 K 为 R 的候选键 Candidate key;通俗地说就是,
9、能够确定全部属性的某个属性或某组属性,称为候选键;若候选键多于一个,则选定其中一个作为主键;在所有依赖关系右边没有出现的属性一定是候选键的成员;BCNF 范式排除了任何属性对候选键的传递依赖与部分依赖;例 1 例 2 例 3 例 4 设有关系模式 RA,B,C,D,E,G 上的函数依赖集为:F=AB,BC,ADG,DE ;求解:31求关系模式 R 的所有侯选键;解:求出侯选键 AD;2 分 首先在 F 中函数依赖右边不出现的属性必在侯选键中,即 AD 1 分;由于AD+=ABCDEG,即 AD 能函数决定所有的属性,所以侯选键只有一个 AD1分;AD+=AD BEG C 32分别求属性集 G、
10、AD、CD、BC 的闭包;G+=G1 分;AD+=ABCDEG1 分;CD+=CDE1 分;BC+=BC1 分 33 将关系模式 R 保持依赖地且无损地分解成 3NF,要求写出分解过程;解:F=AB,BC,ADG,DE F 是最小依赖集,所有属性在 F 中出现,将 F 中是每个函数依赖组成一个关系模式得保持函数依赖的分解:AB,BC,ADG,DE 2 分;并上一个侯选键AD得无损分解:AB,BC,ADG,DEAD=AB,BC,ADG,DE 2 分 F=AB,BC,ADG,DE 34将关系模式 R 无损地分解成 BCNF,要求写出分解过程;解:根据转换为 BCNF 的无损连接分解算法 1 由于候
11、选键为 AD,F 中存在不符合 BCNF 要求的函数依赖,所以 R 不是 BCNF,选 AB 分解为:R1=AB,R2=ACDEG;1 分 R1 上保持的函数依赖集为 AB,键为 A,所以是BCNF;R2 上保持的函数依赖集为 AC,ADG,DE,键为 AD,所以不是 BCNF;1 分 选 AC 进一步分解为:R21=AC,R22=ADEG;1 分 R21 上保持的函数依赖为AC,键为 A,所以是BCNF;R22 上保持的函数依赖为 ADG,DE 键为 AD,所以不是 BCNF;选 DE 进一步分解为:R221=DE,R222=ADG;1 分 R221 上保持的函数依赖为 DE,键为D,所以是
12、 BCNF;R222上保持的函数依赖为ADG,键为AD,所以是BCNF;最 后 得 保 持 无 损 连 接 特 征 的 分 解:R1,R21,R221,R222 或 表 示 为AB,AC,DE,ADG1 分 注:由于选择不符合 BCNF 要求的函数依赖有多个,因此选择次序可有不同,最后的结果也不同,原则上按上述评分标准分步给分;35说明分解=R1,R2,R1ABC、R2ADEG 的范式级别并说明理由 答:R1 是 2NF 1 分,R2 是 1NF;1 分 R1 上的函数依赖集为:AB,BC,码为:A,不存在部分依赖,存在非主属性C 对码 A 的传递依赖;1 分 R2 上的函数依赖集为:ADG,DE 码为:AD,存在非主属性 E 对码 AD 的部分依赖;1 分 =R1,R2,R1ABC、R2ADEG