数据库系统概论:第二章 关系数据库

2.1 关系数据结构及形式化定义

2.1.1 关系

1. 域(domain)

一组具有相同数据类型的的集合

2. 笛卡儿积

域上的一种集合运算,笛卡儿积是不同域的所有元素的所有组合

一个域允许的不同取值个数称为这个域的基数

在这里插入图片描述

3. 关系

在这里插入图片描述

  • 候选码:关系中的能唯一地标识一个元组而其子集不能的某一属性组的值,若有多个,选定其中一个为主码
  • 候选码的各个属性称为主属性,不包含的称为非主属性
  • 所有属性都是候选码,则称为全码

关系可以有三种类型:

  1. 基本关系:实际存在的表,实际存储数据的逻辑表示
  • 列是同质的
  • 不同的列可出自同一个域
  • 行、列的顺序无所谓
  • 任意两个元组的候选码不能取相同的值
  • 分量必须取原子值,即不可分的数据项
  1. 查询表:查询结果对应的表
  2. 视图表:基本表或其他视图表导出的表,虚表

2.1.2 关系模式

在这里插入图片描述

在这里插入图片描述

2.2 关系操作

2.2.1 基本的关系操作

  • 查询操作:选择、投影、连接、除、并、差、交、笛卡儿积(加粗的为基本操作)
  • 插入、删除、修改操作

特点:操作的对象和结果都是集合,又称为一次一集合(set-at-a-time)方式

2.2.2 关系数据语言的分类

  • 关系代数(代数方式)
  • 关系演算(逻辑方式):按照谓词变元分为元组关系演算和域关系演算
  • 结构化查询语言(SQL):集查询、数据定义语言、数据操纵语言和数据控制语言于一身的关系数据语言,高度非过程化

在这里插入图片描述

2.3 关系的完整性

  • 实体完整性:必须满足,关系的两个不变性之一
  • 参照完整性:必须满足,关系的两个不变性之一
  • 用户定义的完整性:应用领域需要遵循的约束条件

2.3.1 实体完整性

若属性(值一个或者一组属性)A是基本关系R的主属性,则A不能取空值(null value)。所谓空值就是不知道或者不存在或无意义的值。

关系数据库中的每个元组是可以区分的,是唯一的。

2.3.2 参照完整性

关系与关系之间是有关系的

参照关系的定义:

在这里插入图片描述

参照完整性规则就是定义外码与主码之间的引用规则

在这里插入图片描述

2.3.3 用户定义完整性

来源于应用的多样性

2.4 关系代数

2.4.1 传统的集合运算

只有模式相同的两个对象才能做传统的集合运算

  1. 笛卡儿积

2.4.2 专门的关系运算

引进几个记号

在这里插入图片描述

选择(selection)

在这里插入图片描述

投影(project)

在这里插入图片描述

连接(join)
最常用的操作,相当于在两个关系的笛卡儿积上做一个选择运算

在这里插入图片描述

  1. 等值连接:θ为“=”的连接运算
  2. 自然连接 :是一种特殊的等值连接,要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉。

在这里插入图片描述

  1. 悬浮元组(dangling tuple):自然连接时被舍弃的元组
  2. 外连接(outer join):把悬浮元组也保存在结果关系中,而在其他属性上填空值。
  3. 左外连接:只保留左边关系R的悬浮元组
  4. 右外连接:只保留右边关系S的悬浮元组

除(divison)

在这里插入图片描述