数据库系统学习笔记(四)——关系数据库

在这里说一句废话。关系数据库系统就是支持关系模型的数据库系统。
下面是关系模型的概念。


关系数据结构及形式化定义

关系

域(Domain)

域是一组具有相同属性的值的集合。

笛卡尔积(Cartesian Product)

笛卡尔积可以表示为一张二维表,表中的每行对应一个元组,表中的每一列的值来自一个域。例如:

1
2
3
D1={A1,A2}
D2={B1,B2}
D3={C1,C2}

则D1、D2、D3的笛卡尔积为:

1
2
3
4
5
6
D1xD2xD3={
(A1,B1,C1),(A1,B1,C2),
(A1,B2,C1),(A1,B2,C2),
(A2,B1,C1),(A2,B1,C2),
(A2,B2,C1),(A2,B2.C2)
}

其中(A1,B1,C1)等叫做元组(Tuple)A1、B1、C1等叫做分量(Component)

关系(Relation)

D1xD2x…xDn的子集叫做在域D1,D2,…,Dn上的关系,表示为

R(D1,D2,…,Dn)

在这里,R表示关系的名字,n是关系的度(Degree)。
若某一属性的值可以唯一地标识一个元组,而其子集不能,则该属性被称为候选码(Candidate Key)
若一个关系有多个候选码,则选定其中一个为主码(Primary Key)
候选码的各个属性为主属性(Primary Attribute)。不包含在任何候选码中的属性称为非主属性(Non-prime Attribute)非码属性(Non-key Attribute) 。当关系模式的所有属性是这个关系模式的候选码,称为全码(All-key)

关系有三种类型:基本关系(基本表)、查询表、视图表。

基本关系具有以下性质:

  • 列是同质的
  • 不同的列可出自同一个域
  • 列的次序可以任意交换
  • 任意两个元组的候选码不能取相同的值
  • 行的次序可以任意交换
  • 分量不能再分

关系模式

关系的描述称为关系模式。
它可以形式化地表示为:

R(U,D,DOM,F)

其中R为关系名,U为组成该关系的属性名集合,D为U重属性所来自的域,DOM为属性向域的集合,F为属性间数据的依赖关系集合。
关系是关系模式在某一时刻的状态或内容。

关系数据库

关系数据库的型也称为关系数据库模式,是对关系数据库的描述。
关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。

关系操作

基本的关系操作

关系模型中常用的关系操作包括查询(Query)操作插入(Insert)、删除(Delete)、修改(Update)操作两大部分。
查询操作又可以分为选择(Select)、投影(Project)、连接(Join)、除(Divide)、并(Union)、差(Except)、交(Intersection)、笛卡尔积等。其中选择、投影、并、差、笛卡尔积是五种基本操作。其余操作可以用基本操作来定义和导出。

关系操作的特点是集合操作方式——操作的对象和结果都是集合。

关系的完整性

关系模型中有三类完整性约束:实体完整性(Entity Integrity)参照完整性(Referential Integirty)用户自定义完整性(User-defined Integirty)

其中实体完整性和参照完整性是关系模型必须满足的完整性约束条件,被称作关系的两个不变性。用户自定义完整性由应用需求决定。

实体完整性

主码不能取空值。

参照完整性

设F是基本关系R的一个或一组属性,但不是R的码,Ks是基本关系S的主码。如果F与Ks对应,则F是R的外码(Foreign Key),并称R为参照关系(Referencing Relation),S为被参照关系(Referenced Relation)
参照完整性规则就是定义外码与主码之间的引用规则:

若属性(或属性组)F是基本关系R的外码,它与基本关系S上的主码Ks相对应(R和S可能是同一关系),则对于R中每个元组在F上的值必须:
或者取空值
或者等于S中某个元组的主码。

用户自定义完整性

用户自定义完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。

关系代数

关系代数对关系的运算来表达查询。

传统的集合运算

1
R∪S={t|t∈R∨t∈S}

1
R-S={t|t∈R∧t∉S}

1
R∩S={t|t∈R∧t∈S}

笛卡尔积

1
RxS={trts|tr∈R∧ts∈R}

专门的关系运算

选择

在关系R中选择满足给定条件的诸元组。

查询

查询符合条件的元组。

投影

关系R上的投影是从R中选择出若干属性列组成新的关系。

连接

从两个关系的笛卡尔积中选取属性间满足一定条件的元组。

自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是同名的属性组,并在结果中把重复的属性列去掉。

两个关系R、S在做自然连接时,R中某些元组可能在S中不存在公共属性上值相等的元组,从而被舍弃,称为悬浮元组

如果把悬浮元组也保存在结果关系中,而在其他属性上填空值(NULL),那么这种连接叫全外连接(Outer Join),如果只保留左边关系的悬浮元组叫左连接(Left Join),如果只保留右边关系的悬浮元组叫右连接(Right Join)

设R除以S的结果为T,则T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。

<待续>