关系模型:由三要素组成,即关系数据结构、关系操作集合和关系完整性约束
- 关系:
- 关系模型的数据结构较为单一,只包含单一数据结构——关系(一张扁平的二维表)
- 关系模型是建立在集合代数的模型上,下面给出三个定义:
- 1 域:一组具有相同数据类型的值的集合,通常用于描述属性的取值范围
- 2 笛卡尔积 对一组域中的每一个元组都要与其他域中的所有元组进行连接,得到的集合称为笛卡尔积。
- 3 关系:笛卡尔积的子集
- 关系模式:对关系的描述称为关系模式
- 关系是关系模式某一时刻的状态或内容,关系模式是静态的、稳定的,而关系是动态的、随时间不短变化的。
- 关系数据库:
- 关系数据库的值,就是若干关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
关系操作
- 基本关系操作:
- 查询操作为一类
- 查询操作分:一次一集合,∩、∪、-、笛卡尔积(×)
- 这类操作的特点是集合操作的方式,不改变关系的结构,操作的对象和结果都是集合,可以成为一次一集合的方式
- 一次一记录:选择,投影,连接、除
- 这类操作的特点是非关系数据模型操作,操作的对象和属性多为元组或者属性。
- 查询操作分:一次一集合,∩、∪、-、笛卡尔积(×)
- 插入、删除、修改操作为一类
- 查询操作为一类
- 关系数据语言分类:
- 关系代数语言:例如ISBL
- 关系演算语言:
- 元组关系演算语言:例如APLHA、QUEL
- 域关系语言:例如QBE
- 具有关系代数和关系演算双重特点的语言:例如SQL(Structure Query Language,结构化查询语言)
关系完整性
关系模型的完整性规则是对关系的某种约束条件,即关系的值随着时间的变化应该满足一些约束条件。
- 关系的三类完整性约束
- 实体完整性:
- 若属性(指一个或者一组属性)A基本关系R的主属性,则A不能为空
- 实体完整性规则是针对基本关系而言的,一个基本表通常对应现实世界的一个实体集。如,学生关系对应于学生的集合。
- 现实世界中的实体具有唯一标志性。
- 关系模型中,以主码作为唯一标识。
- 主码不能为空
- 若属性(指一个或者一组属性)A基本关系R的主属性,则A不能为空
- 实体完整性:
- 参照完整性:
- 设F为基本关系R的一个或一组属性,但不是关系R的主码,K是基本关系S的主码,如果F与K相对应,则称F为基本关系R的外键。
- 对于R中每个元组在F上的值必须为:
- 或者为空;
- 或者为S中某个元组的主码值;
- 用户定义完整性:
- 用户定义的完整性就是针对某一具体关系数据库的约束条件。比如某一个属性必须取唯一值,非主属性不能为空等。
关系代数
除了基本的交、并、差、笛卡尔积之外,需要重点关注:选择、投影、连接、除运算
选择是针对元组进行操作,从关系R中选出符合条件的诸元组。
投影是针对属性进行操作,从关系中选择出若干属性组成新的关系
连接是从两个关系的笛卡尔积中选出属性之间满足一定条件的元组
- 通常分为:等值连接、自然连接(在等值连接的基础上,去掉重复行)
在连接的过程中,如果把舍弃的元组保留下来,则成为外连接,其中保留左边关系R中舍弃元组的,称为左外连接(LEFTT OUTER JOIN),保留右边关系S中舍弃的元组的,称为右外连接(RIGHT OUTER JOIN)