2.1 关系数据结构及形式化定义
2.1.1 关系
关系模型只包含单一的数据结构——关系。
常见定义:
- 域:一组具有相同数据类型的值的集合,域允许的取值个数称为域的基数。
- 笛卡尔积:一种集合运算,用于组合多种关系。
- 关系:关系数据库中的一个表,一系列域的笛卡尔积的子集。
- 元组:关系中的一行,根据属性值的数量 n 叫作 n 元组。
- 分量:元组的一个值。
- 候选码:能唯一标识一个元组而其子集不能的某一个属性组,可以有多个候选码。
- 主码:选定候选码中的一个作为主码。
- 主属性:候选码中的属性称为主属性。
- 非主属性:不包含在候选码中的属性称为非主属性。
- 全码(all-key):某个关系模式的所有属性为候选码时。
关系可以有三种类型:基本关系(也称为基本表)、查询表(查询结果对应的表)、视图表(由基本表或其他视图表导出的表)。
关系模型要求关系必须规范化,最基本的一条是(1NF)关系的每一个分量是一个不可分的数据项。
2.1.2 关系模式
关系的描述称为关系模式,可表示为R(U,D,DOM,F)。
R 为关系名,U 为属性名集合,D 为域,DOM 为属性向域的映像集合,F 为属性间的数据依赖关系集合。
2.1.3 关系数据库
关系数据库的型称为关系数据库模式,是对关系数据库的描述,包括若干域及在域上定义的若干关系模式。
关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
2.2 关系操作
2.2.1 基本关系操作
常用关系操作包括查询操作和插入、删除、修改操作两部分。
查询操作又可以分为选择、投影、连接、除、并、差、交、笛卡尔积。
2.2.2 关系数据语言的分类
早期的分别为关系代数、关系演算。
关系代数通过关系运算表达查询需求,关系演算通过谓词表达查询需求。
结构化查询语言(Structured Query Language,SQL)是一种介于关系代数和关系演算之间的语言。
2.3 关系完整性
2.3.1 实体完整性
实体完整性规则:主属性的值不能取空值。
空值指的是不存在或无意义的值。
2.3.2 参照完整性
参照完整性规则:若属性(或属性组)为外码,则属性的取值必须为:
- 每个属性值均为空值。
- 等于另一个关系中存在的主码值。
2.3.3 用户定义的完整性
针对某个具体数据库的完整性约束条件。
如某个属性必须取唯一值,定义某个属性必须在某个范围内等。