SQL 关系数据结构

本文将详细介绍关系数据结构。

一、关系

关系模型的数据结构非常简单,只包含单一的数据结构——关系。在用户看来,关系模型中数据的逻辑结构是一张扁平的二维表。关系模型的数据结构虽然简单却能够表达丰富的语义,描述出现实世界的实体以及实体间的各种联系。

关系模型建立在几何代数的基础上,这里从集合论角度给出关系数据结构的形式化定义。

1.域

域是一组具有相同数据类型的值的集合,是属性取值范围的集合。

2.笛卡儿积

笛卡儿积为多个域相乘。

1
D1 ✖ D2 ✖ D3 ✖ D4 = {d1, d2, d3, d4}  (di∈Di)

笛卡儿积可表示为一张二维表,表中每行对应一个元组,表中每列对应一个属性。

给出三个域:

D1=SUPERVISOR = { 张清玫,刘逸 }

D2=SPECIALITY= {计算机专业,信息专业}

D3=POSTGRADUATE = {李勇,刘晨,王敏}

则D1,D2,D3的笛卡儿积为:

D=D1×D2×D3 ={

(张清玫, 计算机专业, 李勇),

(张清玫, 计算机专业, 刘晨),

(张清玫, 计算机专业, 王敏),

(张清玫, 信息专业, 李勇),

(张清玫, 信息专业, 刘晨),

(张清玫, 信息专业, 王敏),

(刘逸, 计算机专业, 李勇),

(刘逸, 计算机专业, 刘晨),

(刘逸, 计算机专业, 王敏),

(刘逸, 信息专业, 李勇),

(刘逸, 信息专业, 刘晨),

(刘逸, 信息专业, 王敏)}

共有 12 个元组,每个元组中又有 3 个分量。

3.关系

关系通俗来讲就是表,关系是笛卡儿积的子集。

因为关系一定属于笛卡儿积,而不一定每一条笛卡儿积都有意义。

前面的表中,假设每个学生只有一个老师,则仅有 1/3 的笛卡儿积有意义。

表的每行对应一个元组,每列对应一个属性。

4.属性

  • 每一个属性(每一列)都有一个对应名称,即属性名。
  • 每一个属性都有对应的取值范围,即域。
  • 属性必须是原子的,即不可分割的。
  • null 是每一个域的成员,即每个属性都可以取为 null 。空值给数据库的访问和更新带来许多困难,因此应该尽量避免使用空值。

5.码

  • 如果某一个元素组能够唯一地标识一个元组,则称该属性组为超码

  • 如果关系中的某一个元素组为超码(能够唯一地标识一个元组),且最小(元素组的子集无法唯一标识元组),则称该属性组为候选码

  • 如果一个关系有多个候选码,选定其中一个设为主码 ,一般加上下划线表示

  • 候选码的诸多属性称为主属性

6.关系的三种类型

  • 基本关系,又称基本表,实际存在的表,是实际存储数据的逻辑表示
  • 查询表,是查询结果对应的表
  • 视图表,由基本表或其它视图表导出的表,是虚表,不对应任何实际存储的数据

7.关系的性质

  • 关系必须是有限集合
  • 一个关系中不能有重复的元组,由候选码唯一标识
  • 列(属性)的顺序无所谓
  • 行(元组)的顺序无所谓
  • 同一列一定来自同一个域,不同列可以来自同一个域
  • 属性必须是原子的、不可分的

二、关系模式

在关系数据库中,关系模式是“型”,关系是“值”。其关系可以通过下表理解:

变量 变量类型
关系 关系模型

关系模式就是对关系的描述,关系模式必须指出关系的元组结构,划定完整性约束条件。

关系模式是静态的、稳定的,而关系是动态的、变化的、因关系操作而不断更新的。

三、关系数据库

1.什么是关系数据库

在一个给定的应用领域中,所有关系的集合构成一个关系数据库。

2.关系数据库的型和值

关系数据库的型称为关系数据库模式,是对关系数据库的描述。

关系数据库的值是这些关系模式在某一时刻对应的关系的集合。

四、关系模型的存储结构

由关系数据库管理系统接管,不同系统的存储方式各不相同。

参考

  • 数据库系统概论