【数据库系统概论】第二章 关系模型(超详细)
一、关系模型的数据结构及形式化定义关系关系模式ER图→关系模型(概念模型→关系模型)关系数据库二、关系的完整性实体完整性参照完整性用户定义的完整性三、关系操作四、关系代数传统的集合运算专门的关系运算
教材:
数据库系统概论(第6版)王珊,杜小勇,陈红编著
目录
关系模型
E.F.Codd首次系统地提出了关系模型的相关理论
一、关系模型的数据结构及形式化定义
基本数据结构:关系
实体+联系→关系
逻辑结构:二维表
定义一个关系
↓
定义列的取值范围 → 域
↓
定义所有可能的元组 → 笛卡尔积 → 有意义的元组
域是一组具有相同数据类型的值的集合。
基数:一个域允许的不同取值个数
笛卡儿积(笛卡尔积中所有的元组并不都是有意义的)
每一个值 di 叫作一个分量
关系
关系模式是型,关系是值
关系是笛卡尔积的子集
R(D1,D2,…,Dn)
R:关系名
n:关系的目或度(degree)
三类关系:
基本关系(基本表或基表)
实际存在的表,是实际存储数据的逻辑表示
查询结果
查询执行产生的结果对应的临时表
视图表
由基本表或其他视图表导出的虚表,不存储实际数据
几个概念:
码(键) | 在关系中由唯一可标识元组的属性或属性组构成 |
候选码(键) | 且属性个数最少的码 |
主码(键) | 多个候选码,则选定其中一个为主码。主码不允许为空值(非零和空格) |
全码(键) | 候选码包含关系模式的所有属性组 |
外码(键) | 在关系R中包含另一个关系S的主键所对应的属性或属性组 |
性质:
关系模式
关系模式可以形式化地表示为:
R(U,D,DOM,F)
R | 关系名 |
U | 组成该关系的属性名集合 |
D | U中属性所来自的域 |
DOM | 属性向域的映象集合 |
F | 属性间数据的依赖关系集合 |
简记为
R (U) 或 R (A1,A2,…,An)
A1,A2,…,An : 属性名
ER图→关系模型(概念模型→关系模型)
实体转换:
关系的属性为实体的属性,关系的码为实体的码
关系装换处理:
关系数据库
支持关系模型的数据库系统
在一个关系数据库中,某一时刻所有关系模式对应的关系的集合构成一个关系数据库
二、关系的完整性
实体完整性
对主码的约束:
数据非空,唯一,不重复
参照完整性
针对外码的约束:
用户定义的完整性
对其他属性的约束
三、关系操作
常用的关系操作:
查询操作:选择、投影、连接、除、并、差、交、笛卡儿积
选择、投影、并、差、笛卡儿积是5种基本操作
更新操作:插入、删除、修改
特点:集合操作方式——操作的对象和结果都是集合
四、关系代数
是一种抽象的查询语言,它用对关系的运算来表达查询
分类:传统的集合运算和专门的关系运算
运 算 符 | 含 义 | |
传统的 集合 运算符 | ∪ | 并 |
- | 差 | |
∩ | 交 | |
× | 笛卡儿积 | |
专门的 关系 运算符 | σ | 选择 |
π | 投影 | |
连接 | ||
÷ | 除 |
传统的集合运算
(1)并 R∪S
仍为n目关系,由属于R或属于S的元组组成
(2)交 R∩S
仍为n目关系,由既属于R又属于S的元组组成
(3)差 R - S
仍为n目关系,由属于R而不属于S的所有元组组成
(4)笛卡儿积
R: n目关系,k1个元组
S: m目关系,k2个元组
R×S
(n+m)列元组的集合
元组的前n列是关系R的一个元组
后m列是关系S的一个元组
行:k1×k2个元组
并、交 、差 前提条件:
R和S
- 具有相同的目n(即两个关系都有n个属性)
- 相应的属性取自同一个域
运算后不要有重复元组
笛卡儿积运算中属性名相同的要改一下属性名(eg:R关系中A属性改成R.A)
专门的关系运算
(1)选择(又称为限制)
在关系R中选择满足给定条件的诸元组(行)
F:选择条件,是一个逻辑表达式,取值为“真”或“假”
基本形式为:X1θY1
θ表示比较运算符,它可以是>,≥,<,≤,=或<>
X1,Y1是属性名时可以用它的序号来代替
eg: σSbirthdate >= 2001-1-1(Student)
(2)投影
在关系R中选择出若干属性列组成新的关系(从列的角度进行运算)
A:R中的属性列
运算后不能有重复元组,可能会消除某些元组
eg: πSname,Smajor(Student)
(3)连接
从两个关系的笛卡儿积中选取属性间满足一定条件的元组
A和B:分别为R和S上度数相等且可比的属性组
θ:比较运算符
连接运算从R和S的广义笛卡儿积R×S中选取R关系在A属性组上的值与S关系在B属性组上的值满足比较关系θ的元组(从行的角度进行运算)
等值连接:θ为“=”的连接运算
从关系R与S的广义笛卡儿积中选取A、B属性值相等的那些元组
自然连接:一种特殊的等值连接
两个关系中进行比较的分量必须是同名的属性组(公共属性);
在结果中把重复的属性列去掉(增加了列的角度)
两个关系R和S在做自然连接时,关系R中某些元组有可能在S中不存在公共属性上值相等的元组,从而造成R中这些元组在操作时被舍弃
外连接是关系数据库中一种连接操作,用于从两个或多个表中提取数据。它的主要目的是确保某一表中的所有数据都被保留,即使与其他表的数据不完全匹配
悬浮元祖:被舍弃的元祖
左外连接
只保留左边关系R中的悬浮元组
右外连接
只保留右边关系S中的悬浮元组
如果把悬浮元组也保存在结果关系中,而在其他(没有配对上的)属性上填空值(Nul),就叫做外连接
外连接(全外连接)
(4)除
给定关系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上投影的集合
除运算的过程
- 投影:首先对关系S在Y属性上进行投影,得到一个集合Y',其中包含S中所有Y的值。
- 象集的定义:对于关系R中的每个元组(x, y),我们需要检查元组在X上分量值x的象集Yx是否存在于集合Y'中。如果存在,那么这个元组的X部分x会被保留。
- 满足条件:关系P(X)由所有满足以下条件的元组的X属性值组成:对于每个元组(x, y) ∈ R,若Yx(Y中与y相同的所有元组对应的X值)包含Y',则将x投影到关系P中
在关系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}
除运算的功能是在被除数中查找能够完全覆盖除数所有记录的记录,并且只保留没有在除数中出现的属性。
更多推荐
所有评论(0)