关系数据库设计目录第1章简介 1第2章函数依赖 4第3章模式设计 (1NF) (2NF) (3NF) (BCNF) 15第4章多值依赖 18第5章总结 19简介关系数据库是由一组关系组成,所以关系数据库的设计归根到底是如何构造关系,即如何把具体的客观事物划分为几个关系,而每个关系又有哪些属性组成。在我们构造关系时,经常会发现数据冗余和更新异常等现象,这是由于关系中个属性之间的相互依赖性和独立性造成的。关系模型有严格的数学理论基础,并形成了关系数据库的规范化理论,这为我们设计出合理的数据库提供了有利的工具。函数依赖函数依赖的定义为了便于了解函数依赖(functionaldependency)的概念,先看一个具体的关系实例。例:考虑学生关系Student,该关系中涉及的属性包括学生的学号(Sno)、姓名(Sname)、所在系(Sdept)、系主任姓名(Mname)、ame)和成绩(Grade)。学生关系Student的实例如表1所示。ameGrade刘丽计算机刘刚数据库98刘丽计算机刘刚操作系统96陈冲计算机刘刚汇编原理91王艳金融金谦金融理论89王勇金融金谦经济分析82晓雪自动化李霞自动化设计91王健通信周志光信息概论88在这个实例中,我们可以看到属性之间存在某些内在的联系:由于一个学号值对应一个学生,一个学生只在一个系,因而当“学号”确定之后,姓名及所在系也就唯一确定了。属性中的这种依赖关系类似于数学中的函数。因此说Sno函数决定Sname和Sdept,或者说Sname和Sdept函数依赖于Sno,记作Sno→Sname,Sno→Sdept。下面给出函数依赖的严格定义:如果关系R的两个元组在属性A1,A2,…An上一致(也就是,两个元组在这些属性所对应的各个分量具有相同的值),则它们在另一个属性B上也一致。那么,我们就说在关系R中属性B函数依赖于属性A1A2…An。这种依赖正式记作A1A2…An→B,也就是说“A1,A2,…An函数决定B”。其中,A1A2…An称为决定因素。如果一组属性A1,A2,…An函数决定多个属性,比如说:A1A2…An→B1A1A2…An→B2 …A1A2…An→Bm则可以把这一组依赖关系简记为:A1A2…An→B1B2…Bm例:在上例中,我们可以列举关于Student关系的以下四个函数依赖:Sno→SnameSno→SdeptSdept→ame→Grade由于前面的两个依赖的左边完全相同,都是Sno,用简写的形式可以把它们汇总在一行中:Sno→SnameSdept根据函数依赖的传递规则,从Sno→Sdept和Sdept→Mname可以导出Sno→Mname。这一点我们从感性认识上也很容易理解,一个学号对应唯一的学生,而一个学生只能有唯一的系主任。另一方面,ame就是错误的,它不是函数依赖,原因显而易见,如第1元组和第2元组,它们的Sno分量相同,但Cname分量却不同。关系的键码我们已经了解了键码的概念,下面从函数依赖角度给出定义。如果一个或多个属性的集合{A1,A2,…An}满足如下条件,则称该集合为关系R的键码(key):(1)这些属性函数决定该关系的所有其他属性。也就是说,R中不可能有两个不同的元组,它们在A1,A2,…An上的取值是相同的。(2){A1,A2,…An}的任何真子集都不能函数决定R的所有其他属性,也就说,键码必须是最小的。例:在学生的关系中,属性集{ame}构成Student关系的键码。有时一个关系有多个键码。例:在Student关系中我们可以加上属性身份证号(Idno),则关系中存在两个键码{ame}和{ame}。超键码包含键码的属性集称为“超键码”(superkey),是“键码的超集”的简称。因此,每个键码都是超键码。但是,某些超键码不是键码。例:在学生关系中有许多超键码,不仅键码{ame}本身是超键码,而且该属性集的任何超集,如{ame,Grade},{Sno,ame}都是超键码。函数依赖规则假设已知某关系所满足的函数依赖集,在不知道该关系
数据库-关系模式的设计-规范化 来自淘豆网m.daumloan.com转载请标明出处.