《数据库-关系模式的设计-规范化》由会员分享,可在线阅读,更多相关《数据库-关系模式的设计-规范化(22页珍藏版)》请在金锄头文库上搜索。
1、关系数据库设计目录第 1 章 简介 .1第 2 章 函数依赖 .12.1 函数依赖的定义 .12.2 关系的键码 .22.3 超键码 .32.4 函数依赖规则 .32.4.1 分解/合并规则 .32.4.2 平凡依赖规则 .32.4.3 传递规则 .4第 3 章 模式设计 .43.1 问题的提出 .43.2 问题的根源 .53.2.1 完全依赖和部分依赖 .53.2.2 传递依赖 .63.3 解决的途径 .73.3.1 第 1 范式(1NF) .73.3.2 第 2 范式(2NF) .73.3.3 第 3 范式(3NF) .83.3.4 BC 范式( BCNF) .83.4 分解的原则 .93
2、.5 分解的方法 .123.5.1 模式分解的两个原则 .123.5.2 模式分解的 3 种方法 .133.5.3 把关系模式分解成 BC 范式的方法总结 .143.6 关系模式规范化小结 .15第 4 章 多值依赖 .164.1 属性独立性带来的冗余 .164.2 多值依赖的定义 .174.3 第 4 范式 .184.4 分解成第 4 范式 .18第 5 章 总结 .19关系数据库设计1第 1 章 简介关系数据库是由一组关系组成,所以关系数据库的设计归根到底是如何构造关系,即如何把具体的客观事物划分为几个关系,而每个关系又有哪些属性组成。在我们构造关系时,经常会发现数据冗余和更新异常等现象,
3、这是由于关系中个属性之间的相互依赖性和独立性造成的。关系模型有严格的数学理论基础,并形成了关系数据库的规范化理论,这为我们设计出合理的数据库提供了有利的工具。第 2 章 函数依赖2.1 函数依赖的定义为了便于了解函数依赖(functional dependency)的概念,先看一个具体的关系实例。例:考虑学生关系 Student,该关系中涉及的属性包括学生的学号(Sno) 、姓名(Sname) 、所在系(Sdept) 、系主任姓名(Mname) 、课程名(Cname )和成绩(Grade) 。学生关系 Student 的实例如表 1 所示。表 1 学生关系 Student 实例Sno Snam
4、e Sdept Mname Cname Grade0605070215 刘丽 计算机 刘刚 数据库 980605070215 刘丽 计算机 刘刚 操作系统 960605070222 陈冲 计算机 刘刚 汇编原理 910608070317 王艳 金融 金谦 金融理论 890608070318 王勇 金融 金谦 经济分析 820605070121 晓雪 自动化 李霞 自动化设计 910605070514 王健 通信 周志光 信息概论 88在这个实例中,我们可以看到属性之间存在某些内在的联系:由于一个学号值对应一个学生,一个学生只在一个系,因而当“学号”确定之后,姓名及所在系也就唯一确定了。属性中的
5、这种依赖关系类似于数学中的函数。因此说Sno 函数决定 Sname 和 Sdept,或者说 Sname 和 Sdept 函数依赖于 Sno,记作SnoSname,Sno Sdept 。下面给出函数依赖的严格定义:如果关系 R 的两个元组在属性 A1,A 2,A n 上一致(也就是,两个元组在这些属性所对应的各个分量具有相同的值) ,则它们在另一关系数据库设计2个属性 B 上也一致。那么,我们就说在关系 R 中属性 B 函数依赖于属性 A1A2An。这种依赖正式记作 A1A2AnB,也就是说“A 1,A 2,A n 函数决定 B”。其中,A1A2An 称为决定因素。如果一组属性 A1,A 2,A n 函数决定多个属性,比如说:A1A2AnB 1A1A2AnB 2A1A2AnB m则可以把这一组依赖关系简记为:A1A2AnB 1B2Bm例:在上例中,我们可以列举关于 Student 关系的以下四个函数依赖:SnoSnameSnoSdeptSdeptMnameSno CnameGrade由于前面的两个依赖的左边完全相同,都是 Sno,用简写的形式可以把它们汇总在一行中:SnoSname Sdept根据函数依赖的传递规则,从 SnoSdept 和 SdeptMname 可以导出S