数据库原理及应用备课本

  • 格式:doc
  • 大小:119.50 KB
  • 文档页数:27

数据库原理及应用★课本情况.参考书.课程安排 54/18课本:《数据库原理及应用》钱雪忠等编著《数据库原理及应用实验指导》钱雪忠等编著参考书:《数据库系统概论》萨师煊、王珊《数据库系统原理教程》王珊《数据库系统导论》徐洁磐《数据库系统基础》冯玉才 U399/757《数据库系统导论》卷Ⅰ/Ⅱ(美)C.J《数据库系统导论》施伯乐课程安排:54/18 最后两周课程设计三周一次上机★课程概况课程作用:计算机始于数值计算.却在非数值计算中得到广泛的应用,显示了它强大的生命力,在现代计算机应用领域(科学计算、数据处理、过程控制、CAD/CAM、办公自动化)中,数据处理约占先70-80%,数据库技术是数据处理的最新研究成果,它的出现,使得计算机应用更加广泛地渗透到工业、农业、商业、文教卫生及军事等各个领域。

数据库系统是一门综合性的软件技术,它是编译原理、数据结构、操作系统、程序设计等许多软件知识的综合应用,其理论性和实际性都很强,是使用计算机进行各种信息管理的必备知识,通过本课的学习,大家可以基本上掌握数据库系统的基本概念、基本原理和基本技术,以便解决、指导信息管理的实际问题。

(注:掌握了高层理论,你对各种各样数据库系统有更高、更深层认识,熟话说“站得高看得远”)★原理与技术课程对照实用技术类课程 <-----> 概论与原理类课程具体协议如:TCP/IP OSI/ISO七级网络层IPX/SPX具体程序语言如:C、PASCAL、BASIC等高级程序设计语言概论具体操作系统如:DOS、WINDOWS、UNIX等操作系统原理数据库技术——FOXBASE、VFP、ORACLE等数据库系统原理/概论/导论编译技术编译原理某语言程序设计数据结构(算法设计)具体某型计算机如:PC、APPLE、工作站、服务器、计算机组成原理/计算机系统结构小型机、中、大型机计算机科学:就有其原理性东西,有其自身的理论体系,其理论体系不是固定不变的,而是不断发展变化的。

★与其它课程的关系数据库系统作为一门综合性软件技术,与其他基础软件和系统软件有密切的关系,它几乎涉及到软件的所有知识,是很多重要的软件技术的综合应用。

①首先数据库系统是操作系统OS(Operating System)支持下工作的,它和OS关系密切,如同两个齿轮,边界并不清楚,有些工作可以由OS做,也可以由DBMS做,还可以各做一部分(取决于DBMS的实现)另一方面OS中用到的许多技术同样可以用到DBMS中,如缓冲区的管理、内存管理、并发控制等技术,两个系统中的处理思想是完全一样的。

(数据库系统有FOR OS之说即是针对何操作系统的)②数据结构是软件的一门专业基础课,OS、COMPILE、DBMS中均广泛用到队列、栈、排序、文件组织等数据结构中的内容与技术(如数据库系统中B+树结构建立索引等)③编译技术数据库系统中有许多语言(如数据定义语言、数据操纵语言、查询语言等)这些语言的编译、解释均是数据库系统的任务。

④程序设计它是具体实现数据库系统应用开发最基本的技术,因为数据库系统中有大量的应用程序都是用高级程序语言加上数据操纵语言来编制实现的⑤离散数学数理逻辑是关系数据库的理论基础(主要包括关系代数、关系演算)⑥算法分析在数据库系统中是经常用到,至关重要的。

因为不同的算法运行速度不同,效果就不同,⑦软件工程在设计DBMS中是不可缺少的确知识和技术,亦是数据库应用系统开发设计的较好方法与手段(设计DBMS本身就是一个宏大的软件工程)★常见数据库系统与开发工具学习数据库系统概论自然会接触到数据库大型数据库系统:ORACLE、INFORMIX、SYBASE、INGRES、DB2(IBM)MS SQL SERVER、INTERBASE(INPRISE,原BROLAND)微型数据库系统:DBASE、FOXBASE、FOXPRO、VFP系列、ACCESS常见数据库开发工具:PowerBuilder 7.0(PB)、高级程序设计语言(如C语言)、可视化语言(如VB、VC)、DELPHI、Java语言.NET平台及语言如:C#、、C++.NET等★课程研究对象研究对象为信息、数据信息(Information):定义为向人们(或机器)提供关于现实世界新的事实的知识。

数据(Data):定义为用以载荷信息的物理符号,如:符号、数字、声音、图形、图像等信息与数据是不可分离而又有一定区别的概念,信息是更基本的直接反映现实的概念,而数据是信息的具体表现,数据是信息的数字化、符号化。

但不严格场合一般不加区分,可以说信息管理/数据管理(处理)随着人类社会的发展,信息在各种活动中居于越来越重要的地位,由于信息量急剧增加,形式多样,结构复杂以及及时性要求的提高,信息处理就成为一个极其重要的问题。

★数据处理(信息处理)所谓信息处理或数据处理系指对信息(即各种形式数据)进行收集、组织、存储、加工、抽取和传播的一系列活动的总和。

其基本目的是从大量的、杂乱无章的、难以理解的数据中抽取并推导出某些特定的人们来说是有价值、有意义的数据,借以作为决策的依据。

★研究目标数据库系统是信息处理的最高形式,其研究目标就是如何高效地巧妙地进行数据处理,而又花费最少。

★什么叫数据库?数据库是个通用化的综合性的数据集合,它可以供各种用户共享且具有最小的冗余度和较高的数据与程序的独立性。

★什么叫数据库系统?数据库系统是指能实现有组织地、动态地存储大量有关联的数据,能方便多用户访问的,由计算机软、硬资源组成的系统,它包括四个主要的组成部分:数据集合、硬件、软件和用户。

★数据模型1、作用:数据库系统中用于提供信息表示和操作手段的形式框架。

