第02章数据基本理论

  • 格式:doc
  • 大小:732.00 KB
  • 文档页数:31

第2章数据库设计方法与示例关系型数据库的基础是关系数据理论。

关系模型包含三个要素,关系操作用于处理关系数据库中的数据。

关系规范化理论指导数据库设计。

本章进一步讨论关系运算、关系规范化,以及有关数据库设计的基本方法和示例。

2.1 关系数据理论的进一步分析关系模型包含数据结构、数据操作和数据约束三个要素。

在第1章,已经讨论了关系模型中数据结构和数据约束的概念。

关系操作包括关系代数和关系谓词演算,其功能是等价的。

本节简要介绍关系代数的知识和关系规范化的基本概念。

2.1.1 关系代数通常,一个数据库中会包括若干个有联系的关系,关系是数据分散和静态的存放形式,经常要对各关系中的数据进行操作。

对关系的操作称为关系运算。

由于关系是元组的集合,所以传统的集合运算也适用于关系。

组成关系代数的运算包括:关系的并、交、差、笛卡儿积运算,以及关系的选择、投影、联接和除运算。

1.关系的并、交、差关系的并(Union)、交(Intersection)、差(Difference)运算属于传统集合运算。

关系的元组是集合的元素,不过,元组由属性分量值构成,是有结构的,因此,在做这三种运算时,要求参与运算的关系必须满足以下条件。

●关系的度数相同(即属性个数相同)。

●对应属性取自相同的域(即两个关系的属性构成相同)。

可以理解为参与运算的关系具有相同关系模式。

设关系R、S满足上述条件,定义:(1)R与S的并:由出现在R或出现在S中所有元组(去掉重复元组)组成的关系。

记作:R∪S。

(2)R与S的交:由同时出现在R和S中的相同元组组成的关系。

记作:R∩S。

(3)R与S的差:由只出现在R而未出现在S中的元组组成的关系。

记作:R-S。

关系R和S的并、交、差的运算结果分别如图2.1中所示的阴影部分。

19R ∪S R ∩S R -S图2.1 关系的并、交、差示意图从上述运算的定义可知,交运算可以由差运算来实现,即:R ∩S=R -(R -S )。

【例2-1】已知关系R 、S 如表2.1、表2.2所示,则R ∪S ,R ∩S ,R -S 的结果见表2.3、表2.4、表2.5。

【例2-2】若关系SP1、SP2分别是2013年上半年和下半年已销售的商品清单,它们具有相同的关系模式,即(商品编号,商品名称,型号,单位,生产厂商),则:运算SP1∪SP2 意指全年已销售的商品清单;运算SP1∩SP2 意指上下半年都有销售的商品清单;运算SP1-SP2 意指只在上半年有销售而下半年没有销售的商品清单。

2.关系笛卡儿积关系笛卡儿积是将笛卡儿积运算用在关系中。

设有关系R (A 1,A 2,…,A n ),S (X 1,X 2,…,X m ),关系笛卡儿积(Cartesian Product )运算记为R ×S ,结果关系的模式是(A 1,A 2,…,A n ,X 1,X 2,…,X m ),而结果关系的元组是由R 的所有元组与S 的所有元组两两互相配对拼接而成。

R ×S 基数为M R ×M S 。

表2.1 关系R A B C a1 b1 c1 a2 b3 c2 a2b2c1表2.2 关系SA B C a2 b1 c2 a1 b1 c1 a2 b3 c1 a1b2c2表2.3 R ∪S A B C a1 b1 c1 a2 b3 c2 a2 b2 c1 a2 b1 c2 a2 b3 c1 a1b2c2表2.5 R -S A B C a2 b3 c2 a2b2c1表2.4 R ∩S A B C a1b1c120 【例2-3】已知R ,S 关系如表2.6、表2.7所示,则R ×S 结果见表2.8。

3.选择关系选择(Selection )运算是从一个关系中选取满足条件的元组组成结果关系。

该运算只有一个运算对象,运算结果和原关系具有相同的关系模式。

选择运算的表示方法是:σ条件表达式(关系名)在选择运算的条件表达式中,条件的基本表示方法是: <属性>θ<值>。

其中θ是以下运算符中之一:{=,≠,>,≥,<,≤ }。

条件表达式的运算结果为真(True )或假(False )。

有时需要同时用到多个单项条件,这时,应将各单项条件根据要求用逻辑运算符NOT (求反)、AND (并且)、OR (或者)联接起来。

有多个逻辑运算符时,其运算优先顺序是:NOT →AND →OR ,相同逻辑运算符按从左到右顺序,括号可改变运算顺序。

逻辑运算符的运算规则如表2.9所示。

表2.9 逻辑运算规则【例2-4】对于关系R (表2.10),求σA=“a1” AND B=1(R )。

结果见表2.11。

【例2-5】查询教学管理数据库的专业关系(参见表1.2)中专业类别为“管理学”的所有专业数据。

查询学生关系中所有1995年之后出生的女生数据。

查询运算表达式式分别是:σ专业类别=“管理学”(专业)σ性别=“女”AND 生日≥“1995-01-01”(学生)进行选择运算时,逐个元组进行条件运算,使运算结果为真(即条件成立)的所有元组即是所求的结果。

4.投影投影(Project)运算是在给定关系中指定若干属性(列)组成一个新关系。

结果关系的属性由投影运算式指定,结果关系的元组是由原关系中的元组去掉没有指定的属性分量值后剩下的值组成。

