第4章规范化设计.ppt

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章规范化设计

第4章 关系数据库的规范化设计 关系数据库的规范化设计是指面对一个现实问题,如何选择一个比较好的关系模式集合,以控制数据冗余,对数据进行有效的管理。设计关系模式将遇到一些理论。规范化设计理论主要包括3个方面的内容:数据依赖、范式和模式设计方法。其中数据依赖是研究数据之间的联系,范式是关系模式的标准,而模式设计方法是自动化设计的基础。规范化设计理论对关系数据库结构的设计起着重要的作用。 4.1 关系模式设计中的问题 4.1.1 关系模式的外延和内涵 外延:通常所说的关系、表、或当前值。它与时间有关的,随着时间的推移在不断的变化。这主要是经常对元组进行插入、删除和修改引起的。 内涵:与时间独立的,是对数据的定义以及数据完整性约束的定义。 数据的定义:对关系、属性及域的定义和说明。 数据完整性约束的定义主要包括两方面: 静态约束,涉及数据之间的联系(称数据依赖)、主键和值域的设计。 动态约束,定义插入、删除或修改对关系值的影响操作。 4.1 关系模式设计中的问题 4.1.2关系模式的冗余和异常问题 假设要设计一个学生学籍数据库studb,它有属性S#(学号)、SNAME(姓名)、DNAME(所在系)、AGE(年龄)、C#(课程号)、CNAME(课程名)、SCORE(成绩)、CNO#(选修课编号)。 以关系模式S_C_G(S#, SNAME,DNAME,AGE,C#,CNAME, SCORE, CNO#)为例说明该模式存在的问题。 4.1.2关系模式的冗余和异常问题 上面库模式存在的问题: (1)数据冗余。每选一门课,本人和有关课程都要存放一次(重复),造成数据极大冗余。 (2)插入异常。该模式关键字由S#和C#组成。若插入一门课程信息,但该课程暂无学生选修,在属性S#上会出现空值,由于S#是主键中的属性,不允许取空值,因此不能把该课程插入数据库。 (3)删除异常。如果库中S9号赵强因退学,需要删除,但C7课程只有赵强一人选修,则在删除赵强信息时,C7课程也删除了。 对于上述模式中的问题可通过属性间函数依赖的研究解决。采用分解方法分解成3个模式: S(S#, SNAME, DNAME, AGE) C(C#, CNAME, CNO#,) SC(S#, C#, SCORE) 关系模式的实例,见关系表如下。 4.1.2关系模式的冗余和异常问题 关系S 4.1.3关系模式的非形式化设计准则 4.1.4 本章的符号规定 大写字母(首部)A,B,C,…表示单个的属性。 大写字母(尾部) …,U,V,W,X,Y,Z 表示属性集。 大写字母R表示关系模式,小写字母r表示其关系。有时也用属性名的组合表示关系模式。若模式有A、B、C共3个属性,就用ABC表示关系模式。 属性集{A1,…,An}简写为A1…An。属性集X和Y的并集X∪Y简写为XY。X ∪{A}简写成XA或AX。 4.2 函数依赖 大多数数据依赖是函数依赖(FD),也是最基本、最重要的一种依赖。 4.2.1 函数依赖的定义 属性之间通常存在着一定依赖关系,属性值之间发生联系。例如,在关系模式S中,属性S#(学号)与DNAME(所在系)有依赖关系,因为对S#的一个确定值,DNAME也有一个且只有一个值与之相对应,这就称S#函数决定DNAME,或DNAME函数依赖于S#,即依赖关系。 又如,学生和每门课只有一名任课教师,学生学一门课只能有一个总成绩等等,这类联系称为函数依赖,其形式定义如下: 4.2 函数依赖 定义4.1 设关系模式R(U),其中U{A1,A2,…,An}是关系的属性全集,X和Y是属性集U的子集,函数依赖(FD)是形为X→Y的一个命题,只要r是R的当前关系,对r中任意两个元组t和s,都有t[X]=s[X]蕴涵t[Y]=s[Y],则称X函数决定Y,或Y函数依赖于X。(∴记为X→Y)。 这里t[X]表示元组t在属性集X上的值。FD是对关系模式R的一切可能的关系r定义的。对于当前关系r的任意两个元组,如果X值相同,则要求Y值也相同,即一个X值就有一个Y值与之对应,或者说Y由X决定,因而这种依赖称为函数依赖。 如在关系模式是(S#,SNAME,DNAME,AGE)中存在函数依赖: S# →DNAME,表示每个学生属于一个系。还有: S# →SNAME,表示一个学生只有一个姓名。 (S#,C#) → SCORE,表示每个学生学一门课只能有一个成绩。 例4.2 例4.3 4.2.1 函数依赖的定义 例4.4 设关系模式R(ABCD),在R的关系中,属性值间有这样的联系:A值与B值有一对多联系,即每个A值有多个B值与之联系,而每个B值只有一个A值与之联系; C值与D值有一对一联系,即每个C值只有一个D值与之联系,每

文档评论(0)

xcs88858 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档