目录
关系及其相关概念
域
- 定义:一组具有相同数据类的值的集合。如整数、实数、{0,1}。
笛卡尔积、元组和分量
- 笛卡尔积定义:一组域
D
1
,
D
2
,
.
.
.
,
D
n
D_1, D_2,...,D_n
D1,D2,...,Dn的笛卡尔积为
D
1
×
D
2
×
.
.
.
×
D
n
=
(
d
1
,
d
2
,
.
.
.
,
d
n
)
∣
d
i
∈
D
i
,
i
=
1
,
2
,
.
.
.
,
n
D_1\times D_2\times ... \times D_n = {(d_1,d_2,...,d_n)|d_i\isin D_i, i=1,2,...,n}
D1×D2×...×Dn=(d1,d2,...,dn)∣di∈Di,i=1,2,...,n。
- 笛卡尔积和二维表是等价的;
- 笛卡尔积的基数为 ∏ i = 1 n m i \prod_{i=1}^nm_i ∏i=1nmi。
- 元组:每个元素 ( d 1 , d 2 , . . . , d n ) (d_1,d_2,...,d_n) (d1,d2,...,dn)是一个n元组(n-tuple),简称元组。
- 分量:元组的每一个值 d i d_i di是一个分量。
关系
- 定义:笛卡尔积
D
1
×
D
2
×
.
.
.
×
D
n
D_1\times D_2\times ... \times D_n
D1×D2×...×Dn的子集,用
R
(
D
1
,
D
2
,
.
.
.
,
D
n
)
R(D_1, D_2,...,D_n)
R(D1,D2,...,Dn)表示,
R
R
R是关系的名字,
n
n
n叫做关系的度或目(degree)
- n = 1 n=1 n=1时称为单元关系;
- n = 2 n=2 n=2时称为二元关系,以此类推。
二元表
二元表与关系是等价的。
- 二元表的一行就是一个元组;
- 二元表的一列就是一个域,称为一个属性(attribute);
- 不同的列也可以出自同一域,但名字必须不同,也就是属性名不同(进行关系代数的连接操作后,可能会出现完全相同的列,这种结果一般需要进行化简);
- 属性是唯一的, n n n元关系必有 n n n个属性,不一定出自 n n n个域。
关系的性质
- 列是同质的(Homogeneous);
- 不同的列可以出自同一域;
- 行列的顺序无关紧要,可以互换;
- 任意两个元组不能完全相同;
- 分量不可再分(满足第一范式,即1NF)。
关系模型的数据结构
码
或称键(key)。
- 候选码(candidate key):关系中的能够唯一标识一个元组的最小的属性组
- 注:这个属性组中可以有一个或多个属性
- 主码(primary key):如果一个关系有多个候选码,选定其中一个作为主码。
主属性和非主属性
- 主属性:码中的各属性称为主属性;
- 非主属性:不在码中的属性称为非主属性。
关系模式(关系的描述)
- 形式化描述:
R
(
U
,
D
,
D
o
m
,
F
)
R(U,D,Dom,F)
R(U,D,Dom,F)
- R R R为关系名;
- U U U为该关系的属性名集合;
- D D D为各属性所来自的域的集合;
- D o m Dom Dom为该关系各属性向域的映像集合;
- F F F为属性间的关系依赖集合。
- 一般简记为
R
(
A
1
,
A
2
,
.
.
.
,
A
n
)
R(A_1,A_2,...,A_n)
R(A1,A2,...,An)
- R R R为关系名;
- A i A_i Ai为各属性名。
- 关系模式与关系
- 关系模式是静态的形;关系是动态的值,是关系模式在某一时刻的状态;
- 关系数据库就是关系模式,关系数据库中存储的值就是关系。
关系模型的语义约束
包括实体完整性、参照完整性、用户定义完整性(与用户有关)。
实体完整性
- 主码不能为空值或部分为空值。或者说主属性不能为空值或部分为空值。
- 空值:不存在或不知道。
参照完整性
定义**外部码:
如果一个关系
R
R
R的一个或一组属性
F
F
F不是它的码,但是是另一个关系
S
S
S的主码
K
S
K_S
KS(或者与之有一一对应关系),那么:
- R R R称为参照关系(referencing relation), F F F称为它的外部码(foreign key)
- S S S称为被参照关系(referenced relation)或目标关系(target relation)
由此定义参照完整性:如果关系 R R R有外部码 F F F,其对应 S S S中的主码 K S K_S KS,则 R R R中一个元组的 F F F值,要么是 S S S中某个元组的 K S K_S KS值,要么是空值。即 R R R中的 F F F值不能出现 S S S中 K S K_S KS没有的值。
关系模型的数据操作
特点
是集合操作,操作对象和结果都是集合。
分类
- 关系代数(无需安全性约束)
- 关系演算(需要安全性约束)
- 元组关系演算
- 域关系演算
以上三种关系运算是等价的,可相互转换。
关系数据语言
数据库数据语言的分类
- 数据定义(描述)语言(Data Definition or Description Language, DDL),包括模式DDL,外模式DDL,内模式DDL;
- 数据操纵语言(Data Manipulation Language, DML)
- 数据库的四种基本操作:检索、插入、修改、删除;
- DML有联机交互方式和宿主语言方式:
- 联机交互方式下的DML称为自含式语言,可独立使用,适用于终端直接查询;
- 宿主语言方式下的DML称为嵌入式语言,依附于宿主语言,是嵌入高级语言的程序中,以实现数据操作。
- 数据控制语言(Data Control Language, DCL)完成数据库的安全性控制、完整性控制、并发控制等。
关系数据语言特点
- 一体化:定义、查询、更新、控制等功能融为一体;
- 非过程化:用户提出操作,具体怎么做由DBMS完成;
- 面向集合的存取方式:操作对象和结果均为关系;
- 既可独立使用又可与主语言嵌套使用。
关系数据优越性的根源:
- 使用了最先进的关系模型,并且采用了最简单、最规范化的数据结构(二元表),这使DML大大简化;
- 关系数据语言建立在关系运算的数学基础上,可实现关系的垂直方向和水平方向的任意分割和组装操作,使得关系语言可随机地构造出用户需要的各种各样的新关系。
关系数据语言的分类
关系数据语言的核心是查询,所以又称为查询语言。而查询往往表示成一个关系运算表达式,因此关系运算是设计关系数据语言的基础,关系运算的分类也决定了关系语言的分类: