1、数据库原理及应用 课本情况.参考书.课程安排 54/18课 本:数据库原理及应用钱雪忠主编数据库原理及应用实验指导钱雪忠主编参考书:数据库系统概论 萨师煊、王珊数据库系统原理教程王珊数据库系统导论徐洁磐数据库系统基础冯玉才 U399/757数据库系统导论卷/(美)C.J数据库系统导论施伯乐课程安排:54/18 最后两周课程设计 三周一次上机 课程概况课程作用:计算机始于数值计算.却在非数值计算中得到广泛的应用,显示了它强大的生命力,在现代计算机应用领域(科学计算、数据处理、过程控制、CAD/CAM、办公自动化)中,数据处理约占先 70-80%,数据库技术是数据处理的最新研究成果,它的出现,使得
2、计算机应用更加广泛地渗透到工业、农业、商业、文教卫生及军事等各个领域。数据库系统是一门综合性的软件技术,它是编译原理、数据结构、操作系统、程序设计等许多软件知识的综合应用,其理论性和实际性都很强,是使用计算机进行各种信息管理的必备知识,通过本课的学习,大家可以基本上掌握数据库系统的基本概念、基本原理和基本技术,以便解决、指导信息管理的实际问题。(注:掌握了高层理论,你对各种各样数据库系统有更高、更深层认识,熟话说“站得高看得远” ) 原理与技术课程对照实用技术类课程 概论与原理类课程 具体协议如:TCP/IP OSI/ISO 七级网络层IPX/SPX具体程序语言如:C、PASCAL、BASIC
3、 等 高级程序设计语言概论具体操作系统如:DOS、WINDOWS、UNIX 等 操作系统原理数据库技术FOXBASE、VFP、ORACLE 等 数据库系统原理/概论/导论编译技术 编译原理某语言程序设计 数据结构(算法设计)具体某型计算机如:PC、APPLE、工作站、服务器、 计算机组成原理/计算机系统结构小型机、中、大型机计算机科学:就有其原理性东西,有其自身的理论体系,其理论体系不是固定不变的,而是不断发展变化的。 与其它课程的关系数据库系统作为一门综合性软件技术,与其他基础软件和系统软件有密切的关系,它几乎涉及到软件的所有知识,是很多重要的软件技术的综合应用。 首先数据库系统是操作系统
4、OS(Operating System)支持下工作的,它和 OS 关系密切,如同两个齿轮,边界并不清楚,有些工作可以由 OS 做,也可以由 DBMS 做,还可以各做一部分(取决于 DBMS 的实现)另一方面 OS 中用到的许多技术同样可以用到 DBMS 中,如缓冲区的管理、内存管理、并发控制等技术,两个系统中的处理思想是完全一样的。 (数据库系统有 FOR OS 之说即是针对何操作系统的) 数据结构是软件的一门专业基础课,OS、COMPILE、DBMS 中均广泛用到队列、栈、排序、文件组织等数据结构中的内容与技术(如数据库系统中 B+树结构建立索引等) 编译技术 数据库系统中有许多语言(如数据
5、定义语言、数据操纵语言、查询语言等)这些语言的编译、解释均是数据库系统的任务。 程序设计 它是具体实现数据库系统应用开发最基本的技术,因为数据库系统中有大量的应用程序都是用高级程序语言加上数据操纵语言来编制实现的 离散数学 数理逻辑是关系数据库的理论基础(主要包括关系代数、关系演算) 算法分析 在数据库系统中是经常用到,至关重要的。因为不同的算法运行速度不同,效果就不同, 软件工程 在设计 DBMS 中是不可缺少的确知识和技术,亦是数据库应用系统开发设计的较好方法与手段(设计 DBMS 本身就是一个宏大的软件工程) 常见数据库系统与开发工具学习数据库系统概论自然会接触到数据库大型数据库系统:O
6、RACLE、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#、VB.NET、C+.NET 等 课程研究对象研究对象为信息、数据信息(Information):定义为向人们(或机器)提供关于现实世界新的事实的知识。数据(Data)
7、:定义为用以载荷信息的物理符号,如:符号、数字、声音、图形、图像等信息与数据是不可分离而又有一定区别的概念,信息是更基本的直接反映现实的概念,而数据是信息的具体表现,数据是信息的数字化、符号化。但不严格场合一般不加区分,可以说信息管理/数据管理(处理)随着人类社会的发展,信息在各种活动中居于越来越重要的地位,由于信息量急剧增加,形式多样,结构复杂以及及时性要求的提高,信息处理就成为一个极其重要的问题。 数据处理(信息处理)所谓信息处理或数据处理系指对信息(即各种形式数据)进行收集、组织、存储、加工、抽取和传播的一系列活动的总和。其基本目的是从大量的、杂乱无章的、难以理解的数据中抽取并推导出某些
8、特定的人们来说是有价值、有意义的数据,借以作为决策的依据。 研究目标数据库系统是信息处理的最高形式,其研究目标就是如何高效地巧妙地进行数据处理,而又花费最少。 什么叫数据库?数据库是个通用化的综合性的数据集合,它可以供各种用户共享且具有最小的冗余度和较高的数据与程序的独立性。 什么叫数据库系统?数据库系统是指能实现有组织地、动态地存储大量有关联的数据,能方便多用户访问的,由计算机软、硬资源组成的系统,它包括四个主要的组成部分:数据集合、硬件、软件和用户。 数据模型1、作用:数据库系统中用于提供信息表示和操作手段的形式框架。2、分类:根据模型应用的不同目的,可以将模型分为:1)概念模型(信息模型
9、)(用户的观点)2)数据模型(网状、层次、关系、面向对象) (计算机系统的观点)3、区别:概念模型 数据模型用于信息世界 机器世界强调语义表达 强调形式化定义易于用户理解 便于机器上实现用于与设计人员交流 设计人员在机器上较好实现 三级模式三级模式 描述语言 描述内容 数据库 外模式 SDDL 局部逻辑结构 用户数据库 模式 DDL 全局逻辑结构 概念数据库 内模式 PDDL 数据物理结构 存储数据库 用户 记录 关系数据库的观点终端用户、应用程序员 用户记录 视图或查询 系统程序员、DBA 概念记录 若干张表 DBA、分析员 系统存储记录 表文件、库文件 数据库设计题目-分析-E-R 图-R
10、1(.)、R2(.)需求分析 概念设计 逻辑设计 物理设计 数据库实施 运行与维护问题-数据与处理-整个系统 E-R 图-关系模型即关系模式集合-建索引、主码、外码-(完整性、数据字典) (分 E-R 图、全 E-R 图) 创建数据库、编制应用程序、调试、运行-性能测试、重组织、重构造、维护(适应性、修正性、完善性) 作业解答设有关系模式(表内容简略):S(S#,Sname,CITY)其中 S 表示供应商,S#为供应商代号,SNAME 为供应商名字,CITY 为供应商所在城市,主关键字为S#;P(P#,PNAME,COLOR,WEIGHT)其中 P 表示零件,P#为零件代号,PNAME 为零件
11、名字,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
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=j1pno=p1(SPJ)(3) sno(jno=j1(SPJ) color=红(P)(4) jno(J)- jno(city=天津(S) SPJ color=红(P)或jno(SPJ)-
13、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=j1SPJ.pno=p1(3) RANGE P XGET
14、W(SPJ.sno): X( SPJ.jno=j1X.color=红SPJ.pno=X.pno)(4) RANGE S XP YSPJ ZGET W(J.jno): Z(Z.jno=J.jno( X Y(X.city=天津Y.color=红Z.pno=Y.pnoX.sno=Z.sno)或RANGE S XP YSPJ ZGET W(J.jno):( X Y Z(X.city=天津Y.color=红Z.pno=Y.pnoX.sno=Z.snoZ.jno=J.jno)或RANGE S XP YSPJ ZGET W(SPJ.jno):( X Y Z(X.city=天津Y.color=红Z.pno=Y
15、.pnoX.sno=Z.snoZ.jno=SPJ.jno)错的:(错误原因对某个不存在即选取,没有全面考查)RANGE S XP YGET W(SPJ.jno):( X Y(X.city=天津Y.color=红SPJ.pno=Y.pnoX.sno=SPJ.sno)(5) RANGE SPJ XSPJ YGET W(J.jno): X(X.sno=s1 Y(Y.pno=X.pnoY.jno=J.jno)或RANGE SPJ XSPJ YGET W(J.jno): X(X.sno=s1 Y(Y.pno=X.pnoY.jno=J.jnoY.sno=s1)或RANGE SPJ XSPJ YP ZGET
16、 W(J.jno): Z( X(X.sno=s1X.pno=Z.pno)Y(Y.pno=X.pnoY.jno=J.jno)GET W(J.jno): Z( X(X.sno=s1X.pno=Z.pno)Y(Y.pno=Z.pnoY.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 SNO FROM SPJ WHERE JNO=j1 AND PNO IN(SELECT PNO FROM P WHER
17、E COLOR=红)(4) SELECT JNO FROM J WHERE NOT EXISTS(SELECT * FROM S,SPJ,P WHERE S.SNO=SPJ.SNO AND SPJ.PNO=P.PNO AND SPJ.JNO=J.JNO AND S.CITY=天津 AND P.COLOR=红)或SELECT DISTINCT X.JNO FROM SPJ X WHERE NOT EXISTS(SELECT * FROM SPJ WHERE X.JNO=SPJ.JNO AND SPJ.SNO IN (SELECT SNO FROM S WHERE S.CITY=天津) AND S
18、PJ.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=天津) 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 AN
19、D 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=天津) AND SPJ.PNO IN (SELECT PNO FROM P WHERE P.COLOR=红)或SELECT
20、 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 N
21、OT 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 DISTI
22、NCT 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
23、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)) 举 例
24、设有关系数据库,它由三个关系组成,它们的模式是:S(S#,SN,SD,SA)C(C#,CN,PC#)SC(S#,C#,G)请用关系代数写出下列查询:1、检索学生的所有情况。S2、检索学生年龄大于等于 20 岁的学生姓名。SN(SA=20(S)3、检索先修课号为 C2 的课程号。C#(PC#=C2(C)4、检索课程号 C1 的成绩为 A 的所有学生姓名。SN(C#=C1G=A(S SC)5、检索 S1 修读的所有课程名及先修课号。CN,PC#(S#=S1(C SC)6、检索年龄为 23 岁的学生所修读的课程名。CN(SA=23(C SC S)7、检索至少修读为 S5 修读的一门课的学生的姓名。S
25、N(S (S#(SC (C#(S#=S5(SC)R=C#(S#=S5(SC)W=S#(SC R)SN(S W)8、检索修读 S4 所修读的所有课程的学生的姓名。SN(S (S#,C#(SC)(C#(S#=S4(SC)R=C#(S#=S4(SC)W=S#,C#(SC)RSN(S W)9、检索选修所有课程的学生的学号。S#,C#(SC)C#(C)10、检索不选修任何课程的学生的学号。(S#(S) - (S#(SC)11、在关系 C 中增添一门新课(C13,ML,C8)令 R=(C13,ML,C8)CR12、学号为 S17 的学生因故退学请在 S 与 SC 中将其除名。S - (S#=S17(S)S
26、C - (S#=S17(SC)13、将关系 S 中学生 S6 的年龄改为 22 岁。S - (S#=S6(S)W14、将关系 S 中学生的年龄均增加 1 岁。S(S#,SN,SD,SA+1) 自出题1、求 S1 供应过零件的项目编号 JNO 及项目名称 JNAME1)JNO(SNO=S1(SPJ)2) GET W(SPJ.jno):SPJ.sno=s13) select jno from spj where sno=s12、求采用 S1 供应的红色零件的项目编号 JNO1)jno(SPJ.SNO=S1P.COLOR=红(SPJP))2) RANGE P XGET W(SPJ.jno):X( X
27、.COLOR=红X.PNO=SPJ.PNOSPJ.Sno=S1)3) select SPJ.jno from spj,P where SPJ.PNO=P.PNO AND SPJ.SNO=S1 AND P.COLOR=红3、求天津城市的项目采用的零件名称 PNAME1)p.pname(PSPJj.city=天津(J))2) RANGE spj Xj yGET W(p.pname):X( X.PNO=P.PNOy(x.jno=y.jnoy.city=天津)3) select P.pname from p,spj,j where SPJ.PNO=P.PNO AND SPJ.jno=j.jno AND j.city=天津