数据库技术与应用

上传人:m**** 文档编号:568546714 上传时间:2024-07-25 格式:PPT 页数:124 大小:789.50KB
返回 下载 相关 举报
数据库技术与应用_第1页
第1页 / 共124页
数据库技术与应用_第2页
第2页 / 共124页
数据库技术与应用_第3页
第3页 / 共124页
数据库技术与应用_第4页
第4页 / 共124页
数据库技术与应用_第5页
第5页 / 共124页
点击查看更多>>
资源描述

《数据库技术与应用》由会员分享,可在线阅读,更多相关《数据库技术与应用(124页珍藏版)》请在金锄头文库上搜索。

1、上一页上一页下一页下一页返回首页返回首页数据库技术与应用Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望上一页上一页下一页下一页返回首页返回首页上一页上一页下一页下一页返回首页返回首页编委会名单编委会名单主任:主任:俞瑞钊副主任:副主任:陈庆章 周必水 刘加海委员委员 (以姓氏笔画为序)王 雷 王筱慧 方 程 方锦明 卢菊洪 代绍庆吕何新 朱 炜 刘向荣 江爱民 江锦祥 孙光第李天真 李永平 李良财 李明钧 李益明 余根墀汪志达 沈凤池 沈安衢 张 元 张学辉 张锦祥 张德发 陈月波

2、 陈晓燕 邵应珍 范剑波 欧阳江林周国民 周建阳 赵小明 胡海影 秦学礼 徐文杰 凌 彦 曹哲新 戚海燕 龚祥国 章剑林 蒋黎红 董方武 鲁俊生 谢 川 谢晓飞 楼 丰 楼程伟 鞠洪尧秘书长:秘书长:熊盛新上一页上一页下一页下一页返回首页返回首页 1. 1.本软件用本软件用PowerPointPowerPoint制作而成,播放亦在其状态下进制作而成,播放亦在其状态下进行,为了更好地使用该软件行,为了更好地使用该软件, ,使用者需掌握使用者需掌握PowerPointPowerPoint的基本的基本操作原理和方法。操作原理和方法。 . .本软件内容丰富、新颖,突破传统教学模式,在多媒体教室使本软件

3、内容丰富、新颖,突破传统教学模式,在多媒体教室使用时,使用者应注意这一变化,改变教学方法,充分发挥其功效。用时,使用者应注意这一变化,改变教学方法,充分发挥其功效。同时也应注意本软件仍是一教学辅助工具,授课时应与讲授相结合同时也应注意本软件仍是一教学辅助工具,授课时应与讲授相结合使其更好地为教学服务。使其更好地为教学服务。. .本软件内容完整,自成体系,对于使用者的不同情况,用本软件本软件内容完整,自成体系,对于使用者的不同情况,用本软件授课时,可补充所需内容,链入其它媒体信息,或同其它软(如授课时,可补充所需内容,链入其它媒体信息,或同其它软(如CS CS ChemDrawChemDraw等

4、)共同使用,以达到多媒体辅助教学的良好效果。等)共同使用,以达到多媒体辅助教学的良好效果。. .多媒体教学信息量大,传递速度快,用本软件授课时,应多媒体教学信息量大,传递速度快,用本软件授课时,应 熟悉播放程序,注意控制播放速度,要使观看者有充足的思熟悉播放程序,注意控制播放速度,要使观看者有充足的思 考时间。考时间。注意事项上一页上一页下一页下一页返回首页返回首页 数据库技术是计算机科学技术中发展最快的应用之一,已经成为计算机信息系统与应用系统的核心技术,它与网络技术构成计算机应用的两个平台。数据库技术与应用课程已成为高职高专院校计算机教学中的主干课程,是计算机应用专业的必修基础课程。 本着

5、高职高专教学突出理论知识的应用和实践能力的培养,基础理论以必需、够用为度,专业教学加强针对性和实用性等原则,将课程的相关内容分为基础篇、应用篇和实训篇。课程中既安排了目前使用非常广泛的桌面数据库管理系统Access,让学生学会使用Access数据库的基本方法,也全面介绍了当前主流大型网络数据库系统SQL Server ,同时还介绍了数据库应用系统开发的基本方法。 前 言上一页上一页下一页下一页返回首页返回首页第第1章章 数据数据库技技术概概论 第第2章章 关系数据关系数据库 第第3章章 关系数据关系数据库语言言SQL 第第4章章 数据数据库设计 数据库技术与应用之基础篇上一页上一页下一页下一页

6、返回首页返回首页1.1 数据与数据管理 1.2 数据管理技术的发展 1.3 数据库基本概念 1.4 数据库系统的体系结构 1.5 数据库保护 第一章 数据库技术概论上一页上一页下一页下一页返回首页返回首页1.1 数据与数据管理1什么是数据库数据库是长期存储在计算机内有组织、可共享的数据集合。数据库好比是存放数据的仓库,里面存放各式各样的相关数据。图书馆可视作一个数据库,书架对应表格,书籍对应原始数据,书名或作者名的目录卡片对应索引2数据与信息数据是指用符号记录下来的可以区别的信息;信息是关于现实世界中事物的存在方式或运动形态的反映,是人们进行各种活动所需的知识。数据是信息的载体,信息是被人们消

7、化的数据 上一页上一页下一页下一页返回首页返回首页1.1数据与数据管理3数据处理数据处理指将数据转换成信息的过程,广义也讲,数据处理包括对数据的收集、存储、传播、检索、分类、加工或计算、打印各类报表或输出各种需要的图形等一系列活动;狭义也讲,数据是指对所输入的数据进行加工整理。4数据管理 在数据处理的一系列活动中,数据收集、存储、传播、检索、分类等操作是基本环节,这些基本环节统称为数据管理。数据与信息之间的关系可以表示为: 信息 = 数据 + 数据处理上一页上一页下一页下一页返回首页返回首页1.2 数据管理技术的发展数据管理技术发展的三个阶段计算机数据管理大致经历了三个阶段:人工管理方式阶段文

8、件管理方式阶段数据库管理方式阶段上一页上一页下一页下一页返回首页返回首页1.2.1 人工管理方式阶段1基本情况20世纪50年代中期以前,计算机主要用于科学计算。硬件方面,外存储器只有卡片、纸带、磁带,没有像磁盘这样的可以随机访问、直接存取的外部存储设备。软件方面,没有专门管理数据的软件,数据由计算机或处理它的程序自行携带。数据处理方式基本是批处理。上一页上一页下一页下一页返回首页返回首页1.2.1 人工管理方式阶段2特点特点1:数据和程序不具有独立性。一组数据对应一组程序,这就使得程序依赖于数据,如果数据的类型、格式或者数据量、存取方法、输入输出方式等改变了,程序必须做相应的修改。特点2:数据

9、不能长期保存。由于数据是面向应用程序的,在一个程序中定义的数据,无法被其它程序利用,因此,程序与程序之间存在大量的重复数据。特点3:系统中没有对数据进行管理的软件。数据管理任务,包括存储结构、存取方法、输入输出方式等完全由程序设计人员自负其责,这就给应用程序设计人员增加了很大的负担。上一页上一页下一页下一页返回首页返回首页1.2.2 文件管理方式阶段1基本情况20世纪50年代后期至60年代中后期,大量的数据存储、检索和维护成为紧迫的需求。数据处理方式有批处理,也有联机实时处理。程序与数据有了一定的独立性,程序与数据分开存储,有了程序文件和数据文件的区别。数据文件可以长期保存在外存储器上多次存取

10、,如进行查询、修改、插入、删除等操作。数据的存取以记录为基本单位,并进行了多种文件组织形式,如顺序文件、索引文件、随机文件等。在文件系统的支持下,数据的逻辑结构与物理结构之间可以有一定的差别,逻辑结构与物理结构之间的转换由文件系统的趣取方法来实现。数据与程序之间有设备独立性,程序只需用文件名访问数据,不必关心数据的物理位置。这样,程序员可以集中精力在数据处理的算法上,而不必考虑数据存储的具体细节。上一页上一页下一页下一页返回首页返回首页1.2.2 文件管理方式阶段2存在问题问题1:据冗余大。数据冗余是指不必要的重复存储,同一数据项重复出现在多个文件中。问题2:缺乏数据独立性。文件系统中的数据文

