2009-7-28 Information College · ChangJun 1
第二章数据模型与关系代数
2009-7-28 Information College · ChangJun 2
2.1 数据和数据模型
2.2 概念层数据模型
2.3 组织层数据模型
2.4 关系代数目 录
2009-7-28 Information College · ChangJun 3
2.1 数据和数据模型
2.1.1 数据
2.1.2 数据模型
2009-7-28 Information College · ChangJun 4
2.1.1 数据
数据是信息存在的一种形式,只有通过解释或处理才能成为有用的 信息 。
2009-7-28 Information College · ChangJun 5
2.1.2 数据模型
模型是对事物、对象、过程等客观系统中感兴趣的内容的模拟和抽象表达,是理解系统的思维工具。
数据模型 ( Data Model )
也是一种模型,它是对现实世界数据特征的抽象。数据模型一般应满足三个要求:
要能够比较真实地模拟现实世界;
要容易被人们理解;
要能够很方便地在计算机上实现。
2009-7-28 Information College · ChangJun 6
2.1.2 数据模型
根据模型应用的不同目的,可以将这些模型分为两大类,它们分别属于两个不同的层次。
– 概念层模型
– 组织层数据模型
2009-7-28 Information College · ChangJun 7
概念层模型
从数据的应用语义视角来抽取模型并按用户的观点来对数据和信息进行建模。
这类模型主要用在 数据库的设计阶段
它与具体的数据库管理系统无关。
2009-7-28 Information College · ChangJun 8
组织层数据模型
指用什么样的结构来组织数据
与具体的数据库管理系统有关。
主要包括:
层次模型(用树型结构组织数据)
网状模型(用图型结构组织数据)
关系模型(用简单二维表结构组织数据)
对象-关系模型 (用复杂表格及其他结构组织数据)
2009-7-28 Information College · ChangJun 9
数据和数据模型为了把现实世界中的具体事物抽象、组织为某一具体 DBMS支持的数据模型
,通常首先将现实世界抽象为信息世界,然后再将信息世界转换为机器世界
。即:首先把现实世界中的客观对象抽象为某一种信息结构,然后再把概念级模型转换为计算机上的
DBMS支持的数据模型,也就是组织层数据模型。
现实世界人的认识抽象信息世界:概念模型机器世界:具体的 DBMS
支持的组织模型
2009-7-28 Information College · ChangJun 10
2.2 概念层数据模型
2.2.1 基本概念
2.2.2 实体 -联系模型
2009-7-28 Information College · ChangJun 11
2.2.1 基本概念
概念层模型实际上是现实世界到机器世界的一个中间层次。
概念层次模型:抽象现实系统中有应用价值的元素及其关联关系,反映现实系统中有应用价值的信息结构,并且不依赖于数据的组织结构。
概念数据模型是面向用户、面向现实世界的数据模型,它与具体的 DBMS无关。
常用的概念模型有实体 -联系( Entity-
Relationship,简称 E-R)模型、语义对象模型。我们这里只介绍实体 -联系模型。
2009-7-28 Information College · ChangJun 12
2.2.2 实体 - 联系模型
1.实体实体是具有公共性质的可相互区别的现实世界对象的集合。实体可以是具体的
,也可以是抽象的概念或联系。
在 E-R图中用矩形框表示具体的实体,
把实体名写在框内。
实体中的每个具体的记录值(一行数据),比如学生实体中的每个具体的学生
,我们称之为实体的一个实例。
2009-7-28 Information College · ChangJun 13
2、属性属性就是描述实体或者联系的性质或特征的数据项,属于一个实体的所有实体实例都具有共同的性质,在 E-R模型中,这些性质或特征就是属性。
属性在 E-R图中用 圆角矩形 (椭圆 )表示,
在矩形框内写上属性的名字,并用连线将属性矩形框与它所描述的实体联系起来。
2009-7-28 Information College · ChangJun 14
3.联系实体内部的联系通常是指组成实体的各属性之间的联系,实体之间的联系通常是指不同实体之间的联系。
联系是数据之间的关联集合,是客观存在的应用语义链。联系用 菱形框 表示,框内写上联系名,并用 连线 将联系框与它所关联的实体连接起来。
2009-7-28 Information College · ChangJun 15
实体型之间的联系
一对一联系如果实体 A中的每个实例在实体 B中至多有一个(也可以没有)实例与之关联,反之亦然,则称实体 A与实体 B具有一对一联系,记作,1,1。
例如,部门和经理(假设一个部门只有一个经理)。
经理管理部门图 (a)1
1
2009-7-28 Information College · ChangJun 16
一对多联系如果实体 A中的每个实例在实体 B中有 n个实例( n≥0 )与之联系,而实体 B中每个实例在实体 A
中只有一个实例与之联系,则称实体 A与实体 B是一对多联系,记作,1,n。
例,假设一个部门有若干职工,而一个职工只在一个部门工作,则部门和职工之间就是一对多联系。
职工工作部门图 (b)1
n
2009-7-28 Information College · ChangJun 17
多对多联系如果对于实体 A中的每个实例,实体 B中有 n个实例( n≥0
)与之联系,而实体 B中的每个实例,在实体 A中也有 m个实例
( m≥0 )与之联系,则称实体 A
与实体 B的联系是多对多的,记为 m,n 。
例如学生和课程,一个学生可以选修多门课程,一门课程也可以被多个学生选修,因此学生和课程之间是多对多的联系。
n
学生选课图 (c)
m
学号 姓名 性别成绩课程课程号 课程名 学分
2009-7-28 Information College · ChangJun 18
E-R图不仅能描述两个实体之间的联系,而且还能描述 两个以上实体之间的联系 。
比如有顾客、商品、
售货员三个实体,并且有语义:每个顾客可以从多个售货员那里购买商品,
并且 可以购买多种商品;
每个售货员可以向多名顾客销售商品,并且 可以销售多种商品;每种商品可由多个售货员销售,并且可以销售给多名顾客。
售货员销售商品
p
m
顾客
n
2009-7-28 Information College · ChangJun 19
2.3 组织层数据模型
2.3.1 关系模型的数据结构
2.3.2 关系模型的数据操作
2.3.3 关系模型的数据完整性约束
2009-7-28 Information College · ChangJun 20
2.3.1 关系模型的数据结构组织层数据模型是从数据的组织方式的角度来描述信息,目前,在数据库领域中最常用的组织层数据模型有四种,它们是:层次模型、网状模型、关系模型和面向对象模型。组织层数据模型是按存储数据的逻辑结构来命名的。
关系模型的数据结构关系数据模型源于数学,它用二维表来组织数据,
而这个二维表在关系数据库中就称为关系。关系数据库就是表或者说是关系的集合。关系系统要求只让用户所感觉的数据库就是一张张表。在关系系统中,表是逻辑结构而不是物理结构。
2009-7-28 Information College · ChangJun 21
一些关系模型中的基本术语:
1.关系,关系就是二维表,它满足如下两个条件:
关系表中的每一列都是不可再分的基本属性。
表中各属性不能重名。
表中的行、列次序并不重要。即交换列的前后顺序不影响其表达的语义。
2.元组,表中的每一行数据称作是一个元组,它相当于一个记录值。
3.属性,表中的每一列是一个属性值集,列可以命名,称为属性名。
4.主码:( Primary key) 也译为主键或主关键字,是表中的属性或属性组,用于惟一地确定一个元组。
5.域,属性的取值范围就称为域。例如,大学生的年龄一般在 14--40岁之间,因此学生的属性“年龄”的域就是(
14--40)
2009-7-28 Information College · ChangJun 22
2.3.2 关系模型的数据操作关系模型的操作对象是集合,而不是行,也就是操作的数据以及操作的结果都是完整的表(是包含行集的表,而不只是单行) 。而非关系型数据库系统中典型的操作是一次一行或一次一个记录。因此,集合处理能力是关系系统区别于其他系统的一个重要特征
。
关系数据模型的数据操作主要包括四种:查询、
插入、删除和修改数据。关系数据库中的信息内容只有一种表示方式,那就是表中的行列位置有明确的值
。但在非关系系统中,这些信息一般由指针来表示 。
2009-7-28 Information College · ChangJun 23
2.4 关系代数
传统的集合运算
专门的关系运算
2009-7-28 Information College · ChangJun 24
一,传统的集合运算
并
差
交
广义笛卡尔积
2009-7-28 Information College · ChangJun 25
1,并( Union)
R和 S
– 具有相同的目 n( 即两个关系都有 n个属性
)
– 相应的属性取自同一个域
R∪ S
– 仍为 n目关系,由属于 R或属于 S的元组组成
R∪ S = { t|t? R∨ t?S }
2009-7-28 Information College · ChangJun 26
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b1 c1
a1 b2 c2
a1 b3 c2
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R
S
R∪ S
2009-7-28 Information College · ChangJun 27
2,差( Difference)
R和 S
– 具有相同的目 n
– 相应的属性取自同一个域
R - S
– 仍为 n目关系,由属于 R而不属于 S的所有元组组成
R -S = { t|t?R∧ t?S }
2009-7-28 Information College · ChangJun 28
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b1 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R
S
R-S
2009-7-28 Information College · ChangJun 29
3,交( Intersection)
R和 S
– 具有相同的目 n
– 相应的属性取自同一个域
R∩S
– 仍为 n目关系,由既属于 R又属于 S的元组组成
R∩S = { t|t? R∧ t?S }
R∩S = R –(R-S)
2009-7-28 Information College · ChangJun 30
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1 A B C
a1 b2 c2
a2 b2 c1A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R
S
R ∩ S
2009-7-28 Information College · ChangJun 31
4,广义笛卡尔积( Extended Cartesian
Product)
R
– n目关系,k1个元组
S
– m目关系,k2个元组
R× S
– 列,( n+m) 列的元组的集合
元组的前 n列是关系 R的一个元组
后 m列是关系 S的一个元组
– 行,k1× k2个元组
R× S = {tr ts |tr?R ∧ ts?S }
2009-7-28 Information College · ChangJun 32
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
R.A R.B R.C
a1 b1 c1
a1 b1 c1
a1 b1 c1
a1 b2 c2
a1 b2 c2
a1 b2 c2
a2 b2 c1
a2 b2 c1
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R
S
R × S
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
a1 b2 c2
a1 b3 c2
a2 b2 c1
a1 b2 c2
a1 b3 c2
a2 b2 c1
2009-7-28 Information College · ChangJun 33
二,专门的关系运算
选择
投影
连接
除
2009-7-28 Information College · ChangJun 34
1,选择( Selection)
1) 选择又称为限制 ( Restriction)
2) 选择运算符的含义
– 在关系 R中选择满足给定条件的诸元组
σF(R) = {t|t?R∧ F(t)= '真 '}
– F:选择条件,是一个逻辑表达式,基本形式为:
[?( ] X1θY1 [ )][φ [?( ] X2θY2 [ )]]…
θ:比较运算符 ( >,≥,<,≤,=或 <>)
X1,Y1等:属性名,常量,简单函数;属性名也可以用它的序号来代替;
φ:逻辑运算符 ( ∧ 或 ∨ )
[ ]:表示任选项
…,表示上述格式可以重复下去
2009-7-28 Information College · ChangJun 35
3) 选择运算是从行的角度进行的运算
4) 举例设有一个学生 -课程数据库,包括学生关系
Student,课程关系 Course和选修关系 SC
。
σ
2009-7-28 Information College · ChangJun 36
Sno Sname Ssex Sage Sdept
95001 李勇 男 20 CS
95002 刘晨 女 19 IS
95003 王敏 女 18 MA
95004 张立 男 19 IS
Student
课程号 课程名 先行课 学分
Cno Cname Cpno Ccredit
1 数据库 5 4
2 数学 2
3 信息系统 1 4
4 操作系统 6 3
5 数据结构 7 4
6 数据处理 2
7 PASCAL语言 6 4
Course
学 号 课 程 号 成 绩
Sno Cno Grade
95001 1 92
95001 2 85
95001 3 88
95002 2 90
95002 3 80
SC
2009-7-28 Information College · ChangJun 37
[例 1] 查询信息系 ( IS系 ) 全体学生
σSdept = 'IS' (Student)
或 σ5 ='IS' (Student)
结果:
Sno Sname Ssex Sage Sdept
95002 刘晨 女 19 IS
95004 张立 男 19 IS
2009-7-28 Information College · ChangJun 38
[例 2] 查询年龄小于 20岁的学生
σSage < 20(Student)
或 σ4 < 20(Student)
结果:
Sno Sname Ssex Sage Sdept
95002 刘晨 女 19 IS
95003 王敏 女 18 MA
95004 张立 男 19 IS
2009-7-28 Information College · ChangJun 39
2,投影( Projection)
1) 投影运算符的含义
– 从 R中选择出若干属性列组成新的关系
πA(R) = { t[A] | t?R }
A,R中的属性列
2009-7-28 Information College · ChangJun 40
2) 投影操作主要是从列的角度进行运算
– 但投影之后不仅取消了原关系中的某些列,
而且还可能取消某些元组 ( 避免重复行 )
π
2009-7-28 Information College · ChangJun 41
3) 举例
[例 3] 查询学生的姓名和所在系即求 Student关系上学生姓名和所在系两个属性上的投影
πSname,Sdept(Student)
或 π2,5(Student)
结果:
Sname Sdept
李勇 CS
刘晨 IS
王敏 MA
张立 IS
2009-7-28 Information College · ChangJun 42
[例 4] 查询学生关系 Student中都有哪些系
πSdept(Student)
结果:
Sdept
CS
IS
MA
2009-7-28 Information College · ChangJun 43
3,连接( Join)
1) 连接也称为 θ连接
2) 连接运算的含义
– 从两个关系的笛卡尔积中选取属性间满足一定条件的元组
R S = { | tr? R∧ ts?S∧ tr[A]θts[B] }
A和 B,分别为 R和 S上度数相等且可比的属性组
θ:比较运算符
– 连接运算从 R和 S的广义笛卡尔积 R× S中选取( R
关系)在 A属性组上的值与( S关系)在 B属性组上值满足比较关系的元组。
AθB tr ts
2009-7-28 Information College · ChangJun 44
等值连接( equijoin)
– 什么是等值连接
θ为“=”的连接运算称为等值连接
– 等值连接的含义
从关系 R与 S的广义笛卡尔积中选取 A,B
属性值相等的那些元组,即等值连接为:
R S = { | tr?R∧ ts?S∧ tr[A] = ts[B] }A=B tr ts
3)两类常用连接运算
2009-7-28 Information College · ChangJun 45
– 自然连接 ( Natural join)
什么是自然连接
– 自然连接是一种特殊的等值连接
两个关系中进行比较的分量必须是相同的属性组
在结果中把重复的属性列去掉
自然连接的含义
R和 S具有相同的属性组 B
R S = { | tr?R∧ ts?S∧ tr[B] = ts[B] } tr ts
2009-7-28 Information College · ChangJun 46
4) 一般的连接操作是从行的角度进行运算 。
自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。
AθB
R
S
2009-7-28 Information College · ChangJun 47
5)举例
[例 5]
A B C
a1 b1 5
a1 b2 6
a2 b3 8
a2 b4 12
B E
b1 3
b2 7
b3 10
b3 2
b5 2R
S
2009-7-28 Information College · ChangJun 48
R S
A R.B C S.B E
a1 b1 5 b2 7
a1 b1 5 b3 10
a1 b2 6 b2 7
a1 b2 6 b3 10
a2 b3 8 b3 10
C< E
2009-7-28 Information College · ChangJun 49
等值连接 R SR.B=S.B
A R.B C S.B E
a1 b1 5 b1 3
a1 b2 6 b2 7
a2 b3 8 b3 10
a2 b3 8 b3 2
2009-7-28 Information College · ChangJun 50
自然连接 R S
A B C E
a1 b1 5 3
a1 b2 6 7
a2 b3 8 10
a2 b3 8 2
2009-7-28 Information College · ChangJun 51
4,除( Division)
给定关系 R (X,Y) 和 S (Y,Z),其中 X,Y,Z为属性组 。
R中的 Y与 S中的 Y可以有不同的属性名,但必须出自相同的域集 。 R与 S的除运算得到一个新的关系 P(X),P是 R中满足下列条件的元组在 X属性列上的投影:元组在 X上分量值 x的象集 Yx包含 S在 Y上投影的集合 。
R÷ S = {tr [X] | tr? R∧ πY (S)? Yx }
Yx,x在 R中的象集,x = tr[X]
2009-7-28 Information College · ChangJun 52
2) 除操作是同时从行和列角度进行运算
3) 举例
÷
R
S
2009-7-28 Information College · ChangJun 53
A B C
a1 b1 c2
a2 b3 c7
a3 b4 c6
a1 b2 c3
a4 b6 c6
a2 b2 c3
a1 b2 c1
B C D
b1 c2 d1
b2 c1 d1
b2 c3 d2R
S
R÷ S
2009-7-28 Information College · ChangJun 54
分析:
在关系 R中,A可以取四个值 {a1,a2,a3,a4}
a1的象集为 {(b1,c2),(b2,c3),(b2,c1)}
a2的象集为 {(b3,c7),(b2,c3)}
a3的象集为 {(b4,c6)}
a4的象集为 {(b6,c6)}
S在 (B,C)上的投影为
{(b1,c2),(b2,c1),(b2,c3) }
只有 a1的象集包含了 S在 (B,C)属性组上的投影所以 R÷ S ={a1}
2009-7-28 Information College · ChangJun 55
给定一个关系 R( X,Z),X和 Z为属性组 。 当
t[X]=x时,x在 R中的象集 ( Images Set) 为
:
Zx={t[Z]|t?R,t[X]=x}
它表示 R中属性组 X上值为 x的诸元组在 Z上分量的集合。
4)象集 Z
2009-7-28 Information College · ChangJun 56
A B C
a1 b1 c2
a2 b3 c7
a3 b4 c6
a1 b2 c3
a4 b6 c6
a2 b2 c3
a1 b2 c1
B C D
b1 c2 d1
b2 c1 d1
b2 c3 d2
R÷ S
A
a1
R
S
2009-7-28 Information College · ChangJun 57
5.综合举例以学生 -课程数据库为例
[例 7] 查询至少选修 1号课程和 3号课程的学生号码首先建立一个临时关系 K:
然后求,πSno.Cno(SC)÷ K
Cno
1
3
2009-7-28 Information College · ChangJun 58
例 7续 πSno.Cno(SC)
95001象集 {1,2,3}
95002象集 {2,3}
πCno(K)={1,3}
于是:
πSno.Cno(SC)÷ K={95001}
Sno Cno
95001 1
95001 2
95001 3
95002 2
95002 3
2009-7-28 Information College · ChangJun 59
[例 8] 查询选修了 2号课程的学生的学号 。
πSno( σCno='2'( SC))
= { 95001,95002}
2009-7-28 Information College · ChangJun 60
[例 9] 查询至少选修了一门其直接先行课为 5号课程的课程的学生姓名 。
πSname(σCpno='5'(Course SC Student))
或
πSname(σCpno='5'(Course) SC πSno,
Sname(Student))
或
πSname (πSno (σCpno='5' (Course) SC) πSno,Sname
(Student))
2009-7-28 Information College · ChangJun 61
[例 10] 查询选修了全部课程的学生号码和姓名 。
πSno,Cno( SC) ÷ πCno( Course)
πSno,Sname( Student)
第二章数据模型与关系代数
2009-7-28 Information College · ChangJun 2
2.1 数据和数据模型
2.2 概念层数据模型
2.3 组织层数据模型
2.4 关系代数目 录
2009-7-28 Information College · ChangJun 3
2.1 数据和数据模型
2.1.1 数据
2.1.2 数据模型
2009-7-28 Information College · ChangJun 4
2.1.1 数据
数据是信息存在的一种形式,只有通过解释或处理才能成为有用的 信息 。
2009-7-28 Information College · ChangJun 5
2.1.2 数据模型
模型是对事物、对象、过程等客观系统中感兴趣的内容的模拟和抽象表达,是理解系统的思维工具。
数据模型 ( Data Model )
也是一种模型,它是对现实世界数据特征的抽象。数据模型一般应满足三个要求:
要能够比较真实地模拟现实世界;
要容易被人们理解;
要能够很方便地在计算机上实现。
2009-7-28 Information College · ChangJun 6
2.1.2 数据模型
根据模型应用的不同目的,可以将这些模型分为两大类,它们分别属于两个不同的层次。
– 概念层模型
– 组织层数据模型
2009-7-28 Information College · ChangJun 7
概念层模型
从数据的应用语义视角来抽取模型并按用户的观点来对数据和信息进行建模。
这类模型主要用在 数据库的设计阶段
它与具体的数据库管理系统无关。
2009-7-28 Information College · ChangJun 8
组织层数据模型
指用什么样的结构来组织数据
与具体的数据库管理系统有关。
主要包括:
层次模型(用树型结构组织数据)
网状模型(用图型结构组织数据)
关系模型(用简单二维表结构组织数据)
对象-关系模型 (用复杂表格及其他结构组织数据)
2009-7-28 Information College · ChangJun 9
数据和数据模型为了把现实世界中的具体事物抽象、组织为某一具体 DBMS支持的数据模型
,通常首先将现实世界抽象为信息世界,然后再将信息世界转换为机器世界
。即:首先把现实世界中的客观对象抽象为某一种信息结构,然后再把概念级模型转换为计算机上的
DBMS支持的数据模型,也就是组织层数据模型。
现实世界人的认识抽象信息世界:概念模型机器世界:具体的 DBMS
支持的组织模型
2009-7-28 Information College · ChangJun 10
2.2 概念层数据模型
2.2.1 基本概念
2.2.2 实体 -联系模型
2009-7-28 Information College · ChangJun 11
2.2.1 基本概念
概念层模型实际上是现实世界到机器世界的一个中间层次。
概念层次模型:抽象现实系统中有应用价值的元素及其关联关系,反映现实系统中有应用价值的信息结构,并且不依赖于数据的组织结构。
概念数据模型是面向用户、面向现实世界的数据模型,它与具体的 DBMS无关。
常用的概念模型有实体 -联系( Entity-
Relationship,简称 E-R)模型、语义对象模型。我们这里只介绍实体 -联系模型。
2009-7-28 Information College · ChangJun 12
2.2.2 实体 - 联系模型
1.实体实体是具有公共性质的可相互区别的现实世界对象的集合。实体可以是具体的
,也可以是抽象的概念或联系。
在 E-R图中用矩形框表示具体的实体,
把实体名写在框内。
实体中的每个具体的记录值(一行数据),比如学生实体中的每个具体的学生
,我们称之为实体的一个实例。
2009-7-28 Information College · ChangJun 13
2、属性属性就是描述实体或者联系的性质或特征的数据项,属于一个实体的所有实体实例都具有共同的性质,在 E-R模型中,这些性质或特征就是属性。
属性在 E-R图中用 圆角矩形 (椭圆 )表示,
在矩形框内写上属性的名字,并用连线将属性矩形框与它所描述的实体联系起来。
2009-7-28 Information College · ChangJun 14
3.联系实体内部的联系通常是指组成实体的各属性之间的联系,实体之间的联系通常是指不同实体之间的联系。
联系是数据之间的关联集合,是客观存在的应用语义链。联系用 菱形框 表示,框内写上联系名,并用 连线 将联系框与它所关联的实体连接起来。
2009-7-28 Information College · ChangJun 15
实体型之间的联系
一对一联系如果实体 A中的每个实例在实体 B中至多有一个(也可以没有)实例与之关联,反之亦然,则称实体 A与实体 B具有一对一联系,记作,1,1。
例如,部门和经理(假设一个部门只有一个经理)。
经理管理部门图 (a)1
1
2009-7-28 Information College · ChangJun 16
一对多联系如果实体 A中的每个实例在实体 B中有 n个实例( n≥0 )与之联系,而实体 B中每个实例在实体 A
中只有一个实例与之联系,则称实体 A与实体 B是一对多联系,记作,1,n。
例,假设一个部门有若干职工,而一个职工只在一个部门工作,则部门和职工之间就是一对多联系。
职工工作部门图 (b)1
n
2009-7-28 Information College · ChangJun 17
多对多联系如果对于实体 A中的每个实例,实体 B中有 n个实例( n≥0
)与之联系,而实体 B中的每个实例,在实体 A中也有 m个实例
( m≥0 )与之联系,则称实体 A
与实体 B的联系是多对多的,记为 m,n 。
例如学生和课程,一个学生可以选修多门课程,一门课程也可以被多个学生选修,因此学生和课程之间是多对多的联系。
n
学生选课图 (c)
m
学号 姓名 性别成绩课程课程号 课程名 学分
2009-7-28 Information College · ChangJun 18
E-R图不仅能描述两个实体之间的联系,而且还能描述 两个以上实体之间的联系 。
比如有顾客、商品、
售货员三个实体,并且有语义:每个顾客可以从多个售货员那里购买商品,
并且 可以购买多种商品;
每个售货员可以向多名顾客销售商品,并且 可以销售多种商品;每种商品可由多个售货员销售,并且可以销售给多名顾客。
售货员销售商品
p
m
顾客
n
2009-7-28 Information College · ChangJun 19
2.3 组织层数据模型
2.3.1 关系模型的数据结构
2.3.2 关系模型的数据操作
2.3.3 关系模型的数据完整性约束
2009-7-28 Information College · ChangJun 20
2.3.1 关系模型的数据结构组织层数据模型是从数据的组织方式的角度来描述信息,目前,在数据库领域中最常用的组织层数据模型有四种,它们是:层次模型、网状模型、关系模型和面向对象模型。组织层数据模型是按存储数据的逻辑结构来命名的。
关系模型的数据结构关系数据模型源于数学,它用二维表来组织数据,
而这个二维表在关系数据库中就称为关系。关系数据库就是表或者说是关系的集合。关系系统要求只让用户所感觉的数据库就是一张张表。在关系系统中,表是逻辑结构而不是物理结构。
2009-7-28 Information College · ChangJun 21
一些关系模型中的基本术语:
1.关系,关系就是二维表,它满足如下两个条件:
关系表中的每一列都是不可再分的基本属性。
表中各属性不能重名。
表中的行、列次序并不重要。即交换列的前后顺序不影响其表达的语义。
2.元组,表中的每一行数据称作是一个元组,它相当于一个记录值。
3.属性,表中的每一列是一个属性值集,列可以命名,称为属性名。
4.主码:( Primary key) 也译为主键或主关键字,是表中的属性或属性组,用于惟一地确定一个元组。
5.域,属性的取值范围就称为域。例如,大学生的年龄一般在 14--40岁之间,因此学生的属性“年龄”的域就是(
14--40)
2009-7-28 Information College · ChangJun 22
2.3.2 关系模型的数据操作关系模型的操作对象是集合,而不是行,也就是操作的数据以及操作的结果都是完整的表(是包含行集的表,而不只是单行) 。而非关系型数据库系统中典型的操作是一次一行或一次一个记录。因此,集合处理能力是关系系统区别于其他系统的一个重要特征
。
关系数据模型的数据操作主要包括四种:查询、
插入、删除和修改数据。关系数据库中的信息内容只有一种表示方式,那就是表中的行列位置有明确的值
。但在非关系系统中,这些信息一般由指针来表示 。
2009-7-28 Information College · ChangJun 23
2.4 关系代数
传统的集合运算
专门的关系运算
2009-7-28 Information College · ChangJun 24
一,传统的集合运算
并
差
交
广义笛卡尔积
2009-7-28 Information College · ChangJun 25
1,并( Union)
R和 S
– 具有相同的目 n( 即两个关系都有 n个属性
)
– 相应的属性取自同一个域
R∪ S
– 仍为 n目关系,由属于 R或属于 S的元组组成
R∪ S = { t|t? R∨ t?S }
2009-7-28 Information College · ChangJun 26
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b1 c1
a1 b2 c2
a1 b3 c2
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R
S
R∪ S
2009-7-28 Information College · ChangJun 27
2,差( Difference)
R和 S
– 具有相同的目 n
– 相应的属性取自同一个域
R - S
– 仍为 n目关系,由属于 R而不属于 S的所有元组组成
R -S = { t|t?R∧ t?S }
2009-7-28 Information College · ChangJun 28
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
A B C
a1 b1 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R
S
R-S
2009-7-28 Information College · ChangJun 29
3,交( Intersection)
R和 S
– 具有相同的目 n
– 相应的属性取自同一个域
R∩S
– 仍为 n目关系,由既属于 R又属于 S的元组组成
R∩S = { t|t? R∧ t?S }
R∩S = R –(R-S)
2009-7-28 Information College · ChangJun 30
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1 A B C
a1 b2 c2
a2 b2 c1A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R
S
R ∩ S
2009-7-28 Information College · ChangJun 31
4,广义笛卡尔积( Extended Cartesian
Product)
R
– n目关系,k1个元组
S
– m目关系,k2个元组
R× S
– 列,( n+m) 列的元组的集合
元组的前 n列是关系 R的一个元组
后 m列是关系 S的一个元组
– 行,k1× k2个元组
R× S = {tr ts |tr?R ∧ ts?S }
2009-7-28 Information College · ChangJun 32
A B C
a1 b1 c1
a1 b2 c2
a2 b2 c1
R.A R.B R.C
a1 b1 c1
a1 b1 c1
a1 b1 c1
a1 b2 c2
a1 b2 c2
a1 b2 c2
a2 b2 c1
a2 b2 c1
a2 b2 c1
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
R
S
R × S
A B C
a1 b2 c2
a1 b3 c2
a2 b2 c1
a1 b2 c2
a1 b3 c2
a2 b2 c1
a1 b2 c2
a1 b3 c2
a2 b2 c1
2009-7-28 Information College · ChangJun 33
二,专门的关系运算
选择
投影
连接
除
2009-7-28 Information College · ChangJun 34
1,选择( Selection)
1) 选择又称为限制 ( Restriction)
2) 选择运算符的含义
– 在关系 R中选择满足给定条件的诸元组
σF(R) = {t|t?R∧ F(t)= '真 '}
– F:选择条件,是一个逻辑表达式,基本形式为:
[?( ] X1θY1 [ )][φ [?( ] X2θY2 [ )]]…
θ:比较运算符 ( >,≥,<,≤,=或 <>)
X1,Y1等:属性名,常量,简单函数;属性名也可以用它的序号来代替;
φ:逻辑运算符 ( ∧ 或 ∨ )
[ ]:表示任选项
…,表示上述格式可以重复下去
2009-7-28 Information College · ChangJun 35
3) 选择运算是从行的角度进行的运算
4) 举例设有一个学生 -课程数据库,包括学生关系
Student,课程关系 Course和选修关系 SC
。
σ
2009-7-28 Information College · ChangJun 36
Sno Sname Ssex Sage Sdept
95001 李勇 男 20 CS
95002 刘晨 女 19 IS
95003 王敏 女 18 MA
95004 张立 男 19 IS
Student
课程号 课程名 先行课 学分
Cno Cname Cpno Ccredit
1 数据库 5 4
2 数学 2
3 信息系统 1 4
4 操作系统 6 3
5 数据结构 7 4
6 数据处理 2
7 PASCAL语言 6 4
Course
学 号 课 程 号 成 绩
Sno Cno Grade
95001 1 92
95001 2 85
95001 3 88
95002 2 90
95002 3 80
SC
2009-7-28 Information College · ChangJun 37
[例 1] 查询信息系 ( IS系 ) 全体学生
σSdept = 'IS' (Student)
或 σ5 ='IS' (Student)
结果:
Sno Sname Ssex Sage Sdept
95002 刘晨 女 19 IS
95004 张立 男 19 IS
2009-7-28 Information College · ChangJun 38
[例 2] 查询年龄小于 20岁的学生
σSage < 20(Student)
或 σ4 < 20(Student)
结果:
Sno Sname Ssex Sage Sdept
95002 刘晨 女 19 IS
95003 王敏 女 18 MA
95004 张立 男 19 IS
2009-7-28 Information College · ChangJun 39
2,投影( Projection)
1) 投影运算符的含义
– 从 R中选择出若干属性列组成新的关系
πA(R) = { t[A] | t?R }
A,R中的属性列
2009-7-28 Information College · ChangJun 40
2) 投影操作主要是从列的角度进行运算
– 但投影之后不仅取消了原关系中的某些列,
而且还可能取消某些元组 ( 避免重复行 )
π
2009-7-28 Information College · ChangJun 41
3) 举例
[例 3] 查询学生的姓名和所在系即求 Student关系上学生姓名和所在系两个属性上的投影
πSname,Sdept(Student)
或 π2,5(Student)
结果:
Sname Sdept
李勇 CS
刘晨 IS
王敏 MA
张立 IS
2009-7-28 Information College · ChangJun 42
[例 4] 查询学生关系 Student中都有哪些系
πSdept(Student)
结果:
Sdept
CS
IS
MA
2009-7-28 Information College · ChangJun 43
3,连接( Join)
1) 连接也称为 θ连接
2) 连接运算的含义
– 从两个关系的笛卡尔积中选取属性间满足一定条件的元组
R S = { | tr? R∧ ts?S∧ tr[A]θts[B] }
A和 B,分别为 R和 S上度数相等且可比的属性组
θ:比较运算符
– 连接运算从 R和 S的广义笛卡尔积 R× S中选取( R
关系)在 A属性组上的值与( S关系)在 B属性组上值满足比较关系的元组。
AθB tr ts
2009-7-28 Information College · ChangJun 44
等值连接( equijoin)
– 什么是等值连接
θ为“=”的连接运算称为等值连接
– 等值连接的含义
从关系 R与 S的广义笛卡尔积中选取 A,B
属性值相等的那些元组,即等值连接为:
R S = { | tr?R∧ ts?S∧ tr[A] = ts[B] }A=B tr ts
3)两类常用连接运算
2009-7-28 Information College · ChangJun 45
– 自然连接 ( Natural join)
什么是自然连接
– 自然连接是一种特殊的等值连接
两个关系中进行比较的分量必须是相同的属性组
在结果中把重复的属性列去掉
自然连接的含义
R和 S具有相同的属性组 B
R S = { | tr?R∧ ts?S∧ tr[B] = ts[B] } tr ts
2009-7-28 Information College · ChangJun 46
4) 一般的连接操作是从行的角度进行运算 。
自然连接还需要取消重复列,所以是同时从行和列的角度进行运算。
AθB
R
S
2009-7-28 Information College · ChangJun 47
5)举例
[例 5]
A B C
a1 b1 5
a1 b2 6
a2 b3 8
a2 b4 12
B E
b1 3
b2 7
b3 10
b3 2
b5 2R
S
2009-7-28 Information College · ChangJun 48
R S
A R.B C S.B E
a1 b1 5 b2 7
a1 b1 5 b3 10
a1 b2 6 b2 7
a1 b2 6 b3 10
a2 b3 8 b3 10
C< E
2009-7-28 Information College · ChangJun 49
等值连接 R SR.B=S.B
A R.B C S.B E
a1 b1 5 b1 3
a1 b2 6 b2 7
a2 b3 8 b3 10
a2 b3 8 b3 2
2009-7-28 Information College · ChangJun 50
自然连接 R S
A B C E
a1 b1 5 3
a1 b2 6 7
a2 b3 8 10
a2 b3 8 2
2009-7-28 Information College · ChangJun 51
4,除( Division)
给定关系 R (X,Y) 和 S (Y,Z),其中 X,Y,Z为属性组 。
R中的 Y与 S中的 Y可以有不同的属性名,但必须出自相同的域集 。 R与 S的除运算得到一个新的关系 P(X),P是 R中满足下列条件的元组在 X属性列上的投影:元组在 X上分量值 x的象集 Yx包含 S在 Y上投影的集合 。
R÷ S = {tr [X] | tr? R∧ πY (S)? Yx }
Yx,x在 R中的象集,x = tr[X]
2009-7-28 Information College · ChangJun 52
2) 除操作是同时从行和列角度进行运算
3) 举例
÷
R
S
2009-7-28 Information College · ChangJun 53
A B C
a1 b1 c2
a2 b3 c7
a3 b4 c6
a1 b2 c3
a4 b6 c6
a2 b2 c3
a1 b2 c1
B C D
b1 c2 d1
b2 c1 d1
b2 c3 d2R
S
R÷ S
2009-7-28 Information College · ChangJun 54
分析:
在关系 R中,A可以取四个值 {a1,a2,a3,a4}
a1的象集为 {(b1,c2),(b2,c3),(b2,c1)}
a2的象集为 {(b3,c7),(b2,c3)}
a3的象集为 {(b4,c6)}
a4的象集为 {(b6,c6)}
S在 (B,C)上的投影为
{(b1,c2),(b2,c1),(b2,c3) }
只有 a1的象集包含了 S在 (B,C)属性组上的投影所以 R÷ S ={a1}
2009-7-28 Information College · ChangJun 55
给定一个关系 R( X,Z),X和 Z为属性组 。 当
t[X]=x时,x在 R中的象集 ( Images Set) 为
:
Zx={t[Z]|t?R,t[X]=x}
它表示 R中属性组 X上值为 x的诸元组在 Z上分量的集合。
4)象集 Z
2009-7-28 Information College · ChangJun 56
A B C
a1 b1 c2
a2 b3 c7
a3 b4 c6
a1 b2 c3
a4 b6 c6
a2 b2 c3
a1 b2 c1
B C D
b1 c2 d1
b2 c1 d1
b2 c3 d2
R÷ S
A
a1
R
S
2009-7-28 Information College · ChangJun 57
5.综合举例以学生 -课程数据库为例
[例 7] 查询至少选修 1号课程和 3号课程的学生号码首先建立一个临时关系 K:
然后求,πSno.Cno(SC)÷ K
Cno
1
3
2009-7-28 Information College · ChangJun 58
例 7续 πSno.Cno(SC)
95001象集 {1,2,3}
95002象集 {2,3}
πCno(K)={1,3}
于是:
πSno.Cno(SC)÷ K={95001}
Sno Cno
95001 1
95001 2
95001 3
95002 2
95002 3
2009-7-28 Information College · ChangJun 59
[例 8] 查询选修了 2号课程的学生的学号 。
πSno( σCno='2'( SC))
= { 95001,95002}
2009-7-28 Information College · ChangJun 60
[例 9] 查询至少选修了一门其直接先行课为 5号课程的课程的学生姓名 。
πSname(σCpno='5'(Course SC Student))
或
πSname(σCpno='5'(Course) SC πSno,
Sname(Student))
或
πSname (πSno (σCpno='5' (Course) SC) πSno,Sname
(Student))
2009-7-28 Information College · ChangJun 61
[例 10] 查询选修了全部课程的学生号码和姓名 。
πSno,Cno( SC) ÷ πCno( Course)
πSno,Sname( Student)