数据库系统概念 - 02

《数据库系统概念(原书第 6 版)》读书笔记。

第一部分:2~6 章,详细讲解了关系型数据库。

第二章 关系模型

在商用模型应用中,关系模型已经占据了主要位置,原因是与早期的模型(网状模型/层次模型)相比,关系模型以其简易性简化了编程者的工作。

2.1 关系数据库的结构

  • 关系数据库由 (table) 的集合构成,每个表有唯一的名称。
  • 关系模型中的术语
    • 关系 (Relation) 用来指代 (Table),
    • 元组 (Tuple) 用来指代 (Row),
    • 属性 (Attribute) 用来指代 (Column)。
    • 关系实例 (relation instance):表实例,就是一个有多行元组的表。
  • 关系是元组的集合,元组出现的顺序无关紧要。
  • 关系中的每个属性,都存在一个允许取值的集合(范围),称为该属性的 (domain)。
  • 对所有关系 r 而言,r 的所有属性的域都是原子的。如果域中元素被看做是不可再分的单元,则域是原子的 (atomic)。
  • (null) 是一个特殊的值,表示值未知或不存在。

这个概念和数学上的关系这个概念是密切相关的,这也正是关系数据模型名称的由来。在数学术语中,元组 (tuple) 只是一组值的序列(或列表)。在 n 个值之间的一种联系在数学上用关于这些值的一个 n 元组 (tuple) 来表示,n 元组就是一个有 n 个值的元组,它对应于表中的一行。多元组 - wikipedia

2.2 数据库模式

先做一个概念上的区分:

  • 数据库模式:数据库的逻辑设计;
  • 数据库实例:某一时刻数据库中数据的一个快照;

关系模式和关系实例:

  • 关系的描述称为关系模式 (Relation Schema) ,对应于程序设计语言中类型的概念。
  • 关系:对应于程序设计语言中变量的概念。
  • 关系实例:对应于程序设计语言中变量值的概念。
  • 关系模式可以形式化地表示为:
    • R(U,D,dom,F)
    • 其中 R 为关系名,U 为组成该关系的属性名集合,D 为属性组 U 中属性所来自的域,dom 为属性向域的映象集合,F 为属性间数据的依赖关系集合。
    • 通常简记为:R(U) 或 R(A1, A2, …, An)。其中 R 为关系名,U 为属性名集合,A1, A2, …, An 为各属性名。

2.3 键

一个问题,如何区分给定关系中的不同元组?

答案是使用 Superkey!Superkey 是一个或多个属性组合,它可以唯一的标识关系中的一个元组。如,在关系型数据库中我们常用 ID 来标识一个行记录。没有子集 Superkey 的 Superkey ,这种最小的 Superkey 称为候选键 (Candidate Key)。

在数据库中我们使用术语主键 (Primary Key) 来表示数据库设计人员选择的候选键。在一个关系中的任何两个元组不允许出现相同的 key 属性值。

当表中只有一个主键时,它是唯一的索引;
当表中有多个主键时,称为复合主键 (Superkey),复合主键联合保证唯一索引;

一个关系 r1 的属性是另一个关系 r2 的主键,这个属性称为外键 (Foreign Key)。

参考完整性约束 (Referential Integrity Constraint) 表示一个外键属性值出现在参考关系中,它也必须出现在被参考的关系中。

2.4 模式图

一个含有主键和外键依赖的数据库模式可以通过模式图 (Schema Diagram) 来表示。每个关系用一个矩形表示,主键属性添加下划线表示,外键依赖表示为从外键属性出发的带箭头的线指向被参考的关系的主键属性。如图所示:

2.5 关系查询语言

数据库查询语言包括过程和非过程的。

  • 非过程查询语言 (Nonprocedural Language) 是指用户描述希望得到的信息,但没有给出一个获得信息的具体的过程。常见的非过程查询语言,如 SQL(Structured Query Language),关系演算 (relational calculus)。
  • 过程查询语言 (Procedural Language) 是指用户指定了执行一系列的操作计算得到希望的结果。常见的过程查询语言,如关系代数 (relational algebra)。

2.6 关系运算

过程的关系型查询语言提供了一组运算,关系运算的结果总是单个的关系。

常见的关系运算有:

  • 谓词运算:从单个关系(如 instructor)中选出满足一些特定为此(如 salary > 85000 美元)的特殊元组。
  • 投影运算:从一个关系中选出特定的列。
  • 连接运算:把分别来自两个关系的元组对合并成单个元组。
  • 自然连接:两个关系的自然连接运算所匹配的元组在两个关系共有的所有属性上取值相同。
  • 笛卡尔积:其结果包括来自两个关系元组的所有对,无论他们的属性值是否匹配。
  • 集合运算:并集,交集,差集。

关系代数将在第 6 章详细讲解。

2.7 总结