2. 关系数据库
2.1 关系数据结构及形式化定义
### 关系数据库的发展历程
- 1962, CODASYL, 信息代数方法
- 1968, David Child, 实现集合论数据结构
- 1970, E.F.Codd, 开创数据库系统新时代
- 1981, IBM, SQL/DS
- 1981, UC Berkeley, INGRES

#### E.F.Codd
### 关系模型的数据结构
- 简单二维: 用户视为二维表
- 丰富语义: 描述实体和联系
- 单一结构: 实体和联系都用关系表示
### 域 (Domain)
- 具有相同数据类型的值的集合
### 笛卡儿积 Cartesian Product
- 给定一组域 $D\_1, D\_2, \\cdots, D\_n$, 允许其中某些域是相同的
- 其笛卡尔积为 $D\_1 \times D\_2 \times \cdots \times D\_n = \lbrace (d\_1, d\_2, \cdots, d\_n) | d\_i \in D\_i,$
- $i = 1, 2, \cdots, n \rbrace$
- $(d\_1, d\_2, \\cdots, d\_n)$ 叫做一个 $n$ 元组
- 每个元素 $d\_i$ 叫做一个分量
- 一个域允许的不同取值个数称为基数
### 关系 (Relation)
- 域 $D\_1, D\_2, \\cdots, D\_n$ 上的关系是其笛卡儿积的子集
- 表示为 $R(D\_1, D\_2, \\cdots, D\_n)$
- $R$ 为关系的名字, $n$ 表示关系的**目**或**度**
- 关系中的每行是一个**元组**
- 关系中的每列是一个**属性**
- 能唯一标识一个元组的属性组, 称为**候选码**
- 从多个候选码中选定其中一个为**主码**
- 候选码的属性称为主属性
- 不包含在任何候选码中的属性称为非主属性
- 所有属性都是候选码时称为全码

#### Relation
### 关系数据模型中的关系特点
- 关系数据模型中的关系必须是有限集合
- 为每列加一个属性名, 使关系属性无序
### 基本关系的性质
- 每一列中的分量来自同一个域
- 不同的列可出自同一个域
- 列的次序可以任意交换
- 任意两个元组的候选码不能相同
- 行的次序可以任意交换
- 分量必须是不可分的数据项
### 关系模式的描述
- 属性集合
- 域集合
- 属性与域的映射关系
- 完整性约束条件
### 关系模式的表示
- 表示为 $R(U, D, DOM, F)$
- $R$, 关系名
- $U$, 属性名集合, 描述组成关系的属性
- $D$, 属性所来自的域集合
- $DOM$, 属性向域的映射集合
- $F$, 属性间数据的依赖关系集合
### 关系模式的表示
- 可以简记为 $R(U)$
- 或 $R(A\_1, A\_2, \\cdots, A\_n)$

#### Relation
### 关系与关系模式
- 关系是关系模式在某一时刻的状态或内容
- 关系模式是静态的, 稳定的
- 关系是动态的, 随时间不断变化的
- 关系操作会导致关系的变化
- 人们常常将关系模式和关系统称为关系
### 关系模型中的实体和联系
- 实体和实体间的联系都用关系来表示
- 所有关系的集合构成一个关系数据库
### 关系数据库的型和值
- 型称为关系数据库模式
- 包括域定义和关系模式定义
- 值是关系模式在某一时刻对应的关系的集合
- 通常称为关系数据库
### 关系模型的存储结构
- 文件系统管理
- 自主存储管理

### 2.1 关系数据结构及形式化定义
- 域, 笛卡尔积, 关系在关系数据库中分别起什么作用?
- 什么是候选码, 主码, 全码?
- 为什么说关系是动态的而关系模式是静态的?
- 实体和联系是如何通过关系来表示的?
- 描述关系模型时, $R, U, D, DOM, F$ 分别有什么含义?
----
[ 1.4 数据库系统的组成](dbds-1-4.html#/overview)
[| 练习 |](dbds-exec.html)
[ 2.2 关系操作](dbds-2-2.html#/overview)