2、分类:根据模型应用的不同目的,可以将模型分为:1)概念模型(信息模型)(用户的观点)2)数据模型(网状、层次、关系、面向对象)(计算机系统的观点)3、区别:概念模型数据模型用于信息世界机器世界强调语义表达强调形式化定义易于用户理解便于机器上实现用于与设计人员交流设计人员在机器上较好实现★三级模式三级模式描述语言描述内容数据库外模式 SDDL 局部逻辑结构用户数据库模式 DDL 全局逻辑结构概念数据库内模式 PDDL 数据物理结构存储数据库用户记录关系数据库的观点终端用户、应用程序员用户记录视图或查询系统程序员、DBA 概念记录若干张表DBA、分析员系统存储记录表文件、库文件★数据库设计题目---->分析---->E-R图---->R1(...)、R2(...)需求分析概念设计逻辑设计物理设计数据库实施运行与维护问题------>数据与处理------>整个系统E-R图------>关系模型即关系模式集合------>建索引、主码、外码------>(完整性、数据字典)(分E-R图、全E-R图)创建数据库、编制应用程序、调试、运行------>性能测试、重组织、重构造、维护(适应性、修正性、完善性)★作业解答设有关系模式(表内容简略):S(S#,Sname,CITY)其中S表示供应商,S#为供应商代号,SNAME为供应商名字,CITY为供应商所在城市,主关键字为S#;P(P#,PNAME,COLOR,WEIGHT)其中P表示零件,P#为零件代号,PNAME为零件名字,COLOR为零件颜色,WEIGHT为零件重量,主关键字为P#;J(J#,JNAME,CITY) 其中J表示工程,J#为工程编号,JNAME为工程名字,CITY为工程所在城市,主关键字为J#;SPJ(S#, P#,J#, QTY) 其中SPJ表示供应关系,S#、P#、J#含义同上,QTY表示提供的零件数量,主关键字为(S#,P#,J#),外关键字为S#,P#,J#。

S SPJS# Sname CITY S# P# J# QTYSl SN1 上海 S1 Pl J1 200P JP# PNAME COLOR WEIGHT J# JNAME CITYP1 PNl 红 12 J1 JN1 上海请用关系代数、ALPHA语言、SQL语言分别表达下列查询(1) 求供应工程J1零件的单位号码SNO(2) 求供应工程J1零件怕的供应单位号码(3) 求供应工程J1零件为红色的的单位号码(4) 求没有使用天津单位生产的红色零件的工程号JNO(5) 求至少用了单位S1所供应的全部零件的工程号JNO关系代数:Θ(1) πsno(σjno='j1'(SPJ))(2) πsno(σjno='j1'∧pno='p1'(SPJ))(3) πsno(σjno='j1'(SPJ) σcolor='红'(P))(4)πjno(J)- πjno(σcity='天津'(S) SPJ σcolor='红'(P)) 或πjno(SPJ)- πjno(σcity='天津'(S) SPJ color='红'(P))错的:πjno(σ﹁(city='天津'∧color='红')(S SPJ P)) (错误原因对某个不存在即选取)或πjno(σcity≠'天津'(S) SPJ)∪πjno(σcolor≠'红'(P) SPJ)(错误原因对某个不存在即选取)(5) πjno,pno(SPJ)÷πpno(σsno='s1'(SPJ))或πjno,pno,sno(SPJ)÷πpno,sno(σsno='s1'(SPJ))(中文不同理解所致)ALPHA:(1) GET W(SPJ.sno): SPJ.jno='j1'(2) GET W(SPJ.sno): SPJ.jno='j1'∧SPJ.pno='p1'(3) RANGE P XGET W(SPJ.sno): X( SPJ.jno='j1'∧X.color='红'∧SPJ.pno=X.pno)(4) RANGE S XP YSPJ Z→﹁天津'∧Y.color='红'∧Z.pno=Y.pno∧X.sno=Z.sno)))或RANGE S XP YSPJ ZGET W(J.jno):﹁天津'∧Y.color='红'∧Z.pno=Y.pno∧X.sno=Z.sno∧Z.jno=J.jno))或RANGE S XP YSPJ ZGET W(SPJ.jno):﹁天津'∧Y.color='红'∧Z.pno=Y.pno∧X.sno=Z.sno∧Z.jno=SPJ.jno))错的:(错误原因对某个不存在即选取,没有全面考查)RANGE S XP YGET W(SPJ.jno):﹁天津'∧Y.color='红'∧SPJ.pno=Y.pno∧X.sno=SPJ.sno))(5) RANGE SPJ XSPJ YGET X(X.sno='s1'→Y(Y.pno=X.pno∧Y.jno=J.jno))或RANGE SPJ XSPJ YGET W(J.jno): →Y(Y.pno=X.pno∧Y.jno=J.jno∧Y.sno='s1'))或RANGE SPJ XSPJ YP ZGET X(X.sno='s1'∧X.pno=Z.pno)→Y(Y.pno=X.pno∧Y.jno=J.jno))GET X(X.sno='s1'∧X.pno=Z.pno)→Y(Y.pno=Z.pno∧Y.jno=J.jno))SQL:(1) SELECT DISCINCT SNO FROM SPJ WHERE JNO='j1'(2) SELECT SNO FROM SPJ WHERE JNO='j1' AND PNO='p1'(3) SELECT DISCINCT SNOFROM SPJWHERE JNO='j1' AND PNO IN(SELECT PNOFROM PWHERE COLOR='红')(4) SELECT JNO FROM J WHERE NOT EXISTS(SELECT *FROM S,SPJ,PWHERE S.SNO=SPJ.SNO AND SPJ.PNO=P.PNO AND SPJ.JNO=J.JNO AND S.CITY='天津' AND P.COLOR='红')或SELECT DISTINCT X.JNOFROM SPJ XWHERE NOT EXISTS(SELECT * FROM SPJ WHERE X.JNO=SPJ.JNO AND SPJ.SNO IN (SELECT SNO FROM S WHERE S.CITY='天津') AND SPJ.PNO IN (SELECT PNO FROM P WHERE P.COLOR='红'))或SELECT J.JNO FROM J WHERE NOT EXISTS(SELECT * FROM SPJ WHERE J.JNO=SPJ.JNO AND SPJ.SNO IN (SELECT SNO FROM S WHERE S.CITY='天津') ANDSPJ.PNO IN (SELECT PNO FROM P WHERE P.COLOR='红'))或SELECT J.JNO FROM J WHERE NOT EXISTS(SELECT * FROM SPJ WHERE J.JNO=SPJ.JNO AND EXISTS (SELECT SNO FROM S WHERE S.CITY='天津' AND S.SNO=SPJ.SNO) AND EXISTS(SELECT PNO FROM P WHERE P.COLOR='红' AND P.PNO=SPJ.PNO))或SELECT J.JNO FROM J WHERE J.JNO NOT IN(SELECT SPJ.JNO FROM SPJ WHERE SPJ.SNO IN (SELECT SNO FROM S WHERE S.CITY='天津') ANDSPJ.PNO IN (SELECT PNO FROM P WHERE P.COLOR='红'))或SELECT DISTINCT X.JNO FROM SPJ X WHERE X.JNO NOT IN( SELECT Y.JNO FROM S,SPJ,P WHERE S.CITY='天津' AND P.COLOR='红' AND S.SNO=SPJ.SNO AND SPJ.PNO=P.PNO)或SELECT X.JNO FROM J X WHERE X.JNO NOT IN(SELECT Y.JNO FROM S,SPJ,P WHERE S.CITY='天津' AND P.COLOR='红' AND S.SNO=SPJ.SNO AND SPJ.PNO=P.PNO)错的:SELECT JNO FROM J WHERE NOT EXISTS(SELECT * FROM S WHERE S.CITY='天津' AND EXISTS (SELECT * FROM P WHERE P.COLOR='红'))或(错误原因对某个不存在即选取,不正确)SELECT DISTINCT SPJ.JNO FROM SPJ WHERE NOT EXISTS( SELECT * FROM S WHERE S.SNO=SPJ.SNO AND S.CITY='天津' AND EXISTS(SELECT * FROM P WHERE P.PNO=SPJ.PNO AND P.COLOR='红'))或(错误原因对某个不存在即选取,不正确)SELECT DISTINCT SPJ.JNO FROM SPJ WHERE NOT EXISTS( SELECT * FROM P,S WHERE S.SNO=SPJ.SNO AND S.CITY='天津' P.PNO=SPJ.PNO AND P.COLOR='红')(5) SELECT JNO FROM J WHERE NOT EXISTS(SELECT * FROM SPJ A WHERE A.SNO='S1' AND NOT EXISTS(SELECT * FROM SPJ B WHERE B.JNO=J.JNO AND A.PNO=B.PNO AND B.SNO='S1'))或SELECT DISTINCT C.JNO FROM SPJ C WHERE NOT EXISTS(SELECT * FROM SPJ A WHERE A.SNO='S1' AND NOT EXISTS(SELECT * FROM SPJ B WHERE B.JNO=C.JNO AND A.PNO=B.PNO AND B.SNO='S1'))错的:SELECT X.JNO FROM SPJ X WHERE NOT EXISTS(SELECT * FROM SPJ Y WHERE Y.SNO='s1' AND NOT EXISTS( SELECT * FROM SPJ Z WHERE Z.SNO=X.SNO AND Z.PNO=Y.PNO))★举例设有关系数据库,它由三个关系组成,它们的模式是: S(S#,SN,SD,SA)C(C#,CN,PC#)SC(S#,C#,G)请用关系代数写出下列查询:1、检索学生的所有情况。