华工软件基础第4章-数据库系统-第4节-数据库应用系统的开发过程_第1页
华工软件基础第4章-数据库系统-第4节-数据库应用系统的开发过程_第2页
华工软件基础第4章-数据库系统-第4节-数据库应用系统的开发过程_第3页
华工软件基础第4章-数据库系统-第4节-数据库应用系统的开发过程_第4页
华工软件基础第4章-数据库系统-第4节-数据库应用系统的开发过程_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

计算机软件技术基础第四章数据库系统1第4节数据库应用系统的设计和实现

(自学)本节主要学习内容:1、数据库应用系统开发过程;2、基于VisualBasic和Access的数据库应用系统开发。2数据库应用系统开发过程1、前期调研和需求分析2、系统设计概念结构设计逻辑结构设计物理结构设计3、系统实现(代码编写)4、系统测试5、软件发行和维护注意:整个开发过程的各个阶段都应该注意相关文档的编制和管理!!3一、应用背景与需求说明 在单机上实现一个教学管理系统,并且可以很容易地把它移植到C/S结构中,内容只涉及教学管理中的对学生、课程和教师的管理部分。项目的主要要求是:运行环境是Windows95以上操作系统,数据库的前端开发环境是VisualBasic5.0以上版本。系统能够实现对学生、课程和教师的管理(查询、添加、删除、修改等操作)。系统能够导出所需的统计报表(见下页)。基于VisualBasic和Access的数据库应用系统开发实例4需产生的报表(视图):每学期开学时要生成学生修课情况表,内容包括学号、姓名、课程名、修课类别,其中修课类别分为必修、选修、重修。每学期结束时要生成学生修课成绩表,内容包括学号、姓名、课程名、修课类别、平时成绩、卷面成绩、总评成绩。生成教师授课服务表,内容包括教师号、教师名、课程名、授课类别、学时数、班数,授课类别分为主讲、辅导、带实验。安全性要求(用户权限):主讲教师:具有对其所讲授课程的成绩的修改权。教学秘书和系主任:具有修改教师授课服务表中的内容的权力。其它人:只有查询有关信息的权力。5二、系统设计1、数据库设计1)概念结构设计对用户的需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型,通常用E-R模型来描述。主要手段:分析现实系统,确定系统的对象及核心活动。该教学管理系统中,核心活动就是授课,学生与课程之间是通过授课发生联系的,教师与课程之间是通过教师授课发生联系的。系统所包含的实体:课程:数据元素为由一个主讲教师负责且教学内容相同的教学活动单位,用课程号来标识该实体。学生:数据元素为学生,由学号来标识。 教师:数据元素为教师,由教师号来标识。6学生m修课课程n学号姓名学院班级课程号课程名讲授学期学时数n课程授课m教师课程号课程名讲授学期学时数教师号教师名学院教研组局部E-R图设计7全局E-R图设计一门课程可由多名教师来讲授。一个教师可讲授多门课程。一个学生可以选修多门课程。

三个实体,两种联系学生mm修课课程授课nn教师全局E-R图82)逻辑结构设计(1)逻辑结构设计的方法将概念模型转换成特定的数据库管理系统所支持的数据模型(结构数据模型);通常是将E-R模型转换为关系模型。(2)逻辑结构设计的目标①确定整个数据库由哪些关系模式组成,即确定有哪些“表”组成;②确定每个关系模式由哪些属性组成,即确定每个“表”中的字段;③确定每个关系模式中的关键字属性。9逻辑结构设计:设计关系模式(关系型)设计基本关系模式主要就是从E-R图出发,将其直接转换为关系模式。转换的规则为:将每个实体都转换为一个关系模式。实体的属性就是关系的属性,实体的主键就是关系的主键。将每个联系也转换为一个关系模式,该关系模式的属性由与该联系相连的各个实体的主键及该联系的属性组成,该联系的主键分三种情况:若联系是1:1的,则每个实体的主键即是该联系的候选主键。若联系是1:n的,则此联系的主键是n端实体的主键。若联系是m:n的,则此联系的主键是各个实体的主键的并集。10针对E-R图列写关系模式关系模式的书写格式:关系名(属性1,属性2,…,属性n)(1)课程(课程号,课程名,讲授学期,学时数),主键为课程号。(2)学生(学号、姓名、学院、班级),主键为学号。(3)教师(教师号、教师名、学院、教研室),主键为教师号。(4)修课(学号,课程号,修课类别,平时成绩,卷面成绩,总评成绩),主键为(学号,课程号)。(5)授课(课程号,教师号,授课类别,班数),主键为(课程号,教师号)。11确定表中各属性(字段)的详细信息属性名称数据类型大小(字节)其它(如主键等信息)课程号字符串10主键课程名字符串20非空讲授学期字符串2非空学时数整型2非空(1)“课程”表(2)“学生”表属性名称数据类型大小(字节)其它(如主键等信息)学号字符串10主键姓名字符串20非空学院字符串20非空班级字符串10非空12属性名称数据类型大小(字节)其它(如主键等信息)教师号字符串10主键教师名字符串20非空学院字符串20非空教研室字符串10非空(3)“教师”表确定表中各属性(字段)的详细信息(续)(4)“授课”表属性名称数据类型大小(字节)其它(如主键等信息)课程号字符串10主键(课程表的外键)教师号字符串20主键(教师表的外键)授课类别字符串20非空班数浮点数取值>0(考虑半个班)13确定表中各属性(字段)的详细信息(续)属性名称数据类型大小(字节)其它(如主键等信息)学号字符串10主键(课程表的外键)课程号字符串4非空修课类别字符串4平时成绩浮点类型大于等于0,小于等于100卷面成绩浮点类型大于等于0,小于等于100总评成绩浮点类型大于等于0,小于等于100(5)“修课”表142、系统功能模块划分最常用的功能就是对数据的增、删、改、查及生成报表