11、件是为某一特定的应用而设计的,数据与程序相互依赖,如果改变数据的逻辑结构或文件的组织方法,必须修改相应的应用程序,反之也是。问题3:数据无集中管理。数据文件均由相应的应用程序管理和维护,没有统一的管理机制。造成数据文件之间无法进行联系,不能反映现实世界事物之间的联系。上一页上一页下一页下一页返回首页返回首页1.2.3 数据库管理方式阶段1基本情况从20世纪60年代后期开始,需要计算机管理的数据量急剧增长,并且对数据共享的需求日益增强。为了解决数据的独立性问题,实现数据的统一管理,达到数据共享的目的,出现了数据库技术。数据库是通用化的相关数据集合。它不仅包括数据本身,而且包括关于数据之间的联系。

12、为数据库的建立、使用和维护而配置的软件称为数据库管理系统(DBMS)。它是在操作系统支持下运行的。目前较为流行的数据库管理系统包括:Oracle、Informix、SQLserver及微机上DBMS(dDBASE、FoxBASE、FoxPro等)。数据库已成为各类信息系统的核心基础。上一页上一页下一页下一页返回首页返回首页1.2.3 数据库管理方式阶段2优点实现数据共享,减少数据冗余。数据库中存放通用化的综合数据,某一应用通常仅使用总体数据的子集。数据高度结构化。数据库中的数据是有结构的,它是用某种数据模型表示出来的,这种结构既反映文件内数据之间的联系,也反映文件之间的联系。具有较高的数据独立

13、性。在数据库系统中,DBMS提供映象功能,确保应用程序对数据结构和存取方法有较高的独立性。数据的物理存储结构与用户看到的逻辑结构可以有很大的差别。用户只以简单的逻辑结构来操作数据,无需考虑数据在存储器上的物理位置与结构。有统一的数据控制功能。数据库作为用户与应用程序的共享资源,对数据的存取往往是并发的,即多个用户同时使用同一个数据库。数据库管理系统必须提供并发控制功能、数据的安全性控制功能和数据完整性控制功能。上一页上一页下一页下一页返回首页返回首页1.3 数据库基本概念1数据库系统(DBS或DBAS)数据库系统(DBS)也称为数据库应用系统(DBAS),是指具有管理和控制数据库功能的计算机应

14、用系统。数据库系统由5部分组成:硬件系统、数据库集合、数据库管理系统及相关软件、数据库管理员(DBA)和用户。硬件系统是整个数据库系统的基础,数据库集合是若干个设计合理、满足应用需求的数据库。数据管理系统是为数据库的建立、使用和维护而配置的软件,是数据库系统的核心组成部分;相关软件是支持软件,如操作系统等。数据库管理员是全面负责建立、维护和管理数据库系统的人员。用户是最终系统的使用和操作人员。上一页上一页下一页下一页返回首页返回首页1.3 数据库基本概念2DBA职责1.安装和升级数据库服务器(如ORACLE.、MICROSOFTSQLSERVER),以及应用程序工具2数据库设计系统存储方案,并

15、制定未来的存储需求计划3开发人员设计了一个应用,就需要DBA来创建数据库存储结构4开发人员设计了一个应用,就需要DBA来创建数据库对象5根据开发人员的反馈信息,必要的时候,修改数据库的结构6登记数据库的用户,维护数据库的安全性7保证数据库的使用符合知识产权相关法规8监控和优化数据库的性能9控制和监控用户对数据库的存取访问10制定数据库备份计划,灾难出现时对数据库信息进行恢复11维护适当介质上的存档或者备份数据12备份和恢复数据库13.联系数据库系统的生产厂商,跟踪技术信息。DBA的认证:IBMORACLEMICROSOFT上一页上一页下一页下一页返回首页返回首页1.3 数据库基本概念3数据库管

16、理系统(DBMS)数据库管理系统(DBMS)作为数据库系统的核心软件,其主要目标是数据成为方便用户使用的资源,易于为各类用户所共享,并增加数据的安全性、完整性和可用性。DBMS具有下列功能:数据库的定义功能提供数据定义语言DDL或操作命令,以便对各级数据模式进行精确的描述。上一页上一页下一页下一页返回首页返回首页1.3 数据库基本概念3数据库管理系统(DBMS)数据操纵功能为了对数据库中的数据进行追加、插入、修改、删除、检索等操作命令,称为数据操作语言DML。可以分为两类:一类是DML可以独立交互式使用,不依赖于任何程序设计语言,称为自含或自主型语言。另一类是宿主型DML,嵌入到宿主语言中使用

17、。如嵌入到C程序设计语言中,在使用高级语言编写的应用程序中,需要调用数据库中的数据时,则要用宿主型DML语句来操纵数据。上一页上一页下一页下一页返回首页返回首页1.3 数据库基本概念3数据库管理系统(DBMS)数据库运行控制功能数据库中的数据是提供给多个用户共享的,用户对数据的存取可能是并发的,即多个用户同时使用一个数据库。DBMS必须提供以下3方面的数据控制功能:并发控制功能,数据的安全性控制。数据的完整性控制。数据字典数据字典DD中存放着对实际数据库各级模式所做的定义,即对数据库结构的描述。这些数据是数据库系统中有关数据的数据,称之为元数据。DD提供了对数据库数据描述的集中管理手段,对数据

18、库的使用和操作都通过查阅数据字典来进行。上一页上一页下一页下一页返回首页返回首页1.3 数据库基本概念4数据模型数据模型是指数据以及数据之间的联系的描述 数据库管理系统所支持的数据模型有四种:层次模型、网状模型、关系模型、面向对象模型。层次模型用树形结构来表示各类实体以及实体间的联系。每个结点表示一个记录类型,结点之间的连线表示记录类型间的联系,这种联系只能是父子联系。网状数据模型是一种比层次模型更具普遍性的结构,它去掉了层次模型的两个限制,允许多个结点没有双亲结点,允许结点有多个双亲结点,此外它还允许两个结点之间有多种联系(称之为复合联系)。在用户看来,一个关系模型的逻辑结构是一张二维表,它

19、由行和列组成 上一页上一页下一页下一页返回首页返回首页1.4 数据库系统的体系结构1模式的概论模式是数据库中全体数据的逻辑结构和特征的描述,它仅仅涉及模式的描述,不涉及具体的值。2数据库系统的三级体系结构用户使用的数据视图叫做外模式,又称子模式,是一种局部的逻辑数据视图,表示用户所理解的实体、实体属性和实体关系。全局的逻辑数据视图叫概念模式,简称为模式,是数据库管理员所看到的实体、实体属性和实体之间的关系。数据的物理存储模式叫做内模式,也称物理模式。 子模式是模式的子集,可以从模式推导出来。上一页上一页下一页下一页返回首页返回首页1.4 数据库系统的体系结构数据库三级模式结构 上一页上一页下一

20、页下一页返回首页返回首页1.4 数据库系统的体系结构3数据库的两级映象子模式与模式之间的映象:定义了各子模式与模式之间的映射关系。当整个系统要求改模式时,可以改变映射关系而保持子模式不变。这种用户数据独立于全局的逻辑数据的特性即为逻辑数据独立性;模式与物理模式之间映象:定义了模式与物理模式的映射关系。当为了某种需要改变物理模式时,可以同时改变两者之间的映射而保持模式与子模式不变,这种全局的逻辑数据独立于物理数据的特性即为物理数据独立性。上一页上一页下一页下一页返回首页返回首页1.5 数据库保护1安全性保护防止未被授权者非法存取数据。可采用方法:鉴定用户身份、口令、用密码记载数据、控制用户权限。

21、2完整性保护: 指数据正确性和一致性。完整性保护可以通过对数据及数据之间的逻辑关系施加约束条件来实现,约束条件有:值约束、结构约束、动态约束。 上一页上一页下一页下一页返回首页返回首页1.5 数据库保护3故障恢复保护 备份与恢复。 4并发控制保护: 多用户共享数据时,而造成数据不一致性。用加锁的方法进行保护。 上一页上一页下一页下一页返回首页返回首页2.1 关系的数学定义 2.2 关系数据库 1.3 关系运算 第二章 关系数据库上一页上一页下一页下一页返回首页返回首页2.1 关系的数学定义1二维表与关系学号姓名性别籍贯系别0101张军男杭州工商0202李军男宁波信息学生信息表学生信息表上一页上

