1.94k likes | 2.05k Views
河北化工医药职业技术学院. 数据库原理及应用教案. 第 2 章 关系数据库. 2.1 关系数据库与关系模型 2.2 关系的形式定义 2.3 关系运算代数 2.4 查询优化 2.5 关系数据库的规范化理论. 2.1 关系数据库与关系模型. 2.1.1 基本概念 1 .关系数据库系统 关系数据库系统是支持关系数据模型的数据库系统。关系数据库应用数学方法来处理数据库中的数据。 关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。
E N D
河北化工医药职业技术学院 数据库原理及应用教案
第2章 关系数据库 • 2.1 关系数据库与关系模型 • 2.2 关系的形式定义 • 2.3 关系运算代数 • 2.4 查询优化 • 2.5 关系数据库的规范化理论
2.1关系数据库与关系模型 2.1.1 基本概念 • 1.关系数据库系统 • 关系数据库系统是支持关系数据模型的数据库系统。关系数据库应用数学方法来处理数据库中的数据。 • 关系模型由关系数据结构、关系操作集合和关系完整性约束三部分组成。 • 关系数据库管理系统RDBMS如著名的IBM DB2,Oracle,Ingres,SYBASE,Informix等。
2.关系的相关名词 • 域:域是一组具有相同数据类型的值的集合。 • 一般在关系数据模型中,对域还加了一个限制,所有的域都应是原子数据(atomic data)。 • 目或度(Degree):设有关系R(D1,D2,…Dn ),这里的R表示关系的名字,n是关系的目或度。 • 属性:在现实世界中,要描述一个事物常常取若干特征来表示。这些特征称为属性(attribute)。n目关系必有n个属性。
2.关系的相关名词 • 候选码(Candidate Key): 若关系中的某一属性或属性组的值能唯一的标识一个元组,则称该属性或属性组为候选码。 • 主码(Primary Key): 若一个关系有多个候选码,则选定其中一个为主码。 • 主属性(Non-Key attribute):主码的诸属性称为主属性。不包含在任何候选码中的属性称为非码属性。据(Data)是数据库中存储的基本对象
2.关系的相关名词 • 外码(Foreign key):如果关系模式 R中的属性或属性组非该关系的码,但它是其它关系的码,那么该属性集对关系模式 R而言是外码。 • 例如,客户与贷款之间的借贷联系c-l(c-id,loan- no),属性 c-id 是客户关系中的码,所以c-id是外码;属性loan-no是贷款关系中的码,所以loan-no也是外码。
2.关系的相关名词 • 全码(All-key):关系模型的所有属性组是这个关系模式的候选码,称为全码。 • 例如,关系模式R(T,C,S),属性T表示教师,属性 C表示课程,属性 S表示学生。假设一个教师可以讲授多门课程,某门课程可以由多个教师讲授,学生可以听不同教师讲授的不同课程,那么,要想区分关系中的每一个元组,这个关系模式R的码应为全属性T、C和S,即All-key。
3.关系的三种类型 • 基本关系(通常又称为基本表或基表):是实际存在的表,它是实际存储数据的逻辑表示。 • 查询表:查询结果对应的表。 • 视图表:是由基本表或其它视图表导出的表。由于它本身不独立存储在数据库中,数据库中只存放它的定义,所以常称为虚表。
2.1.2 关系模型 • 1.关系模型的三要素 关系数据模型由关系数据结构、关系操作集合和关系完整性约束三大要素组成。 • (1)关系数据结构 • 关系模型的数据结构单一,在关系模型中,现实世界的实体以及实体间的各种联系均用关系来表示,在用户看来,关系模型中数据的逻辑结构是一张二维表。
1.关系模型的三要素 • (2)关系操作集合 • 关系操作的特点是集合操作方式,即操作的对象和结果都是集合。这种操作方式也称为一次一个集合的方式。相应地,非关系数据模型的数据操作方式则为一次一个记录的方式。 • 关系模型中常用的关系操作包括:选择(select)、投影(Project)、连接(join)、除(divide)、并(union)、交(intersection)、差(differencc)等,以及查询(query)操作和增(insert)、删(delete)、改(update)操作两大部分。查询的表达能力是其中最主要的部分。
(2)关系操作集合 • 关系操作能力可用两种方式来表示:代数方式和逻辑方式。 • 关系代数是用对关系的运算来表达查询要求的方式。 • 关系演算是用谓词来表达查询要求的方式。关系演算又可按谓词变元的基本对象是元组变量还是域变量分为元组关系演算和域关系演算。对于关系代数、元组关系演算和域关系演算均是抽象的查询语言,在表达能力上是完全等价的。
1.关系模型的三要素 • (3)关系的完整性约束 • 数据库的数据完整性是指数据库中数据的正确性和相容性,是一种语义概念,包括两个方面: • 与现实世界中应用需求的数据的相容性和正确性。 • 数据库内数据之间的相容性和正确性。 • 例如,学生的学号必须惟一,性别只能是男或女,学生所选修的课程必须是已开设的课程,等等。 • 数据库中数据是否具备完整性关系到数据库系统能否真实地反映现实世界,因此,数据库的完整性是十分重要的。
(3)关系的完整性约束 • 数据完整性由完整性规则来定义,关系模型的完整性规则是对关系的某种约束条件。关系模型中可以有3类完整性约束:实体完整性、参照完整性和用户定义的完整性。 • 实体完整性和参照完整性是关系模型必须满足的完整性约束条件,应该由关系系统自动支持。 • 用户定义完整性是应用领域需要遵循的约束条件,体现了具体领域中的语义约束,一般由关系系统提供编写手段、 由 DBMS的完整性检查机制负责检查。
2.关系模式 • 定义2.1 关系的描述称为关系模式。可以形式化的表示为 R(U,D,dom,F) • 其中,R表示关系名;U是组成该关系的属性名集合;D是属性的域;dom是属性向域的映象集合;F为属性间数据的依赖关系集合。
2.关系模式 • 通常将关系模式简记为: R(U)或R(A1,A2,A3,…,An) • 其中 R为关系名,A1,A2,A3,…,An为属性名或域名,属性的向域的映象常常直接说明属性的类型、长度。通常在关系模式主属性上加下划线表示该属性为主码属性。
举例 • 【例2.1】学生关系 S有学号Sno、学生姓名Same、性别Sex、系名SD、年龄Age属性;课程关系 C有课程号Cno、课程名Cname、先修课程号PCno属性;学生选课关系SC有学号Sno、课程号 Cno、成绩Grade属性。写出这三个关系模式。
举例 • 解: • (1)学生关系模式S(Sno,Sname,Sex,SD,Age) • (2)课程关系模式C(Cno,Cname,PCno) Dom(PCno)=Cno。 • (3)学生选课关系模式SC(Sno,Cno,Grade)。SC关系中的Sno、Cno又分别为外码。因为它们分别是S、C关系中的主码。
2.1.3关系的三类完整性规则 • 关系模型的完整性规则是对关系的某种约束条件。关系的完整性共分为三类: • 实体完整性 • 参照完整性(也称引用完整性) • 用户定义完整性。
1.实体的完整性(Entity Integrity) • 【规则2.1】若属性A是关系R的主属性,则属性A不能取空值。 • 例如:关系学生(学号,姓名,性别,专业号,年龄)中,主码为 “学号”,则“学号”不能取空值。在关系选修(学号,课程号,成绩)中,“学号、课程号”为主码,则“学号”和“课程号”两个属性都不能取空值。
2.参照的完整性(Referential Integrity) • 在关系模型中实体及实体间的联系是用关系来描述的,这样自然就存在着关系与关系间的引用。 • 例如,员工和部门关系模式表示如下 : • 员工(员工号,姓名,性别,参加工作时间,部门号) • 部门(部门号,名称,电话,负责人) • 这两个关系存在着属性的引用,即员工关系中的“部门号”值必须是确实存在的部门的部门号,即部门关系中有该部门的记录。也就是说,员工关系中的“部门号”属性取值要参照部门关系的“部门号”属性取值。
2.参照的完整性(Referential Integrity) • 【规则2.2】若F是基本关系 R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系)则对于 R中每个元组在F上的值必须为: • (1)或者取空值(F的每个属性值均为空值) • (2)或者等于S中某个元组的主码值。
3.用户定义的完整性(User defined Integrity) • 实体完整性规则定义了对关系中主属性取值的约束,即对主属性的值域的约束; • 参照完整性规则定义了参照关系和被参照关系的外码与主码之间的参照约束,即对参照关系的外码属性值域的约束,规定外码属性的值域只能是空值或是相应被参照关系主码属性的值。 • 用户定义的完整性就是针对某—具体应用要求来定义的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。
3.用户定义的完整性(User defined Integrity) • 例如,某个属性必须取惟一值,某些属性值之间应满足一定的函数关系,某个属性的取值范围在0~100 之间等。用户定义的完整性通常是定义对关系中除主码与外码属性之外的其他属性取值的约束,即对其他属性的值域的约束。 • 对属性值域的约束也称为域完整性约束,是指对关系中属性取值的正确性限制,包括数据类型、精度、取值范围、是否允许空值等。
2.2关系的形式定义 2.2.1 关系的形式定义 • 1.笛卡尔积数据的定义 • 定义2.2 设 为任意集合,定义 的笛卡儿积为:
2.2关系的形式定义 • 其中每一个元素 叫做一个 n 元组(n-tuple属性的个数),元组的每一个值 叫做元组的一个分量,若 为有限集,其基数(Cardinal number元组的个数)为 ,则 的基数为: 。笛卡儿积可以用二维表来表示。
举例 【例2.2】若 求: • 解:根据定义,笛卡尔积中的每一个元素应该是一个三元组,每个分量来自不同的域,因此结果为: • 用二维表表示如图2-1所示。
2.关系 • 定义2.3的子集叫做在域 上的关系,记为 ,称关系R为n元关系。 • 从定义2.3可以得出一个关系也可以用二维表来表示。关系中属性的个数称为“元组”,元组的个数称为“基数” 。关系模型中的术语与一般术语的对应情况可以通过图2-2中的学生关系说明。
2.2.2 关系模型的优点 • 1.关系的性质 • (1)列是同质的,即每一列中的分量均是同一类型的数据,即均来自同一个域。 • (2)不同的列可以出自同一个域,每一列称为一个属性;属性不能重名。 • (3)列的顺序是无关,即列的次序可以变换。但顺序一旦固定,就不再变化,不能导致冲突发生。 • (4)任意两个元组不能完全相同。 • (5)行的顺序是无关的,即行的次序可以交换。 • (6)每一分量必须是不可分的数据项。
2.关系模型的优点 • (1) 关系模型使关系数据库的研究具有坚实的理论基础,这一理论有助于关系数据库的设计和用户对数据库信息需求的有效处理。 • (2) 关系模型的逻辑结构与相应的操作完全独立于数据的存储方式,具有高度的数据独立性,使得用户不必关心物理存储细节。
2.关系模型的优点 • (3) 关系模型提供单一的数据结构形式,具有高度的简明性和精确性,用户很容易掌握和运用基于关系模型的数据库系统。 • (4) 关系数据库语言与一阶谓词逻辑的固有内在联系,使得以关系数据库为基础的推理系统和知识库系统的研究提供了良好的基础。
2.2.3 E-R模型向关系模型的转换 • 从 E-R模型向关系模型转换时,所有实体和联系都要转换成相应的关系模式,转换规则为: • (1) 每个实体类型转换成一个关系模式; • (2) 一个1:1的联系可转换为一个关系模式,或与任意一端的关系模式合并,若独立转换为一个关系模式,那么,两端关系的码及联系的属性为该关系的属性;若与一端合并,那么将另一端的码及联系的属性合并到该端。
2.2.3 E-R模型向关系模型的转换 • (3) 一个1:n的联系可转换为一个关系模式,或与 n端的关系模式合并。若独立转换为一个关系模式,那么,两端关系的码及联系的属性为关系的属性,而n端的码为关系的码。 • (4) 一个n:m的联系可转换为一个关系模式,那么,两端关系的码及联系的属性为关系的属性,而关系的码为两端实体的码的组合。
2.2.3 E-R模型向关系模型的转换 • (5) 三个或三个以上多对多的联系可转换为一个关系模式,那么,诸关系的码及联系的属性为关系的属性,而关系的码为各实体的码的组合。 • (6) 具有相同码的关系可以合并。
举例 【例2.3】将图2-3的E-R图转换成关系模式。 Cno Cname Grade Sname SD m Sno C Pcno SC n S Sage CLASS Tel CT n Sex 1 CLno CLname Date 图2-3 学生班级课程的E-R图
举例 • 从图中可以看出有3个实体:学生 S 、课程 C 、班级CLASS,根据转换规则转换成3个关系模式。联系CT是一个1:n类型,根据转换规则可将CLASS的码CLno,加上联系的属性Date并入n端。联系 SC是一个 n:m 类型,根据转换规则转换成一个独立的关系模式,所以将S的码Sno和C的码Cno,加上联系的属性 Grade作为关系 SC的属性,该关系的码是Sno和Cno 。
举例 • 根据上述分析转换的关系模式如下: • S(Sno,Sname,SD,Sage,Sex,CLno,Date) • C(Cno,Cname,Pcno) • CLASS(CLno,CLname,Tel)
2.3 关系运算 2.3.1关系代数的五种基本运算 • 关系代数运算符有四类: • 集合运算符 • 专门的关系运算符 • 算术比较符 • 逻辑运算符 • 根据运算符的不同,关系代数运算可分为 • 传统的集合运算 • 专门的关系运算
2.3 关系运算 • 传统的集合运算是从关系的水平方向进行的,包括:并、交、差及广义笛卡尔积。 • 专门的关系运算既可以从关系的水平方向进行运算,又可以向关系的垂直方向运算,包括:选择、投影、连接以及除法。如表 2-1所示。
1. 并(Union) • 关系R与S具有相同的关系模式,即 R与S的元数相同(结构相同)。关系 R与S并由属于R或属于S的元组构成的集合组成,记作 ,其形式定义如下: • 式中t 为元组变量。
2.差(Difference) • 关系R与S具有相同的关系模式,关系R与S的差由属于R但不属于S的元组构成的集合,记作 ,其形式定义如下:
3.广义笛卡尔积(Extended Cartesian Product) • 两个元数分别为n目和m目的关系R 和S 的广义笛卡尔积是一个(n+m) 列的元组的集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。记作 ,其形式定义如下: • 如果R和S中有相同的属性名,可在属性名前加关系名作为限定。若R 有K1个元组,S 有K2个元组。则R和S的广义笛卡尔积有个 元组。
4.投影(Projection) • 投影运算是从关系的垂直方向进行运算,在关系R中选择出若干属性列A组成新的关系,记作 ,其形式定义如下:
5.选择(Selection) • 选择运算是从关系的水平方向进行运算,是从关系R中选择满足给定条件的诸元组,记作 ,其形式定义如下: • 其中,F中的运算对象是属性名(或列的序号)或常数,运算符算术比较府(<,≤,>,≥,=,≠)和逻辑运算符( ∧,∨,)。
5.选择(Selection) • 例如, 表示选取R关系中第一个属性值大于等于第六个属性值的元组; 表示选取R关系中第一个属性值大于等于“6”的元组。
举例 【例2.4】设有关系R、S如图2-4所示,请求出:
举例 • 解: 结果如图2-5所示。其中, 后生成的关系属性名有重复,按照关系“属性不能重名”的性质,通常采用“关系名.属性名”的格式。对于 的含义是 后“选取第三个属性值小于第四个属性值”的元组。由于 的第三个属性为R.C,第四个属性是S.A,因此 的含义也是 后“选取R.C值小于S.A值”的元组。