第三章关系数据库关系模型是由:关系数据模型结构一表、关系操作集合和关系的三类完整性约束组成的。评价实际关系语言的理论是关系代数和关系演算。实际的关系语言,有的是基于关系代数的,有的是基于关系演算的,有的是介于两者之间的,我们将在第3章要学习的结构化查询语言SQL就是介于关系代数和关系演算之间的一种关系语言关系演算又分为元组关系演算和域关系演算两种。理论已证明关系代数、元组关系演算和域关系演算三者是等价的对于关系演算,我们只介绍两种具体的语言:元组关系演算语言ALPHA和域关系演算语言QBE。3.1关系数据结构及形式化定义3.1.1关系一、基本概念1、域(Domain):域是一组具有相同数据类型的值的集合例如:自然数、整数、实数、长度小于8的字符串等都可以是域。2、笛卡尔积:给定一组域D1,D2,,Dn,这些域中可以有相同的元素。D1,D2,,Dn的笛卡尔积为:D,×D,x..xD.=(di,d2,-,d.)ld,D,i=1,2,n)其中:★每一个元素(d,,d2,,d.)叫作一个n元组(n-tuple)或简称元组(Tuple);
第三章 关系数据库 关系模型是由:关系数据模型结构—表、关系操作集合和关系的三类完整性约束组成 的。 评价实际关系语言的理论是关系代数和关系演算。实际的关系语言,有的是基于关系 代数的,有的是基于关系演算的,有的是介于两者之间的,我们将在第 3 章要学习的结构化 查询语言 SQL 就是介于关系代数和关系演算之间的一种关系语言。 关系演算又分为元组关系演算和域关系演算两种。理论已证明关系代数、元组关系演 算和域关系演算三者是等价的。 对于关系演算,我们只介绍两种具体的语言:元组关系演算语言 ALPHA 和域关系演算 语言 QBE。 3.1 关系数据结构及形式化定义 3.1.1 关系 一、基本概念 1、域(Domain):域是一组具有相同数据类型的值的集合。 例如:自然数、整数、实数、长度小于 8 的字符串等都可以是域。 2、笛卡尔积: 给定一组域 D1,D2,.,Dn,这些域中可以有相同的元素。D1,D2,.,Dn 的笛卡 尔积为: D1 D2 Dn = (d1 ,d2 , ,dn )| di Di ,i =1,2, ,n 其中: 每一个元素 ( ) d d dn , , , 1 2 叫作一个 n 元组(n-tuple)或简称元组(Tuple);
◆元组中的每一个值d;叫作该元组在相应域Di上的一个分量(Component):★:每一个元组是组成该元组各分量的有序集合(强调各分量的有序性);★若D,(i=1,2,,n)为有限集,其基数(Cardinal number)为M=m★m(i=1,2,,n),则 D×D,.xDa的基数M为:=mixi=lm2x...Xm.★基数即集合中元素的个数:◆笛卡尔积实际上就是一个二维表。表中每一行对应一个元组,每列对应一个域。例给出三个域:DI=SUPERVISOR=(张清玫,刘逸)D2=SPECIALITY=(计算机专业,信息专业)D3=POSTGRADUATE=(李勇,刘晨,王敏)则D1,D2,D3的笛卡尔积为:DIXD2XD3=((张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨),(张清玫,计算机专业,王敏),(张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(张清玫,信息专业,王敏,(刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨),(刘逸,计算机专业,王敏),(刘逸,信息专业,李勇),(刘逸,信息专业,刘晨),(刘逸,信息专业,王敏))3.关系(Relation)1).关系D1XD2×...×Dn的子集叫作在域D1,D2,..,Dn上的关系,表示为R(DI,D2,...Dn)R:关系名n:关系的目或度(Degree)注意:关系是笛卡尔积的有限子集。无限关系在数据库系统中是无意义的
元组中的每一个值 i d 叫作该元组在相应域 Di 上的一个分量(Component); 每一个元组是组成该元组各分量的有序集合(强调各分量的有序性); 若 D (i n) i =1,2, , 为有限集,其基数(Cardinal number)为 m (i n) i =1,2, , ,则 D1 D2 Dn 的基数 M 为: = = n i M mi 1 =m1× m2×.×mn 基数即集合中元素的个数; 笛卡尔积实际上就是一个二维表。表中每一行对应一个元组,每列对应一个域。 例 给出三个域: D1=SUPERVISOR ={ 张清玫,刘逸 } D2=SPECIALITY={计算机专业,信息专业} D3=POSTGRADUATE={李勇,刘晨,王敏} 则 D1,D2,D3 的笛卡尔积为: D1×D2×D3 = { (张清玫,计算机专业,李勇),(张清玫,计算机专业,刘晨), (张清玫,计算机专业,王敏),(张清玫,信息专业,李勇), (张清玫,信息专业,刘晨),(张清玫,信息专业,王敏), (刘逸,计算机专业,李勇),(刘逸,计算机专业,刘晨), (刘逸,计算机专业,王敏),(刘逸,信息专业,李勇), (刘逸,信息专业,刘晨),(刘逸,信息专业,王敏) } 3. 关系(Relation) 1).关系 D1×D2×.×Dn 的子集叫作在域 D1,D2,.,Dn 上的关系,表示为 R(D1,D2,.,Dn) R:关系名 n:关系的目或度(Degree) 注意: 关系是笛卡尔积的有限子集。无限关系在数据库系统中是无意义的
由于笛卡尔积不满足交换律,即(dl,d2,...,dn)±(d2,dl,.,dn)但关系满足交换律,即(dl,d2,...di,dj,...,dn)=(dl,d2...,dj,di...,dn)(i,j=l,2,.n)解决方法:为关系的每个列附加一个属性名以取消关系元组的有序性例在表2.1的笛卡尔积中取出有实际意义的元组来构造关系关系:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE)■关系名,属性名假设:导师与专业:1:1,导师与研究生:1:n于是:SAP关系可以包含三个元组((张清玫,信息专业,李勇),(张清玫,信息专业,刘晨),(刘逸,信息专业,王敏))2)元组关系中的每个元素是关系中的元组,通常用1表示。3)单元关系与二元关系当n=1时,称该关系为单元关系(Unaryrelation)。当n=2时,称该关系为二元关系(Binaryrelation)。4)关系的表示关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。表2.2SAP关系SUPERVISORSPECIALITYPOSTGRADUATE张清玫信息专业李勇张清玫刘晨信息专业刘逸信息专业王敏5)属性关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。n目关系必有n个属性。6)码
由于笛卡尔积不满足交换律,即 (d1,d2,.,dn )≠(d2,d1,.,dn ) 但关系满足交换律,即 (d1,d2 ,.,di ,dj ,.,dn)=(d1,d2 ,.,dj,di ,.,dn) (i,j = 1,2,., n) 解决方法:为关系的每个列附加一个属性名以取消关系元组的有序性 例 在表 2.1 的笛卡尔积中取出有实际意义的元组 来构造关系 关系:SAP(SUPERVISOR,SPECIALITY,POSTGRADUATE) ◼ 关系名,属性名 假设:导师与专业:1:1,导师与研究生:1:n 于是:SAP 关系可以包含三个元组 { (张清玫,信息专业,李勇), (张清玫,信息专业,刘晨), (刘逸,信息专业,王敏) } 2) 元组 关系中的每个元素是关系中的元组,通常用 t 表示。 3) 单元关系与二元关系 当 n=1 时,称该关系为单元关系(Unary relation)。 当 n=2 时,称该关系为二元关系(Binary relation)。 4) 关系的表示 关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。 5) 属性 关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性 (Attribute)。 n 目关系必有 n 个属性。 6) 码 表 2.2 SAP 关系 SUPERVISOR SPECIALITY POSTGRADUATE 张清玫 信息专业 李勇 张清玫 信息专业 刘晨 刘逸 信息专业 王敏
候选码(Candidatekey)若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码在最简单的情况下,候选码只包含一个属性。称为全码(All-key)在最极端的情况下,关系模式的所有属性组是这个关系模式的候选码,称为全码(AII-key)主码若一个关系有多个候选码,则选定其中一个为主码(Primarykey)主码的诸属性称为主属性(Primeattribute)。不包含在任何侯选码中的属性称为非码属性(Non-key attribute)7)三类关系基本关系(基本表或基表)实际存在的表,是实际存储数据的逻辑表示查询表查询结果对应的表视图表由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据二、基本关系源于笛卡尔积的限定和扩充(1)变无限集合为有限集合。(2)给每列附加唯一属性来消除关系元组的有序性。三、基本关系的性质①列是同质的(Homogeneous)每一列中的分量是同一类型的数据,来自同一个域②不同的列可出自同一个域
候选码(Candidate key) 若关系中的某一属性组的值能唯一地标识 一个元组,则称该属性组为候选码 在最简单的情况下,候选码只包含一个属性。 称为全码(All-key) 在最极端的情况下,关系模式的所有属性组 是这个关系模式的候选码,称为全码(Allkey) 主码 若一个关系有多个候选码,则选定其中一个 为主码(Primary key) 主码的诸属性称为主属性(Prime attribute)。 不包含在任何侯选码中的属性称为非码属性 (Non-key attribute) 7) 三类关系 基本关系(基本表或基表) 实际存在的表,是实际存储数据的逻辑表示 查询表 查询结果对应的表 视图表 由基本表或其他视图表导出的表,是虚表,不对 应实际存储的数据 二、基本关系源于笛卡尔积的限定和扩充 (1)变无限集合为有限集合。 (2)给每列附加唯一属性来消除关系元组的有序性。 三、基本关系的性质 ① 列是同质的(Homogeneous) 每一列中的分量是同一类型的数据,来自同 一个域 ② 不同的列可出自同一个域
其中的每一列称为一个属性不同的属性要给予不同的属性名上例中也可以只给出两个域:人(PERSON)=张清玫,刘逸,李勇,刘晨,王敏专业(SPECIALITY)=计算机专业,信息专业SAP关系的导师属性和研究生属性都从PERSON域中取值为了避免混淆,必须给这两个属性取不同的属性名,而不能直接使用域名。例如定义导师属性名为SUPERVISOR-PERSON(或SUPERVISOR)研究生属性名为POSTGRADUATE-PERSON(或POSTGRADUATE)③列的顺序无所谓列的次序可以任意交换遵循这一性质的数据库产品(如ORACLE),增加新属性时,永远是插至最后一列但也有许多关系数据库产品没有遵循这一性质,例如FoxPro仍然区分了属性顺序④任意两个元组不能完全相同由笛卡尔积的性质决定但许多关系数据库产品没有遵循这一性质。例如:Oracle,FoxPro等都允许关系表中存在两个完全相同的元组,除非用户特别定义了相应的约束条件。③行的顺序无所谓行的次序可以任意交换遵循这一性质的数据库产品(如ORACLE)插入一个元组时永远插至最后一行但也有许多关系数据库产品没有遵循这一性质,例如FoxPro仍然区分了元组的顺序③分量必须取原子值
其中的每一列称为一个属性 不同的属性要给予不同的属性名 上例中也可以只给出两个域: 人(PERSON)=张清玫,刘逸,李勇,刘晨,王敏 专业(SPECIALITY)=计算机专业,信息专业 SAP 关系的导师属性和研究生属性都从 PERSON 域中取值 为了避免混淆,必须给这两个属性取不同的属性名,而不能直接使 用域名。 例如定义: 导师属性名为 SUPERVISOR-PERSON(或 SUPERVISOR) 研究生属性名为 POSTGRADUATE-PERSON(或 POSTGRADUATE) ③ 列的顺序无所谓 列的次序可以任意交换 遵循这一性质的数据库产品(如 ORACLE), 增加新属性时,永远是插至最后一列 但也有许多关系数据库产品没有遵循这一 性质,例如 FoxPro 仍然区分了属性顺序 ④ 任意两个元组不能完全相同 由笛卡尔积的性质决定 但许多关系数据库产品没有遵循这一性质。 例如: Oracle,FoxPro 等都允许关系表中存在两个完全相同 的元组,除非用户特别定义了相应的约束条件。 ⑤ 行的顺序无所谓 行的次序可以任意交换 遵循这一性质的数据库产品(如 ORACLE), 插入一个元组时永远插至最后一行 但也有许多关系数据库产品没有遵循这一性 质,例如 FoxPro 仍然区分了元组的顺序 ⑥ 分量必须取原子值