1.数据录入(增加)

2.数据删除

3.数据修改

4.数据查询

5.生成报表包括所有表的数据录入有条件删除,有权限限制,有删除确认有条件查询后修改,有权限限制,修改后保存根据用户提出的条件查询,所有用户都有查询权限用数据库开发工具生成报表15本例三张报表(相当于三个视图):(1)学生修课表(学号,姓名,课程名,修课类别)(2)学生成绩表(学号,姓名,课程名,修课类别,平时成绩,卷面成绩,总评成绩)(3)

教师授课服务表(教师号,教师名,课程名,授课类别,学时数,班数)创建视图“学生修课表”的SQL语句可描述为:CREATEVIEW

学生修课表(学号,姓名,课程名,修课类别)ASSELECT学生.学号,姓名,课程名,修课类别FROM学生,课程,修课WHERE学生.学号=修课.学号AND课程.课程号=修课.课程号对“学生成绩表”和“教师授课服务表”的处理与此类似16三、数据库开发环境在C/S环境下实现时应注意数据的分布将数据全部放在服务器上--中央数据库将数据全部集中管理,数据只有一份,比如实时采集的数据一般都应该放在服务器端。将一部分数据放在服务器上,另一部分数据放在客户机上--地方数据库将数据分散管理,只将重要的、所有部门共享的数据放在中央数据库中,将各个部门自己需要的数据放在地方数据库中。本教学管理系统中,将所设计的五张表放在服务器,便于全校统一管理,各部门共享;同时各部门有自己的地方数据库。如“修课表”,中央数据库和地方数据库各有一个,且两者结构一致,当地方课程数据库修改时,能及时修改中央数据库,保持数据的一致性。数据过于庞杂易于各部门开发自己专用的地方数据库17将数据分为中央数据库和地方数据库的优点减少对中央数据库的操作次数,先在地方数据库中录入有关数据(比如本系的修课情况表),当确认准确无误之后再送到中央数据库中。数据一旦被送到中央数据库就不能被随便地修改和删除,这也增加了中央数据库数据的安全性和可靠性。18Jet:VisualBasic提供的数据库引擎Jet数据库引擎接口的方法:Data控件(DataControl)数据访问对象(DAO)VB中数据库编程的内容:创建数据访问对象,这些数据访问对象对应于被访问的物理数据库的不同部分,如:用这些对象的属性和方法来实现对数据库的操作。VB可以识别三类数据库:

1.VisualBasic数据库:2.外部数据库:3.ODBC数据库:符合ODBC