22、一页下一页下一页返回首页返回首页2.1 关系的数学定义上述二维表(或简称表)表示了学生类型的一些实体,每个二维表又称为关系。 学生信息表是表名,在关系数据库中,表名对应于数据库名(或关系名)。 表头由一些反映实体属性的属性名组成,它对应于数据库结构描述,定义了实体的型,在表上属性名必须是唯一,不允许重名。表体是由一些行(元组或称记录)组成,它是数据库的内容及数据库操作对象。一个元组对应于文件系统中的一个记录,一个记录含有若干个域用以存储属性值。一个元组对应于一个学生实体。表体中的列反映实体的属性。 上一页上一页下一页下一页返回首页返回首页2.1 关系的数学定义2关系的数据定义域(Domain)

23、是值(Value)的集合如:整数、实数、0,1,2,3、真、假、(杭州,0571)、(宁波,0574) 域,若是一个有限集,其元数的个数叫做域的基数。如1,2,3,4,5的基数为5。给定一组域D1,D2,Dn, 这些域中有些域可以是相同的。D1,D2,Dn的笛卡尔乘积为D1D2Dn= d1,d2,dndiDi,i=1,2,n,其中每一个元素( d1,d2,dn)叫做一个n元组,或简称元组。D1D2Dn的子集叫作域D1,D2,Dn上的关系,用R(D1,D2,Dn)表示,这里的R表示关系的名字,n是关系的度(或叫元数)。 上一页上一页下一页下一页返回首页返回首页2.1 关系的数学定义3关系的相关概

24、念关系是笛卡积的子集,所以关系也是一个二维表,表的每行对应一个元组,表的每列对应一个域。由于域可以相同,为了加以区分,必须对每列起一个名字,称为属性(Attribute)。n目关系必有n个属性。 若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码(Candidatekey)。 若一个关系有多个候选码,则选定其中一个为主码(Primarykey)。主码的诸属性称为主属性(Primeattribute)。不包含在任何侯选码中的属性称为非码属性(Non-keyattribute)。在最简单的情况下,侯选码只包含一个属性。在最极端的情况下,关系模式的所有属性组是这个关系模式的侯选码,称

25、为全码 (All-key)上一页上一页下一页下一页返回首页返回首页2.1 关系的数学定义4关系的三种类型 基本关系(通常又称为基本表或基表)、查询表和视图表。基本表是实际存在的表,它是实际存储数据的逻辑表示。查询表是查询结果对应的表。视图表是由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据。 上一页上一页下一页下一页返回首页返回首页2.1 关系的数学定义5关系的性质在关系数据库中,要求关系中的每一个分量是不可再分的数据项, 关系数据库中的关系应具有以下性质:列是同质的,即每一列中的分量均是同类型的数据,即均来自同一个域。 不同的列可以出自同一个域,每一列称为一个属性,要给予不同的列不

26、同的属性名。 列的顺序是无所谓的,即列的次序可以变换。 任意两个元组不能完全相同。 行的顺序是无所谓的,即行的次序可以变换。 每一分量必须是不可再分的数据项。 上一页上一页下一页下一页返回首页返回首页2.2 关系数据库1关系模型关系模型是由三部分组成:数据结构(即关系)、关系操作、关系完整性。在关系模型中,无论是实体还是实体之间的联系均由单一的类型结构-关系来表示。 关系模式是指关系的描述,即对关系名、组成关系的各属性名、属性到域的映射、属性间的数据依赖关系等等。关系模式通常简记为R(A1,A2,An)关系数据库是指数据库结构的描述,它包括关系数据库名,若干属性的定义,以及这些属性上的若干关系

27、模式。上一页上一页下一页下一页返回首页返回首页2.2 关系数据库2关系操作关系模型规定了关系操作的功能和特点,但不对DBMS语言的语法做出具体的规定。关系数据库语言的主要优点是其高度的非过程化,用户只须知道语句做什么,而不须知道怎么做。关系操作主要有:并、交、差、选择、投影、连接等,其中选择、投影及连接是最基本的关系操作。这些操作均对关系的内容或表体实施操作的,得到的结果仍为关系。关系操作的特点是集合操作,即操作对象和结果都是集合。上一页上一页下一页下一页返回首页返回首页2.2 关系数据库3关系模型的完整性关系模型的三类完整性:实体完整性、参照完整性及用户定义的完整性。实体完整性和参照完整性是

28、任何关系模型都有必须满足的完整性约束条件,应该由关系数据库DBMS自动支持。用户定义的完整性的支持是由DBMS提供完整性定义设施,可以随DBMS商品软件不同而有所变化。上一页上一页下一页下一页返回首页返回首页2.2 关系数据库4实体完整性(EntityIntegrity) 一个基本关系通常对应现实世界的一个实体集。例如学生关系对应于学生的集合。现实世界中的实体是可区分的,即它们具有某种唯一性标识。相应地,关系模型中以主码作为唯一性标识。主码中的属性即主属性不能取空值。所谓空值就是“不知道”或“无意义”的值。如果主属性取空值,就说明存在某个不可标识的实体,即存在不可区分的实体,这与现实世界的应用

29、环境相矛盾,因此这个实体一定不是一个完整的实体。规则:实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。上一页上一页下一页下一页返回首页返回首页2.2 关系数据库4参照完整性(Referentialintegrity) 定义定义 设F是基本关系R的一个或一组属性,但不是关系R的码,如果F与基本关系S的主码Ks相对应,则称F是基本关系R的外码(Foreignkey),并称基本关系R为参照关系(Referencingrelation),基本关系S为被参照关系(Referencedrelation)或目标关系(Targetrelation)。关系R和S不一定是不同的关系。参照完整性规

30、则就是定义外码与主码之间的引用规则。规则2.2参照完整性规则:若属性(或属性组)F是基本关系R的外码,它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为: 或者取空值(F的每个属性值均为空值); 或者等于S中某个元组的主码值。上一页上一页下一页下一页返回首页返回首页2.2 关系数据库5用户定义完整性(User-definedintegrity) 实体完整性和参照性适用于任何关系数据库系统。除此之外,不同的关系数据库系统根据其应用环境的不同,往往还需要一些特殊的约束条件,用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所

31、涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不要由应用程序承担这一功能。 上一页上一页下一页下一页返回首页返回首页2.2 关系数据库6关系数据语言 关系数据语言可分为三类:数据描述语言DDL,数据操纵语言DML和数据控制语言DCL。 DDL负责数据库的描述,提供一种数据描述机制,用来描述数据库的特征或数据的逻辑结构。DML负责数据库的操作,提供一种数据处理操作的机制。DCL负责控制数据库的完整性和安全性,提供一种检验完整性和保证安全的机制。上一页上一页下一页下一页返回首页返回首页2.2 关系数据库7DML语言 DML包括数据查询和数

32、据的增、删、改等功能。其中查询的表达方式是DML的主要部分。 关系数据库的DML按照查询方式可以分为两大类:用对关系的集合运算来表示查询方式,称为关系代数;用谓词演算来表达查询方式,称为关系演算; 关系代数和关系演算均是抽象的查询语言,是实际DBMS软件产品中实现的具体查询语言的理论基础。 结构化查询语言SQL是介于关系代数和关系演算之间的一种语言,SQL是集DDL、DML、DCL为一体的标准的关系数据库语言。上一页上一页下一页下一页返回首页返回首页2.3 关系运算1传统的集合运算传统的集合运算是二目运算。设关系R和关系S具有相同的度,且相应的属性值取自同一个域,则它们之间能进行并、交及差运算

33、并运算:两个关系R与S的并记为RS,它是一个新的关系,由属于R或属于S的元组组成,可形式地定义为: RS=ttRtS其中t是元组变量,表示关系中的元组。交运算:两个关系R与S的交记为RS,它是由属于R且属于S的元组组成,可形式地定义为:RS=ttRtS差运算:两个关系R与S的并记为R-S,它是由属于R但不属于S的元组组成,可形式地定义为:R-S=ttRnot(tS)上一页上一页下一页下一页返回首页返回首页2.3 关系运算2专门的关系运算选择选择运算是从某个给定的关系中筛选出满足限定条件的元组子集,它是一元关系运算。可形式定义为:F(R)=ttRF(t)其中,F是筛选关系R中元组的限定条件的布尔

