跳到主要内容
版本:1.0.14

关系模型概述

在关系模型中,所有数据逻辑上被组织成关系(表)结构。每个关系都有自己的名称,并由数据的一些命名属性(表中的列)所组成。每个元组(表中的行)包含每个属性的一个取值。关系模型的最大优点就在于其逻辑结构简单,但这种简单的结构却有着可靠的理论基础。

关系

关系模型基于数学中的关系(Relation)的概念,通常关系用表来表示。

  • 关系是由行和列组成的表。

  • 属性是关系中命名的列。

  • 关系中的每一行成为元组。

  • 关系中所包含的属性的个数称为维数。

  • 关系中所包含的元组的个数称为基数。

  • 一个或多个属性的取值集合定义为域。

在关系模型中,用关系保存数据库所描述对象的信息。关系用二维表表示,表中每一行对应一个单独的记录,即元组。表中的每一列则对应一个属性。无论属性如何排列,都是同一个关系。域在关系模型中起着非常重要的作用。必须给关系中的每一个属性定义一个域。例如,表1-1中显示了关系weather中某些属性的 表1-1 关系表weather

属性含义域定义
city城市名称VARCHAR(80),80个字符
temp_lo最低温度NUMERIC(3,1),范围0.0~99.9
temp_hi最高温度NUMERIC(3,1),范围0.0~99.9
prcp降水量NUMERIC(5,1),范围0.0~9999.9
date记录日期日期类型,格式为yyyy-mm-dd

通过域,用户就可以用它来定义属性取值的含义与范围。因此,当系统执行关系操作时,就有更多的信息可使用,从而避免语义错误的操作。例如,将城市名称与最低温度进行比较是无法进行的,因为两者属于不同的域。而将最高温度与降水量比较或者减法操作是无意义的,尽管这两个属性所定义的域都是数值型(但单纯从逻辑上来说仍然可以进行比较或减法操作)。

模式

关系名和其属性集合的组合称为这个关系的模式,例如:

weather(city, temp_lo, temp_hi, prcp, date)

在关系模型中,数据库是由一个或多个关系组成。这种关系模式的集合称为数据库模式。

约束

关系模型对于存储在数据库中的数据具有约束的能力。例如,对关系weather上的属性temp_lo施加“非空”的约束,那temp_lo就不能接受空的数值。

键和外键

在关系模型中,可以对数据库模式的关系加很多约束,其中键是最基本的一种约束。键由关系的一组属性集组成,通过定义键可以保证关系中任何两个元组的值在定义键的属性集上取值不同。例如,在关系weather上将属性集city和date作为键,即:

weather(city, temp_lo, temp_hi, prcp, date)

可以保证同一个城市同一天的元组只能出现一次。

外键也是一种约束,该约束判定一个关系中出现的值也必须在另一个关系的键中出现。

关系代数

关系代数是一门用于操作关系模型中数据的代数,它的原子操作数是:

  • 代表关系的变量。

  • 代表有限关系的常量。

以及交、并、差等操作符。关于关系代数更详细的内容,推荐参阅《数据库系统基础教程》、《SQL and Relational Theory》以及《Database in Depth》。