《关系数据库原理关系的完整性和规范化.ppt》由会员分享,可在线阅读,更多相关《关系数据库原理关系的完整性和规范化.ppt(25页珍藏版)》请在三一办公上搜索。
1、第1章 关系数据库原理关系的完整性和关系的规范化,主讲人:张荣,第3讲,复习,什么是关键字/码/键?什么是主关键字/主码/主键?ER图转化为关系模式的原则是什么?,答:是能用来惟一标识元组的属性或属性组合。,答:被指定为关键字的候选关键字,称为。,答:(1)每个实体转换为一个关系。(2)每个联系也转换成一个关系。(3)有相同码的关系可以合并。,复习,关系应具备什么性质?,答:(1)关系中每一个属性值都是不可分解的。(2)关系中不允许出现相同的行。(3)关系中不允许出现相同的列。(4)关系中没有行序、没有列序。,第1章 关系数据库原理 关系的完整性规则、规范化教学内容,关系的完整性规则实体完整性
2、、参照完整性、域完整性函数依赖完全函数依赖、部分函数依赖、传递函数依赖关系的规范化第一范式、第二范式、第三范式,第1章 关系数据库原理 关系的完整性规则、规范化学习目标,认知目标:理解关系的完整性规则了解函数依赖、关系规范化的含义理解三种范式的定义能力目标:能判别关系的范式类别(重点、难点)能进行范式的分解(重点、难点),一、关系的完整性规则,定义是对关系的某种约束条件。目的用于保证关系数据库中数据的正确性和可靠性。类型实体完整性规则参照完整性规则(引用完整性规则)域完整性规则(用户自定义完整性规则),一、关系的完整性规则1.实体完整性规则,规则要求:在任何关系的任何一个元组中,主键的值不能为
3、空值、也不能取重复的值。目的:用于保证数据库表中的每一个元组都是惟一的。请思考:下面的关系是否违反实体完整性规则?,一、关系的完整性规则 2.域完整性规则(用户定义完整性规则),规则要求由用户根据实际情况,定义表中属性的取值范围例如:性别只能是男和女、年龄不能为负值、成绩在0100之间等。目的用于保证给定字段中数据的有效性,即保证数据的取值在有效的范围内。,一、关系的完整性规则 3.参照完整性规则(引用完整性规则),规则要求:“不引用不存在的实体”。即:不允许在一个关系中引用另一个关系中不存在的元组。目的用于确保相关联的表间的数据保持一致。,一、关系的完整性规则 3.参照完整性规则(引用完整性
4、规则),请思考:下面两个关系是否违反参照完整性规则?系表(主表)学生表(从表)说明从表的“系编号(外键)”的取值只能为两种情况:若取非空值,则它必须是主表中存在的值。取空值(null)。表明尚未给学生分配专业。Null不等于0或空字符串。,二、函数依赖1.概念、类型,函数依赖是指关系中各属性或属性组之间的相互依赖关系。它是关系规范化的理论基础。函数依赖的定义给定一个关系模式R,X和Y都是R的属性或属性组,对于X的每个确定值在任何时刻Y只有一个确定的值与之对应,则称“X函数决定Y”,或称为“Y函数依赖于X”,X称为决定因素,记为:XY。函数依赖的类型完全函数依赖部分函数依赖传递函数依赖,二、函数
5、依赖2.完全函数依赖,定义如果属性Y函数依赖于复合属性X,且不与X的任何子集函数相依赖,则称“Y完全函数依赖于X”。示例有如下的关系模式:生产(工厂编号,产品编号,计划数量)“工厂编号+产品编号”“计划数量”,是完全函数依赖。,二、函数依赖3.部分函数依赖(局部依赖),定义对于一个函数依赖:XY,如果存在ZX(Z属于X),且有ZY成立,则称“Y部分函数依赖于X”。示例有如下的关系模式 SCD(学号,姓名,课程号,成绩,系名,系主任)主码为复合码:学号+课程号“姓名、系名、系主任”与主码是部分函数依赖,二、函数依赖4.传递函数依赖,定义在关系模式中,如果XY(不能同时有YX),YZ(不存在ZY)
6、,则称“Z传递依赖于X”。示例有如下的关系模式 SD(学号,姓名,系名,系主任)“学号系名,系名系主任”,则系主任传递依赖于学号。,三、关系的规范化,引在关系数据库的设计过程中,对于同一个问题,选用不同的关系模式,其性能的优劣是大不相同的,为了区分关系模式的优劣,人们常常把关系模式分为各种不同等级的范式。,三、关系的规范化1.概念和范式的类型,类型第一范式(1NF)第二范式(2NF)第三范式(3NF)关系规范化的概念将低级范式转换为若干个高级范式过程。,低 高,三、关系的规范化2.第一范式(1NF),定义如果关系模式R的所有属性的值域中每一个值都是不可再分解值,则称R是属于1NF模式。第一范式
7、是对关系的最低要求。示例:判断哪一张表是1NF?,三、关系的规范化2.第一范式(1NF),第一范式可能存在的问题:数据冗余:如各位老师的信息重复。插入异常:如果要插入刘老师的个人信息,但刘老师未开课,会造成缺关键字“学号”、“课程号”。删除异常:当要删除 课程号=“C3”的元组,会丢失李老师的信息。修改量大。,三、关系的规范化3.第二范式(2NF),定义如果关系模式R为第一范式,且R中每个非主属性完全函数依赖于R的主码(复合码),则称R为2NF模式。示例下列关系模式是1NF,是否是2NF?为什么?SCD(学号,姓名,课程号,成绩,系名,系主任)主码为复合码:学号+课程号解决方法:消除部分函数依
8、赖。,不是。因为:“姓名、系名、系主任”与主码是部分函数依赖(即:只依赖于学号),三、关系的规范化3.第二范式(2NF),分解为2NF的方法:把关系模式中对主码完全函数依赖的非主属性与决定它们的主码放在一个关系模式中。把对主码部分函数依赖的非主属性和决定它们的主属性放在一个关系模式中。检查分解后的新模式,如果仍不是2NF,则继续按照前面的方法进行分解,直到达到要求。关系模式SCD的分解结果如下:SC(学号,课程号,成绩)SD(学号,姓名,系名,系主任),三、关系的规范化4.第三范式(3NF),定义如果关系模式R为第二范式,且R中每个非主属性都不传递函数依赖于R的某个候选码,则称R为3NF模式。
9、示例下列关系模式是2NF,是否为3NF?为什么?SD(学号,姓名,系名,系主任)解决方法:消除传递函数依赖。,不是。因为:学号系名,系名系主任,存在传递依赖关系。,三、关系的规范化4.第三范式(3NF),分解为3NF的方法:把直接对主码函数依赖的非主属性与决定它们的主码放在一个关系模式中。把造成传递函数依赖的决定因素连同被它们决定的属性放在一个关系模式中。检查分解后的新模式,如果不是3NF,则继续按照前面的方法进行分解,直到达到要求。关系模式SD的分解结果如下:SD(学号,姓名,系名)SD(系名,系主任),三、关系的规范化5.各范式间的关系,各范式之间的关系,四、综合应用,实例:假设某商业集团数据库中有1个关系模式R(商店编号,商品编号,数量,部门编号,负责人)。如果规定:(1)每个商店的每种商品只在一个部门销售。(2)每个商店的每个部门只有一个负责人。(3)每个商店的每种商品只有一个库存数量。写出关系模式R的基本函数依赖集找出关系模式R的候选码。关系模式R最高已经达到第几范式?为什么?如果R不属于3NF,请将R分解成3NF。,本课小结,关系的完整性规则实体完整性/参照完整性/域完整性范式的类型1NF、2NF、3NF各范式间的关系:1NF中的每个属性值是不可再分的,它是关系模式的最低要求。消除1NF中的部分函数依赖,可转换为2NF。消除2NF中的传递函数依赖,可转换为3NF。,