34、表达式,它由逻辑运算符、连接各算术表达式组成。学生信息表S如下:例:查询信息系全体学生:SD信息(S)学号S#姓名SN系名SD年龄SA0101张军工商200202李军信息19上一页上一页下一页下一页返回首页返回首页2.3 关系运算3专门的关系运算投影选择运算是从某个关系中选取一个“行”的子集,而投影运算实际上是生成一个关系的“列”的子集,它从给予定的关系中保留指定的属性子集而删去其余属性。设某关系R(X),X是R的属性 集 , A是 X的 一 个 子 集 , 则 R在 A的 投 影 可 表 示 为 :A(R)=tAtR其中,tA表示元组相应A属性中的分量。例:查询学生的姓名和所在系:SN,SD

35、(S)上一页上一页下一页下一页返回首页返回首页2.3 关系运算4专门的关系运算连接连接也称为连接。它是从两个关系的笛卡尔积中选取属性间满足一定条件的元组,连接运算中有两种最为重要也最为常用的连接,一种是等值连接(equi-join),另一种是自然连接(Naturaljoin)。为“”的连接运算称为等值连接。它是从关系R与S的笛卡尔积中选取A、B属性值相等的那些元组 自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且要在结果中把重复的属性去掉。 一般的连接操作是从行的角度进行运算。但自然连接还 需要取消了重复列,所以是同时从行和列的

36、角度进行运算。上一页上一页下一页下一页返回首页返回首页2.3 关系运算5专门的关系运算除 一个m元关系R除以一外n元关系S(其中mn,S非空关系并且R中存在n个属性与S的n个属性定义在相同的域)所得到的结果是一个(m-n)元的新的关系,它表示满足以下条件的元组集合:RS=t(m-n)对任一t(n)S都有t(m-n)。t(n)R其中t(m-n)。t(n) 表示一个(m-n)元的元组和一个n元的元组拼合成一个m元的新元组。 上一页上一页下一页下一页返回首页返回首页2.3 关系运算6关系代数运算举例学生关系S同前面的一样,课程关系C(课程号C#,课程名CN,任课教师CT)和学生选课关系SC(学号S#

37、,课程号C#,成绩G)例1:查询年龄小于20岁的学生 sage20(Student) 例2:检索学习课程C2的学生的学号与成绩 S#,G(C#=C2(SC) 例3:求出学习全部课程的的学生名单 SN(S(S#,C#(SC)C#(C) 上一页上一页下一页下一页返回首页返回首页2.3 关系运算例4、将新开课程记录(C6,Q,R)插入到关系C中 C(C6,Q,R)例5、将学号为S3学生的C4课程的成绩改为A(SC(S3,C4,?)(S3,C4,A)例6、求同时选修课程C1和C2的学生姓名 C12=C# (C#=C1OR C#=C2(C) SC12= S#,C#(SC)C12 S12=SN(SSC12

38、)上一页上一页下一页下一页返回首页返回首页3.1 SQL 数据定义 3.2 数据查询 3.3 SQL数据更新 3.4 数据控制 第三章 关系数据库语言SQL上一页上一页下一页下一页返回首页返回首页3.1 SQL数据定义1SQL介绍SQL是英文Structured Query Language的缩写,意思为结构化查询语言。SQL语言的主要功能就是同各种数据库建立联系,进行沟通。按照ANSI(美国国家标准协会)的规定,SQL被作为关系型数据库管理系统的标准语言。SQL语句可以用来执行各种各样的操作,例如更新数据库中的数据,从数据库中提取数据等。目前,绝大多数流行的关系型数据库管理系统,如Oracl

39、e, Sybase, Microsoft SQL Server, Access等都采用了SQL语言标准。虽然很多数据库都对SQL语句进行了再开发和 扩 展 , 但 是 包 括 Select, Insert, Update, Delete, Create, 以及Drop在内的标准的SQL命令仍然可以被用来完成几乎所有的数据库操作SQL语言的版本包括:SQL-89,SQL-92,SQL3上一页上一页下一页下一页返回首页返回首页3.1 SQL数据定义2SQL动词数据查询:SELECT数据定义:CREAT,DROP,ALTER数据操纵:INSERT,UPDATE,DELETE数据控制:GRANT,RE

40、VOKE 上一页上一页下一页下一页返回首页返回首页3.1 SQL数据定义3示例数据库结构“学生课程”数据库中包括三个表:(1)“学生”表Student由学号(Sno)、姓名(Sname)、性别(Ssex)、年龄(Sage)、所在系(Sdept)五个属性组成,可记为: Student(Sno,Sname,Ssex,Sage,Sdept) (2) 关键字Sno(2) “课 程 ”表 Course由 课 程 号 ( Cno) 、 课 程 名(Cname)、先修课号(Cpno)、学分(Ccredit)四个属性组成,可记为: Course(Cno,Cname,Cpno,Ccredit) 关键字 Cno(

41、3) “学生选课”表SC由学号(Sno)、课程号(Cno)、成 绩 ( Grade) 三 个 属 性 组 成 , 可 记 为 : SC(Sno,Cno,Grade) 关键字(Sno, Cno)上一页上一页下一页下一页返回首页返回首页3.1 SQL数据定义4创建基本表一般格式如下:CREATE CREATE TABLE TABLE ( 列列级级完完整整性性约约束束条条件件 , 列列级级完完整整性性约约束束条条件件.) ,.) ,; 例1 建立一个“学生”表Student,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept五个属性组成,其中学号属性不能为空,并且其值是唯一

