关系数据库的结构及形式化定义
关系
E.F.Codd连续发表了多篇论文,奠定了关系数据库的理论基础
- 域是一组具有相同数据类型的值的集合(在数据库系统中可以理解为取值范围)
- 笛卡儿积中每一个元素叫做一个n元组。元素中的每一个值d叫做一个分量(一个域运行的不同取值个数称为这个域的基数)
- 笛卡儿积的子集叫做域的关系,表示为R。
- 关系中的某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码。(一个关系有多个候选码,选定其中一个为主码。候选码的诸属性称为主属性,不包含在任何候选码中的属性称为非主属性,非码属性)
- 关系的三种类型:基本关系(基本表或基表),查询表和视图表。
- 基本关系6条性质:
【1】列是同质的
【2】不同的列可出自同一个域,称其中的每一个列为一个属性,不同的属性要给予不同的属性名。
【3】列的顺序可以任意交换。
【4】任意两个元组的候选码不能取相同的值
【5】行的顺序可以任意交换
【6】分量必须取原子量,每个分量确保不能再分。
规范条件中最重要的就是,关系的每一个分量必须是一个不可分的数据项。
关系模式
- 关系模式是型,关系是值。
- 关系的描述称为关系模式 R(U,D,DOM,F)
关系数据库
- 关系数据库的型也称为关系数据库模式,是对关系数据库的描述。
- 关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
关系操作
- 早期关系操作能力通常用代数方式或逻辑方式表示,分别称为关系代数和关系演算。
- 关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。
关系完整性
- 三类关系完整性:实体完整性,参照完整性,用户定义的完整性。
【1】实体完整性:属性A是基本关系R的主属性,则A的值不能取空值NULL
【2】参照完整性:F是基本关系R的一个或一组属性,但不是关系R的码,K是基本关系S的主码。如果F与K相对应,则F是R的外码,基本关系R为参照关系。P47(参照完整性规则)
【3】用户定义完整性:P48
关系代数
专门的关系运算
1.选择
选择又称为限制,选择关系R中满足条件的元组。
2.投影
从R中选择出若干属性列组成新的关系**(是对列进行操作)**
3.连接
两个关系的笛卡儿积中选取属性间满足一定条件的元组,并将其连接起来。
- 等值连接:是将两个笛卡儿积中,两个属性值相等的元组连接起来。
- 自然连接:是一种特殊的笛卡儿积,要求关系中比较的分量必须是同名的属性组,并且把结果中重复的属性列删除。
- 悬浮元组:在进行两个关系的连接操作中,关系R中可能存在与S中不存在公共属性上值相等的元组,在连接操作中这些元组会被舍弃,这些元组叫做悬浮元组。
- 外连接:把悬浮元组也保存在结果关系中,在其他属性上填写NULL空值。
- 左外连接(右外连接):只保留左(右)边关系R中的悬浮元组就叫做左(右)外连接。
4.除运算
- 明确象集的定义: P55
- T包含所有在R但不在S中的属性及其值,且T的元组与S的元组的所有组合都在R中。