2.1 关系模型
关系数据结构
- 关系模型的数据结构是二维表,亦称为关系。
- 关系数据库是表的集合,即关系的集合。
- 表是一个实体集,一行就是一个实体,它由有关联的若干属性的值所构成。
关系模型的相关概念
列就是数据项 或 字段 或 属性attribute
列的个数称为关系的元或度
列的取值范围称为值域,简称域domain
行也称为元组tuple或记录record
行中的一个属性值称为分量component
行的个数称为关系的基数cardinality
域:是一组具有相同数据类型的值的集合。
笛卡尔积:给定一组域D1, D2, …, Dn,它们之中可以有相同的域。D1, D2, …, Dn的笛卡尔积为:
D1×D2×…×Dn = {(d1, d2, …, dn)∣di∈Di } (“每列来自一个域”)
笛卡尔积例子:
码(重点)
- 码 (Key):属性(或属性组)的值都能用来唯一标识该关系的元组,则称这些属性(或属性组)为该关系的码。
- 超码 (super key):在码中去除某个属性,它仍然是这个关系的码。
- 候选码 (candidate key):在码中不能去除任何一个属性,否则它就不再是这个关系的码。(最小超码)
主属性:包含在任何一个候选码中的属性称为主属性,反之为非主属性
- 主码 (primary key):在若干个候选码中指定一个唯一标识关系的元组。
- 外码 (foreign key):某个属性(或属性组)不是这个关系的主码或候选码,而是另一个关系的主码。
- 全码:一个关系模式的所有属性集合是这个关系的主码
关系的最基本要求:
- 关系中的每个属性的域必须是原子的,即域中的每个值都是不可再分的一个完整单元。
- 关系中的每个元组都是可区分的,即存在唯一标识不同元组的属性(集)——码。
关系模式形式化:r(U, D, DOM, F) ,简记为:r(U) 或 r(A1, A2, …, An)
r为关系名
U为组成该关系的属性名的集合{A1, A2, …, An}
D为属性集U中所有属性所来自的域的集合
DOM为属性向域的映像集合,(描述类型、长度等)
F为属性间数据的依赖关系集合 (即体现各属性取值之间的“关联”性)。
2.2 关系完整性约束
数据完整性:数据的正确性、合理性、相容性
完整性约束条件:实体完整性、参照完整性、用户定义的完整性
1. 实体完整性
- 主码属性不能为空值null
- 如果主码是由若干个属性的集合构成,则要求构成主码的每一个属性的值都不能取空值。
2. 参照完整性
- 外码属性要么为null,要么为参照的主码值
3. 用户自定义完整性
- 任何关系数据库管理系统都应该支持实体完整性和参照完整性。
- 用户定义完整性是针对某一具体应用要求来定义的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
2.3 关系操作
关系操作的特点是集合操作方式,即操作的对象和结果都是集合。
二维表的操作:
- 更新:添加、修改、删除
- 查询:选择、投影、并、差、笛卡尔积(5种基础操作);连接、除、交
关系操作可用两种方式来表示——代数方式和逻辑方式。
关系代数是用代数方式表达的关系查询语言。
关系演算是用逻辑方式表达的关系查询语言。
对于关系代数、关系演算均是抽象的查询语言,在表达能力上是完全等价的。
2.4 关系代数
关系代数
- 关系代数是一种抽象查询语言,用关系代数运算来表达查询。
- 关系代数运算:运算对象是关系,运算结果也是关系。
- 基本的关系代数运算有选择、投影、集合并、集合差、笛卡尔积和更名等。
一、传统的集合运算
前提假设:关系r和关系s具有相同的n个属性,且相应的属性取自同一个域,即两个关系的模式或结构相同。t是元组变量,t∈r表示t是r的一个元组。
- 并运算:关系r与关系s的并记作 :
其结果关系仍为n目关系,由属于r或属于s的所有元组组成。
- 差:关系r与关系s的差:
其结果关系仍为n目关系,由属于r而不属于s的所有元组组成。
- 交:关系r与关系s的交记作:
其结果关系仍为n目关系,由既属于r又属于s的所有元组组成。关系的交可以通过差来表达,即r∩s = r-(r-s)。 “减去特有部分”
笛卡尔积
- 两个分别为n目和m目的关系r和s的笛卡尔积是一个n+m目元组的集合。
- 若关系r有kr个元组,关系s有ks个元组,则关系r和s的笛卡尔积有kr×ks个元组。记作 : r×s = { tr·ts∣trÎr∧tsÎs }
- 元组的前n列是关系r的一个元组,后m列是关系s的一个元组。
二、专门的关系运算
专门的关系运算:选择、投影、连接、除
- 选择
选择操作是在关系r中查找满足给定谓词(即选择条件)的所有元组,
记作:
P表示谓词(即选择条件),它是一个逻辑表达式,取值为“真”或“假”。
选择运算是从关系R中选取使逻辑表达式为真的元组,从行的角度进行运算。
- 投影:
关系是一个二维表,对它的操作可以从水平(行)的角度进行,即选择操作;也可以从纵向(列)的角度进行,即投影操作。
关系r上的投影是从r中选择出若干属性列组成新的关系。记作:
A为关系r的属性集合。
- 连接:
连接运算中有两种最常用、最重要的连接,一种是等值连接(equijoin),另一种是自然连接(natural join)。
1. 等值连接
θ为等值比较谓词的连接运算。记为A op B,其中A、B分别为关系r和s中的属性个数相等且可比的连接属性集,op为比较运算符。
θ连接是从两个关系的笛卡尔积中选取连接属性间满足谓词θ的所有元组。
θ连接运算就是从关系r和s的笛卡尔积r×s中,选取r关系在A属性集上的值与s关系在B属性集上的值满足连接谓词θ的所有元组。即:
一般连接操作从行的角度进行运算。
2. 自然连接
自然连接是一种特殊的等值连接,它要求两个参与连接的关系具有公共的属性集,并在这个公共属性集上进行等值连接;同时,还要求将连接结果中的重复属性列去除掉,即在公共属性集中的列只保留一次。
- 除
设关系r(R)和s(S),属性集S是R的子集,即SÍR,则关系r÷s是关系r中满足下列条件的元组在属性集R-S上的投影:,记 x= tr[R-S],则关系r中属性集R-S的取值x的象集Sx包含关系s。记作