42、的。 CREATE TABLE Student (Sno CHAR(5) NOT NULL UNIQUE, Sname CHAR(20), Ssex CHAR(1), Sage INT, Sdept CHAR(15);上一页上一页下一页下一页返回首页返回首页3.1 SQL数据定义SQL提供的基本数据类型: 数 值 型 : 包 括 integer、 real、 float,numeric等字符串型:char(n)、varchar(n),前者是定长,后者为 变长串 位 串 型 : bit(n),bit varying(n), 同 上 。 时间型:date、time。上一页上一页下一页下一页返回首页

43、返回首页3.1 SQL数据定义5修改基本表一般格式如下:ALTER TABLE ADD 完完整整性性约约 束束 DROP MODIFY ; 其中指定需要修改的基本表,ADD子句用于增加新列和新的完整性约束条件,DROP子句用于删除指定的完整性约束条件,MODIFY子句用于修改原有的列定义。 例2 向Student表增加“入学时间”列,其数据类型为日期型ALTER TABLE Student ADD Scome DATE;不论基本表中原来是否已有数据,新增加的列一律为空值 上一页上一页下一页下一页返回首页返回首页3.1 SQL数据定义例3 将年龄的数据类型改为半字长整数ALTER TABLE S

44、tudent MODIFY Sage SMALLINT;修改原有的列定义有可能会破坏已有数据例4 删除关于学号必须取唯一值的约束ALTER TABLE Student DROP UNIQUE(Sno); 上一页上一页下一页下一页返回首页返回首页3.1 SQL数据定义5删除基本表一般格式如下:DROP TABLE 例5 删除Student表DROP TABLEStudent基本表定义一旦删除,表中的数据、在此表上建立的索引都将自动被删除掉,而建立在此表上的视图虽仍然保留,但已无法引用。因此执行删除操作一定要格外小心。 上一页上一页下一页下一页返回首页返回首页3.1 SQL数据定义6建立索引一般格

45、式如下:CREATE UNIQUE CLUSTER INDEX ON (,.); 其中,指定要建索引的基本表的名字。索引可以建在该表的一列或多列上,各列名之间用逗号分隔。每个后面还可以用指定索引值的排列次序,包括ASC(升序)和DESC(降序)两种,缺省值为ASC。 UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。 CLUSTER表示要建立的索引是聚簇索引。所谓聚簇索引是指索引项的顺序与表中记录的物理顺序一致的索引组织。 上一页上一页下一页下一页返回首页返回首页3.1 SQL数据定义 例6 为学生-课程数据库中的Student、Couse、SC三个表建立索引。其中Student表按学

46、号升序建唯一索引,Couse表按课程号升序建唯一索引,Sno、Cno表按学号升序和课程号降序建唯一索引。 CREATE UNIQUE INDEX Stusno ON Student(Sno); CREATE UNIQUE INDEX Coucno ON Couse(Cno); CREATE UNIQUE INDEX SCno ON SC(Sno ASC,Cno DESC); 上一页上一页下一页下一页返回首页返回首页3.1 SQL数据定义7删除索引一般格式如下:DROP INDEX;例7 删除Student表的Stusname索引DROP INDEX Stusname; 索引一经建立,就由系统使

47、用和维护它,不需用户干预。建立索引是为了减少查询操作的时间,但如果数据增删改频繁,系统会花费许多时间来维护索引。这时,可以删除一些不必要的索引。删除索引时,系统会同时从数据字典中删去有关该索引的描述。 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询1查询语句格式一般格式为:SELECT ALL|DISTINCT,. FROM , . WHERE GROUP BY HAVING ORDER BY ASC|DESC;整个SELECT语句的含义是,根据WHERE子句的条件表达式,从FROM子句指定的基本表或视图中找出满足条件的元组,再按SELECT子句中的目标列表达式,选出元组中的属

48、性值形成结果表。如果有GROUP子句,则将结果按的值进行分组,该属性列值相等的元组为一个组,每个组产生结果表中的一条记录。通常会在每组中作用集函数。如果GROUP子句带HAVING短语,则只有满足指定条件的组才予输出。如果有ORDER子句,则结果表还要按的值的 升序或降序排序。上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询1单表查询一、选择表中的若干列例1 查询全体学生的学号与姓名 SELECT Sno,Sname FROM Student; 例2 查询全体学生的姓名、学号、所在系 SELECT Sname, Sno, Sdept FROM Student; 例3 查询全体学生

49、的详细记录 SELECT * FROM Student; 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询例4 查全体学生的姓名及其出生年份 SELECT Sname, 2004-Sage FROM Student; 例5 查全体学生的姓名、出生年份和所有系,要求用小写字 母表示所有系名 SELECT Sname, Year of Birth:, 1996-Sage, ISLOWER(Sdept) FROM Student; 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询二、选择表中的若干元组1、消除取值重复的行 例6 :查所有选修过课的学生的学号 SELECT

50、DISTINCT Sno FROM SC; 2、查询满足条件的元组 查询满足指定条件的元组可以通过WHERE子句实现。WHERE子句常用的查询条件如下页上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询常用的查询条件(1)比较 :、 = 、 =、 !=(2)确定范围 :BETWEEN AND, NOT BETWEEN AND(3)确定集合 :IN, NOT IN (4)字符匹配:LIKE, NOT LIKE (5)空值 :IS NULL, IS NOT NULL (6)多重条件 :AND, OR 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询(1) 比较例7 :查计

51、算机系全体学生的名单 SELECT Sname FROM Student WHERE Sdept = CS; 例8 :查所有年龄在20岁以下的学生姓名及其年龄 SELECT Sname, Sage FROM Student WHERE Sage = 20 例9 :查考试成绩有不及格的学生的学号 SELECT DISTINCT Sno FROM Course WHERE Grade 60 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询(2)确定范围 例10 :查询年龄在20至23岁之间的学生的姓名、系别、和年龄 SELECT Sname, Sdept, Sage FROM Stu

52、dent WHERE Sage BETWEEN 20 AND 23 ; 例11 :查询年龄不在20至23岁之间的学生姓名、系别和年 龄 SELECT Sname, Sdept, Sage FROM Student WHERE Sage NOT BETWEEN 20 AND 23 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询(3)确定集合 例12 :查信息系(IS)、数学系(MA)和计算机科学系(CS)的学生的姓名和性别 SELECT Sname, Ssex FROM Student WHERE Sdept IN (IS, MA, CS) ; 例13 :查既不是信息系、数学系,

53、也不是计算机科学系的学生的姓名和性别 SELECT Sname, Ssex FROM Student WHERE Sdept NOT IN (IS, MA, CS) 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询(4)字符匹配 谓词LIKE可以用来进行字符串的匹配。其一般语法格式如下: NOT LIKE ESCAPE 其含义是查找指定的属性列值与相匹配的元组。可以是一个完整的字符串,也可以含有通配符%和_。 %(百分号) 代表任意长度(长度可以为0)的字符串。 _(下横线) 代表任意单个字符。 例14 :查所有姓刘的学生的姓名、学号和性别 SELECT Sname, Sno,

54、Ssex (not 表示不姓刘的同学) FROM Student WHERE Sname not LIKE 刘% 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询例15 :查姓“欧阳”且全名为三个汉字的学生的姓名 SELECT Sname FROM Student WHERE Sname LIKE 欧阳_ _ 例16 :查名字中第二字为“阳”字的学生的姓名和学号 SELECT Sname, Sno FROM Student WHERE Sname LIKE _ _阳% 如果用户要查询的匹配字符串本身就含有%或_,比如要查名字为 DB_Design的课程的学分,应如何实现呢?这时就

55、要使用 ESCAPE 短语对通配符进行转义了。 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询例17 :查DB_Design课程的课程号和学分 SELECT Cno, Ccredit FROM Course WHERE Cname LIKE DB_Design ESCAPE ESCAPE 短语表示为换码字符,这样匹配串中紧跟在后面的字符”_”不再具有通配符的含义,而是取其本身含义,被转义为普通的”_”字符。 例18:查以”DB_”开头,且倒数第三个字符为i的课程的详细情况 SELECT * FROM Course WHERE Cname LIKE DB_%i_ ESCAPE 上

56、一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询(5)涉及空值的查询 例19:某些学生选修某门课程后没有参加考试,所以有选课记录,但没有考试成绩,下面我们来查一下缺少成绩的学生的学号和相应的课程号 : SELECT Sno, Cno FROM SC WHERE Grade IS NULL 例20:查所有有成绩的记录的学生学号和课程号 SELECT Sno, Cno FROM SC WHERE Grade IS NOT NULL 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询(6)多重条件查询 逻辑运算符AND和OR可用来联结多个查询条件。如果这两个运算符同时出现在同

57、一个WHERE条件子句中,则AND的优先级高于OR,但用户可以用括号改变优先级。 例21 :查CS系年龄在20岁以下的学生姓名 SELECT Sname FROM Student WHERE Sdept=CS AND Sage20 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询三、对查询结果排序 如果没有指定查询结果的显示顺序,DBMS将按其最方便的顺序(通常是元组在表中的先后顺序)输出查询结果。用户也可以用ORDER BY子句指定按照一个或多个属性列的升序(ASC)或降序(DESC)重新排列查询结果,其中升序ASC为缺省值。 例22 :查询选修了3号课程的学生的学号及其成绩,

58、查询结果按分数的降序排列 SELECT Sno, Grade FROM SC WHERE Cno=1 GROUP BY Grade DESC 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询四、使用集函数 为了进一步方便用户,增强检索功能,SQL提供了许多集函数,主要包括: COUNT(DISTINCT|ALL *) 统计元组个数 COUNT(DISTINCT|ALL ) 统计一列中值的个数 SUM(DISTINCT|ALL ) 计算一列值的总和(此列必须是数值型) AVG(DISTINCT|ALL ) 计算一列值的平均值(此列必须是数值型) MAX(DISTINCT|ALL )

59、 求一列值中的最大值 MIN(DISTINCT|ALL ) 求一列值中的最小值 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询例24 :查询学生总人数 SELECT COUNT(*) FROM Student 例25 :查询选修了课程的学生人数 SELECT COUNT(DISTINCT Sno) FROM SC 例26 :计算1号课程的学生平均成绩 SELECT AVG(Grade) FROM SC WHERE Cno=1 例27 :查询学习1号课程的学生最高分数 SELECT MAX(Grade) FROM SC WHERE Cno=1 上一页上一页下一页下一页返回首页返回

60、首页3.2 SQL数据查询五、对查询结果分组 GROUP BY子句可以将查询结果表的各行按一列或多列取值相等的原则进行分组 。 对查询结果分组的目的是为了细化集函数的作用对象。如果未对查询结果分组,集函数将作用于整个查询结果,即整个查询结果只有一个函数值。否则,集函数将作用于每一个组,即每一组都有一个函数值 例28 :查询各个课程号与相应的选课人数 SELECT Cno, COUNT(Sno) FROM SC GROUP BY Cno 该SELECT语句对SC表按Cno的取值进行分组,所有具有相同Cno值的元组为一组,然后对每一组作用集函数COUNT以 求得该组的学生人数 上一页上一页下一页下

61、一页返回首页返回首页3.2 SQL数据查询如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件的组,则可以使用HAVING短语指定筛选条件 例29 :查询信息系选修了3门以上课程的学生的学号 SELECT Sno FROM SC WHERE Sdept=IS GROUP BY Sno HAVING COUNT(*)3 WHERE子句与HAVING短语的根本区别在于作用对象不同。WHERE子句作用于基本表或视图,从中选择满足条件的元组。HAVING短语作用于组,从中选择满足条件的组。 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询2多表查询一、连接查询 (1)、等

62、值与非等值连接查询 例30 :查询每个学生及其选修课程的情况 SELECT Student.*, SC.* FROM Student, SC WHERE Student.Sno=SC.Sno 如果是按照两个表中的相同属性进行等值连接,且目标列中去掉了重复的属性列,但保留了所有不重复的属性列,则称之为自然连接 SELECT Student.Sno, Sname, Ssex, Sage, Sdept, Cno, Grade FROM Student, SC WHERE Student.Sno=SC.Sno 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询(2)、复合连接 上面连接查询

63、中,WHERE子句中只有一个条件,即用于连接两个表的谓词。WHERE子句中有多个条件的连接操作,称为复合条件连接 :例31 :查询选修2号课程且成绩在90分以上的所有学生 SELECT Student.Sno, Sname FROM Student, SC WHERE Student.Sno=SC.Sno AND SC.Cno=2 AND SC.Grade90 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询二、嵌套查询 (1)带有IN谓词的子查询 例 32:查询与“刘晨”在同一个系学习的学生 SELECT Sno, Sname, Sdept FROM Student WHERE

64、 Sdept IN SELECT Sdept FROM Student WHERE Sname=刘晨 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询(2)、带有比较运算符的子查询 带有比较运算符的子查询是指父查询与子查询之间用比较运算符进行连接。当用户能确切知道内层查询返回的是单值时,可以用、 =、=、!=或等比较运算符。 例33:查询选修了课程名为信息系统的学生学号和姓名 SELECT Sno, Sname FROM Student WHERE Sno IN (SELECT Sno FROM SC WHERE Cno = (SELECT Cno FROM Course WHE

65、RE Cname=信息系统 )上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询(3)、带有ANY或ALL谓词的子查询 例34:查询其他系中比IS系任一学生年龄小的学生名单 SELECT Sname, Sage FROM Student WHERE Sage ANY (SELECT Sage FROM Student WHERE Sdept=IS ) AND Sdept IS ORDER BY Sage DESC 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询(4)、带有EXISTS谓词的子查询 EXISTS代表存在量词彐。带有EXISTS谓词的子查询不返回任何实际

66、数据,它只产生逻辑真值“true或逻辑假值“false。 例35、查询所有选修了1号课程的学生姓名 SELECT Sname FROM Student WHERE EXISTS (SELECT * FROM SC WHERE Sno=Student.Sno AND Cno=1) 使用存在量词EXISTS后,若内层查询结果非空,则外层的WHERE子句返回真值,否则返回假值 上一页上一页下一页下一页返回首页返回首页3.2 SQL数据查询(5)、集合查询 每一个SELECT语句都能获得一个或一组元组。若要把多个SELECT语句的结果合并为一个结果,可用集合操作来完成。集合操作主要包括并操作UNION

67、、交操作INTERSECT和差操作MINUS。 使用UNION将多个查询结果合并起来,形成一个完整的查询结果时,系统会自动去掉重复的元组。需要注意的是,参加UNION操作的各数据项数目必须相同;对应项的数据类型也必须相同。 例36 查询计算机科学系的学生及年龄不大于19岁的学生 SELECT * FROM Student WHERE Sdept=CS UNION SELECT * FROM Student WHERE Sage=19 上一页上一页下一页下一页返回首页返回首页3.3 SQL数据更新1插入数据一、插入单个元组 INSERTINTO(,.)VALUES(,.) 如果某些属性列在INT

68、O子句中没有出现,则新记录在这些列上将取空值。但必须注意的是,在表定义时说明了NOTNULL的属性列不能取空值。否则会出错如果INTO子句中没有指明任何列名,则新插入的记录必须在每个属性列上均有值例1插入一条选课记录(95020,1)INSERT INTO SC(Sno, Cno) VALUES (95020, 1) 上一页上一页下一页下一页返回首页返回首页3.3 SQL数据更新二插入子查询结果 INSERTINTO(,.)子查询例2 对每一个系,求学生的平均年龄,并把结果存入 INSERT INTO Deptage(Sdept, Avgage) SELECT Sdept, AVG(Sage)

69、 FROM Student GROUP BY Sdept 上一页上一页下一页下一页返回首页返回首页3.3 SQL数据更新2修改数据UPDATE SET =,= WHERE 例3:将学生0411的年龄改为22岁 UPDATE Student SET Sage=22 WHERE Sno=0411 例4:将所有学生的年龄增加1岁 UPDATE Student SET Sage=Sage+1 上一页上一页下一页下一页返回首页返回首页3.3 SQL数据更新3删除数据DELETE FROM WHERE 例5:删除学号为0411的学生记录 DELETE FROM Student WHERE Sno=0411

70、 例6:删除计算机科学系所有学生的选课记录 DELETE FROM SC WHERE CS= (SELETE Sdept FROM Student WHERE Student.Sno=SC.Sno) 上一页上一页下一页下一页返回首页返回首页3.4 SQL数据控制1授权GRANT 权限表 ON TABLE 表名 TO 用户表名 WITH GRANT OPTION 例1、将查询和更新学生信息表Stuent的权限授予所有人: GRANT SELECT, UPDATE ON TABLE Student TO PUBLIC2回收权限REVOKE 权限表 ON TABLE 表名 FROM 用户表名 例2、

71、回收用户MIKE 查询和更新学生信息表的权限: REVOKE SELECT, UPDATE ON TABLE Student FROM MIKE上一页上一页下一页下一页返回首页返回首页41 数据库设计概论 4.2 需求分析 4.3 概念结构设计 4.4 逻辑结构设计 4.5 物理设计及实施 第四章 数据库设计上一页上一页下一页下一页返回首页返回首页4.1 数据库设计概念1数据库设计的特点数据库设计是一种“反复探寻,逐步求精”的过程2数据库设计的内容数据库设计包括结构特性设计和行为特性设计两方面内容 3数据库设计的步骤需求分析阶段 需求收集和分析,结果得到数据字典描述的数据需求(和数据流图描述的

72、处理需求) 上一页上一页下一页下一页返回首页返回首页4.1 数据库设计概念概念结构设计阶段:通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,可以用E-R图表示。逻辑结构设计阶段:将概念结构转换为某个DBMS所支持的数据模型(例如关系模型),并对其进行优化。数据库物理设计阶段:为逻辑数据模型选取一个最适合应用环境的物理结构(包括存储结构和存取方法)。数据库实施阶段:运用DBMS提供的数据语言(例如SQL)及其宿主语言(例如C),根据逻辑设计和物理设计的结果建立数据库,编制与调试应用程序,组织数据入库,并进行试运行。数据库运行和维护阶段:数据库应用系统经过试运行后即可投入

73、正式运行。在数据库系统运行过程中必须不断地对其进行评价、调整与修改。上一页上一页下一页下一页返回首页返回首页4.2 需求分析1需求分析的任务需求分析的任务是通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求,然后在此基础上确定新系统的功能。新系统必须充分考虑今后可能的扩充和改变,不能仅仅按当前应用需求来设计数据库需求分析的重点是调查、收集与分析用户在数据管理中的信息要求、处理要求、安全性与完整性要求。信息要求是指用户需要从数据库中获得信息的内容与性质。由用户的信息要求可以导出数据要求,即在数据库中需要存储哪些数据。处理要求

74、是指用户要求完成什么处理功能,对处理的响应时间有什么要求,处理方式是批处理还是联机处理。新系统的功能必须能够满足用户的信息要求、处理要求、安全性与完整性要求。上一页上一页下一页下一页返回首页返回首页4.2 需求分析2需求分析的方法首先调查组织机构情况:包括了解该组织的部门组成情况,各部门的职能等,为分析信息流程作准备。然后调查各部门的业务活动情况包括了解各个部门输入和使用什么数据,如何加工处理这些数据,输出什么信息,输出到什么部门,输出结果的格式是什么。协助用户明确对新系统的各种要求包括信息要求、处理要求、完全性与完整性要求。确定新系统的边界确定哪些功能由计算机完成或将来准备让计算机完成,哪些

75、活动由人工完成。由计算机完成的功能就是新系统应该实现的功能。上一页上一页下一页下一页返回首页返回首页4.2 需求分析3常用的调查方法跟班作业通过亲身参加业务工作来了解业务活动的情况。这种方法可以比较准确地理解用户的需求,但比较耗费时间。开调查会通过与用户座谈来了解业务活动情况及用户需求。座谈时,参加者之间可以相互启发。请专人介绍。询问对某些调查中的问题,可以找专人询问。设计调查表请用户填写如果调查表设计得合理,这种方法是很有效,也很易于为用户接受的。查阅记录即查阅与原系统有关的数据记录,包括原始单据、账簿、报表等。上一页上一页下一页下一页返回首页返回首页4.2 需求分析4数据字典对数据库设计来

76、讲,数据字典是进行数据收集和数据分析所获得的主要成果。数据字典是各类数据描述的集合。数据字典通常包括数据项、数据结构、数据流、数据存储和处理过程五个部分。上一页上一页下一页下一页返回首页返回首页4.3 概念结构设计1概念结构设计定义将需求分析得到的用户需求抽象为信息结构即概念模型的过程就是概念结构设计。概念结构是对现实世界的一种抽象,即对实际的人、物、事和概念进行人为处理,抽取人们关心的共同特性,忽略非本质的细节,并把这些特性用各种概念精确地加以描述。概念结构独立于数据库逻辑结构,也独立于支持数据库的DBMS。它是现实世界与机器世界的中介,它一方面能够充分反映现实世界,包括实体和实体之间的联系

77、,同时又易于向关系、网状、层次等各种数据模型转换。它是现实世界的一个真实模型,易于理解,便于和不熟悉计算机的用户交换意见,使用户易于参与,当现实世界需求改变时,概念结构又可以很容易地作相应调整。因此概念结构设计是整个数据库设计的关键所在。上一页上一页下一页下一页返回首页返回首页4.3 概念结构设计2概念结构设计方法(1)自顶向下即首先定义全局概念结构的框架,然后逐步细化(2)自底向上即首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构。这是最经常采用的策略是自底向上方法。即自顶向下地进行需求分析,然后再自底向上地设计概念结构。(3)逐步扩张首先定义最重要的核心概念结构,然后向外

78、扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构。(4)混合策略即将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以它为骨架集成由自底向上策略中设计的各局部概念结构。上一页上一页下一页下一页返回首页返回首页4.3 概念结构设计3E-R图设计步骤第一步,首先要根据需求分析的结果(数据流图、数据字典等)对现实世界的数据进行抽象,设计各个局部视图即分E-R图。第二步,集成局部视图。设计分E-R图的步骤是:(1)选择局部应用在需求分析阶段,通过对应用环境和要求进行详尽的调查分析,用多层数据流图和数据字典描述了整个系统。设计分E-R图的第一步,就是要根据系统的具体情况,在

79、多层的数据流图中选择一个适当层次的(经验很重要)数据流图,让这组图中每一部分对应一个局部应用,我们即可以这一层次的数据流图为出发点,设计分E-R图。一般而言,中层的数据流图能较好地反映系统中各局部应用的子系统组成,因此人们往往以中层数据流图作为设计分E-R图的依据。上一页上一页下一页下一页返回首页返回首页4.3 概念结构设计(2)逐一设计分E-R图每个局部应用都对应了一组数据流图,局部应用涉及的数据都已经收集在数据字典中了。现在就是要将这些数据从数据字典中抽取出来,参照数据流图,标定局部应用中的实体、实体的属性、标识实体的码,确定实体之间的联系及其类型(1:1、1:n、m:n)。实际上实体与属

80、性是相对而言的,很难有截然划分的界限。同一事物,在一种应用环境中作为“属性”,在另一种应用环境中就必须作为“实体”。一般说来,在给定的应用环境中:属性不能再具有需要描述的性质。即属性必须是不可分的数据项。属性不能与其他实体具有联系。联系只发生在实体之间。上一页上一页下一页下一页返回首页返回首页4.3 概念结构设计4E-R图实例在我们的例子中,学籍管理局部应用中主要涉及的实体包括学生、宿舍、档案材料、班级、班主任。由于一个宿舍可以住多个学生,而一个学生只能住在某一个宿舍中,因此宿舍与学生之间是1:n的联系。由于一个班级往往有若干名学生,而一个学生只能属于一个班级,因此班级与学生之间也是1:n的联

81、系。由于班主任同时还要教课,因此班主任与学生之间存在指导联系,一个班主任要教多名学生,而一个学生只对应一个班主任,因此班主任与学生之间也是1:n的联系。而学生和他自己的档案材料之间,班级与班主任之间都是1:1的联系。上一页上一页下一页下一页返回首页返回首页4.3 概念结构设计接下来我们需要进一步斟酌该E-R图,做适当调整。:(1)在一般情况下,性别通常作为学生实体的属性,但在本局部应用中,由于宿舍分配与学生性别有关,根据准则,应该把性别作为实体对待。(2)数据存储“学生登记表”,由于是手工填写,供存档使用,其中有用的部分已转入学生档案材料中,因此这里就不必作为实体了。上一页上一页下一页下一页返

82、回首页返回首页4.3 概念结构设计上一页上一页下一页下一页返回首页返回首页4.3 概念结构设计为节省篇幅,该E-R图中省略了各个实体的属性描述。这些实体的属性分别为:学生:学号,姓名,出生日期,档案材料:档案号,班级:班级号,学生人数班主任:职工号,姓名,性别,是否为优秀班主任宿舍:宿舍编号,地址,人数教室:教室编号,地址,容量其中有下划线的属性为实体的码。同样方法,我们可以得到课程管理局部应用的分E-R图上一页上一页下一页下一页返回首页返回首页4.3 概念结构设计上一页上一页下一页下一页返回首页返回首页4.3 概念结构设计各实体的属性分别为:学生:姓名,学号,性别,年龄,所在系,年级,平均成

83、绩课程:课程号,课程名,学分教师:职工号,姓名,性别,职称教科书:书号,书名,价钱教室:教室编号,地址,容量上一页上一页下一页下一页返回首页返回首页4.3 概念结构设计一合并分E-R图,生成初步E-R图ER图的合并:集成局部E-R图时都需要两步:1)合并;2)修改与重构。各分E-R图之间的冲突主要有三类:属性冲突、命名冲突和结构冲突。属性冲突:(1)属性域冲突,即属性值的类型、取值范围或取值集合不同。(2)属性取值单位冲突。命名冲突:(1)同名异义。(2)异名同义结构冲突:(1)同一对象在不同应用中具有不同的抽象。例如“课程”在某一局部应用中被当作实体,而在另一局部应用中则被当作属性。(2)同

