关系型数据库介绍

关系模型

关系数据结构

域: 一组具有相同数据类型的值的集合。
比如整数、性别。

笛卡尔积: 一组域中,所有域的所有取值的任意组合的一个空间。
笛卡尔积可以看作关系的“域”。
例如D1域有2个值,D2域有2个值,D3域有3个值,则笛卡尔积为2X2X3=12

关系: 笛卡尔积的子集叫做域上的关系,表示为:R(D1, D2,…,Dn)
R:关系名 n:关系的目(度)
元组: 关系中每一个元素(d1,d2…dn)称为一个元组,用t表示。(一行)
属性: 关系中不同列可以对应相同的域,每个列都是一个属性。(一列)
码: 就是键

分量必须去原子值:(也就是每格都要是不能再拆分的状态)

关系模式: 关系模式是型,关系是值。(表的结构)
关系模式可以形式化的表示为:R(U,D,DOM,F)
R关系名,U属性名集合,D域,DOM属性向域的映像集合,F属性间数据的依赖
简记为:R(U)或R(A1,A2,A3)

关系完整性约束

  1. 实体完整性
  2. 参照完整性
  3. 用户定义的完整性

前二者是关系模型必须满足的约束条件,也被称为关系的不变性。(系统支持)
第三者是应用领域中的语义约束。(用户支持)

实体完整性 关系的主属性不能取空值(主键不能为空)
参照完整性 关系与关系之间的引用(外键是其他表的主键)

参照完整性规则:
若属性F是基本关系R的外码,他与基本关系S的主码Ks相对应,
则对于R中每个元组在F上的值必须为:

  • 或者取空值
  • 或者等于S中某个元组的主码值

用户定义完整性 针对具体关系数据库的约束条件(属性的取值范围)

关系代数

关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。

  • 运算对象是关系
  • 运算结果也是关系
  • 运算符有两类:集合运算符、关系运算符

一些符号:
R:关系模式R(A1,A2..An)的一个关系
t∈R:t是R的一个元组
A:属性组
t[Ai]:t中相应于属性Ai的一个分量
-A:除去A中属性后剩余的属性组(补集)
tr ^ ts:元组的连接(首尾相接)
Zx:一个属性为x的集合里,z元素的集合

传统集合操作

集合运算符 ×
含义 笛卡尔积

并运算: 目数相同相应属性取自同一个域,元组叠加。
差运算: 目数相同相应属性取自同一个域,元组相减。
交运算: 目数相同相应属性取自同一个域,保留相同元组。
笛卡尔积: 二者属性叠加,二者元组随机排列不重复。

关系特有操作

关系运算符 σ π ÷
含义 选择 投影 链接

选择: 从关系R中选取表达式F值为真的元组。
投影: 从关系R中选取部分属性。
等值链接: 选取两个关系的笛卡尔积中满足条件的元组。
自然链接: 选取两个关系的笛卡尔积中重复属性相同的元组。
外链接: 选取两个关系的自然连接,不丢弃属性和元组,空位填NULL。
左外链接: 类似外连接,不丢弃左操作数属性和元组,空位填NULL。
右外链接: 类似外连接,不丢弃右操作数属性和元组,空位填NULL。
除: R中与S不同属性的值,像集覆盖S中于R同属性者,组成关系。

关系演算

关系演算是以数理逻辑中的谓词演算为基础,按照谓词变元不同,可分为:

  1. 元组关系演算:
    以元组变量为谓词变元的基本对象,元组关系演算语言ALPHA
  2. 域关系演算:
    以域变量作为谓词变元的基本对象,域关系演算语言QBE

元组关系演算 ALPHA

语句格式:
GET 工作空间名(表达式1)[:条件][DOWN|UP 表达式2]
**表达式1:**指定语句的操作对象
关系名|关系名.属性名|元组变量.属性名|集函数[, ...]
**条件:**结果元组应该满足的条件
逻辑表达式
**表达式2:**指定排序方式
关系名.属性名|元组变量.属性名[, ...]

1
2
3
4
5
6
7
8
9
10
#例1:查询所有选修课程号码:
GET W (SC.Cno)
#例2:查询所有学生的数据
GET W (Student)
#例3:查询IS系年龄小于20的学生的学号和年龄
GET W (Std.Sno, Std.Sage):Std.Sdept='IS'^Std.Sage<20
#例4:查询CS系学生的学号和年龄,结果按年龄降序
GET W (Std.Sno, Std.Sage):Std.Sdept='CS'DOWN Std.Sage
#例5:查询IS系年龄最大三个人下名字
GET W(3) (Std.Sname):Std.Sdept='IS'DOWN Std.Sage

元组变量的含义: 表示可以在某一关系变化范围内变化。
元组变量的用途: 简化关系名,使用量词时必须用元组变量。
定义元组变量:RANGE 关系名 变量名

域关系演算 QBE

QBE操作框架:

关系名 属性名 属性名 属性名
操作命令 元组属性值/查询条件/操作命令 同左 同左