攀枝花学院计算机学院第3章关系数据库(一)数据库原理攀枝花学院计算机学院教学内容:关系模型的概述,关系数据模型的数据组织方法,关系数据结构及形式化定义,关系的完整性,关系代数,关系数据库管理系统。教学要求:1、了解关系数据库管理系统的功能。2、理解关系数据模型的数据组织方法,理解关系、关系模式、关系数据库等概念。3、掌握关系的完整性和关系的性质,掌握关系运算。重点:关系数据模型的数据组织方法、关系模型的完整性、关系代数。难点:关系的完整性规则、关系代数。数据库原理攀枝花学院计算机学院主要内容:3.1关系模型与关系数据库3.2关系模型的基本术语及形式化定义3.3关系模型的完整性3.4关系代数3.5关系数据库管理系统3.6数据库管理系统的体系结构习题数据库原理攀枝花学院计算机学院数据模型语义数据模型结构数据模型实体—联系模型(E-R模型)关系数据模型层次数据模型网状数据模型数据库原理攀枝花学院计算机学院3.1.1关系模型概述一、关系模型的数据结构:只有单一的数据结构:关系(二维表)。现实世界中的实体和实体间的各种联系均以关系的形式来表示,并以二维表的形式排列数据。3.1关系模型与关系数据库数据库原理攀枝花学院计算机学院关系的操作以集合的方式进行,操作的对象是元组的集合,操作的结果也是元组的集合。传统的集合运算:并、交、差、广义的笛卡尔积。专门的关系运算:选择、投影、连接和除。有关的数据操作:查询、插入、删除、修改。二、关系操作:数据库原理攀枝花学院计算机学院代数方式:通过关系代数运算来表达查询要求的方式。逻辑方式:通过关系演算,用谓词表达关系的查询要求的方式。它又分为元组关系演算和域关系演算两种。SQL语言:关系数据库的标准语言。是非过程化的集合操作语言;可以交互使式用也可以嵌入式使用。非过程化指:①用户不关心数据的存取路径和存取过程。②不必要编写循环等程序来完成对操作结果集合中多个数据的重复操作。关系操作能力的表示:数据库原理攀枝花学院计算机学院3.2关系模型的基本术语及形式化定义员工编号姓名年龄性别部门号430425王天喜25男Deno1430430莫玉27女Deno2430211肖剑峰33男Deno3430121杨琼英23女Deno2430248赵继平41男Deno3一、关系模型的基本术语关系一个关系对应一张二维表。元组表中的一行属性图中的一列关系模式对关系的描述,即二维表的表结构,表示为R(U,F)或R(U)数据库原理攀枝花学院计算机学院值域(domain):属性的取值范围。也可以说域是一组具有相同数据类型的值的集合。整数、字符串、{男,女}等都可以是域。分量:元组中的一个属性值。例如:’20040005’候选关键字(候选码):表中可以惟一确定一个元组的属性或属性组。主关键字(主码):从多个候选码中选出一个,用于区分记录,所选出的候选码称为主码。数据库原理攀枝花学院计算机学院主属性:包含在任一个候选关键字中的属性。非主属性:不包含在任一个候选关键字中的属性。外部关键字:如果一个属性集不是所在关系的关键字,但是其它关系的关键字,称该属性集为外部关键字也称为外码或外键。关系模型:所有的关系模式、属性名和关键字的汇集,是关系模式描述的对象。关系数据库:在一个给定的应用领域中,所有实体和实体之间联系组成的关系模式集合构成对一个关系数据库的描述。数据库原理攀枝花学院计算机学院例如:系(系名称、系主任、系秘书)R为系,U为(系名称、系主任、系秘书),三个属性来自两个不同的域:系名称和人,由于系主任属性和系秘书属性出自同一个域‘人’,要取不同的属性名。某一时刻对应某个关系模式的内容(元组的集合)称作关系。关系模式是型,是稳定的。关系是某一时刻的值,是随时间不断变化的。数据库原理攀枝花学院计算机学院把关系称作二维表,这是对关系的直观描述,由于关系的概念是源于数学,下面从数学的角度给出关系的形式化定义。(1)笛卡尔积定义:设Dl,D2,…,Dn为任意集合,定义Dl,D2,…,Dn的笛卡尔积为:Dl×D2×…×Dn={(d1,d2,…dn)|di∈Dj,j=1,2,…n其中每一个元素(d1,d2,…,dn)叫作一个n元组,元素中的每一个值di叫作一个分量。二、关系的形式定义数据库原理攀枝花学院计算机学院例如:D1={p2,p4}D2={显示卡,声卡,解压卡}D1×D2={(p2,显示卡),(p2,声卡),(p2,解压卡),(p4,显示卡),(p4,声卡),(p4,解压卡)}它实际上是一个如下图的二维表p2p4×显示卡声卡解压卡=D1D2D1D2p2p2p2p4p4p4显示卡声卡解压卡显示卡声卡解压卡数据库原理攀枝花学院计算机学院关系(Relation)的形式化定义:D1×D2×…×Dn笛卡尔积的子集叫做在域D1,D2,…,Dn上的关系(Relation)。用R(D1,D2,…,Dn)表示。即:关系是在一组域(D1,D2,…,Dn)上的笛卡尔积的一个子集。n是关系的元;n=2时称为二元关系。关系是一个二维表,表的每一行对应一个元组,表的每列对应一个属性。n元关系有n个属性,属性的名字要维一。属性的取值范围称值域。数据库原理攀枝花学院计算机学院三个域的笛卡尔积示例例如,有三个域:学号、姓名和性别。其取值为:学号(200401,200402)姓名(王大,李二)性别(男,女)。笛卡尔积:学号×姓名×性别如下表:(200401,王大,男),(200401,王大,女),(200401,李二,男),(200401,李二,女),(200402,王大,男),(200402,王大,女),(200402,李二,男),(200402,李二,女)数据库原理攀枝花学院计算机学院上例笛卡尔积的8个元素中,取2个元素的子集构成一个学生关系:学生(学号,姓名,性别)。形成的关系如下:学号姓名性别200401王大男200402李二女关系是笛卡尔积中有一定意义的、有限的子集。注意:由于笛卡儿积不满足交换率,即:(d1,d2,…,dn)≠(d2,d1,…,dn)。当关系作为关系数据模型的数据结构时,需给予限定和扩充。数据库原理攀枝花学院计算机学院关系的性质(对关系的限定)(1)每一列中的分量是同一数据类型,来自同一个域(同质)。(2)不同的列名可以出自相同的一个域,但不同的属性必须有不同的属性名。(3)列的次序可以任意交换。(4)元组的顺序可以任意交换。(5)任意两个元组不能完全相同。(6)分量必须取原子值,即每一分量都是不可再分的数据项。数据库原理攀枝花学院计算机学院关系可以有三种类型:(1)基本表:实际存在的表,它是实际储存数据的逻辑表示。(2)查询表:查询结果相对应的表。(3)视图表:由基本表和其它视图导出的表,是虚表,不对应实际存储的数据。数据库原理攀枝花学院计算机学院1、数据完整性包含两方面的内容:A、与现实世界中应用需求的数据的相容性和正确性B、数据库内数据之间相容性和正确性2、数据完整性由完整性规则来定义一般将数据完整性分为:实体完整、参照完整性用户定义完整性、域完整性。三、关系完整性约束数据库原理攀枝花学院计算机学院例,要建立一个图书管理系统,该系统中有借阅者信息、图书信息、借书信息等。如何保证以下的数据之间的关系?(1)要求借书信息中的借书证号必须来源于借阅者的借书证号。(2)借书日期必须小于还书日期且小于等于借书日期+3个月。(3)借阅者的借阅证号必须惟一。3.3关系模型的完整性数据库原理攀枝花学院计算机学院当使用数据库中数据时,数据库管理系统提供了尽量保证数据库系统中的数据能真实反映现实世界的实际情况以及数据库中数据的正确性的功能,这就是关系的完整性约束规则。完整性规则:对关系的某种约束条件,以保主关系中数据的正确性。关系数据库管理系统提供了四种完整性约束规则。数据库原理攀枝花学院计算机学院3.3.1实体完整性定义:如果属性A是关系R的主属性,则属性A不能取空值。或:关系中的主关键字不能有重复值,也不能取空值。①是针对关系而言的,且只针对基本关系。因为基本关系所对应的实体集中每个实体是可区分的。②是关系模型必须满足的完整性约束条件。例:学生表的学号不能为空,也不能有重复值。数据库原理攀枝花学院计算机学院3.3.2域完整性域完整性:列的值域的完整性,如数据类型、格式、值域范围、是否允许空值等。目前这些功能大多都可以在面向对象编程语言中得以实现。域完整性限制了某些属性中出现的值,把属性限制在一个有限的集合中。例如,如果属性是整数类型时不能输入101.5,或任何非整数。又如限制人的性别只能取“男”和“女”两个值等。数据库原理攀枝花学院计算机学院3.3.3引用(参照)完整性参照关系和被参照关系的定义:设有关系R有属性或属性集F,且F不是R的关键字,设关系S有属性或属性组K,且K为S的主关键字。如果F与K相对应,则称F是R外部关键字,R是参照关系、S是被参照关系。参照完整性规则:若F是R的外码,与S的主码K相对应(R和S可以是同一关系),如果R中每个元组在F上的值为:◆或者取空值(F的每个属性值均为空值);◆或者等于S中某个元组的主码值。称R和S满足参照完整性规则。数据库原理攀枝花学院计算机学院图3-5综合了三种关系数据的完整性。域完整性(列)实体完整性(行)引用完整性(表间)例:学号是学生表的主码、成绩表的外码。数据库原理攀枝花学院计算机学院3.3.4用户定义完整性定义:为了满足用户语意的需要而提出的、用户自己定义的完整性约束。关系数据库系统往往需要根据应用环境的不同,针对某一具体应用领域,定义一些特殊的约束条件,反应某一具体应用中的数据必须满足的语义要求。例如,学生的成绩必须取值在0到100分之间。数据库原理攀枝花学院计算机学院例如,要建立一个图书管理系统,该系统中有借阅者信息、图书信息、借书信息等。(1)要求借书信息中的借书证号必须来源于借阅者的借书证号:(2)借书日期必须大于还书日期且小于等于借书日期+3个月(3)借阅者的借阅证号必须惟一:定义外码自定义约束定义主码数据库原理攀枝花学院计算机学院——操纵数据时起作用在插入、删除、修改数据库中数据时,DBMS首先要检查完整性约束,如果检查到有任何一种完整性约束规则不满足,都不能完成对数据的操纵。(1)执行插入操作时检查完整性首先检查实体完整性、域完整性,再检查参照完整性(只有向参照关系插入元组时检查),最后检查用户自定义的完整性。完整性约束的作用数据库原理攀枝花学院计算机学院(2)执行删除操作时检查完整性一般情况,只有删除被参照关系的元组时,需要检查参照完整性:如果所删除记录未被引用则可以执行删除操作;否则,可按以下三种情况之一进行处理:1)受限删除2)级联删除3)置空删除(3)执行修改操作时检查完整性可以看作先删除旧的,再插入新的。数据库原理攀枝花学院计算机学院3.3.5实现数据完整性的方法关系模型实现数据完整性的方法有如下几种:在关系模式定义描述中定义检查条件;使用触发器、存储过程实现;用其它编程工具实现;数据库原理攀枝花学院计算机学院关系数据模型实例——教务管理系统n系研究所课程学生班级教师学生1nnnn11m1隶属拥有包含选课授课mn数据库原理攀枝花学院计算机学院教学管理系统中的关系数据模型的实体类型:系(系编号,系名称,电话,地址)研究所(所编号,所名称,人数,电话,地址,系编号)课程(课程号,课程名,学分,系编号,教师号)班级(班名称,人数,电话,系编号)学生(学号,姓名,性别,年龄,斑名称)教师(教师号,姓名,性别,地址,电话,所编号)选课(课程号,学号,成绩)数据库原理攀枝花学院计算机学院教务管理关系数据库关系数据库设计就是要确定和描述数据库中的各类实体和实体之间的关系表。对教务管理系统设计的一组关系数据模式有7张表,描述如下:(1)dept系(2)institute研究所(3)course课程(4)class班级(5)student学生(6)Teacher教师(7)sc选课数据库原理攀枝花学院计算机学院(1)系d