关系的数据结构及形式化定义
关系模型中,现实世界的实体以及其间各种联系均用单一的结构类型,即“关系”来表示
几个概念
域:一组具有相同数据类型的值的集合
笛卡尔积:
域上的一种运算的集合,若干关系经过笛卡尔积运算得到一个新的关系(表),该关系的每一条记录(行)都是以前所有关系(表)的每条记录(行)的全排列组合。
此新关系包括了涵盖了之前若干关系(表)中的所有信息。
表X有a行b列,表Y有m行n列,笛卡尔积X*Y有a*m行,b+n列
关系的度:属性个数(列)
关系的基数:元组个数(行)
候选码:某一个可以唯一标识一个元组,而其子集不能做到的属性组
主属性/非主(码)属性:候选码中的属性/不在候选码中的属性
主码:候选码中选定的其中之一
全码:关系中的所有属性均为候选码
关系的类型
基本关系(基本表):实际存储数据的逻辑表示,实际存在
查询表:查询结果对应的表
视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储数据
基本关系的性质
1. 列同质:每一列的分量为同一类型的数据,来自同一域
2. 不同的列可出自同一域,但要分配不同的属性名
3. 列(属性)的顺序无所谓
4. 行(元组)的顺序无所谓
5. 任意两个元组的候选码必不相同
6. 每个分量必须为不可分的数据项(不能表中有表)
关系模式:
关系的描述——R(U,D,DOM,F)
R:关系名
U:组成该关系的属性名的集合
D:U中属性所来自的域
DOM:属性向域的映像集合
F:属性间数据的依赖关系集合
(见后序)
关系的完整性
实体完整性
约束主码,主属性的值不能为空和无意义的值。(现实中的实体必存在且可区分)
参照完整性
约束外码,R关系的外码的取值必为–其所参照的关系S的某一元组的主码值,或空值
注:设F为基本关系R的一个(或一组)属性,但不是R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码,并称基本关系R为参照关系,基本关系S为被参照关系(或目标关系)。一个基本关系可以既为参照关系又为被参照关系。
用户定义完整性
约束域的取值,数据的取值必须满足特定的语义,如年龄不能为负。
关系操作
分为查询;插入,删除,修改;两大部分。
查询操作又分为-选择,投影,连接,除,并,差,交,笛卡尔积-等
其中-选择-投影-并-差-笛卡尔积-为5种基本操作,其他操作可由基本操作定义和导出。
关系代数
关系代数是一种抽象的查询语言,它用对关系的运算来表达查询。分为-传统集合运算-专门关系运算-两类。
传统集合运算
两个关系R,S的所有属性数目相等且属性名分别相同
并(union): R∪S 由属于R或属于S的元组组成
差(except): R-S 由属于R而不属于S的元组组成
交(intersection):R∩S 由既属于R又属于S的元组组成
关系的属性不必相同
笛卡尔积(cartesian product):此处为广义笛卡尔积,见开头概念介绍
专门关系运算
选择(selection):σF(R)
选出关系R中满足F条件的所有元组,F为取值为真或假的逻辑表达式
投影(projection):ΠA(R)
从R中选出若干属性列组,A为R中的属性列
连接(join): R ▷◁ S (AθB)
从两个关系的笛卡尔积中选出属性之间满足一定条件的元组,A、B为R和S上数目相等且可比的属性组,θ为比较运算符。当θ为‘=’时,称为等值连接
自然连接: R ▷◁ S
为一种特殊的等值连接,要求等值连接中进行比较的必须是同名的属性组,并将结果去掉重复的(在R和S中重名)的属性列。
自然连接所选出的元组中的每一项的值都与关系R与关系S中的全部属性(不重复)相对应。每个元组为一条完整的记录,该记录包含表R和S中的全部对应信息。
可以看做将表R与S进行整合,只保留所有属性(R和S)均存在的(不为空)元组
外连接 R =▷◁= S
引入概念—–浮空元组:在自然连接过程中被舍弃的元组
将浮空元组依然保留在连接后的结果关系中,而在其他属性上添空值(NULL)
左外连接: R =▷◁ S
在外连接的基础上,去掉以R为基准(结果的行为R的行)的,其他有空值的元组
可看做以R中的实体为参考的记录的集合,对R表进行列(S中的属性)与行(一条R中的记录可能对应多条S中的记录)的扩展
R中的实体有表R和S中的所有属性的信息(尽管某些扩展可能为空)
右外连接: R ▷◁= S
在外连接的基础上,去掉以S为基准(结果的行为S的行)的,其他有空值的元组
可看做以S中的实体为参考的记录的集合,对S表进行列(R中的属性)与行(一条S中的记录可能对应多条R中的记录)的扩展
S中的实体有表R和S中的所有属性的信息(尽管某些扩展可能为空)
除(division): R÷S
引入概念—象集
给定一个关系R(X,Z),当t[X]=x时,x在R中的象集为Zx
该象集为满足条件:属性X中的值为x的元组中,属性(组)Z的值的集合,并非元组
注:t[X]=x :t是R的一个元组,元组t中相应于属性X的值为x
R÷S
首先将R中的属性分为-未在S中重名出现的属性组X-在S中重名的属性组Y-
选取每个元组在属性组X中的值(组)x的象集Yx
若某个象集包含表S中属性组Y的所有属性值的集合(满足集合间的包含关系)
则选取该象集对应的x
由所有的x和属性(组)X共同构成R÷S的结果
关系表达式:关系代数中的运算经过有限次复合所形成的表达式。
仅为个人学习整理归纳………………………