第四章关系数据库规范化理论一个关系数据库模式由一组关系模式组成,一个关系模式由一组属性名组成
关系数据库设计,就是如何把已给定的相互关联的一组属性名分组,并把每一组属性名组成关系的问题
然而,属性的分组不是唯一的,不同的分组对应着不同的数据库应用系统,它们的效率往往相差很远
为了使数据库设计合理可靠,简单实用,长期以来,形成了关系数据库设计的理论——规范化理论
1关系规范化的作用规范化,就是用形式更为简洁,结构更加规范的关系模式取代原有关系模式的过程
如果将两个或两个以上实体的数据存放在一个表里,就会出现下列三个问题:数据冗余度大插入异常删除异常所谓数据冗余,就是相同数据在数据库中多次重复存放的现象
数据冗余不仅会浪费存储空间,而且可能造成数据的不一致性
插入异常是指,当在不规范的数据表中插入数据时,由于实体完整性约束要求主码不能为空的限制,而使有用数据无法插入的情况
删除异常是指,当不规范的数据表中某条需要删除的元组中包含有一部分有用数据时,就会出现删除困难
(以P98工资表为例)解决上述三个问题的方法,就是将不规范的关系分解成为多个关系,使得每个关系中只包含一个实体的数据
(讲例子解)当然,改进后的关系模式也存在另一问题,当查询职工工资时需要将两个关系连接后方能查询,而关系连接的代价也是很大的
那么,什么样的关系需要分解
分解关系模式的理论依据又是什么
分解完后能否完全消除上述三个问题
回答这些问题需要理论指导
下面,将加以讨论:4
2函数依赖4
1属性间关系实体间的联系有两类:一类是实体与实体之间联系;另一类是实体内部各属性间的联系
数据库建模一章中讨论的是前一类,在这里我们将学习第二类
和第一类一样,实体内部各属性间的联系也分为1:1、1:n和m:n三类:例:职工(职工号,姓名,身份证号码,职称,部门)1、一对一关系(1:1)设X、Y是关系R的两个属性