标准的客户/服务器数据库1、VisualBasic中的数据访问提供有限的不需编程就能访问现存数据库的功能DAO模型则是全面控制数据库的完整编程接口Database(数据库)、TableDef(表)、Field(字段)、Index(索引)对象。数据库文件使用与Access相同的格式dBase、FoxPro、Paradox、MicrosoftExcel、LotusMicrosoftSQLServer19Jet引擎的作用: 处理存储、检索、更新数据的接口,并提供了功能强大的、面向对象的DAO编程接口。1)VB数据库应用程序的组成2、VisualBasic数据库体系结构用户界面Jet引擎数据库实现“透明”访问(读取、写入或修改数据库,处理所有内部事物)显示数据并允许用户查看或更新数据窗体VB中添加或删除记录,执行查询等Jet包含在一组DLL文件中,被链接到VB程序,把应用程序译成对.mdb文件或其它数据库的物理操作。包含数据表的一个或多个文件202)数据库引擎的存放远程数据库客户机/服务器数据库数据库数据库引擎用户界面数据库用户界面数据库引擎客户/服务器服务器客户机远程

客户/服务器与远程数据库的数据库引擎存放可同时对多个客户机的应用程序提供服务,操作数据库并对每个应用程序返回所请求的记录21

VB中创建数据库途径:

1、可视化数据管理器2、DAO3、MicrosoftAccess不编程即可创建Jet引擎使用VB的DAO部件可以通过编程的方法创建数据库用Access创建的数据库和直接在VB中创建的数据库一样,两者用的数据库引擎与格式一样四、创建数据库的几种途径22数据管理器(DataManager)可以用于快速地建立数据库结构及数据库内容。VB的数据管理器是一个独立的可单独运行的应用程序――Visdata.exe。随安装过程放置在VB目录中,可以单独运行,也可以在VB开发环境中启动它。凡是VB有关数据库的操作,比如数据库结构的建立、记录的添加及修改以及使用ODBC连接到服务器端的数据库,如SQLServer,都可以利用此工具来完成。启动数据管理器的方法:打开VB

外接程序可视化数据管理器VisData(窗体工具栏提供了三组9个按钮:在下页中介绍)以VB提供的Biblio.mdb数据库为实例介绍。文件打开数据库VB目录下的Biblio.mdb

确定1、可视化数据管理器23表类型记录集动态集类型记录集快照类型记录集显示数据表数据群组按钮打开Biblio.mdb文件后的VisData窗口事务方式群组按钮所进行的增、删、改、查等操作直接更新数据库中的数据在内存中操作,不直接影响数据库进行事务处理可视化数据管理器只能读不能改241)建立数据库建立数据结构

文件新建MicrosoftAccess版本7.0输入需要创建的文件名添加数据表鼠标右键新建表出现“表结构”窗口:输入表名称“课程”;单击“添加字段”输入字段内容;名称:课程名、授课学期学时数等类型:text或integer大小:不定建立索引252)录入数据数据库窗口在窗体上使用DBGrid控件课程鼠标右键打开显示下图录入数据263)建立查询对已有数据的数据表进行有条件或无条件查询

VisData窗口实用程序查询生成器输入查询条件272、数据访问对象DAO的引入:

数据管理器:只适合于做比较简单的应用,如果要实现复杂的应用系统,使用VB提供的数据访问对象(DAO),DAO是通过编程来直接控制JET数据库引擎,来实现复杂的数据库应用系统。DAO的分层结构:数据访问对象是以分层形式组织而成的,大多数对象成员都是一个对象类别的集合,而这个集合又隶属于上一层的另一个对象类别,大多数数据访问对象被描述为“对象和集合”。分层结构的顶部是MicrosoftJet数据库引擎本身――DBEngine对象。它是唯一不被其它对象所包含的数据访问对象。对象分层结构通过“包含”一种其它对象的“集合”实现,集合对象用于包含其它对象,集合中的对象都是同一类型的。

DAO分层结构中的元素实际上是类,而不是对象,它们是对象的“蓝图”。类与数据类型类似,它只描述所引用的对象的“类型”。例如,声明DimMyWsAsWorkspaceMyWs是一个代表Workspace类型的对象的变量28

DAO分层结构图29DAO创建数据库的步骤: 创建新数据库的第一步是创建Database对象本身,然后添加与设计相一致的TableDef和Field对象来定义其结构,方法:1)使用Dim语句给数据库中的每一个对象创建对象变量。除了构造构成环境的DBEnigne和缺省的Workspace对象外,还需要:一个Database对象每个表需要一个TableDef对象每个表中的每个字段需要一个Field对象每个表中的每个索引需要一个Index对象 如:用如下代码创建一个数据库对象变量:(数据库名:JXGL.mdb)DimMyDbAsDatabase,MyWsAsWorkspaceDimStuTdAsTableDef,TeaTdAsTableDef,CosTdAsTableDef,XKTdAsTableDef,SKTdAsTableDefDimStuFlds(5)AsField,TeaFlds(4)AsField,CosFlds(4)AsField,_

