- 1、本文档共61页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第2章数据库理论
第2章 数据库设计理论及方法 2.1 数据库设计的理论依据 如何评价一个数据库设计得是否合理? 人们总结出衡量数据库的理论标准——就是关系数据库的规范化理论,它也是指导数据库设计的理论依据。 数据库设计完后,就得到关系模式的集合,为了评价一个关系模式集合的优劣,常常使用范式(Normal Form)来进行描述。 可以把范式理解为符合某一种级别标准的关系模式的集合。目前专家们提出了第一范式到第五范式的概念,本章只讨论前三个范式及第三范式的改进形式BCNF(Boyce Codd Normal Form)范式。 用R(U,F)来描述一个关系,其中: R:关系名; U:关系中所有属性的集合; F:关系中所有函数依赖的集合。 函数依赖:如由学号能唯一确定一个学生的姓名,则称“学号”决定“姓名” ,也称: “姓名”函数依赖于“学号” 。记作:学号→姓名,即学号是决定因素。 第一范式 所谓第一范式(1NF):是指关系(数据表)的每一属性(列)都是不可分割的基本数据项,同一列不能有多个含义。 1NF是关系数据库的基本规则,不满足1NF的要求,就不能称其为关系数据库。 第一范式表达了以下三个意思: (1) 一个表中不能存在两个含义重复的属性。 如:员工信息表中有员工编号、工作证编号及其它属性,而员工编号、工作证编号都是唯一区分员工记录的属性,且取值相同,保留一个即可。 (2)一个表中的一列不能是其他列计算的结果。 例:商品信息表中的 最高售价=建议售价 +浮动价格 因此保留每条记录的最高售价,显然会造成数据冗余,应去掉。 (3)一个表中某一列的取值不能有多个含义。 例商品信息表中,“建议售价”只能代表一个币种的价格,不可能既表示人民币价格又表示美元价格。 如果一定要标出两个币种的价格,可以将“建议售价”分解为两列:“人民币售价”和“美元售价”。 第二范式(2NF): 第二范式:是指非主属性完全函数依赖于主码(主键)的属性组。 2NF是在1NF的基础上制定的,即设计数据库时,在考虑第二范式的规定时首先要满足第一范式的要求。 例如 关系模式 S-L-C(学号,课程号,系,住处,成绩),并且每个系的学生住在同一个地方,即系决定住处。 这里主码为(学号,课程号)。关系模式的函数依赖如下: (学号,课程号)→ 成绩,表示成绩完全函数依赖于(学号,课程号) ,即(学号,课程号)完全决定成绩。 学号→系, 表示学号决定系,即系函数依赖于学号; (学号,课程号)→系,表示系部分函数依赖于主码(学号,课程号); 学号→住处,表示学号决定住处 (学号,课程号) →住处, 表示住处部分函数依赖于主码(学号,课程号) 可见非主属性系、住处并不完全函数依赖于码。因此S-L-C(学号,系,课程号,住处,成绩) 不符合2NF定义,即S-L-C不属于2NF 。 一个关系模式不属于2NF,就会产生以下几个问题: 插入异常。假若要插入一个学生记录:学号=’0403030430’,系=’IS’,住处=’L2’,但该生还未选课,即这个学生无课程号值,这样的元组就插不进S-L-C中。因为插入元组(记录)时必须给定主码值,而这时主码值的部分为空(主属性为空),因而学生的基本信息无法插入。 删除异常。假定某个学生只选一门课,如0403030430就选了一门课c01。现在就连c01这门课他也不选了,那么c01这个数据项就要删除。而c01是主属性,删除了c01,整个元组就必须跟着删除,使得0403030430的其他信息也被删除了,从而造成删除异常,即不应删除的信息也删除了。 数据冗余度大。如某学生选10门课,则其系和住处信息要重复存储10次。 修改复杂。某个学生从数学系转到计算机科学系,这本来只需修改此学生元组中的系分量。但因为关系模式S-L-C中还含有学生的住处属性,学生转系同时还将改变住处,因而还必须修改元组中的住处分量。另外,如果这个学生选修了k门课,系和住处重复存储了k次,不仅存储冗余度大,而且必须修改k个元组中全部系和住处信息,造成修改的复杂化。 可见由于系,住处,对主码不是完全函数依赖,会出现以上问题。解决的办法是将关系模式S-L-C分解为以下两个关系模式: SC(学号,课程号,成绩) S-L(学号,系,住处) 这样就使得非主属性对主码都是完全函数依赖了。符合2NF。 第三范式(3NF): 第三范式:指非主属性不传递函数依赖于码, 即非主属性都直接函数依赖于码。 3NF是在2NF的基础上制定的,若要满足第三范式,必须先满足第二范式。 例,图2.3中关系模式S-L存在非主属性对主码传递函数依赖: 学号→系 系→住处 学号→住处 不符合3NF。 不符合3NF也会产生以下几个问题: 插入异常:如某系刚成立,当前还没有学生(无学号值),也就无法插入该系的信息。 删除异
文档评论(0)