由于去掉了一些属性,结果中可能出现重复元组,投影运算要去掉这些重复的元组,所以结果关系的元组个数可能少于原关系。

投影运算的表示方法:π属性表(关系名)运算式中的“属性表”即是投影运算指定要保留的属性。

【例2-6】对于关系R(见表2.10),求πA,C(R)。

结果见表2.12。

表2.12 πA,C(R)A Ca1 c1a2 c2a2 c1a1 c2【例2-7】求表1.1学院关系中学院名称和院长姓名。

查询运算表达式是:π学院名称,院长(学院)5.联接及自然联接由于关系笛卡儿积将两个关系拼接成为一个关系时,两个关系的所有元组不加区分的全部相互拼接起来,这样拼接得到的元组大部分都无意义。

应该在进行元组拼接时进行筛选。

联接运算实现了这一要求。

联接(Join)运算是根据给定的联接条件将两个关系中的所有元组一一进行比较,符合联接条件的元组组成结果关系。

结果关系包括两个关系的所有属性。

联接运算的表示方法:关系1关系2联接条件的基本表示方法是: <关系1属性>θ<关系2属性>。

θ是比较运算符。

当有多个联接条件时用逻辑运算符NOT、AND或者OR联接起来。

【例2-8】对于关系R(表2.13),S(表2.14),求:。

结果见表2.15。

2122由于一个关系内不允许属性名相同,所以在结果关系中针对相同的属性,在其前面加上原关系名前缀“关系名.”。

【例2-9】根据例1-2所示的教学管理的关系模型,求学生及相关专业的数据。

学生及其专业数据存储在学生和专业关系中,由“专业编号”联系。

联接运算表达式式是:该运算式的联接条件是对两个关系中的主键和外键进行相等比较。

联接结果包括两个关系的全部属性,这样,“专业编号”属性会出现两次,但是值却相同。

在联接条件中使用“=”进行相等比较,这样的联接称为等值联接。

等值联接并不要求进行比较的属性是相同属性,只要两个属性可比即可。

由于关系一般都是通过主键和外键建立联系,这样对有联系的关系依照主键和外键相等进行联接就是联接运算中最常见的。

这样,结果关系中由原关系的主键和外键得到的属性必然重复。

为此,将最重要的联接运算单独命名,称其为自然联接(Natural Join )。

与一般的联接相比,自然联接有如下两个特点:(1)自然联接是将两个关系中相同的属性进行相等比较。

(2)结果关系中去掉重复的属性。

自然联接运算无须写出联接条件,其表示方法是:关系1 关系2。

因此,对于例2-9,最好应使用自然联接运算,运算表达式如下:学生 专业结果关系包括学生关系和专业关系中的所有属性,但专业编号只出现一次。

【例2-10】对于表2.13、表2.14所示的关系R 和S ,求:RS 。

结果见表2.16。

表2.13 R A BC a1 1c1 a2 3 c2 a3 2c1 a2 4c2 a13c3表2.14 S B D 2 d1 3 d2 4d1表2.15 A R.B C S.B Da2 3 c2 2 d1 a2 4 c2 2 d1 a2 4 c2 3 d2 a13c32d1表2.16 R S A B C D a2 3 c2 d2 a3 2 c1 d1 a2 4 c2 d1 a13c3d2关系代数以关系为运算对象,其结果也是关系。

在实际运用时可以根据情况将上述各种运算混合在一起使用,用括号来确定运算顺序。

【例2-11】根据例1-2所示的教学管理的关系模型,查询所有少数民族学生的学号、姓名、专业名称及所在学院名称。

该查询的关系代数表达式是:π(σ民族≠”汉”(学生)专业学院)学号,姓名,专业名称,学院名称关系代数奠定了关系数据模型的操作基础。

其中,投影、选择和联接是关系操作的核心运算。

在各种关系型DBMS中,都通过不同的方式实现了关系代数的所有运算功能。

2.1.2 关系规范化关系数据库使用关系或表来组织和表达数据,那么,如何判别关系数据库设计的“好”或“不好”呢?1.关系的存储特性与操作特性由于数据库是存储和处理数据的技术,所以要判断数据库设计的好坏,要从其存储特性和操作特性开始分析。

【例2-12】表2.17是一个将学生、专业、学习成绩等放在一起的学生信息关系。

分析该关系存在的问题。

学号姓名性别生日专业号专业名课程编号课程名学分成绩范小默男1993/04/10 0501 工商管理管理学概论 2 90曾晓女1994/10/18 0501 工商管理管理学概论 2 80曾晓女1994/10/18 0501 工商管理英语 6 75曾晓女1994/10/18 0501 工商管理高等数学 5 91吴敏女1994/04/20 0201 新闻英语 6 95张宁女1994/04/03 0902 信息管理高等数学 5 88张宁女1994/04/03 0902 信息管理程序设计 4 84王景男1993/11/23 0902 信息管理计算机原理 3 86王景男1993/11/23 0902 信息管理程序设计 4 82王景男1993/11/23 0902 信息管理高等数学 5 92 (1)数据冗余度大。

相同数据在不同行反复出现,数据冗余度大,浪费存储空间。

(2)数据修改异常。

重复存储的数据在修改时,不同位置的同一个数据都必须修改,很容易造成不一致。

同时,连带数据也要同步修改,如学生转专业,则多行数据都要修改。

若一个数据只存储一次,则可避免修改异常。

23(3)数据插入异常。

由于关系完整性约束的要求,使得有些有用的数据不能存储到关系中。