84、一实体在不同局部视图中所包含的属性不完全相同,或者属性的排列次序不完全相同。(3)实体之间的联系在不同局部视图中呈现不同的类型。例如实体E1与E2在局部应用A中是多对多联系,而在局部应用B中是一对多联系;下面是实例冲突:上一页上一页下一页下一页返回首页返回首页4.3 概念结构设计(1)班主任实际上也属于教师,也就是说学籍管理中的班主任实体与课程管理中的教师实体在一定程度上属于异名同义,可以应将学籍管理中的班主任实体与课程管理中的教师实体统一称为教师,统一后教师实体的属性构成为:教师:职工号,姓名,性别,职称,是否为优秀班主任(2)将班主任改为教师后,教师与学生之间的联系在两个局部视图中呈现两种

85、不同的类型,一种是学籍管理中教师与学生之间的指导联系,一种是课程管理中教师与学生之间的教学联系,由于指导联系实际上可以包含在教学联系之中,因此可以将这两种联系综合为教学联系。(3)在两个局部E-R图中,学生实体属性组成及次序都存在差异,应将所有属性综合,并重新调整次序。假设调整结果为:学生:学号,姓名,出生日期,年龄,所在系,年级,平均成绩上一页上一页下一页下一页返回首页返回首页4.3 概念结构设计二修改与重构,生成基本E-R图分E-R图经过合并生成的是初步E-R图。之所以称其为初步E-R图,是因为其中可能存在冗余的数据和冗余的实体间联系,即存在可由基本数据导出的数据和可由其他联系导出的联系。

