软件工程课件4-1关系数据库基础.ppt
1,关系数据库基础,2,数据库系统构成,数据库系统(DataBase System,简称为DBS)是指计算机系统中引入数据库后的系统,由数据库、软件(操作系统、数据库管理系统、开发工具、编译系统和应用系统等)、用户、硬件构成。,3,数据库系统的构成图,数据库系统的构成图2,4,关系数据库实例,5,6,数据库管理系统,数据库管理系统(Data Base Management System,简称DBMS)是位于用户与操作系统之间的一种非常复杂的、对数据库进行管理的系统软件。它在操作系统支持下工作。在确保数据“安全可靠”的同时,提高用户使用“数据”的简明性和方便性。用户对数据的一切操作,包括数据定义、查询、更新及各种控制,都是通过DBMS进行。,DBMS的主要功能,数据库定义功能允许用户用一种叫做数据定义语言的专用语言建立新的数据库和指定它们的逻辑结构(也称为模式)。数据存取功能使用户能够用适当的语言查询数据和更新(插入、修改和删除)数据。数据控制功能对数据库安全性、完整性和并发性(多用户对数据的并发使用)进行有效的控制和管理,确保数据库中数据正确有效和数据库系统的有效运行。数据库的建立维护功能对数据库转储、恢复、重组织、系统性能监视分析等数据库维护工作。DBMS是由许多“系统程序”所组成的一个集合。每个程序都有自己的功能,一个或几个程序一起完成DBMS的一个或几个功能。各种DBMS的组成因系统而异,一般说来,它由语言编译处理程序;系统运行控制程序;系统建立、维护程序;数据字典等程序组成。,7,数据库的用户,终端用户 应用程序员数据库管理员 系统需求分析、数据库设计、系统功能设计与实现。数据库系统软件的安装和维护监控DBMS的运行,系统参数的配置与调整权限管理日常维护(备份与恢复)DB中的数据进行扩充或重组DB的文档管理,8,计算机硬件系统,硬件存储数据库和运行DBMS、OS的硬件资源。要求需要足够大的内存来存放OS,DBMS核心模块、数据库数据缓冲区和应用程序由于数据库中数据庞大,需要足够大的磁盘等直接存取设备存储数据为安全,需要足够的磁带、光盘等存贮介质做数据库的备份要求具有较高的通道能力,以提高数据传送率要求系统支持联网能力,9,10,目前常用的DBMS,目前常用的 DBMS ORACLE(甲骨文)DB2(IBM)SYBASEMicrosoft SQL Server 2000、2005(MS)MYSQLACCESSxBASE类:Visual FoxPro dBASE常用的开发工具Power BuilderDelphiVisual BASIC,Visual Studio.Net等。数据库厂商提供的开发工具。例如,ORACLE的Design 2000和SYBASE的Power Designer。,关系模型概述,关系数据库 使用关系模型的数据库关系数据库系统 支持关系模型的数据库系统关系模型 关系数据结构、关系操作集合和关系完整性约束三部分组成,11,12,关系数据模型,关系模型是用二维表格结构来表示实体以及实体间联系的模型 关系模型的数据结构关系模型的数据结构是一个“二维表框架”组成的集合,每个二维表又可称为关系,因此可以说,关系模型是“关系框架”组成的集合。关系模型使用的术语关系:关系可理解为由关系(二维表)的框架和若干元组构成。元组:表中的行。通常称为记录。属性:表中的列,通常称为字段。关系键:表中的某个属性组,它的值可以唯一确定一个记录。域:属性的取值范围。分量:记录中的一个属性值。,13,关系数据模型-关系实例,学生记录表,关系名,关系,记录(行),字段(列),关系键,男女,域,分量,关系模式:学生(学号、姓名、性别、年龄、籍贯),字段名,14,关系键,关系键的文字定义:在关系中能惟一标识元组的一个属性或不包含有多余属性的属性组合称为该关系的关系键。,15,候选键和主关系键,主属性和非主属性,候选键、主关系键某些关系中会发现具有关系键特性的属性或属性组有多个,那么把他们都称为该关系的候选关系键,或称为候选关键字或候选码。从候选关系键中选择一个作为主关系键(也称为主键、主关键字、主码)。为了惟一地标识表中的每一个记录,保证记录的惟一性,每个表都必须选择一个主关系键,而且只能有一个主关系键。对于任意一个表,主关系键一经选定,通常是不能随意改变的。主属性包含在关系键中的属性 非主属性不包含在关系键中的属性称为非主属性,16,外部关系键,如果关系R2的一个或一组属性X不是R2的关系键,而是另一关系R1的关系键,则该属性或属性组X称为关系R2的外部关系键(或称外关键字或外部码)。外部关系键与其相符的另一个表的键起着两个表的连接和参照作用。外部关系键也称为外部键或外键。,学生关系,课程关系,学习成绩关系,外部关系键,外部关系键,主关系键,主关系键,17,关系模型的完整性约束,关系模型中的操作必须满足关系的完整性约束条件。关系的完整性约束条件包括三大类:实体完整性参照完整性用户定义的完整性,18,实体完整性规则,规则:主属性(关系键中包括的属性)不能取空值或部分空值的约束条件称为实体完整性规则。目的:如果出现空值,那么主键值就起不了唯一标识元组的作用。DBMS利用主键值来避免元组重复。实例:,19,参照完整性规则,规则 如果关系R2的外部关系键X与关系R1的(主)关系键相符,那么外部关系键X的每个值必须在关系R1中关系键的值中找到,或者取空值。目的定义了外部关系键与关系键的引用规则,外部关系键的值要根据参照的关系键的值进行检查,参照该关系键的列值以确定其合法性,保持数据的一致性,不引用不存在的实体;外部关系键与关系键对应可实现两个表的关联。实例,20,用户定义完整性,规则:用户定义的完整性是针对某一具体的实际数据库的约束条件,它由应用环境所决定。例如:属性的取值范围约束数据的输入格式约束数据类型(类型、长度、精度等)约束空值的约束等关系数据库管理系统应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。,21,完整性约束的作用,执行插入操作时检查完整性规则执行插入操作时,需要分别检查实体完整性规则、参照完整性规则和用户定义完整性规则。执行删除操作时检查完整性规则执行删除操作时,一般只需要检查参照完整性约束规则。执行更新操作时检查完整性规则执行更新操作时,分别进行上述两种情况。,22,关系性质,1、任意两个元组不能全同(不允许有重复的记录),2、行(记录)的顺序可以任意交换,23,关系性质,3、表中列(字段)的顺序可以任意交换,此处的属性名不能使用姓名,属性名重复!可改用为“曾用名”,4、关系中的属性名(字段名)必须唯一,24,关系性质,5、属性(字段)名下的诸属性值(同列)是同类型数据,来自同一个域,此处的属性值类型不对!,非规范化关系,规范化关系,6、每一个分量都是不可分的数据项,关系代数运算,关系代数运算关系代数(Relation algebra)是施加于关系上的一组集合代数运算,每个运算都以一个或多个关系作为运算对象,并生成另外一个关系作为该关系运算的结果。关系代数用到的运算符集合运算符(并)、一(差)、(交)、(广义笛卡积)专门的关系运算符 选择、(投影)、(连接)、*(自然连接)、(除);算术比较符:,;逻辑运算符(AND与)、(OR或)、(NOT非)分类 按运算符的不同分为:传统的集合运算和专门的关系运算,25,传统的集合运算_关系并运算,26,R,S,RS,关系R和关系S的并是属于R或属于S或同时属于R和S的元组组成的集合,记为RS。形式定义如下:,实例:,传统的集合运算_关系差运算,27,R,S,RS,关系R和关系S的差是由属于R而不属于S的所有元组组成的集合,即在关系R中删去与S关系中相同的元组,组成一个新关系,记为R-S。形式定义如下:,实例:,传统的集合运算_关系交运算,关系R和关系S的交是由既属于R又属于S的元组组成的集合,即在两个关系R与S中取相同的元组,组成一个新关系,记为RS。如果两个关系没有相同的元组,那么它们的交为空。R与S的交运算如图2.5(e)所示。形式定义如下:,28,R,S,RS,实例:,广义笛卡尔积,29,R,S,RS,实例:,关系的笛卡尔积称为广义的笛卡尔积,以区别一般的集合笛卡尔积。笛卡尔积也是属于二目运算,但参加运算的两个关系不要求是同类关系。形式定义如下:,选取运算,30,S,DEP=CS(S)或 5=CS(S),?求计算机系(CS)的学生基本情况,第5列,在指定的关系中,按给定的条件选取其中的若干个元组,组成一个新的关系的运算。形式定义如下:,实例:,投影运算,31,S,对学生姓名和所在系属性取投影,SN,DEP(S)或 2,5(S),查询学生关系中都有哪些系,DEP(S)或 5(S),设关系R(X,Y),X,Y均为属性集合。关系R在属性X上的投影是在关系R中选取X属性的相应列并删去重复行,组成一个新关系。这是从关系的垂直方向上(列的角度)取子集的运算。投影结果关系记作:,实例:,专门的关系运算_连接运算,32,R,S,RS,连接运算就是从两个关系的笛卡尔乘积中选取满足连接条件的那些元组。连接结果记作:,实例:,专门的关系运算_等值连接运算,33,设有关系S和D,如下图所示。S与D在DNO属性上的等值连接结果如图所示。,34,SQL语言概述,SQL:Structured Query Language,结构化查询语言一种介于关系代数与关系演算之间的语言美国1986年10月正式把SQL语言作为关系数据库的标准语言,并公布了第一个SQL语言的标准,即SQL86。此后不久,国际标准化组织(ISO)也于1987年通过了这个标准。1989年,ISO又公布了SQL89标准。1992年,ISO又公布了SQL92标准。目前,新标准SQL3也正式发表。关系数据库的标准语言 功能数据的定义、查询、操纵、控制,35,SQL语言的动词,36,数据查询语句SELECT,SQL语言格式,SELECT:投影FROM:连接WHERE:选取GROUP BY:分组HAVING:分组条件ORDER BY:排序,37,简单的SELECT查询语句例,查询指定的列查询学生的姓名年龄和性别SELECT 姓名,年龄,性别 FROM student;查询使用有表达式的列SELECT子句的不仅可以是表中的属性列,也可以是表达式。查询全体学生的姓名及其出生年份。SELECT 姓名,2000-年龄 FROM student;,38,比较复杂的SELECT语句例,检索出至少选修三门课的学生学号、姓名、平均成绩和选课门数SELECT S.SNO AS 学号,SN AS 姓名,AVG(GRADE)AS 平均分,COUNT(*)AS 选课门数,FROM S,SC,CWHERE S.SNO=SC.SNO AND SC.CNO=C.CNOGROUP BY S.SNO,SNHAVING COUNT(*)=3,39,程序中SELECT语句的优化,应用程序经常要面对海量的数据库数据,要快速的检索出所需数据,需对查询语句进行优化。例如数据的分页显示。分页SQL语句例:SELECT TOP PAGESIZE*FROM ZZZY WHERE ID NOT IN(SELECT TOP PAGESIZE*PAGE ID FROM ZZZY ORDER BY ID)ORDER BY IDSELECT TOP PAGESIZE*FROM ZZZY WHERE ID(SELECT MAX(ID)FROM(SELECT TOP PAGESIZE*PAGE ID FROM ZZZY ORDER BY ID)ORDER BY ID,