当前位置:文档之家› 数据库基础-第二章 关系数据模型与关系运算

数据库基础-第二章 关系数据模型与关系运算


2.2 关系代数
数据查询基本运算
❖1.关系属性的指定——投影运算 这个操作是对一个关系进行垂直分割,消去某些列,并 重新安排列的顺序。
i1,i2,,in(R) {t | t ti1,ti2,,tin t1,t2,,tk R}
例子2-3
❖2.关系元组选定——选择运算 选择操作是根据某些条件对关系做水平分割,即选取符合 条件的元组。
R S {t | t R t S}
式中“-”为差运算符,t为元组变量,结果R-S为一个新的与R、S兼
容的关系,该关系是由属于R而且不属于S的元组构成的集合,即 在R中减去与S中相同的那些元组。
关系 R
A
B
C
a1
b1
c1
a1
b2
c2
a2
b2
c1
关系 R∪S
A
B
C
a1
b1
c1
a1
b2
c2
a2
b2 c2
a1
b2
c2
a2
b2
c1
图 2.9 关系 R 和关系 S 及其交运算
2.2 关系代数
2.除法运算
设关系R和S的元数分别为r和s(设r>s>0),那么R÷S是一个(r-s)元的 元组的集合。(R÷S)是满足下列条件的最大关系:其中每个元组t与S中 每个元组u组成的新元组<t,u>必在关系R中。
S# (S) S# (SC)
例2-7 在关系C中增加一门新课程(C13, ML, C3, null): 如果令这门新课程元组所构成的关系为R,则有: R=(C13,ML,C3,null),这时结果为:C∪R。
学生关系:S (S# ,Sn, Sex,Sa ,Sd) ; 课程关系:C (C# ,Cn ,P#,Tn) ; 选课关系:SC (S#, C# ,G),
Sa表示学生年龄,Sd表示学生所在系别;C# 表示课程号, Cn表示课程名, P#表示预修课程号,Tn表示任课教师姓名; G表示课程成绩。
学生关系:S (S# ,Sn, Sex,Sa ,Sd) ; 课程关系:C (C# ,Cn ,P#,Tn) ; 选课关系:SC (S#, C# ,G),
例2-5 学号为S17的学生因故退学,在S和SC中将 其删去:S S #'S17' (S ) 和 SC S #'S17' (SC ) 例2-6 检索不修读任何课程的学生学号:
A
B
C
a
b
C
d
a
f
c
b
d
A
B
C
b
g
a
d
a
f
R
S
ABC abc da f cbd bga
(a) R∪S
ABC abc cbd
(b) R-S
R.A R.B R.C S.A S.B S.C a bcbga a b cda f d a f bga da fdaf c bdbga c bdda f
(c) RS
数据库基础
第二章 关系数据模型与关系运算
汤娜 中山大学计算机科学系
isstn@
2.1 关系数据模型
❖ 关系数据结构描述
关系的笛卡尔积乘积定义
❖Domain(域)/datatype(数据类型) ❖Cartesian Product (笛卡尔积)
定义 :设有一组域D1,D2,…,Dn,这些域可以部分或者全部相同 域D1,D2,…,Dn的笛卡尔乘积(Cartesian Products)定义为如 下集合: D1×D2×…×Dn = {(d1,d2,…,dn)| diDi,i=1,2,…,n}
或者为空值(X包含的所有属性都为空值) 或者等于S中某个元组的主键值
(3)用户定义完整性约束
❖例如:订货数不得小于0;订货数不得小于存货量
例1 下面各种情况说明了参照完整性规则在关系中如何实现的。 ① 在关系数据库中有下列两个关系模式:
S(S#,SNAME,AGE,SEX) SC(S#,C#,GRADE) 这里带下划线者为主键,SC关系中的S属性为外键。据规则 要求关系SC中的S# 值应该在关系S中出现。如果关系SC中有一 个元组(S7,C4,80),而学号S7却在关系S中找不到,那么我 们就认为在关系SC中引用了一个不存在的学生实体,这就违反 了参照完整性规则。 另外,在关系SC中S# 不仅是外键,也是主键的一部分,因 此这里S# 值不允许空。
❖ 例如:
(1) T:=(R S) - (R S)
(2) T1:=(R S) T2:=((R S) T3:= T1 - T2
❖3.关系的联结——广义笛卡尔乘积运算
R S {t | t tr ,ts tr R ts S}
当两个关系中有属性重名时,要表名其Qualified names
例子2:if relation t have 4 attributes, A1 , A2 , A3 , and A4, 则 T Domain(A1 ) x Domain(A2 ) x Domain(A3 ) x Domain(A4 )
关系的二维表格描述
❖关系是满足特定规范性要求的二维表格 ❖关系的规范化限定 ❖关系的其他一些概念:数据库、关系(表)、属性、元组、
者的并运算定义为:
R S {t | t R t S}
R∩S = R―( R―S ) 或R∩S = S― ( S―R ),所以交运算 可以看作是组合运算,而不是基本运算。
关系 R
A
B
C
关系 S
A
BC
关系 Rn S
AB
C
a1 b1
c1
a1 b2
c2
a2 b2
c1
a1
b2 c2
a2
b2 c1
a2
基数、度数
2.1 关系数据模型
❖键
超键、候选键、主键、外键 ❖ 设X是关系R的一个或一组属性,但不是关系R的键。如果X与 关系S的主键KS相对应,则称X是关系R的外键(Foreign key)。 关系R为参照关系(Referencing Relation)。关系S为被参照关 系(Referenced Relation)或目标关系(Target Relation)。
并运算;差运算;投影运算;选择运算;广义笛卡尔 乘积
数据更新基本运算(对应于传统集合运算)
❖更新操作:插入;删除;修改 ❖(两张表相兼容)Two tables are said to be compatible iff
they have the same schema. ❖Example:
2.2 关系代数
b2
c1
a2
b2
c2
关系 S
A
B
C
a1
b2
c2
a2b2c1源自a2b2c2
关系 R-S
AB
C
a1 b1
c1
图 2-4 关系的并运算与差运算
2.2 关系代数
❖3.修改-并运算与差运算的组合 设需要修改的元组构成关系R1,则先做删除,得R-R1。 设需修改后的元组构成关系R2,此时将其插入,得到结果
(R-R1)∪R2。
(4)元组中的属性在理论上也是无序的,但使用时按 习惯考虑列的顺序。
2.1 关系数据模型
❖ 完整性约束
(1)实体完整性约束
❖实体完整性约束(Entity Integrity)要求组成主键的属性 不能为空值,
(2)参照完整性约束
❖参照完整性规则:如果X是关系R的外键,它与关系S的主键 KS相对应,则对于R中每个元组在X上的值必须为:
其中,W为修改后的学生有序组构成的关系,即 W=(S6,…, …,22)。 …表示原值
学生关系:S (S# ,Sn, Sex,Sa ,Sd) ; 课程关系:C (C# ,Cn ,P#,Tn) ; 选课关系:SC (S#, C# ,G),
❖ 检索选修课程号为c2或c4的学生学号
或者
S# (C#'C2'C#'C4' (SC)
CA ca fd dc
(d)
ABC abc cbd
(e)
2.2 关系代数
❖ 基本关系代数运算综合实例
学生关系:S (S# ,Sn, Sex,Sa ,Sd) ; 课程关系:C (C# ,Cn ,P#,Tn) ; 选课关系:SC (S#, C# ,G), 其中 S# 表示学号,Sn表示学生姓名, Sex 表示学生性别,
即 table_name.attribute_name
思考:自己和自己做笛卡尔集,应该如何来做? 例子
2.2 关系代数
❖ 基本关系代数运算综合实例
图有两个关系R和S,图2.13的(a)、(b)表示R∪S和R-S。 (c)表示R×S,(d)表示πC,A(R),即π3,1(R)。(e)表 示σB=‘b’ˊ(R)。
其中每一个元素(d1,d2,…,dn)称为一个元组(Tuple),通常 用t表示;元组中每一个值称为一个分量(Component)。
例子:总分登记表中的四个域
2.1 关系数据模型
❖a relation is a subset of a Cartesian product
例子1:总分登记表 Domain(学号) Domain(姓名) Domain(性 别) Domain(总分)
F (R) {t | t R F(t) true}
例子
赋值与别名
❖ 关系R 有如下字段 Head(R) = A1 . . . , An , 如果希望创建一个新的关 系 S 有如下属性 Head(S) = B1 , . . ., Bn , 且属性Bi 具有以下特性 Dom(Bi ) = Dom(Ai ) for all i, 1 = i = n, 并且关系s的记录和关系 R相同. 则我们可以通过赋值来定义关系S
相关主题