86、冗余数据和冗余联系容易破坏数据库的完整性,给数据库维护增加困难,因此得到初步E-R图后,还应当进一步检查E-R图中是否存在冗余,如果存在则一般应设法予以消除。修改、重构初步E-R图以消除冗余主要采用分析方法。除分析方法外,还可以用规范化理论来消除冗余。在前面初步E-R图中存在着冗余数据和冗余联系:上一页上一页下一页下一页返回首页返回首页4.3 概念结构设计(1)学生实体中的年龄属性可以由出生日期推算出来,属于冗余数据,应该去掉。这样不仅可以节省存储空间,而且当某个学生的出生日期有误,进行修改后,无须相应修改年龄,减少了产生数据不一致的机会。学生:学号,姓名,出生日期,所在系,年级,平均成绩(2

87、)教室实体与班级实体之间的上课联系可以由教室与课程之间的开设联系、课程与学生之间的选修联系、学生与班级之间的组成联系三者推导出来,因此属于冗余联系,可以消去。(3)学生实体中的平均成绩可以从选修联系中的成绩属性中推算出来,但如果应用中需要经常查询某个学生的平均成绩,每次都进行这种计算效率就会太低,因此为提高效率,可以考虑保留该冗余数据,但是为了维护数据一致性应该定义一个触发器来保证学生的平均成绩等于该学生各科成绩的平均值。任何一科成绩修改后,或该学生学了新的科目并有成绩后,就要触发该触发器去修改该学生的平均成绩属性值。否则会出现数据的不一致。上一页上一页下一页下一页返回首页返回首页4.3 概念