XKFlds(5)AsField,SKFlds(5)AsFieldDimStuIdxAsIndex,TeaIdxAsIndex,CosIdxAsIndex,XKIdx(2)AsIndex,SKIdx(2)AsIndex302)使用Workspace对象的CreateDatabase方法创建新的数据库。SetMyWs=DBEngine.Workspaces(0)SetMyDb=MyWs.CreateDatabase(“C:\VB\JXGL.mdb”,dbLangGeneral,dbVersion03)3)使用Database对象的CreateTableDef方法为数据库中的所有表创建新的TableDef对象。如本例中:SetStuTd=MyDB.CreateTableDef(“学生”)SetTeaTd=MyDB.CreateTableDef(“教师”)SetCosTd=MyDB.CreateTableDef(“课程”)SetXKTd=MyDB.CreateTableDef(“修课”)SetSKTd=MyDB.CreateTableDef(“授课”)314)使用TableDef对象的CreateField方法,为表中每个字段创建Field对象,然后设置每个字段的属性来定义字段的长度、数据类型和其它所需的属性。例如,下面的代码用来创建JXGL.mdb数据库中的课程表的字段:

SetCosFlds(0)=CosTd.CreateField(“课程号”,dbText)SetCosFlds(0).Size=10SetCosFlds(1)=CosTd.CreateField(“课程名”,dbText)SetCosFlds(1).Size=20SetCosFlds(2)=CosTd.CreateField(“授课学期”,dbInteger)SetCosFlds(3)=CosTd.CreateField(“学时数”,dbInteger)5)用Append方法把每个字段添加到表中,并把每个表添加到数据库中。例如:CosTd.Fields.AppendCosFlds(0)CosTd.Fields.AppendCosFlds(1)CosTd.Fields.AppendCosFlds(2)CosTd.Fields.AppendCosFlds(3)MyDb.TableDefs.AppendCosTd323、创建索引用数据库表添加索引的步骤:1)用TableDef对象中的CreateIndex方法给每个表创建索引,并设置其属性:

SetCosIdx=CosTd.CreateIndex(“课程号”)

CosIdx.Primary=True ’是主键

CosIdx.Unique=Ture ’值不重复2)用Index对象的Createfield方法给每个索引对象创建字段:

SetNewFld=CosIdx.CreateField(“课程号”)3)把字段追加到Index中,然后把Index追究到TableDef对象中: CosIdx.Fields.AppendNewFld CosTd.Indexes.AppendAuIdx

注意:用Index对象中的CreateField方法创建的字段不添加到TableDef中,而是添加到Index对象中,并给Name属性赋值,该属性与被索引的TableDef字段中的Name属性相同。不用指定Index对象中字段的Type(类型)和Size(大小)属性。建好数据库之后,还要指定索引及各表间的关系:用CreatIndex方法可以给TableDef定义的表添加索引,用Index对象的CreatField方法创建新的Field、指定被索引的字段334、创建联系和引用完整性在添加和删除记录时必须保持引用的完整性以确保数据库中的联系有用Jet数据库引擎提供了Relation对象来强制引用的完整性,以防止出现不一致的记录。给数据库添加联系的步骤:1.用Database对象的CreateRelation方法创建Relation对象,然后设置其table和ForeignTable属性:DimStu_XKAsRelationSetStu_XK=MyDb.CreateRelation(“Student_XK”)Stu_XK.Table=“学生”Stu_XK.ForeignTable=“修课”2.用Relation对象中的CreateField方法,创建一个字段,用来定义联系中的主键和外键字段。DimTempFieldAsFieldSetTempField=Stu_XK.CreateField(“学号”)TempField.ForeignName=“学号”3.用Append方法把Field对象添加到Relation中,然后把Relation添加到Database中。Stu_XK.Fields.AppendTempFieldMyDb.Relations.AppendStu_XK34五、创建数据库应用程序(系统实现阶段)1、数据控件(DataControl)数据控件是连接数据库中的信息和用户用来显示信息的约束控件,是简单数据库应用程序的核心。约束控件是为处理数据库应用程序的数据控件而建立的控件。数据控件用于绑定数据库和数据库中的某个表,约束控件用于绑定表中的某个列。数据控件是VB工具箱中的一个可用控件,设置数据控件的步骤:打开VB选择Data控件在窗体中画出Data控件设定Data控件的DatabaseName和RecordSource属性。用于绑定某个数据库(文件)用于绑定数据库中的某个表文本框、标签、校验框、图片框、图像框等352、创建一个简单的应用程序例:创建一个课程表应用程序:

