Alex_McAvoy

想要成为渔夫的猎手

数据库关系模型

【概述】

关系模型是最重要的一种逻辑模型,在数据库领域上,当前的研究工作都是以关系方法为基础,目前常见的数据库系统基本都是采用关系模型作为数据的组织方式,即关系型数据库

关系模型建立在严格的数学概念的基础上,可以描述一对一一对多多对多的联系,同时概念单一,实体、各类联系、对数据的检索结果都用关系来表示,具有更高的数据独立性、更好的安全保密性,此外存取路径对用户透明,用户只要指出干什么,不必详细说明怎么干,简化了数据库建立的过程,也精简了程序员的工作

但关系模型的存取路径对用户透明,导致了查询效率不如非关系数据模型,为提高性能,必须对用户的查询请求进行优化,增加了开发 DBMS 的难度

关系模型建立在严格的数学概念的基础上,这里仅简单介绍从用户角度来看的关系模型与其基本术语

关于关系数据库系统的具体内容详见:

【数据结构】

基本术语

在用户角度来看,关系模型由一组关系组成,每个关系的数据结构是一张由若干行列组成的二维表,其基本术语如下:

  • 关系(Relation):一个关系对应一张表
  • 元组(Tuple):表中的一行为一个元组
  • 属性(Attribute):表中的一列为一个属性,每个属性的名称为属性名
  • 分量:元组中的某个属性值为一个分量
  • 码(Key):亦称码键,表中的某个属性组为一个码,可以唯一确定一个元组
  • 域(Domain):一组具有相同数据类型的值的集合,某个属性的取值范围是某个域
  • 关系模式:对关系的描述,表示为 关系名(属性1,属性2,...,属性n)

如下图,整个学生登记表为一个关系,其中的一行为一个元组;其中的一列为一个属性;某个元组中的某个属性值为一个分量;学号可以唯一确定一个学生,成为本关系的;对于性别这个属性,其取值范围是 (男,女),即该属性的;关系模式为 学生(学号,姓名,年龄,性别,系名,年级)

与表格的对比

将关系模型的术语与现实中的一般表格的术语做一个对比,有:

关系术语 一般表格术语
关系名 表名
关系模式 表头(表格的描述)
关系 二维表
元组 记录/行
属性
属性名 列名
属性值 列值
分量 一条记录中的一个列值
非规范关系 表中嵌套另一个表

规范化要求

关系模型要求关系必须是规范化的,即关系要满足一定的规范条件,最基本的就是关系中的每一分量是不可分的数据项,简单来说,就是不允许表中还有表

如下图,工资是一个可分的数据项,不符合关系模型的要求

【数据操纵与完整性约束】

关系模型的数据操作是集合操作,操作对象与操作结果都是关系,基础的操作有:插入、更新、查询、删除

这些操作要求满足完整性约束条件,关系模型的完整性约束条件分为三类:

  • 实体完整性:关系中的主属性不能取空值
  • 参照完整性:关系中不允许引用不存在的实体
  • 用户定义的完整性:用户自定义的针对具体关系数据库的约束条件

【存储结构】

由于关系模型的实体及实体间的联系都用二维表来表示,这使得在物理存储时,只要将二维表以文件形式存储即可

不同的 DBMS 的存储结构不同,有的 DBMS 一个表存储为一个文件,有的 DBMS 一个表存储为多个文件,还有的 DBMS 根据需要自己设计文件结构

感谢您对我的支持,让我继续努力分享有用的技术与知识点!