一、关系数据结构及形式化定义
1.1 关系
关系模型的数据结构只包含单一的数据结构------关系,在关系模型中,现实世界的实体以及实体之间的各种联系均用单一的结构类型,即关系来表示。关系模型是建立在集合代数的基础上的,从集合论的角度给出关系数据结构的形式化定义。
1、域:一组具有相同数据类型的值的集合。例如:自然数,整数,大于0且小于等于100的整数,{0,1},{男,女}等。
2、笛卡尔积:给定一组域D1,D2,D3,......,Dn,允许其中某些域是相同的,D1,D2,D3,......,Dn的笛卡尔积为:D1×D2×......×Dn={(d1,d2,......,dn) | di∈Di,i=1,2,......,n},其中,每一个元素(d1,d2,......,dn)叫做一个n元组,简称元组,元组中每一个值叫做一个分量。就是每次在每一个域中选一个元素组成一个元组,每个元组元素不尽相同,最后将所有元组放在集合中即为笛卡尔积。
3、关系:D1×D2×......×Dn的子集叫做在域D1,D2,D3,......,Dn上的关系,表示为R(D1,D2,D3,......,Dn),其中,R表示关系的名字,n是关系的目或度。即关系是笛卡尔积的有限子集,所以关系也是一张二维表,表的每行对应一个元组,每列对应一个域,由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性,n目关系必有n个属性。
- 超码又称“超级码”,是一个或多个属性的集合,这些属性可以在一个实体集中唯一地标识这个实体。
- 若关系中的某一属性组能唯一地标识一个元组,而其真子集不能,则称该属性组为候选码。
- 超码包括候选码,虽然超码中可以唯一标识一个实体,但是可能大多数超码中含有多余的属性。如果超码的任意真子集不能唯一地标识一个元组,则超码就是候选码。
- 若一个关系有多个候选码,则选定其中一个为主码。
- 候选码的诸属性称为主属性。
- 若关系模式的所有属性是这个关系的候选码,称为全码。
关系有三种类型:基本关系(通常又称为基本表或基表),查询表和视图表。其中,基本表是实际存在的表,它是实际存储数据的逻辑表示(存储数据的);查询表是查询结果对应的表(一个表);视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据(显示出来的)。
基本关系有6条性质:
- 列是同质的:每一列中的分量来自一个域。
- 不同列可出自同一个域(但属性名是不同的(唯一))。
- 列的顺序无所谓。
- 任意两行元组的候选码不能取相同的值。
- 行的顺序无所谓。
- 每一个分量必须是不可分的数据项。
1.2 关系模式
关系的描述称为关系模式,它可以形象化的表示为R(U,D,DOM,F),其中,R为关系名,U为组成该关系的属性名集合,D为U中属性所来自的域,DOM为属性向域的映像集合,F为属性间数据的依赖关系集合。通常可简记为R(U)。
1.3 关系数据库
所有关系的集合构成一个关系数据库。关系数据库有型和值之分,关系数据库的型也称为关系数据库模式,是对关系数据库的描述。关系数据库的值是这些关系模式在某一时刻对应的关系的集合,通常就称为关系数据库。
1.4 关系模型的存储结构
表是关系数据的逻辑模型,在关系数据库的物理组织中,有的关系数据库管理系统中一个表对应一个操作系统文件,将物理数据组织交给操作系统来完成;有的关系数据库管理系统从操作系统那里申请若干个大的文件,自己划分文件空间,组织表、索引等存储结构,并进行存储管理。
二、关系操作
2.1 基本的关系操作
即增删改查。关系的查询表达能力很强,是关系操作中最主要的部分,查询操作又可以分为选择、投影、并、差、笛卡尔积(5中基本操作)、连接、交等。
2.2 关系数据语言的分类
关系数据语言包括:
- 关系代数语言(例如ISBL)
- 关系演算语言
- 具有关系代数和关系演算双重特点的语言(例如SQL)
三、关系的完整性
3.1 实体完整性
若属性(指一个或一组属性)A是基本关系R的主属性,则A不能取空值。例如:选修(学号,课程号,成绩)关系中,“学号,课程号”为主码,则“学号”和“课程号”两个属性都不能取空值。
3.2 参照完整性
若属性(属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须:
- 或者取空值(F的每个属性值均为空值)。
- 或者等于S中某个元组的主码值。
例如:对于学生(学号,姓名,性别,专业号,年龄)关系中,学号是主码,专业号是外码,此时,专业号为空表示当前学生还未确定专业,或者专业号为相对应的关系专业(专业号,专业名)中专业号相等。
3.3 用户定义的完整性
用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
四、关系代数
4.1 传统的集合运算
设关系R和关系S都有n个属性,且相应的属性取自同一个域。
- 并:∨,属性相同,结果仍为n目关系,由属于R或属于S的所有元组组成。
- 差:- ,属性相同,结果仍为n目关系,由属于R而不属于S的所有元组组成。
- 交:∧,属性相同,结果仍为n目关系,由属于R且属于S的元组组成。
- 笛卡尔积:不要求属性相同。
4.2 专门的关系运算
1、选择:σSdept='IS'(Student),即在Student表中找到属性Sdept为IS的所有元组。
2、投影:∏Sname,Sage(Student),即在Student表中查找属性Sname和Sage两列,同时将两列中重复行取消。
3、连接:
- 等值连接:从关系R与S的广义笛卡尔积中选取A、B属性值相等的那些元组。
- 自然连接:将重复属性去掉。
4、除:R÷S