第02章数据基本理论

发布时间 : 星期三 文章第02章数据基本理论更新完毕开始阅读

第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中所示的阴影部分。

18 18

R∪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.1 关系R A a1 a2 a2 B b1 b3 b2 C c1 c2 c1 A a2 a1 a2 a1 表2.2 关系S B b1 b1 b3 b2 C c2 c1 c1 c2 表2.3 R∪S A a1 a2 a2 a2 a2 a1 B b1 b3 b2 b1 b3 b2 C c1 c2 c1 c2 c1 c2 表2.4 R∩S A a1 B b1 C c1 表2.5 R-S A a2 a2 B b3 b2 C c2 c1 【例2-2】若关系SP1、SP2分别是2013年上半年和下半年已销售的商品清单,它们具有相同的关系模式,即(商品编号,商品名称,型号,单位,生产厂商),则:

运算SP1∪SP2 意指全年已销售的商品清单;

运算SP1∩SP2 意指上下半年都有销售的商品清单;

运算SP1-SP2 意指只在上半年有销售而下半年没有销售的商品清单。

2.关系笛卡儿积

关系笛卡儿积是将笛卡儿积运算用在关系中。设有关系R(A1,A2,?,An),S(X1,X2,?,Xm),关系笛卡儿积(Cartesian Product)运算记为R×S,结果关系的模式是(A1,A2,?,An,X1,X2,?,Xm),而结果关系的元组是由R的所有元组与S的所有元组两两互相配对拼接而成。R×S基数为MR×MS。

19

19

【例2-3】已知R,S关系如表2.6、表2.7所示,则R×S结果见表2.8。

表2.6 关系R A1 1 2 A2 1 3 表2.7 关系S X x2 x1 x2 Y y1 y1 y3 Z z2 z1 z3 A1 1 1 1 2 2 2 表2.8 关系R×S A2 1 1 1 3 3 3 X x2 x1 x2 x2 x1 x2 Y y1 y1 y3 y1 y1 y3 Z z2 z1 z3 z2 z1 z3

3.选择

关系选择(Selection)运算是从一个关系中选取满足条件的元组组成结果关系。该运算只有一个运算对象,运算结果和原关系具有相同的关系模式。

选择运算的表示方法是:σ

条件表达式

(关系名)

在选择运算的条件表达式中,条件的基本表示方法是: <属性>θ<值>。 其中θ是以下运算符中之一:{=,≠,>,≥,<,≤ }。

条件表达式的运算结果为真(True)或假(False)。有时需要同时用到多个单项条件,这时,应将各单项条件根据要求用逻辑运算符NOT(求反)、AND(并且)、OR(或者)联接起来。有多个逻辑运算符时,其运算优先顺序是:NOT→AND→OR,相同逻辑运算符按从左到右顺序,括号可改变运算顺序。逻辑运算符的运算规则如表2.9所示。

表2.9 逻辑运算规则

X True True False False Y True False True False NOT X X AND Y X OR Y False True True False True True False False False True True False 2.11。

【例2-4】对于关系R(表2.10),求σ

表2.10 关系R A=“a1” AND B=1(R)。结果见表

表2.11 σA a1 a1 A=“a1” AND B=1(R) C A a1 a2 a2 a2 a2 a1 B 1 3 2 1 3 1 C c1 c2 c1 c2 c1 c2 B 1 1 c1 c2

20 20

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

查询运算表达式式分别是: σ

专业类别=“管理学”

(专业)

(学生)

σ

组即是所求的结果。

性别=“女” AND 生日≥“1995-01-01”

进行选择运算时,逐个元组进行条件运算,使运算结果为真(即条件成立)的所有元

4.投影

投影(Project)运算是在给定关系中指定若干属性(列)组成一个新关系。结果关系的属性由投影运算式指定,结果关系的元组是由原关系中的元组去掉没有指定的属性分量值后剩下的值组成。由于去掉了一些属性,结果中可能出现重复元组,投影运算要去掉这些重复的元组,所以结果关系的元组个数可能少于原关系。

投影运算的表示方法:π属性表(关系名)

运算式中的“属性表”即是投影运算指定要保留的属性。 【例2-6】对于关系R(见表2.10),求π

表2.12 πA a1 a2 a2 a1 A,CA,C(R)。结果见表

2.12。

(R) C c1 c2 c1 c2 【例2-7】求表1.1学院关系中学院名称和院长姓名。 查询运算表达式是:π

学院名称,院长

(学院)

5.联接及自然联接

由于关系笛卡儿积将两个关系拼接成为一个关系时,两个关系的所有元组不加区分的全部相互拼接起来,这样拼接得到的元组大部分都无意义。应该在进行元组拼接时进行筛选。联接运算实现了这一要求。

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

联接运算的表示方法:关系1 关系2

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

θ是比较运算符。当有多个联接条件时用逻辑运算符NOT、AND或者OR联接起来。 【例2-8】对于关系R(表2.13),S(表2.14),求:

。结果见表2.15。

21

21

联系合同范文客服:xxxxx#qq.com(#替换为@)