1)建立窗体:打开VB添加Data控件设置数据控件的属性添加依附控件设置依附控件属性。Name:CourseCaption:课程DatabaseName:JXGL.mdbRecordSource:课程数据访问窗体设置的DataField和CaptionVB设置屏幕文本框名绑定字段对应标签标题Text1课程号课程号:Text2课程名课程名:Text3授课学期授课学期:Text4学时数学时数:362)浏览数据库中数据: 单击运行按钮,结果如下:第一条记录最后一条记录下一条记录上一条记录373)数据控件的其它功能:添加记录、删除记录等PrivateSub添加_Click()Data1.Recordset.AddNewEndSubPrivateSub删除_Click()Data1.Recordset.DeleteIfNotData1.Recordset.EOFThenData1.Recordset.MoveNextElseData1.Recordset.MoveLastEndIfEndSub383、创建数据窗体使用数据窗体向导(DataFormWizard――DFW)创建数据窗。DFW是与VB一同发行的一个插件,用此插件用户只需选择一个数据库和数据表,DFW即自动为用户生成具有对此数据表进行增、删、改、浏览功能的窗体。用户可在此基础上进行修改,使之符合自己的需要。即:DFW是一种快速原型开发或简单应用程序的很好的工具。使用DFW创建数据窗体的大致步骤为:

VB窗口外接程序数据库窗体向导Access

数据库名(JXGL.mdb)根据提示(下一步)完成此操作,显示结果如下:

DFW生成的课程数据窗体39小结本章在前面所讲的数据库知识的基础上,根据数据库应用开发的步骤,实际地讲述了一个具有实际背景的数据库应用的开发。目前VB的使用范围越来越广泛,由于它简单易学,特别适合于普通应用的开发。VB开发工具具有开发周期短、应用范围广(从界面制作到数据库开发,包括个人机的和客户/服务器结构的以及远程数据库的应用,到Internet的开发,到多媒体应用的开发无一不行)等特性,因此得到广大应用开发人员的喜爱。目前还有许多适合于普通开发人员的RAD(快速应用开发工具)工具,如:Delphi,PowerBuilder,C++Builder等,不要拘泥于某一种开发工具,重要的是掌握应用开发的基本思路并熟练掌握一种开发工具,做到触类旁通以收举一反三之效。40关于ODBC

1.ODBC概述在传统的数据库管理系统中,每个数据库管理系统都有自己的应用程序开发接口(API),应用程序使用数据库系统所提供的专用开发工具(如嵌入式SQL语言)进行开发,这样的应用程序只能运行在特定的数据库系统环境下,适应性和可移植性比较差。在用户硬件平台或操作系统发生变化时,应用程序需要重新编写。嵌入式SQL语言的另一个缺点是它只能存取某种特定的数据库系统,因此一个应用程序只能连接同类的DBMS,而无法同时访问多个不同的DBMS,而在实际应用中通常是需要同时访问多个不同的DBMS。例如,在一个单位中,财务、生产和技术等部门常根据自身专业的特点选择不同的DBMS,而建立企业级管理信息系统时,需要同时访问各个部门的数据库。这种情况下传统的数据库应用程序开发方法就难以实现。为了解决这些问题,Microsoft公司开发了ODBC(OpenDataBaseConnectivity,即开放数据库互连)。41ODBC是Microsoft公司开发的一套开放数据库系统应用程序接口规范,目前它已成为一种工业标准。它提供了统一的数据库应用编程接口(API),为应用程序提供了一套高层调用接口规范和基于动态连接库的运行支持环境。使用ODBC开发数据库应用时,应用程序调用的是标准的ODBC函数和SQL语句,数据库底层操作由各个数据库的驱动程序完成。因此应用程序有很好的适应性和可移植性,并且具备了同时访问多种数据库管理系统的能力,从而彻底克服了传统数据库应用程序的缺陷。2.ODBC体系结构ODBC驱动程序类似于Windows下的打印驱动程序,对用户来说,驱动程序屏蔽了不同对象(数据库系统或打印机)间的差异。同样地,ODBC屏蔽了DBMS之间的差异。ODBC的体系结构如图6.12所示。42ODBC的体系结构431)ODBC数据库应用程序应用程序的主要任务包括:建立与数据源的连接、向数据源发送SQL请求、接收并处理请求的结果、断开与数据源的连接等。2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论