【数据库】课堂笔记(二)关系模型与关系代数
一、关系模型
- 关系数据库系统:RDBMS,支持关系数据模型的数据库系统,当今的主流数据库管理系统。
- 关系模型的构成:由关系数据结构、关系操作集合和关系完整性约束三部分组成。
1. 关系数据结构
1. 关系
- 关系模型的数据结构简单,即二维表,亦称为关系
- 关系数据库:表的集合,即关系的集合。
- 表:一个实体集,一行就是一个实体,它由共同表示一个实体的相关联的若干属性的值所构成。
2. 关系模式
关系模式:描述关系,形式化表示:r(U, D, DOM, F)
。
- r:关系名;
- U:组成关系的属性名的集合;
- D:属性集U中所有属性所来自的域的集合;
- DOM:属性向域的映像集合;
- F:属性间数据依赖关系集合(元组各属性取值之间的关联性)。
3. 关系与关系模式联系区别
- 对于一个二维表,有表头部分和表体部分。
表头部分
:定义表的结构,即定义表由哪些列构成(假设由n列构成),每个列的名字和取值范围等;表体部分
:所有数据行(元组)的集合,每个数据行都是由表头部分规定的n列有关联的取值的集合构成。
- 关系: 对应
表体部分
,每个数据行对应关系的一个元组,即关系是元组的集合。关系是 值 的概念。 - 关系模式: 对应
表头部分
,定义元组集合的结构,即定义一个元组由哪些属性构成,每个属性的名字和取值域等。 关系模式是 型 的概念。
4. 码
超码: 关系r中的一个或多个属性的集合A,若A可以唯一地标识
关系r中的一个元组,则称属性集A为关系r的一个超码 (superkey) 。
候选码: 关系r的一个或多个属性的集合A,若A是关系r的超码,且A的任意真子集都不能成为关系r的超码,则称属性集A为候选码 (candidate key) 。
主码: 若一个关系有多个候选码,则可以选定其中的一个候选码作为该关系的主码 。
外码: 设F是关系r的一个属性(或属性集),Ks是关系s的主码。如果F与Ks相对应(即关系r中属性F的取值范围对应于关系s中主码Ks的取值范围的子集),则称F是关系r参照关系s的外码(foreign key),简称F是关系r的外码。
2. 关系完整性约束
1. 实体完整性
若属性集A是关系r的主码,则A不能取空值null
。
2. 参照完整性
若属性(或属性集)F是关系r的外码,它与关系s的主码Ks相对应,则对于关系r中的每一个元组在属性F上的取值==要么为空值null,要么等于关系s中某个元组的主码值。
3. 用户自定义完整性
针对某一具体应用要求来定义的约束条件
,它反映某一具体应用所涉及的数据必须满足的语义要求。例如,
- 限制关系中某些属性的取值符合业务语义要求。
- 限制关系中某些属性的取值之间满足一定的逻辑关系。
- 限制关系中某属性集上的取值必须唯一。
3. 关系操作集合
- 关系操作的特点是集合操作方式,即操作的对象和结果都是集合。
- 操作方式也称为一次一个集合。
- 关系模型中的关系操作有查询操作和**更新操作(插入、删除和修改)**两大类 。
- 查询操作是关系操作中最主要的部分。查询操作又可以分为
选择
(select)、投影
(project)、连接(join)、除
(divide)、并
(union)、交
(intersection)、差
(except)、笛卡尔积
等。
- 查询操作是关系操作中最主要的部分。查询操作又可以分为
- 关系操作可用两种方式来表示 ——代数方式和逻辑方式。
-
关系代数: 用
代数方式
表达的关系查询语言。 -
关系演算: 用
逻辑方式
表达的关系查询语言。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。 -
对于关系代数、元组关系演算和域关系演算均是抽象的查询语言,在表达能力上是完全等价的。
-
二、 关系代数
关系代数通过关系代数运算构成的表达式来表达查询。
五种基本关系代数运算是:∪,-,×,π和σ
1. 传统的集合运算
1. 并
- 关系r与关系s的并记作
- 结果关系:n目关系,由属于r或属于s的所有元组组成。
2. 差
- 关系r与关系s的差记作 :
- 结果关系:n目关系,由属于r而不属于s的所有元组组成。
3. 交
- 关系r与关系s的交记作:
- 结果关系:n目关系,由既属于r又属于s的所有元组组成。等价表示:关系交可以通过差来表达,即
4. 笛卡尔积
- 两个分别为n目和m目的关系r和s的笛卡尔积是一个n+m目元组的集合。
- 元组的前n列是关系r的一个元组,后m列是关系s的一个元组。
- 若关系r有kr个元组,关系s有ks个元组,则关系r和s的笛卡尔积有kr×ks个元组。
笛卡尔积基数:kr*ks
2. 专门的关系运算
1. 选择
选择操作是在关系r中查找满足给定谓词(即选择条件)的所有元组,记作:
$$ {\color{Red} \sigma_{{\color{Yellow} P} }} \left ( {\color{Green} r} \right ) = \left \{ {\color{Green} t} \mid {\color{Green} t} \in \wedge {\color{Yellow} P} \left ({\color{Green} t} \right ) \right \} $$P:表示谓词(即选择条件),它是一个逻辑表达式,取值为“真”或“假”。
说明:对关系从水平(行)角度进行运算,即选择操作。
2. 投影
投影操作就是从关系r中选择若干属性列组成新的关系。
$$ {\color{Red} \Pi _{{\color{Yellow} A} }} ({\color{Green} r} ) = \{{\color{Green} t}[{\color{Green} A} ] \mid {\color{Green} t} \in {\color{Green} r} \} $$A:为关系r的属性集合。
说明:对关系从纵向(列)的角度进行,即投影操作。
3. 连接
连接也称θ连接。记为A op B,A、B分别为关系r和s中的属性个数相等且可比的连接属性集,op为比较运算符。 θ连接是从两个关系的笛卡尔积中选取连接属性间满足谓词θ的所有元组。
$$ {\color{Green} r} \, {\color{Red} \bowtie _{{\color{Yellow} \theta } }} \, {\color{Green} s} = \{{\color{Green} t_{r}} \cdot {\color{Green} t_{s}} \mid {\color{Green} t_{s}} \in {\color{Green} s} \wedge({\color{Green} r.A} \, {\color{Yellow} op} \, {\color{Green} s.B} )\} $$4. 象集(非重点)
给定关系r(A, B),A和B是属性集。对任意t∈r,记t[A]=x,则在关系r中的属性集A的某个取值x的象集Bx定义:
$$ {\color{Green} B} _{{\color{Yellow} x} } = \{ {\color{Green} t} {\color{Green} [B} ] \mid {\color{Green} t} \in {\color{Green} r} \wedge {\color{Green} t} [{\color{Green} A} ] = {\color{Yellow} x} \} $$象集Bx的含义:表示关系r中属性集A上取值为x的所有元组在属性集B上的投影。
5. 除运算(非重点)
设关系r®和s(S),属性集S是R的子集,即S∈R,则关系r÷s是关系r中满足下列条件的元组在属性集R-S上的投影: trr,记 x= tr[R-S],则关系r中属性集R-S的取值x的象集Sx包含关系s。记作 :
$$ {\color{Green} r} \, {\color{Red} {\div}} \, {\color{Green} s} = \{ {\color{Green} t_{r}} [{\color{Purple} R-S} ] \mid {\color{Green} t_{r}} \in {\color{Green} r} \wedge {\color{Green} s} \subseteq {\color{Green} S_{x}} \} $$