220 likes | 412 Views
第 2 章 关系数据库基本理论. 本章要点: 关系与模式、关系数据库与关系数据库模式、视图等的概念 关系的数学定义 关系的三类完整性约束 关系代数,包括传统的集合运算和专门的关系运算 范式的概念与关系的规范化. 2.1 关系数据库的基本概念. 2.1.1 关系与关系模式 在关系模型中,实体和实体之间的联系都由单一的数据结构 —— 关系来描述,关系型数据库都是由一张或多张相关联的表(关系)组成。对关系数据库中每一关系的结构的描述,称为该关系的关系模式,也就是一个关系的型。 2.1.2 关系数据库与关系数据库模式
E N D
第2章关系数据库基本理论 • 本章要点: • 关系与模式、关系数据库与关系数据库模式、视图等的概念 • 关系的数学定义 • 关系的三类完整性约束 • 关系代数,包括传统的集合运算和专门的关系运算 • 范式的概念与关系的规范化
2.1 关系数据库的基本概念 • 2.1.1关系与关系模式 在关系模型中,实体和实体之间的联系都由单一的数据结构——关系来描述,关系型数据库都是由一张或多张相关联的表(关系)组成。对关系数据库中每一关系的结构的描述,称为该关系的关系模式,也就是一个关系的型。 • 2.1.2 关系数据库与关系数据库模式 关系数据库模式中所有的关系模式的具体关系的集合称之为关系数据库。图示 • 2.1.3 视图 视图通常是由关系数据库模式的某个关系中满足用户给定条件的若干属性列或元组组成,也可以是对若干个不同关系进行关系运算的结果,它反映的是局部逻辑结构。
教师编号 课号 课名 姓名 性别 班级 学位 工作日期 学时 单位 教师编号 职称 00001 0001 C语言程序 王宁军 男 97计算机 学士 94/07/15 40 计算机 0001 讲师 00003 1006 汇编语言 陈平 男 97计算机 硕士 72/09/01 70 力学 0001 副教授 10002 2008 工程力学 周华俊 女 96工民建 硕士 95/08/01 80 电子电工 1006 讲师 10006 基础力学 98建工 80 1006 20004 模拟电路 97无线电通信 70 2008 授课信息表 教师信息表
视图3 视图2 视图1 基表1 基表2 基表3 基表4 视图与表的关系示意图 • 2.1.4 关键字 1.超关键字 2.候选关键字 3.主关键字 4.外部关键字 5.主属性和非主属性
2.2 关系的完整性 • 关系的完整性包括三类: (1)实体完整性 实体完整性是指在关系中的任何一个元组,主关键字值的任一分量都不允许为空。 (2)参照完整性 外键字段要么为空,要么为另一个表中的主键值 (3)用户定义完整性 由用户针对数据的具体语义约束条件,来定义的完整性,称用户自定义完整性。如人的年龄可以规定在0~150之间取值,考试成绩只能在0~100之间等。
2.3 关系的数学定义 • 2.3.1 一个日常生活中的关系 某小区有2名男同志和3名女同志,把男人看成一个集合M,把女人看成一个集合W,如下:M={赵和平, 李振华};W={李小丽, 张小琴, 王丽娅}。 若M集合和W集合存在着夫妻关系,则可能的夫妻关系如下:{(赵和平,李小丽),(赵和平,张小琴),(赵和平,王丽娅),(李振华,李小丽),(李振华, 张小琴),(李振华,王丽娅)} 在数学上把这种由两个或多个集合中的值的所有可能组合称“笛卡尔积”,本题的“笛卡尔积”可记为:M×W。
2.3.2 关系的数学定义 • 1.域 域(Domain)是值的集合。如:{1到100之间的整数},{男,女},{Mary,Tom}等都是域。域中元素的个数称为域的基数,如有下列集合: D1={王小平, 张亚, 李军},表示单位人员的集合; D2={教授,副教授,讲师,助教},表示职称的集合; D3={35,27,18},表示工龄的集合。 其中D1的基数是3,D2的基数是4,D3的基数是3。
2.笛卡尔积 给定一组域 , ,…, ,这些域中可以有相同的域,则 , ,…, 的笛卡尔积为: × ×…× ={( , ,…, )| ∈ ,i=1,2,…,n} 其中每一个元素( , ,…, )称为一个元组,元素中的每一个 称为分量。当n的值为1时称为单元组,当n的值为2时,称为二元组,以此类推。 若 (i=1,2,…,n)的基数是mi,则笛卡尔积 × ×…× 的基数M为:
D1 D1 D2 D2 D3 D3 张正义 张正义 男 男 21 21 张正义 姚小丽 男 女 24 24 张正义 女 21 张正义 女 24 姚小丽 男 21 姚小丽 男 24 姚小丽 女 21 姚小丽 女 24 • 3.关系 笛卡尔积的子集称为关系,记作 R(D1 ,D2, D3,...,Dn) 【例】教师关系例。有以下三个域:D1={张正义,姚小丽},教师姓名集合; D2={男,女},教师性别集合; D3={21,24},教师年龄集合。求D1× D2 × D3。 解:笛卡尔D1× D2 × D3的值可用左表表示:实际的教师信息可能如右表
2.4 关系代数 • 2.4.1 传统的集合运算 1.并运算(UNION)例2-2 2.交运算(INTERSECTION) 例2-3 3.差运算(DIFFERENCE) 例2-4 4.关系的笛卡尔积 例2-5
2.4 关系代数 • 2.4.2 专门的关系运算 1.选择(SELECT)运算 例2-6 2.投影(PROJECTION)运算 例2-7 3.联接运算(JOIN) JOIN R1 and R2 where F 例2-8 (1)内部联接(Inner Join) 例2-9 (2)自然联接运算(Natural join) 例2-10 (3)左外联接(Left outer join) 例2-11 (4)右外联接(Right outer join) 例2-12 (5)全外联接(Full outer join) 例2-13
2.5 关系的规范化 • 2.5.1 存储异常 【例】某校教务部要建立一个数据库来描述教师与教研室的情况,面临的对象有:教师编号(TNO)、教师姓名(TNAME)、教师主讲的课程名(KNAME)、教师主讲课程的次数(KTIME)、教研室代号(JNO)、教研室主任(JMN)等。 通过分析可知上述对象之间有如下对应关系: (1)一个教研室有若干教师,但一个教师只属于一个教研室; (2)一个教研室只有一个主任; (3)一名教师可以主讲多门课程,每门课程可由多名教师主讲; (4)每名教师主讲每门课程有一定的次数。 根据上述分析,我们可以考虑以下两种数据库模式的选择方案。方案1:采用一个总的关系模式:方案2:采用三个关系模式:
2.5.2 函数依赖的基本概念 • 1.函数依赖 函数依赖根据其性质可分为完全函数依赖、部分函数依赖和传递函数依赖。 • 2.完全函数依赖 设R为任一给定关系,X,Y为其属性或属性组,若XY,且对X中的任何真子集X都有 X Y,则称Y完全函数依赖于X。记作: • 3.部分函数依赖 设R为任一给定关系,X,Y为其属性或属性组,若XY,且在X中存在一个真子集X,满足 XY,则称Y部分函数依赖于X。记作:
4.传递函数依赖 设R为任一给定关系,X,Y,Z为其不同属性子集,若XY,Y X,YZ,则称Z传递函数依赖于X,
教师编号 教师编号 所教课程 所教课程 0001 0001 程序设计 程序设计 0002 0002 程序设计,操作系统 程序设计 0002 操作系统 2.5.3 关系规范化的过程 • 1.第一范式 任给关系R,如果R中每一属性的值域中的每一个值都是不可分解的,则R为第一范式,记作R∈1NF。 非规范化关系 规范化的关系
2.第二范式 任给关系R,若R∈1NF,且其所有非主属性都完全函数依赖于关键字,则R为第二范式,记作R∈2NF 。 • 3.第三范式 任给关系R,若R∈2NF,且它的每一个非主属性都不传递依赖于主关键字,则R属性第三范式,记作R∈3NF。 • 4.BCNF范式 BCNF(Boyce Codd Normal Form)是Boyce与Codd为解决3NF有时出现的插入与删除操作异常问题而提出的
非规范化关系 把组合属性分解为不可再分的属性 使每一个决定因素都包含候选码 1NF 消去非主属性对主关键字的部分函数依赖 2NF 消去非主属性对主关键字的传递函数依赖 3NF 消去所有部分函数依赖,包括主属性对候选关键字的部分函数依赖 BCNF 2.5.4 关系分解的正确性 关系分解的过程
S# DEPT MN S1 D1 张五 S2 D1 张五 S3 D2 李四 S4 D3 王一 通过一个实例来说明关系分解的正确性。 • 在某学校中,一个学生(学号属性名为S#)只在一个系(系号属性名为DEPT)学习,一个系只有一名系主任(姓名属性名为MN),下表是该学校的一个实际关系,其关系模式为R(S#,DEPT,MN)。 • 可见在该关系中,MN传递函数依赖于S#,故需对之进行关系分解。可有三种方法:
S# DEPT MN D1 S1 张五 李四 D2 S2 S3 王一 D3 S4 1.分解成三个关系:R1(S#),R2(DEPT),R3(MN) 关系R2 关系R1 关系R3
S# S# DEPT MN S1 S1 D1 张五 S2 S1 D1 张五 S3 S2 D2 李四 S4 S3 D3 王三 2.分解成两个关系:R1(S#,DEPT),R2(S#,MN) 关系R2 关系R1
S# DEPT DEPT MN S1 S1 D1 张五 S2 S2 D1 李四 S3 S3 D2 王三 S4 D3 3.分解成两个关系:R1(S#,DEPT)和R2(DEPT,MN) 关系R1 关系R2
小结 • 本课主要讲解关系数据库的理论基础,为进一步深入学习关系数据库的原理与应用打下基础。本课在讨论关系数据库的基本概念的基础上,探讨了关系的数字定义、关系的完整性、关系代数的一些基本操作、函数依赖与关系的规范化等学习关系数据库必须要了解的理论基础。关系代数与关系的规范化是本章的重点。