88、结构设计上一页上一页下一页下一页返回首页返回首页4.4 逻辑结构设计1逻辑结构设计概述设计逻辑结构应该选择最适于描述与表达相应概念结构的数据模型,然后选择最合适的DBMS。设计逻辑结构时一般要分三步进行:将概念结构转换为一般的关系、网状、层次模型将转化来的关系、网状、层次模型向特定DBMS支持下的数据模型转换对数据模型进行优化关系模型的逻辑结构是一组关系模式的集合。而E-R图则是由实体、实体的属性和实体之间的联系三个要素组成的。所以将E-R图转换为关系模型实际上就是要将实体、实体的属性和实体之间的联系转化为关系模式,这种转换一般遵循如下原则:上一页上一页下一页下一页返回首页返回首页4.4 逻辑

89、结构设计2E-R图转换为关系模型的原则1、一个实体型转换为一个关系模式。实体的属性就是关系的属性。实体的码就是关系的码。2、一个m:n联系转换为一个关系模式。与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性。而关系的码为各实体码的组合。例如在我们的例子中,“选修”联系是一个m:n联系,可以将它转换为如下关系模式,其中学号与课程号为关系的组合码选修(学号,课程号,成绩)3、一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。上一页上一页下一页

90、下一页返回首页返回首页4.4 逻辑结构设计4、一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相连的各实体的码以及联系本身的属性均转换为关系的属性,每个实体的码均是该关系的候选码。如果与某一端对应的关系模式合并,则需要在该关系模式的属性中加入另一个关系模式的码和联系本身的属性。上一页上一页下一页下一页返回首页返回首页4.4 逻辑结构设计3关系模型的优化数据库逻辑设计的结果不是唯一的。为了进一步提高数据库应用系统的性能,通常以规范化理论为指导,还应该适当地修改、调整数据模型的结构,这就是数据模型的优化。数据模型的优化方法为:

91、1、确定数据依赖。2、对于各个关系模式之间的数据依赖进行极小化处理,消除冗余的联系。3、按照数据依赖的理论对关系模式逐一进行分析,考查是否存在部分函数依赖、传递函数依赖、多值依赖等,确定各关系模式分别属于第几范式。4、按照需求分析阶段得到的各种应用对数据处理的要求,分析对于这样的应用环境这些模式是否合适,确定是否要对它们进行合并或分解5、对关系模式进行必要的分解。上一页上一页下一页下一页返回首页返回首页4.4 逻辑结构设计4函数依赖定义设R(U)是属性集U上的关系模式。X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X

92、函数确定Y或Y函数依赖于X,记作XY。分类:1平凡函数依赖2非平凡函数依赖3完全函数依赖4部分函数依赖传递函数依赖上一页上一页下一页下一页返回首页返回首页4.4 逻辑结构设计5范式关系数据库中的关系是要满足一定要求的,满足不同程度要求的为不同范式。满足最低要求的叫第一范式,简称lNF。在第一范式中满足进一步要求的为第二范式,其余以此类推R为第几范式就可以写成RxNF。一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化。定义若RlNF,且每一个非主属性完全函数依赖于码,则R2NF。下面我们举一个不是2NF的例子。上一页上一页下一页下一页返回首页返

93、回首页4.4 逻辑结构设计关系模式S-L-C(SNO,SDEPT,SLOC,CNO,G)某中SLOC为学生的住处,并且每个系的学生住在同一个地方。这里码为(SNO,CNO)。函数依赖有:(SNO,CNO)GSNOSDEPT,(SNO,CNO)SDEPTSNOSLOC,(SNO,CNO)SLOC一个关系模式R不属于2NF,就会产生插入异常、删除异常、冗余度大。分析上面的例子,可以发现问题在于有两种非主属性。一种如G,它对码是完全函数依赖。另一种如SDEPT、SLOC对码不是完全函数依赖。解决的办法是用投影分解把关系模式S-L-C分解为两个关系模式。SC(SNO,CNO,G)S-L(SNO,SDE

94、PT,SLOC)关系模式SC的码为(SNO,CNO),关系模式S-L的码为SNO,这样就使得非主属性对码都是完全函数依赖上一页上一页下一页下一页返回首页返回首页4.4 逻辑结构设计定义关系模式RU,F中若不存在这样的码X,属性组Y及非主属性Z(ZY)使得XY,(YX)YZ,成立,则称RU,F3NF。由定义可以证明,若R3NF,则每一个非主属性既不部分依赖于码也不传递依赖于码。在上例中关系模式SC没有传递依赖,而关系模式S-L存在非主属性对码传递依赖。在S-L中,由SNOSDEPT,(SDEPT,SNO),SDEPTSLOC,可得SNOSLOC。因此SC3NF,而S-L不是3NF。一个关系模式R

95、若不是3NF,就会产生插入异常、删除异常、冗余度大等问题。解决的办法同样是将S-L分解为:S-D(SNO,SDEPT)D-L(SDEPT,SLOC)分解后的关系模式S-D与D-L中不再存在传递依赖定义关系模式RU,F3NF,且没有一个非码属性是部分函数依赖或传递函数依赖于码属性,则称R为扩充第三范式的模式RU,FBCNF上一页上一页下一页下一页返回首页返回首页4.5 物理设计及实施1物理设计的定义对于给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程称为数据库物理设计物理设计的任务是为了有效地实现逻辑模式,确定所采取的存储策略。2物理设计的步骤1、存储记录的格式设计2、存储方法设计3、访问方法设计4、完整性和安全性考虑5、应用设计6、形成物理设计说明书上一页上一页下一页下一页返回首页返回首页4.5 物理设计及实施3数据库的实现1、建立实际的数据库结构2、装入试验数据对应用程序进行测试,以确认其功能和性能是否满足设计要求,并检查其空间的占有情况。3、装入实际数据,即数据库加载,建立起实际的数据库上一页上一页下一页下一页返回首页返回首页-END-END-

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号