760 likes | 897 Views
第二章 关系数据库. 本章内容概述. 关系模型的基本概念 关系的码 关系代数 关系演算 关系代数表达式的优化. §2.1 关系模型概述. 关系数据库,是建立在关系数据模型基础上的数据库系统 关系模型又是基于数学方面的数据抽象理论 关系数据库,用数学的方法来处理数据库中的数据. § 2.1.1 关系数据模型的基本概念. 关系模型的组成: 数据结构 关系的操作 完整性约束. 数据结构: 关系模型中数据的逻辑结构是一张二维表 关系的操作: ( 1 )查询操作: A 选择 B 连接 C 除 D 并 E 交 F 差
E N D
本章内容概述 • 关系模型的基本概念 • 关系的码 • 关系代数 • 关系演算 • 关系代数表达式的优化
§2.1 关系模型概述 • 关系数据库,是建立在关系数据模型基础上的数据库系统 • 关系模型又是基于数学方面的数据抽象理论 • 关系数据库,用数学的方法来处理数据库中的数据
§ 2.1.1关系数据模型的基本概念 关系模型的组成: • 数据结构 • 关系的操作 • 完整性约束
数据结构: 关系模型中数据的逻辑结构是一张二维表 • 关系的操作: (1)查询操作:A选择 B连接 C除 D并 E交 F差 (2)更新操作:A增加 B删除 C修改
表达关系操作的关系数据语言 • ① 关系代数 关系代数是用对关系的运算来表达查询要求的方式。 • ② 关系演算 关系演算是用谓词来表达查询要求的方式。 • ③ 介于关系代数和关系演算之间的语言SQL(Structured Query Language)
完整性约束:(定义P37) • (1)实体完整性 • (2)参照完整性 • (3)用户定义的完整性
§ 2.1.2笛卡尔积 设D1, D2,…,Dn为域,则 D1×D2×…×Dn={(d1,d2,…,dn)|di∈Di,i=1, …,n}为D1, D2,…,Dn的笛卡尔积。 其中每个元素(d1,d2, …,dn)称为一个n元组(n-Tuple),简称 元组(Tuple),元素中每个di称为分量(Component),diDi。 若Di的基数为mi,笛卡尔积的基数M为笛卡尔积可以表示为一个 二维表,是元组的集合。
§ 2.1.3关系的定义 • 笛卡尔积D1D2 …Dn的任一子集称为在域D1, D2, …,Dn上的关系,表示为R(D1, D2, …, Dn ) • 这里R表示关系的名字,n是关系的目或度(Degree)。 • 关系是笛卡尔积的有限子集,所以关系也是一个二维表。表中的每一行对应一个元组,表中的每一列对应一个域。由于域可以相同,为了加以区别,必须对每列取一个名字,称为属性。关系中属性的个数称为元数,元组中的一个属性值称为分量。
形式化的关系定义同样可以把关系看成二维表, 给表的每一列取一个名字,称为属性(attribute)。n 目元关系有 n 个属性, 属性的名字要唯一。属性的取值范围Di(i=1, …,n) 称为值域(Domain)。在实际应用的数据库中,通常关系称为数据表,属性被称为字段,元组被称为记录。
§ 2.1.4关系的性质 • 同一属性的数据具有同质性 • 同一关系的属性名具有不能重复性 • 关系中的列位置具有顺序无关性 • 关系具有元组无冗余性 • 关系中的元组位置具有顺序无关性 • 关系中每一个分量都必须是不可分的数据项
关系性质2——不同的属性名 姓名2 曾用名
重复的 元组 重复的 元组! 关系性质4——元组不重复
关系性质6——分量是原子 规范化关系 非规范化关系
§ 2.2.1侯选码(键)与主码(键) • 能唯一标识关系中元组的一个属性或属性集,称为候选码 (Candidate key),也称候选关键字。 • 如“学生关系”中的学号能唯一标识每一个学生,则属性“学号”是学生关系的候选码。在“选课关系” 中,只有属性的组合“学号+ 课程号”才能唯一地区分每一条选课记录,则属性集“学号+ 课程号”是选课关系的候选码。
§ 2.2.2外部关系码(键) 设F 是基本关系R 的一个或一组属性, 但不是关系R 的主码( 或候选码) 。如果 F 与基本关系 S 的主码 Ks 相对应, 则称 F 是基本关系 R 的外部关系码,也简称外码 (Foreign key), 并称基本关系R为参照关系 (Referencing Relation), 基本关系 S 为被参照关系 (Referenced Relation) 或目标关系(Target Relation)。
外部关系码(键) 学生关系 课程关系 学习成绩关系 外部键 主键 主键 外部键
参照完整性 职工表(R2) 部门表(R1) 外部关系键 主关系键
§ 2.2.3关系模型的完整性 关系模型的实体完整性(Entity Integrity) 若属性A是基本关系R的主属性,则属性A的值不能为空值。 (1)实体完整性能够保证实体的唯一性 (2)实体完整性能够保证实体的可区分性 例如在学生表中,由于“学号”属性是码,则“学号”值不能为空 值,学生的其他属性可以是空值,如“年龄”值或“性别”值如果 为空,则表明不清楚该学生的这些特征值。
参照完整性 • 关系模型的参照完整性(Referential Integrity): 若属性( 或属性组)F 是基本关系R 的外码,它与基本关系S 的主码Ks 相对应( 基本关系R 和S 不一定是不同的关系), 则对于R 中每个元组在F上的值必须取空值(F的每个属性值均为空值) 或者等于S 中某个元组的主码值。
例如,对于上述教师表中"教师号"属性只能取下面两类值:空值,表示尚未给该教师分配系别:非空值,该值必须是系别关系中某个元组的"系编号"值。一个教师不可能分配到一个不存在的系中,即被参照关系"教师"中一定存在一个元组,它的主码值等于该参照关系"教师"中的外码值。例如,对于上述教师表中"教师号"属性只能取下面两类值:空值,表示尚未给该教师分配系别:非空值,该值必须是系别关系中某个元组的"系编号"值。一个教师不可能分配到一个不存在的系中,即被参照关系"教师"中一定存在一个元组,它的主码值等于该参照关系"教师"中的外码值。
用户定义的完整性 用户定义的完整性就是针对某一具体关系数据库的约束条件, 它反映某一具体应用所涉及的数据必须满足的语义要求。 例如,学生考试的成绩必须在O到100 之间,在职职工的年龄不能大于60岁等,都是针对具体关系提出的完整性条件。
2.3.1关系数据库模式与关系数据库 一个关系的属性名的集合 R(Al,A2, …,An) 叫做关系模式,一般可简化为 R(U)或R(A1,A2, …,An) 其中 R 为关系名,A1,A2, …,An 为属性名 (i=1,2, …,n) 。 关系模式可形式化地表示为 R(U,D,dom,F)
其中U 为组成关系的属性名的集合,D 为属性组U 中属性所来自的域,dom 为属性和域之间的映像集合,F 为关系中属性间的依赖关系集合。在书写过程中, 一般用下划线表示出关系中的主码。
由定义可以看出,关系模式是关系的框架( 或者称为表框架), 是对关系结构的描述。它指出了关系由哪些属性构成。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,它是关系模式在某一时刻的状态或内容,这主要是由于关系的各种操作在不断地更新着数据库中的数据。
§ 2.3.2关系数据库 • 关系数据库 • 在给定的应用领域中,相应所有实体及 实体之间联系所形成关系的集合 • 关系数据库模式 • 关系数据库中所有关系模式的集合 • 关系数据库的值 • 关系数据库在某一时刻对应关系的集合
某关系的结构 整个数据库 某关系的实例 关系数据库模式
2.4.1关系代数的分类及其运算符 关系代数的运算由运算对象、运算符和运算结果三大要素组成。 运算对象为关系,运算结果亦为关系,运算符包括四类:集合运算符、专门的关系运算符、比较运算符和逻辑运算符。
(1) 集合运算符 : ∪ ( 并运算 ), 一 ( 差运算 ),∩( 交运算 ), × ( 广义笛卡尔积 ) • (2) 专门的关系运算符: σ ( 选择 ), π( 投影 ), ⋈ ( 连接 ), ÷ ( 除 ) • (3) 比较运算符 : > (大于), ≥ (大于等于),<(小于),≤ (小于等于),=(等于),≠ (不等于) • (4) 逻辑运算符: ¬( 非), ∧ ( 与), ∨ ( 或)
比较运算符和逻辑运算符主要用来辅助专门的关系运算。关系代数一般可分为传统的集合运算和专门的集合运算两类操作。传统的集合运算将关系看成元组的结合,其运算是从关系的 "水平" 方向 ( 即行的角度 ) 来进行,而专门的关系运算不仅涉及行,而且还涉及列。
§ 2.4.2传统的集合运算 传统的集合运算是二目运算,它包括并、差、交、广义笛卡尔积四种运算。 设关系R 和S 具有相同的目n( 即两个关系都有n 个属性), 并且相应的属性取自同一个域, 则定义并、差、交、广义笛卡尔积运算如下:
并(Union)运算 关系 R 与关系 S 的并运算表示为 : R∪S={t|t∈R V t∈S } 上式说明,R 和S 并的结果仍为n 目关系, 其数据由属于R 或属于S 的元组组成。运算结果 也可用图 2.1所示的阴影部分表示。 图2.1 集合R和S并运算结果示意图 R∪S
差(Differrence)运算 关系R 与关系S 的差运算表示为: R-S={t|t∈R∧¬t∈S } 上式说明:R 和S 差运算的结果关系仍为n 目关系,其数据由属于R 而不属于S 的所有元 组组成。运算结果也可用图2.2 所示的阴影部分 表示。 图2.2 集合R和S差运算结果示意图 R - S
交(Intersection)运算 关系R 与关系S 的交运算表示为: R∩S={t|t∈R∧t∈S } 关系的交也可以用差来表示,即: R∩S=R一(R-S) 上式说明:R 和S 交运算的结果关系仍为n 目关系,其数据由既属于R 同时又属于S的元组 组成。运算结果也可用图2.3 所示的阴影部分表示。 图2.3 集合R和S的交运算结果示意图 R∩S
关系并运算 R S R∪S
关系差运算 R S R-S
关系交运算 R S R∩S
广义笛卡尔积 设两个分别为n 目和m 目的关系R 和S,它们的广义笛卡尔积是一个(n + m)目的元组集合。 元组的前n 列是关系R 的一个元组,后m 列是关系S 的一个元组。若R 有 Kl 个 元组,S 有 K2 个元组,则关系R和关系S 的广义笛卡尔积应当有 Kl × K2 个元组。R 和S的 广义笛卡尔积表示为: R×S={t1,t2|t1∈R∧t2∈S }
广义笛卡儿积 R×S R S
§ 2.4.3专门的关系运算 1. 选择 (Selection) 运算 选择又称为限制,它是在关系 R 中选择满足条件的 元组,记作: σF(R)={t|t∈R∧F(t)='真'} 其中 F 表示选择条件,它是一个逻辑表达式,取逻辑 值“真”或“假”。
选取运算 关系S,作选择运算σA=d(S),其结果如下所示: S σA=d(S) 选择条件F(t)为A=d
2.投影 (Projection) 运算 关系 R 上的投影是从 R 中选择出若干属性列组成新的关系。记作 πA (R)={t[A]| t∈R} 其中 A 为 R 中的属性列集。