关系模型——关系代数
前言
通过关系代数来描述关系模型可进行的操作,然后通过SQL语言实现关系代数的操作
- 关系:n元有序组的集合
- 关系操纵:关系上的集合运算
- 关系代数:(A,π,δ,×,∪,-)即有关系的集合A及其关系间的五种基本运算所构成的代数系统被称为“关系代数”,基本元素包括——并,差,投影,选择,笛卡尔积
- 关系模型:数据结构+数据操纵+数据约束
一、关系模型概述
1.关系数据结构
1)表结构
二维表(简称表)的组成
- 属性:表由n个命名的属性(n元表)组成,每个属性有一个取值范围(值域)
- 元组:表中存放的数据,表存放的元组的个数被称为表的基数
2)键
在二维表中能为以最小标识元组的属性被成为该表的“键”(关键字)。例如,学号是学生表的关键字
- 候选键
- 主键:所有候选键中选取其中一个被称为该表的主键
- 外键:表A中的属性集F是表B的关键字,则F是A的外键
2.关系操纵
1)查询
在一张表中查询指定元组(行选择)和属性(列选择),如果对多张表进行数据查询,则先将多张表合并成一张表,再进行查询
2)插入
在一个关系中插入新的元组
3)删除
数据删除的基本单位是元组
4)修改
数据修改不是一个基本操作,通过删除原先元组和插入修改后的元组实现
3.关系中的数据约束
- 实体完整性约束:主键中的属性不能有空值
- 参照完整性约束:外键要么取空值,要么取被引用表中当前存在的某元组上的主键值
- 用户定义的完整性:用户自己定义的属性取值约束
二、关系代数的重要运算
关系上的操作 | 关系代数对应的运算 |
---|---|
元组选择 | 选择运算 |
属性指定 | 投影运算 |
1.投影运算π( R )
投影运算:略去关系中的某些属性并重新安排剩余属性的排列次序
假设关系R有n个属性A1,A2,…,An,在其中m个属性B1,B2,…,Bm上的投影可表示为B1,B2,…,Bm( R )其中:Bi∈{A1,A2,…,An}(i=1,2,…,m)
例如
R:πC,A( R ) :
2.选择运算δF( R )
选择运算:根据给定的条件F从关系R中选出符合条件的元组。
例如δA>'c’∨C<‘d’( R )
A | B | C |
---|---|---|
a | b | c |
d | a | f |
3.结合使用投影和选择运算来实现单张表中的数据查询操作πA,C(δB=‘b’( R ))
R δB=‘b’( R )
πA,C(δB=‘b’( R )):
A | C |
---|---|
a | c |
c | d |
三、关系代数中的运算
1.基本运算:交、并、差
假设关系R和S的关系模式Head( R )=Head(S)(属性相同)
运算 | 表达式 |
---|---|
并 | R∪S |
交 | R∩S |
差 | R-S |
2.除运算:R÷S
关系除法R÷S通常理解为:从关系R中,找出所有满足在S中的所有B属性组合的A属性集的值
假设关系R和S的关系模式为Head( R )和Head(S)(Head(S)∈Head( R ),其中Head( R )={A1,A2,…,An,B1,B2,…,Bm},Head(S)={B1,B2,…,Bm},那么Head(R÷S)=Head( R )-Head(S)={A1,A2,…,An}。如果R=T×S(笛卡尔积),那么T=R÷S。
推导公式:R÷S=πA1…An( R )-πA1…An((πA1…An( R )×S)-R)
给出一个例子便于理解:
请着重理解课后习题【例3.18】
3.笛卡尔积:R×S
假设关系R和S分别由n和m个属性R(A1,A2,…,An)和S(B1,B2,…,Bm),那么他们的笛卡尔积T=R×S为T(A1,A2,…,An,B1,B2,…,Bm),假设关系R和S分别有p和q个元组,笛卡尔积中有(p×q)个元组
假设Domain(dept)={数学,中文},Domain(name)={张山,李英,王华}那么dept和name的笛卡尔积为
4.联接运算 :R∞S(F)
关系R和S根据条件F合并为一个关系,Head(T)=Head(R )∪Head(S)
联接运算的推导公式:R∞S(F)=δF(R×S)
例如:
RS
联接运算R∞S(D>E):
下面再讲两种扩展的联接运算:
1.自然联接R∞S:从关系R和关系S中分别任取一个元组r和元组s,元组r和元组s在他们的同名属性上的取值都相等,由r和s合并构成结果关系中的一个元组
设有关系R和S,R有属性A1,A2,…,An,S有属性B1,B2,…,Bm,它们的公共属性为A1,A2,…,Aj和B1,B2,…,Bj
推导公式:R∞S=πA1…An,Bj+1…Bm(δA1=B1∧A2=B2∧…∧Aj=Bj(R×S))
例如
R:S
R∞S:
A | B | C | D | E |
---|---|---|---|---|
2 | 4 | 2 | 6 | 4 |
2 | 4 | 2 | 6 | 8 |
1 | 1 | 4 | 7 | 3 |
2.外联接
RS
R与S的外联接
四、关系代数实例
人事档案表
The CAP Datebase
The SC database
sno | sn | sd | sa | cno | cn | pno | G |
---|---|---|---|---|---|---|---|
学号 | 学生姓名 | 院系 | 地址 | 课程编号 | 课程名 | 预修课程号 | 成绩 |