《数据库系统课件数据库工程与应用》由会员分享,可在线阅读,更多相关《数据库系统课件数据库工程与应用(114页珍藏版)》请在金锄头文库上搜索。
1、数据库系统原理张军EMAIL:D7/27/20241数据库系统原理n第1章绪论n第2章关系数据库n第3章关系数据库标准语言SQLn第4章关系数据库设计理论n第5章数据库保护n第6章数据库设计n第7章关系数据库管理系统实例n第8章数据库技术新进展数据库技术作为数据管理的最有效的手段,它的出现极大地促进了计算机应用的发展,目前基于数据库技术的计算机应用已成为计算机应用的主流。近年来,关系数据库已取代了早期的层次数据库和网状数据库,成为主流数据库。本教程以关系数据库为重点,全面系统地介绍数据库的基本概念和基本技术。7/27/20242第1章绪论n11引言n12数据模型n13数据库系统结构n14数据库
2、管理系统n15数据库工程与应用介绍数据库的有关概念,了解数据库的基本技术和数据库设计的软件工程技术。7/27/2024311引言n111概念n112数据库技术的产生与发展n113数据库技术的研究领域7/27/2024413数据库系统结构n131模式结构n132体系结构数据库系统结构可以根据考察的角度分为不同的形式。通常可以从数据库管理和最终用户两个角度来考察。7/27/202451.3.1三级模式结构应用A应用B应用C应用D外模式3外模式2外模式1123模式内模式DB一个数据库只有一个模式外模式/模式映象模式/内模式映象也称子模式、用户模式。是模式的子集。是用户的数据视图,与某一应用有关。也称
3、逻辑模式。是所有用户的公共数据视图。与应用开发工具、应用无关;与物理存储、硬件环境无关。也称存储模式。数据在数据库内部的表示方式。只有一个内模式;主要描述存储方式,如顺序存储、B树存储,hash存储;以及如何进行索引、压缩、加密等。7/27/202461.3.2体系结构单用户结构早期、最简单的数据库系统采用的方式。实现上,在目前仍有应用,如Oracle数据库中对数据库进行维护时的internal用户模式就是一种单用户方式。应用、DBMS、数据在同机器上,只能由一个用户访问主从式结构一个主机带多个终端的多用户结构应用、DBMS和数据都在一主机上,多个用户通过终端或网络访问分布式结构数据库中的数据
4、逻辑上是一个整体,物理上分布在计算机网络的不同结点上,各结点可独立处理本地数据,执行局部应用;也可同时存取和处理多个异地数据、全局应用。应用、DBMS和数据分布在网络中多个主机上,多个用户通过网络访问客户/服务器(C/S)结构将DBMS功能与应用分开,专门用于执行DBMS的功能的计算机称数据库服务器(简称服务器),其他安装DBMS的外围应用开发工具、支持用户应用的称为客户机。在计算机网络中主要传送用户请求和处理结果,降低了网络负担。更开放,客户机和服务器可以适应多种不同的硬、软件平台。集中式:网络中只有一台数据库服务器,有多个客户机。分布式:网络中有多台数据库服务器,多个客户机。是客户/服务器
5、结构与分布式结构的结合。应用、开发工具位于客户机上,DBMS和数据位于服务器上,客户机与服务器通过专门的接口进行通讯。集中式结构中DBMS和数据集中在一台服务器上。分布式结构中DBMS和数据分布在多台服务器上,由DBMS负责、协调各局部数据的管理。所有的服务器形成一个统一的数据库整体面向用户。7/27/20247单用户结构7/27/20248主从式结构7/27/20249分布式结构7/27/202410客户/服务器结构7/27/20241112数据模型n121要素n122概念模型n123数据模型数据模型是数据库中用于抽象、表示和处理现实世界中的数据和信息的工具。需要满足三方面要求:一是能比较真
6、实地模拟现实世界;二是容易为人所理解;三是便于在计算机上实现。7/27/20241214数据库管理系统n141DBMS的功能和组成n142工作过程(示例)n143实现方式数据库管理系统是数据库系统的核心,是为数据库的建立、使用和维护而配置的软件。DBMS建立在操作系统的基础上,是位于操作系统与用户之间的一层数据管理软件,负责对数据库进行统一的管理和控制。用户发出的或应用程序中的各种操作数据库中数据的命令,都要通过数据库管理系统来执行。数据库管理系统还承担着数据库的维护工作,能够按照数据库管理员所规定的要求,保证数据库的安全性和完整性。7/27/2024131.4.1DBMS的功能和组成功能数据
7、定义模式、存储模式和外模式,各模式间的映象定义,及定义结束条件数据操纵检索、插入、删除、修改等数据库运行管理并发控制、安全性检查、完整性约束条件等的检查与执行。内部维护(包括索引、数据字典的自动维护)数据组织、存储和管理文件结构、存取方式(如何保证空间利用率和处理效率(时间效率)数据库的建立与维护初始数据输入、数据转换等。转储(备份)与恢复、重组、重构等。数据通信接口与用户的通信接口,各服务器间的通信接口等组成数据定义语言及其翻译处理程序DDL数据操纵语言及其编译(或翻译)程序DML,宿主型、自主型(自含型)数据库运行控制程序实用程序7/27/202414工作过程示例读取一个数据n应用程序A向
8、DBMS发出从数据库中读取数据库记录的命令。nDBMS对该命令进行语法、语义检查,并调用应用程序A对应的子模式,检查A的存取权限,决定是否执行该命令。如果拒绝执行,则向用户返回错误信息。n决定执行该命令后,DBMS调用模式,依据子模式/模式映象的定义,确定应读入模式中的哪些记录。nDBMS调用物理模式,依据模式/物理模式(内模式)映象的定义,决定应从哪些文件、用什么存取方式、读入哪个或哪些物理记录。nDBMS向操作系统发出执行读取所需物理记录的命令。n操作系统执行读数据的有关操作。n操作系统将数据从数据库的存储区送至系统缓冲区。nDBMS依据子模式/模式映象的定义,导出应用程序A所要读取的记录
9、格式。nDBMS将数据记录从系统缓冲区传送到应用程序A的用户工作区。nDBMS向应用程序A返回命令执行情况的状态信息。7/27/2024151.4.3实现方法其中:U1、U2、Un为非数据库系统用户。AP1、AP2、APn为数据库应用程序(或用户)。N方案DBMS与应用程序融合在一起通常设计成可重入代码,内存中有多个DBMS代码副本APi与DBMS无须通信,被调用的DBMS模式加入到用户进程中。2N方案一个DBMS进程对应一个用户进程每个用户进程均有一个称为影子进程(shadow)的DBMS进程为之服务。此外,还有若干后台进程负责读写数据库、监控日志等,进程总数用户数*2Oracle早期,IN
10、GRES,INFORMIX早期采用。不适合大量用户的联机事务处理M+N方案多个DBMS进程对应多个用户进程N个用户进程,M个DBMS进程(通常MN)。DBMS进程的分派由专门的分派进程完成。Oralce7,INFORMIX采用。N+1方案一个DBMS进程对应所有用户进程整个DBMS只使用一个进程,用户向其发消息来申请服务(进入消息队列)。把DBMS进程内部设计成多线索结构,每一条线索都可以服务于一个用户请求。SYBASE采用。实现较复杂,消息通信机制开销大。7/27/20241615数据库工程与应用n151目标与特点n152数据库设计方法n153步骤n154数据库应用数据库设计是一项涉及多学科
11、的综合性技术。现实世界的复杂性导致了数据库设计的复杂性。只有以科学的数据库设计理论为基础,在具体的设计原则的指导下,才能保证数据库系统的设计质量,减少系统运行后的维护代价。7/27/202417151目标与特点目标:在DBMS的支持下,按照应用的要求为某一部门或组织设计一个结构合理、使用方便、效率较高的数据库及其应用系统。(见图)内容结构(数据)设计设计数据库框架或数据库结构行为(处理)设计设计应用程序、事务处理等传统的软件工程方法:如结构化设计方法和原型法。注重处理过程的特性,忽视应用中数据语义的分析和抽象,尽量推迟数据结构设计。数据库系统设计:首先结构设计,与文件系统为基础的应用系统不同,
12、文件的共享程度受限。数据库模式是各应用程序共享的结构。稳定、永久、直接影响各处理过程的性能和质量(即应用是围绕数据库展开的)。结构特性与行为特性不能分离,否则会增加数据库设计的复杂性。7/27/202418图示数据库设计目标数据库设计信息需求处理需求DBMS与软、硬件系统特征应用系统数据模式与数据库7/27/202419152数据库设计方法现实世界(复杂性)数据库设计设计步骤新奥尔良方法(四阶段)需求分析分析用户要求概念设计信息分析和定义逻辑设计设计实现物理设计物理数据库设计S.B.Yao(六步骤)需求分析模式构成模式汇总模式重构模式分析物理数据库设计I.R.Palmer一步接一步的过程辅助手
13、段实现每一过程技术与方法基于ER模型的数据库设计基于3NF的设计基于抽象语法规范的设计7/27/202420153步骤n1)需求分析:基础,最困难、最耗时。获取需求说明和数据说明。n2)概念结构设计:独立于DBMS来描述数据库的逻辑结构n3)逻辑结构设计:针对于具体的DBMSn4)数据库物理设计:选取物理结构(包括存储结构、存取方法)n5)数据库实施:运用DBMS提供的数据语言及其宿主语言,建立数据库,编制和调试应用程序,数据入库,试运行等n6)数据库运行和维护:评价、调整与修改。n注意问题:n1、用户的积极性,如何将业务流程转化成数据模型,同时可以将责任和风险分散。n2、可扩充性,如何适应新
14、技术、新需求。n3、平稳过渡。7/27/202421154数据库应用DBA(DatabaseAdministrator)决定数据库应用水平。n1、设计与定义数据库系统n2、帮助最终用户使用,包括培训、解疑。n3、监督与控制数据库系统的使用和运行,审计n4、改进、重组(提高空间利用率、处理效率)n5、转储和恢复n6、重构7/27/202422113数据库技术的研究领域n1、DBMS软件的研制DBMS本身及周边软件系统;支持新的数据类型,如非格式化数据:声音、图象;面向对象;多媒体n2、数据库设计数据库设计的方法、工具、理论;数据模型、建模;CA数据库设计方法、设计规范和标准。n3、数据库理论关系
15、的规范代理论;关系数据理论;数据库逻辑演绎和知识推理、并行算法;演绎数据库、知识库、数据仓库7/27/202423112数据库技术的产生与发展n1、人工管理阶段。50年代中期前;特点:1)不保存;2)无软件;3)不共享;4)无独立性。n2、文件系统阶段。50年代后期至60中期;特点:1)长保存;2)文件系统管理;3)共享差;4)独立性差。n3、数据库系统阶段。60年代后期以来;特点:1)结构化;2)共享好,冗余低;3)独立性高;4)DBMS管理。7/27/202424111概念n数据(data):描述事物的符号记录。(计算机处理、语义)n数据库(database,简称DB):长期储存在计算机内
16、,有组织的、可共享的数据集合。n数据库系统(databasesystem,简称DBS):数据库引入到计算机系统中的系统构成,一般由数据库、数据库管理系统(及其开发工具)、应用系统、数据库管理员和用户构成。n数据库管理系统(database managementsystem,简称DBMS):数据管理软件系统。管理、控制数据库的建立、运行和维护。7/27/202425121要素n1、数据结构:系统静态特性n2、数据操作:动态特性n3、约束条件:完整性约束7/27/202426122概念模型不依赖于具体的DBMS的支持的数据模型n1、信息世界的基本概念实体(entity):客观存在,并可相互区别的事
17、物。属性(attribute):实体的某一特性。码(key):唯一标识实体的属性集合。域(domain):属性的取值范围。实体型(entitytype):实体及其属性名集合来抽象和刻画同类实体。实体集(entityset):同类实体的集合。联系(relationship):实体之间、实体内部属性间的联系。如1:1、1:n、m:n等。7/27/202427122概念模型n2、概念模型表示方法ER图,P.P.S.Chen 于1976年提出(entityrelationshipapproach)。实体型:用矩形表示,矩形框内写明实体属性:用椭圆形表示,并用无向边将其一相应的实体连接起来联系:用菱形表
18、示,菱形框人写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:1,1:m,m:n等)示例1示例2示例37/27/202428示例1一般的联系班级班级班长班长11班级组成学生1n1:1课程选修学生mn1:nm:n7/27/202429示例2特殊的联系课程讲授教师1m参考书n三个实体间的联系职工经理1n实体内部的联系7/27/202430示例3ER图课程讲授教师1m参考书n选修学生mn班级组成1n小组长n1成绩7/27/202431123数据模型n层次模型(hierarchicalmodel)n网状模型(networkmodel)n关系模型(relationalmod
19、el)7/27/202432层次模型层 次 模 型 ( hierarchical model) 代 表 : IBM的 IMS( Information Management System)数据结构基本结构只 有 一 个 结 点 无 双 亲 , 即 为 根 结 点(1:1)其他结点有且只有一个双亲结点(1:n)多对多(m:n)冗余结点法:m:n=1:m + 1:n虚拟结点法:将冗余结点转为虚拟结点,即指引元,指向替代的结点。其它非树型结构转换成树型操纵与完整性约束没有双亲结点值不能插入子女结点值删除双亲结点值,相应子女值也同时删除冗余结点更新时,几处同时更新存储结构邻接法:层次树前序链接法:用指
20、引元反映数据之间的层次联系优缺点简单;联系固定;完整性良好。非层次表示笨拙;插入、删除限制多;查询子女通过双亲;层次命令趋于程序化。示例7/27/202433S# SN SSS-CC# CNmn学生S课程CS# SN SSC# CNC# CNS# SN SSS# SN SSC# CNV.CV.S示例用层次模型表示多对多ER图SCCSSV.CCV.S7/27/202434网状模型网状模型(network model) 典型代表是DBTG系统,也称CODASYL系统。这是20世纪70年代数据系统语言研究会CODASYL(Conference On Data System Language)下属的数
21、据库任务组(Data Base Task Group,简称DBTG)提出的一个系统方案数据结构可以有一个以上的结点无双亲;至少有一点结点,有多于一个的双亲;两个结点之间可以有两种或多种联系。 操纵与完整性约束插入操作允许尚未确定双亲结点值的子女结点值;删除操作允许只删除双亲结点值。存储结构链接法:单向、双向、环状、向首引元阵列、二进制阵列、索引优缺点更直接描述;性能良好、存取效率高。DDL复杂;独立性差、指定存取路径。7/27/202435关系模型关系模型(relationalmodel)1970年E.F.Codd论文“大型共享系统的关系数据库的关系模型”数据结构逻辑结构是二维表,由行和列组成
22、。关系:二维表。元组:表中的一行。属性:表中的一列。主码(key):属性组(集),可以唯一确定一个元组。域(domain):属性的取值范围。分量:元组中的一个属性值。关系模式:对关系的描述。表示为:关系名(属性1,属性2,属性n)操纵与完整性约束集合操作(操作对象、操作结果都是关系(元组的集合):查询、插入、删除、修改。实体完整性、参照完整性、用户定义的完整性。存储结构实体、及实体之间的联系用“表”表示,表以文件形式存储优缺点与非关系模型不同,它建立于严格的数学概念的基础上的;关系模型的概念单一。无论实体还是实体间的联系都用关系表示,对数据的检索结果也是关系(即表)。故其数据结构简单、清晰,用
23、户易懂易用;关系模型的存取路径对用户透明,具有更高的数据独立性,更好的安全保密性,也简化了程序员的工作和数据库开发建立的工作。由于存取路径对用户透明,查询效率不如非关系数据模型;为提高性能,须对用户查询请求进行优化,从而增加了数据库管理系统的负担。示例7/27/202436示例二维表学号姓名性别系别年龄95001 张三男CS2096010 李四女IS1999100 王五男MA17学生登记表关系名列,属性名,主码行,元组域:如整数7/27/202437第2章关系数据库n21概述n22关系数据结构n23关系的完整性n24关系代数n25关系演算n26关系数据库管理系统1962CODASYL发表信息代
24、数1968David,Child在7090机上实现集合论数据结构1970IBM的E.F.Codd多篇论文,提出关系理论7/27/20243821概述关系数据库系统是支持关系模型的数据库系统。关系模型由关系数据结构、关系操作集合和完整性约束三部分组成。1.关系数据结构2.关系操作3.完整性约束实体完整性参照完整性用户定义的完整性7/27/202439常用关系操作关系数据模型的操作对象和结果都是集合:一次一集合(setatatime)方式。非关系数据模型的数据操作方式:一次一记录(recordatatime)方式。常用的关系操作:查询操作更新操作选择(选取)增(加)投影删(除)连接(修)改除并交差
25、7/27/202440关系操作关系操作是非过程化的,以下为其三种表达能力等价的方法:关系代数用对关系的运算来表达查询要求的方式如ISBL关系演算用谓词来表达查询要求的方式。按谓词变元的基本对象分为:元组关系演算(变元的基本对象为元组)域关系演算(变元的基本对象为域)如ALPHA,QUEL如QBESQLStructuredQueryLanguage,具有关系代数、关系演算的双重特点。又可细分为查询、DDL、DML、DCL等几部分。7/27/20244122关系数据结构n1关系n2关系模式n3关系数据库7/27/202442域和笛卡尔积l笛卡尔积可表示为一个二维表,表中的每行对应一个元组,每列对应
26、一个域。l域(domain):定义2.1域是一组具有相同数据类型的值的集合。l笛卡尔积(cartesianproduct):定义2.2给定一组域D1,D2,Dn,这些域可以完全不同,也可以部分或全部相同。D1,D2,Dn的笛卡尔积为:D1D2Dn=(d1,d2,dn)|diDj,j=1,2,n,其中每一个元素(d1,d2,dn)叫作一个n元组(ntuple)或简称元组(tuple)。l元素中的每一个值di叫作一个分量(component)。l若Di(i=1,2,n)为有限集,其基数(cardinalnumber)为mi(i=1,2,n),则D1D2Dn的基数为:7/27/202443关系l关系
27、(relation):定义2.3D1D2Dn的子集叫作在域D1,D2,Dn上的关系,用R(D1,D2,Dn)表示。其中R表示关系的名字,n是关系的目或度(degree)。l关系中的每个元素是关系中的元组,通常用t表示。l当n=1时,称为单元关系(unaryrelation)。l当n=2时,称为二元关系(binaryrelation)。l关系是笛卡尔积的子集,所以关系也是一二维表。由于域可以相同,为了区别,每列另起一名字,称为属性(attribute),n目关系有n个属性。7/27/202444关系中的码码(key)候选码(candidatekey)能唯一标识一元组的属性组主 码 ( prima
28、rykey)多个候选码中的主要应用属性组。其中的 每 个 属 性 都 称 为 主 属 性 ( primeattribute)。而不属于任何候选码的属性叫作非码属性(nonkeyattribute)合成码(组合码)码含有多个属性外 部 码 ( 外 码 ,foreignkey)不是当前关系的码,但是其它关系中的主码。全码(allkey)所有属性共同组成关系模式的候选码。7/27/202445关系的三种类型基本表(基表)实际存在的表,实际存储数据的逻辑表示。查询表查询结果地应的表。视图表由基表或其他视图导出的表,为虚表,不对应实际存储的数据。7/27/202446关系的六条性质1.列是同质的(hom
29、ogeneous),即列中的所有元素来自同一个域。2.不同列可出自相同域,不同属性有不同的属性名。3.列的顺序无所谓,次序可以互换(有些数据库系统,如FoxPro,仍然区分了属性顺序)。4.任意两个元组不能完全相同。(在实际的产品中,这可以通过用户定义的约束来完成,如定义主码。即当没有用户定义时,可以允许相同元组存在。)5.行序无所谓。6.分量必须取原子值。即每一分量皆是不可分的数据项。其中第6条是规范化关系中最基本的一条。把规范化的关系称为范式(normalform)。因此可以把第6条称为关系的第一范式(1NF)。7/27/2024472关系模式n定义2.4关系的描述称为关系模式(relat
30、ionschema)。它可以形式地表示为:R(U,D,DOM,F)。n其中R为关系名,U为属性名集合,D为域集合,DOM为属性向域的映象集合,F为属性间的依赖关系集合。n关系模式是型,关系是值。n例:学生选修课成绩登记表,定义关系模型SC如下:SC(SNO,CNO,GRADE,N(6),N(3),(SNO,N(6),(CNO,N(3),(GRADE,N(3),(SNO,CNO)GRADE)其中SNO表示学号,CNO表示课程号,GRADE表示选修课成绩。7/27/2024483关系数据库n关系数据库也有型和值之分。关 系 数 据库的型也称关系数据库的模式包括域的定义、关系模式定义。关 系 数 据
31、库的值也称关系数据库是关系的集合。7/27/20244923关系的完整性n1实体完整性(entityintegrity)规则2.1实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。n2参照完整性(referentialintegrity)n3 用 户 定 义 的 完 整 性 ( userdefinedintegrity)关系模型应提供定义和检验这类完整性的机制。不应由应用程序承担。7/27/202450参照完整性(referentialintegrity)n定义2.5设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基于关系S的主码Ks相对应,则称F是基本关系的外码(
32、foreignkey),并称基本关系R为参照关系(referencingrelation),基本关系S为被 参 照 关 系 ( referenced relation) 或 目 标 关 系(targetrelation)。关系R和S不一定是不同的关系。n规则2.2参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R、S不一定是不同的关系),则对于R中的每个元组在F上值必须为:n或者取空值(F的每个属性值均为空值)。n或者等于S中某个元组的主码值。示例7/27/202451参照完整性示例SnoSnameSsexSageSdept99101张三男20C
33、S99103李四男19CS98102王五女19ISSdeptSlocSnameCS曹光标大楼计算机科学IS竺可桢大楼信息科学MA华罗庚大楼数学主码外码,不是Student的主码,但是Department的主码。Student中Sdept中的值都取自Department表中相应Sdept的值。指定外码时,列名不一定要求相同。StudentDepartment7/27/20245224关系代数n约定n241传统的集合运算n242专门的关系7/27/202453约定n1)设关系模式为R(A1,A2,An),它的一关系设为R,tR表示t是R一个元组。tAi则表示元组t中相应于属性Ai的一个分量。n2)
34、若A=Ai1,Ai2,Aik,其中Ai1,Ai2,Aik是A1,A2,An中的一部分,则A称为属性列,或域列。则表示A1,A2,An中去掉Ai1,Ai2,Aik后剩余的属性组。tA=(tAi1,tAi2,tAik)表示元组在属性列A上诸分量的集合。n3)R为n目关系,S为m目关系。trR,tsS,称为元组的连接(concatenation)。它是一个(n+m)列的元组trts。前n个分量为R中的一个n元组,后m个分量为S中的一个m元组。n4)给定一个关系R(X,Z),X和Z为属性组。定义当tX=x时,x在R中的象集(imageset)为:nZx=tZ|tR,tX=xn它表示R中属性组X上值为x
35、的诸元组在Z上分量的集合。7/27/202454专门的关系运算n1、选择n2、投影n3、连接n4、自然连接n5、除7/27/202455传统的集合运算n1并(union)RS=t|tRtSR,S为同类关系(关系的度相同,且相应属性都来自相同的域),并的结果与R,S也是同类关系。n2差(difference)R,S为同类关系,差的结果与R,S也是同类关系。RSRS7/27/202456传统的集合运算3交(intersection)RS=t|tRtS=R(RS)R,S为同类关系,交的结果也是R,S的同类的关系。4 广 义 笛 卡 尔 积 ( extendedcartesianproduct)RS=
36、trts|trRtsSR,S具有相同属性组(相应属性来自相同的域,如R(Z,X),S(Y,Z),其中Z为相同的属性组。)结果不为同类关系。RSRSRS7/27/20245717181选择n1选择(选取,selection),又称为限制(restriction)。语句表示:Select关系名Where条件Giving结果公式表示:RF或F(R)=t|tRF(t)=TrueF是布尔函数,即限定条件。其含义是,R中使布尔函数为真的元组集。F的基本形式为:x1y1x2y2。为比较运算符,包括、等。xi,yi等是属性名或常量,或是简单函数,属性名也可用它的序号来代替。表示逻辑运算符,如、等。说明:选择对
37、关系而言,是从行的角度取关系的子集。例:5=IS(Student)(注:此处数字5表示关系Student中的第5列,在此即为Sdept。由此,可以看出,对关系列的引用除了可以通过列 名 进 行 , 还 可 以 通 过 列 所 在 的 序 号 进 行 引 用 ) ,Sage20(Student),Student5=IS,StudentSage20192120RF(R)F:X207/27/2024582投影n2投影(projection)语句表示:Project关系名Over属性1,属性2,属性mGiving结果公式表示:RA或A(R)=tA|tR说明:投影之后,不仅取消了原关系中的某些列(变成了
38、新的关系,要给予新的关系名),而且还可能取消某些元组(因为取消了某些属性列后,就可能出现重复行,应取消这些完全相同的行)。例 : Sname,Sdept(Student), 2, 5(Student),StudentSname,Sdept,Student2,5abcdef取a,c,d,fA=(a,c,d,f)acdfRA(R)7/27/2024593连接n3连接(join)语句表示:Join关系1And关系2Where条件Giving结果公式表示:RFS或RFS=trts|trRtsSF(tr,ts)=True或表示为:其含义是从两个关系的笛卡尔积中选取属性间满足一定条件的元组。1518192
39、120RtrA182316StsBtrA=tsB19232123182318182023151815231516RSA=B7/27/2024603连接最重要的、最常用的连接为等值连接(equijoin)和自然连接(Naturaljoin)。等值连接中的即为“=”。而自然连接则是特殊的等值连接。它要求A和B必须是相同属性组,且结果中去掉了重复的属性(是否可以认为A和B中只能保留其中一组属性组,然而在事实上,并不知道这些属性到底是取自A,还是取自B)。从某种意义上说,连接与投影是相反的操作,即投影是减少属性,而连接是增加属性。例:有R(A1,A2,A3),S(A4,A5)其中A3和A5是相同属性。
40、则有1618181620R18231618 1818 1816S16A3A5RSA3=A5A3与A5合二为一7/27/2024614自然连接n4自然连接(Naturaljoin)语句表示:Join关系1And关系2Over属性Giving结果公式表示:R*S=trtsZ|Z=XAYtrRtsS其中R(X,A),S(Y,A)。A为公共属性(重复)例:Student*Department,S*SP1618181620R18231618 1818 1816S16A3A5RSA3=A5A3与A5合二为一7/27/202462n5除(division)语句表示:Divide关系1By关系2Over属性G
41、iving结果公式表示:说明:Yx=y|trRy=trYx=trX。Yx为x在R中的象集x=trX(即Yx为属性X取值x)时,相应的Y值的集合。因此,RS是由关系R在X上分量x的集合,且这些分量x在R中的象集(即X取x值时,相应Y的值的集合)应包含集合SY(S在Y上的投影)。其中R(X,Y),S(Y,Z)。与与前前面面各各种种关关系系运运算算不不同同的的是是,在在除除当当中中首首次次出出现现了了关关于于集集合的比较。合的比较。5除7/27/202463除的示例例:有关系R和S的集合如下所示。求RS。分析:X=SNO,Y=CNO,Z=。RS=850601,850603其实际意义是,求至少同时选修
42、了C501,C504课程的学生学号。对于此题而言,关系R是已知实际存在的,而关系S是临时根据问题形成的。也可以表示成SNO,CNO(SC)K。其中R=SNO,CNO(SC),S=K。关系R学号SNO课号CNO8750601C5018750601C5028750601C5048750602C5018750602C5028750602C5038750603C5018750603C5048750604C5028750605C504关系SCNOC501C504X取x值象集YXSY850601C501,C502,C504C501,C504850602C501,C502,C503C501,C5048506
43、03C501,C504C501,C504850604C502C501,C504850605C504C501,C5047/27/202464实例n例:查询选修了2号课程的学生的学号。Sno(Cno=2(SC)n例:查询至少选修了一门其直接先行课为6号课程的学生姓名。Sname(Cpno=6(Course)SCSno,Sname(Student)或Sname(Sno(Cpno=6(Course)SC)Sno,Sname(Student)n例:查询选修了全部课程的学生学号和姓名。Sno,Cno(SC)Cno(Course)Sno,Sname(Student)Student(Sno,Sname,Sse
44、x,Sage,Sdept)Course(Cno,Cname,Cpno,Ccredit)SC(Sno,Cno,Grade)与Cno集合有关CnoSnoCpnoSnameCno7/27/202465实例n例:找出提供零件P6的供应商号。(SCP#=P6)S#语句表示:SelectSPWhereP#=P6GivingT1ProjectT1OverS#GivingT2S(S#,SNAME,SCITY)P(P#,PNAME,COLOR,WEIGHT)SP(S#,P#,QTY)P#=P3S#7/27/202466实例n例:求至少供应了一种蓝色(blue)零件的供应商姓名。(PCOLOR=Blue*SPS#
45、,P#)S#*SS#,SNAME)SNAME语句表示:SelectPWhereCOLOR=BlueGivingT1ProjectSPOverS#,P#GivingT2JoinT1AndT2OverP#GivingT3ProjectT3OverS#GivingT4ProjectSOverS#,SNAMEGivingT5JoinT4AndT5OverGivingT6ProjectT6OverSNAMEGivingT7COLOR=BlueSNAME7/27/202467实例n例:求供应所有零件的供应商所在城市。(SPS#,P#PP#*SS#,CITY)CITYProjectSPOverS#,P#Gi
46、vingT1ProjectPOverP#GivingT2DivideT1ByT2OverP#GivingT3ProjectSOverS#,CITYGivingT4JoinT3AndT4OverS#GivingT5ProjectT5OverCITYGivingT6P#,与集合操作有关SCITY7/27/20246825关系演算n251元组关系演算语言ALPHAn252QUEL语言介绍n253域关系演算QBE(QueryByExample)7/27/202469251元组关系演算语言ALPHAn1检索n2更新操作Kruth的论文中,最早利用谓词演算(predicatecalculus)作为查询语言
47、的基础。E.F.Codd则是最早将谓词演算用于关系数据语言,即关系演算(RelationCalculus,使用的是一阶谓词演算firstorder)。他提出了DSLALPHA,但没有真正实现。ALPHA的主要语句有:GET,PUT,HOLD,UPDATE,DELETE,DROP。其语句的基本格式为:操作语句工作空间名(表达式):操作条件其中表达式可以是关系名,也可以是属性名,也可以是他们的组合。操作条件则可以空,表示所有。7/27/202470检索n1)简单检索n2)限定条件的检索n3)带排序的检索n4)带定额的检索:指定检索出元组的个数n5)使用元组变量的检索n6)使用存在量词的检索n7)带
48、有多个关系的表达式的检索(多表检索)n8)使用全称量词的检索n9)同时使用两种量词的检索n10)使用蕴含(Implication)的检索n11)使用集函数(aggregationfunction)的检索7/27/2024711)简单检索n简单检索就是不带条件检索,使用GET语句。n例:查询所有被选修课程的课程号码。GETW(SC.CNO)n例:查询所有学生的数据。GETW(Student)7/27/2024722)限定条件的检索n例:查询信息系(IS)中年龄小于20岁的学生的学号和年龄。GET W (Student.Sno,Student.Sage):Student.Sdept=IS Stud
49、ent.Sage207/27/2024733)带排序的检索n例:查询计算机科学系(CS)学生的学号、年龄,并按照年龄降序排列。GETW(Student.Sno,Student.Sage):Student.Sdept=CSDOWNStudent.Sage7/27/2024744)带定额的检索n例:取出一个信息系学生的学号。GETW(1)(Student.Sno):Student.Sdept=ISn例:查询信息系年龄最大的3个学生的学号及其年龄。GETW(3)(Student.Sno,Student.Sage):Student.Sdept=ISDOWNStudent.Sage7/27/202475
50、5)使用元组变量的检索n例:查询信息系学生的名字。RANGEStudentXGETW(X.Sname):X.Sdept=IS因其在某一关系范围内变化,故又称范围变量(rangevariable)。它有两个用途,一是简化关系名(用较短名字的元组变量代替较长名字的关系名),另一是操作条件中使用量词时需要。元组变量是一动态概念,而且一个关系中可以设置多个元组变量。7/27/2024766)使用存在量词的检索n例:查询选修2号课程和学生名字。RANGESCXl例:查询选修了其直接先行课是6号课程的学生学号。-RANGECourseCX7/27/202477续6)n例:查询至少选修了一门其先行课程为6号
51、课程的学生名字。RANGECourseCXSCSCX变换为前束范式(Prenexnormalform):7/27/2024787)带有多个关系的表达式的检索n例:查询成绩为90分以上的学生名字与课程名字。注:这里学生名字来自Student关系Sname列 , 课 程 名 字 则 来 自 Course关 系 的Cname列。RANGESCSCX7/27/202479n例:查询不选1号课程的学生名字。RANGECourseCX可以改为使用存在量词的形式:此例说明,从某种角度上说,全称量词可以由存在量词来代替。8)使用全称量词的检索7/27/2024809)同时使用两种量词的检索n例:查询选修了全部
52、课程的学生姓名。RANGECourseCXSCSCX7/27/20248110)使用蕴含的检索pqpqn例:查询最少选修了95002学生所选课程的学生的学号。思路:对Course中的所有课程,依次检查每一门课程,看95002是否选修了。如果选修了,则再看学生是否也选修了该门课,如果95002所选的课,该学生也都选了(注:这里的蕴含需要用到关于课程的全称量词),则该学生为满足要求的学生。RANGECourseCXSCSCXSCSCYv注:其中SCX用于描述学生95002的选修情形,SCY用于描述其他学生的选修情形。7/27/20248211)使用集函数的检索n例:查询学生所在系的数目。GETW(
53、COUNT(Student.Sdept)v函数会自动排除重复的Sdept值。在有些系统中可能会提供两种不同的计数函数,一种是不计算重复值的计数函数,就象这里使用的;另一种则是计算重复值的计数函数,以便用于特定的目的。n例:查询信息系学生的平均年龄。GETW(AVG(Student.Sage):Student.Sdept=IS)v注意:括号位置的不同,可能对函数有不同的影响集函数(aggregationfunction),或称内部函数(buildinfunction),是在使用查询语言时,为方便用户进行简单的计算而提供的函数。一般有:函数名功能COUNT对元组计数TOTAL求总和MAX求最大值M
54、IN求最小值AVG求平均值7/27/202483更新操作n1)修改一般只针对非主码值,如果要修改主码值,则需要结合其它操作进行,如:n2)插入n3)删除删除时,由于关系之间的参照性,可能导致级联删除。7/27/2024841)修改,用UPDATE实现n用HOLD语句将要修改的元组从数据库中读到工作空间中。n用宿主语言修改工作空间中元组的属性。n用UPDATE语句将修改后的元组送回数据库中。对ALPHA而言,不允许对主码进行修改,对主码的修改实际是通过先删除,再插入新值来完成的。而且,对值的修改并不直接由UPDATE语句实现。HOLD是带并发控制的GET语句。n例:95007学生从计算机系转到信
55、息系。HOLDW(Student.Sno,Student.Sdept):Student.Sno=95007MOVEISTOW.SdeptUPDATEW7/27/2024852)插入,用PUT语句实现n用宿主语言在工作空间中建立新元组。n用PUT语句把该元组存入指定的关系中。n例:学校新开设一门2学分课程“计算机组织与结构”,课程号为8,直接先行课为6号课程。MOVE8TOW.CnoMOE计算机组织与结构TOW.CnameMOVE6TOW.CpnoMOVE2TOW.CCreditPUTW(Course)7/27/2024863)删除,用DELETE语句实现n用HOLD语句把要删除的元组从数据库读
56、到工作空间中。n用DELETE语句删除该元组。n例:95110学生因故退学,删除该学生元组。HOLDW(Student):Student.Sno=95110DELETEW7/27/202487修改主码值n例:将学号95001改为95102HOLDW(Student):Student.Sno=95001DELETEWMOVE95102TOW.SnoMOVE李四TOW.SnameMOVE男TOW.SsexMOVE20TOW.SageMOVECSTOW.SdeptPUTW(Student)7/27/202488级联删除n例:删除全部学生。HOLDW(Student)DELETEWv由于SC关系与St
57、udent关系之间具有参照关系。为保证参照完整性,删除Student关系中的全部元组的操作将导致DBMS自动执行删除SC关系中全部元组的操作:HOLDW(SC)DELETEW7/27/202489252QUEL语言介绍INGRES使用的QUEL(QueryLanguage)是在此基础上研制出来的,与ALPHA十分类似。1.说明2.检索3.更新7/27/202490说明1)元组变量说明语句:rangeof元组变量is关系名n例:rangeofspxisSP即定义了元组变量spx的变化范围是关系SP。对属性的访问须以t.A形式进行(t是元组变量,A是属性)n2)关系演算公式一阶谓词演算(first
58、orderpredicatecalculus)演算公式由下列部分组成:lt.A。t表示关系R的元组变量,A是R的单个属性。t.A表示元组t在属性A上的分量。lxy形式的条件。是比较运算符(=、!=、=中的任一个)。x、y中至少有一个是t.A的形式,另一个可以是t.A的形式,也可以是常量。7/27/202491nl根据下列规则确定的公式:nF1、每个条件xy是一个演算公式。nF2、如果f是演算公式,则(f)和not(f)也是演算公式。nF3、如果f和g是演算公式,则fandg及forg也是演算公式。nF4、如果f、g都是公式,则t(f)、t(f)也是公式。nF5、不存在其它的形式。这说明,元组关
59、系演算公式是t.A形式的简单式子经有限次算术比较运算和逻辑运算及量词(、)复合而成的公式。nt称为存在量词,表示“存在一个t”。nt(f)表示“存在一个元组t,使公式f为真,则t(f)也为真”。nt为全称量词,表示“对所有的t”。nt(f)表示“对所有的t,公式f均为真,则t(f)也为真”。n例:spx(spx.S#=sx.S#andspx.P#=P2)表示“存在有关系SP的元组,其P#的值等于P2”。n而px(px.COLOR=red)表示“对所有的关系P,元组px,其COLOR是red。”n在QUEL中,存在量词、全称量词均隐含表示,被省略掉了。这是容易理解的。一方面存在量词几乎在所有多表
60、操作时都要出现,另一方面,全称量词通常可以由存在量词来替代表示。说明(续)7/27/202492检索格式:retrieve(结果表)where演算公式其中“结果表”为一系列要检索的属性值,以t.A形式表示。n1)简单检索n2)带条件的检索(限定检索)n3)多表检索n4) 聚 集 函 数 ( 集 函 数 , aggregationfunction)n5)排序7/27/202493简单检索n例:找出所有供应商的名字。rangeoftisSretrieve(t.SNAME)n例:找出有关零件的所有数据(打印整个表格)rangeofpxisPretrieve(px.all)其中的all为特殊字汇,表示
61、检索由元组变量指定的关系中所有的列。7/27/202494限定检索n例:求红色(Red)零件的零件号及零件名字。rangeofpyisPretrieve(py.P#,py.PNAME)wherepy.COLOR=”Red”可以指定结果属性的名称,如:retrieve(Pno=py.P#,Pn=py.PNAME)wherepy.COLOR=”Red”Pno和Pn为指定属性名,在显示结果时作为属性名显示。n例:求颜色为绿色(Green)且重量大于17的零件号。rangeofpxisPretrieve (px.P#) where px.COLOR=”Green” andpx.WEIGHT=”17”7
62、/27/202495多表检索n例:求供应P2零件的供应商名字。rangeofspxisSPrangeofsxisSretrieve(sx.SNAME)wheresx.S#=spx.S#andspx.p#=P2其中sx.S#=spx.S#为连接条件,S#为连接属性(共同属性)。n例:求供应红色零件的供应商名字。rangeofsxisSrangeofpxisPrangeofspxisSPretrieve (sx.SNAME) where sx.S#=spx.S# and px.P#=spx.P#列 andpx.COLOR=”Red”n例:求至少供应了供应商S2所供应零件的供应商名字。rangeof
63、spxisSPrangeofspyisSPrangeofsxisSretrieve (sx.SNAME) where sx.S#=spx.S# and spx.P#=spy.P# andspy.S#=”S2”其中spx.P#=spy.P#实际是要判断spx是否包括spy。而spy.S#=”S2”则表示SP中供应了S2的元组。7/27/202496使用集函数聚集操作是指对关系中所有元组在某属性分量进行某种统计,如求和、求平均值等,以得出一个数值,用以表示关系中某些属性的整体特征。QUEL中有:count对元组中元组计数countu对元组中无重复元素计数sum对元组元素求和avg对元组元素求平均值
64、max对元组元素求最大值min对元组元素求最小值示例7/27/202497集函数使用示例n例:求巴黎(Paris)城市供应商的数目。rangeofeisSretrieve(number=count(e.S#wheree.CITY=”Paris”)在 执 行 聚 集 运 算 时 须 指 定 一 名 字 ( 如 此 处 的 number) , 将count(e.S#)赋给number。在聚集函数中可以包含where子名来限制计算中用到的值。此处的限制是只对城市名为“Paris”的城市进行计数。不能写成:retrieve(number=count(e.S#)wheree.CITY=”Paris”如果
65、这样,where子句对count函数就不起作用了。n例:求供应商所在城市数目。rangeoftisSretrieve(citynum=countu(t.CITY)n例:求供应商S1供应的零件总数。rangeofspxisSPretrieve(Partnum=sum(spx.QTYwherespx.s#=”S1”)7/27/202498排序使用sortby子句。n例:找出零件号和零件重量,并要求按零件重量升序(从小到大的顺序)排列这些元组。rangeofeisPretrieve(e.P#,e.WEIGHT)sortbyWEIGHT:ascendingn例:找出供应商供应的零件号及数量,要求按零件
66、号降序排列。rangeofspxisSPretrieve(spx.P#,spx.QTY)sortbyP#:descending7/27/202499更新n1)插入(append)例:在关系S中插入元组(“S4”,”John”,”20”,”London”)appendtoS(S#=”S4”,SNAME=”John”,STATUS=”20”,CITY=”London”)n2)删除(delete)例:删除供应商S1供应的红色零件。rangeofspxisSPrangeofpxisPdeletespxwherespx.P#=px.P#andpx.COLOR=”Red”andspx.S#=”S1”n3)
67、修改(replace)例:将供应商S2供应的P2零件数量修改为200。rangeofeisSPreplacee(QTY=200)wheree.S#=”S2”ande.P#=”P2”例:S1供应的所有零件均在原来的数量上增加100。rangeofeisSPreplacee(QTY=100+e.QTY)wheree.S#=”S1”7/27/2024100253域关系演算QBE(QueryByExample)1975年M.M.Zloof提出,1978年在IBM370上实现。它是高度非过程化,基于屏幕表格。n1检索操作。P(print)n2更新操作。U(update)、I(insert)、D(dele
68、te)7/27/2024101检索操作n1)简单查询n2)条件查询(限定条件的检索)n3)集函数n4)排序7/27/2024102简单查询1.用户提出要求。2.屏幕显示空白表格。3.用户在第一栏(最左)输入关系名(如Student)。4.屏幕显示该关系的栏名(即Student关系的各属性名)。5.用户在表格上构造查询要求,如条件、结果示例。6.屏幕显示查询结果。示例结果格式:命令.示例元素值命令有P、U、I、D。示例元素用于表示域变量,加下划线,为该域中可能的一个值,不必为结果中的元素值。如求计算机科学系的学生。StudentSnoSnameSsexSageSdeptP.李四CS注:条件中可以
69、加比较运算符,如、=、=、=等。其中=可以省略。上例Sdept栏上填的CS即表示条件:Sdept=CS。如果要显示所有信息,有两种方式。一种是在所有属性列对应的栏中填入示例结果;另一种则在关系栏中填入命令,如:StudentSnoSnameSsexSageSdeptP.7/27/2024103条件查询与两个条件写在同一行上两个条件不在同一行,但使用相同的示例元素值,如或两个条件不在同一行,且使用不同的示例元素值。非表示否定,使用多个表的连接:在两个表中连接的属性所对应的示例元素值一样,如查询选修1号课程的学生姓名StudentSnoSnameSsexSageSdept95001P.李四SCSn
70、oCnoGrade950011上述两表中的Sno为连接属性。非的应用:查询未选修1号课程的学生姓名(在上例的SC栏中的)。7/27/2024104条件查询(续)又例:查询有两个人以上选修的课程号SCSnoCnoGrade95001P.1950011其中95001表示另一个学生。两行合起来表示两个不同的学生选修了同一门课程。7/27/2024105集函数有CNT,SUM,AVG,MAX,MIN例:查询信息系学生的平均年龄。P.AVG.ALL就是集函数的一个应用实例,表示对所有符合条件的元组进行平均值的计算。StudentSnoSnameSsexSageSdeptP.AVG.ALLISDO(2)A
71、O(1)7/27/2024106排序AO表示升序,DO表示降序。一般表示为AO(i)或DO(i),其中i表示排序的优先级,越小越高。所以在上面的例子中,表示对结果按Sdept、Sname的次序依次进行排序。7/27/2024107更新操作在修改操作中,也不能修改主码,修改主码相当于先删除后插入(D+I)。修改命令可放在属性栏,也可放在关系栏(涉及表达式时,只能放在关系栏),如加一岁:StudentSnoSage1xU.1x+17/27/202410826关系数据库管理系统关 系 系统关系数据库(即关系数据结构),由表构成,且只有表结构。支持选择、投影和(自然)连接运算,不要求用户定义任何物理存
72、取路径。1表式系统:这类系统仅支持关系数据结构(即表),不支持集合的操作。实际上不能算关系系统。如倒排表列(invertedlist)系统。2(最小)关系系统:即上面定义的关系系统。它支持数据结构和选择、投影、连接三种关系操作。如微机关系系统Foxbase、FoxPro等。3关系上完备的系统:这类系统支持关系数据结构和所有的关系代数操作(功能上与关系代数等价)。如DB2、Oracle等。4全关系系统:这类系统支持关系模型的所有特征,特别是数据结构中域的概念、实体完整性和参照完整性(如删除学生95001,还要删除该学生选修的课程,Oracle中可以使用用户定义的触发器的方式来实现这一完整性约束)
73、。这类系统目前尚没有,DB2、Oracle等接近。7/27/2024109操作示意SnoSnameSsexSageSdept95001张三男20CS96010李思思女19IS95041王五男17CS97101郑路路女18MA96104任西女20MA96023丁八男19ISCnoCnameCpnoCcredit1数据库542数学23信息系统144操作系统635数据结构746C语言64StudentCourseSnoCnoGrade950011919500128395001386950412789504138295041692960104819610446996023494SCT1=Cno=2(S
74、C)9500195041SnoSno(T1)StudentCourseSCmn7/27/2024110操作示意SPSPmnS#SnameScityS1SmithLondonS2JonesParisS3BlakeParisS4ClarkLondonS5AdamsAthensP#PnameColorWeightP1NutRed12P2BoltGreen17P3ScrewBlue17P4ScrewRed14P5CamBlue12P6CogRed19S#P#QtyS1P1300S1P2200S1P3400S1P4200S1P5100S1P6100S2P1300S2P2200S3P2200S4P2200S4P4300S4P5400SPSP7/27/2024111第6章数据库设计n61数据库设计的步骤n62需求分析n63概念结构设计n64逻辑结构设计n65数据库物理设计n66数据库实施n67数据库运行与维护7/27/2024112第7章关系数据库管理系统实例n71产品概述n72ORACLEn73MICROSOFTSQLSERVER7/27/2024113第8章数据库技术新进展n8.1数据库技术发展概述n8.2分布式数据库n8.3移动数据库7/27/2024114