【概述】
关系模型是最重要的一种逻辑模型,在数据库领域上,当前的研究工作都是以关系方法为基础,目前常见的数据库系统基本都是采用关系模型作为数据的组织方式,即关系型数据库
关系模型建立在严格的数学概念的基础上,可以描述一对一、一对多、多对多的联系,同时概念单一,实体、各类联系、对数据的检索结果都用关系来表示,具有更高的数据独立性、更好的安全保密性,此外存取路径对用户透明,用户只要指出干什么,不必详细说明怎么干,简化了数据库建立的过程,也精简了程序员的工作
但关系模型的存取路径对用户透明,导致了查询效率不如非关系数据模型,为提高性能,必须对用户的查询请求进行优化,增加了开发 DBMS 的难度
关系模型建立在严格的数学概念的基础上,这里仅简单介绍从用户角度来看的关系模型与其基本术语
关于关系数据库系统的具体内容详见:
【数据结构】
基本术语
在用户角度来看,关系模型由一组关系组成,每个关系的数据结构是一张由若干行列组成的二维表,其基本术语如下:
- 关系(Relation):一个关系对应一张表
- 元组(Tuple):表中的一行为一个元组
- 属性(Attribute):表中的一列为一个属性,每个属性的名称为属性名
- 分量:元组中的某个属性值为一个分量
- 码(Key):亦称码键,表中的某个属性组为一个码,可以唯一确定一个元组
- 域(Domain):一组具有相同数据类型的值的集合,某个属性的取值范围是某个域
- 关系模式:对关系的描述,表示为
关系名(属性1,属性2,...,属性n)
如下图,整个学生登记表为一个关系,其中的一行为一个元组;其中的一列为一个属性;某个元组中的某个属性值为一个分量;学号可以唯一确定一个学生,成为本关系的码;对于性别这个属性,其取值范围是 (男,女)
,即该属性的域;关系模式为 学生(学号,姓名,年龄,性别,系名,年级)
与表格的对比
将关系模型的术语与现实中的一般表格的术语做一个对比,有:
关系术语 | 一般表格术语 |
---|---|
关系名 | 表名 |
关系模式 | 表头(表格的描述) |
关系 | 二维表 |
元组 | 记录/行 |
属性 | 列 |
属性名 | 列名 |
属性值 | 列值 |
分量 | 一条记录中的一个列值 |
非规范关系 | 表中嵌套另一个表 |
规范化要求
关系模型要求关系必须是规范化的,即关系要满足一定的规范条件,最基本的就是关系中的每一分量是不可分的数据项,简单来说,就是不允许表中还有表
如下图,工资是一个可分的数据项,不符合关系模型的要求
【数据操纵与完整性约束】
关系模型的数据操作是集合操作,操作对象与操作结果都是关系,基础的操作有:插入、更新、查询、删除
这些操作要求满足完整性约束条件,关系模型的完整性约束条件分为三类:
- 实体完整性:关系中的主属性不能取空值
- 参照完整性:关系中不允许引用不存在的实体
- 用户定义的完整性:用户自定义的针对具体关系数据库的约束条件
【存储结构】
由于关系模型的实体及实体间的联系都用二维表来表示,这使得在物理存储时,只要将二维表以文件形式存储即可
不同的 DBMS 的存储结构不同,有的 DBMS 一个表存储为一个文件,有的 DBMS 一个表存储为多个文件,还有的 DBMS 根据需要自己设计文件结构