一个数据库应用系统的设计与实现

上传人:痛*** 文档编号:171466331 上传时间:2022-11-27 格式:PPT 页数:28 大小:362.52KB
返回 下载 相关 举报
一个数据库应用系统的设计与实现_第1页
第1页 / 共28页
一个数据库应用系统的设计与实现_第2页
第2页 / 共28页
一个数据库应用系统的设计与实现_第3页
第3页 / 共28页
点击查看更多>>
资源描述
一个数据库应用系统的设计与实现 1 应用背景与需求说明在单机上实现一个教学管理系统的例子,并且可以很容易地把它移植到C/S结构中,只涉及教学管理中的对学生、课程和教师的管理部分:项目的具体要求是:.运行环境是Windows 95/98操作系统,数据库的前端开发环境是VB 5.0。一门课程可由多名教师来讲授。一个教师可讲授多门课程。一个学生可以选修多门课程。需产生的报表有.每学期开学时要生成学生修课情况表,内容包括学号、姓名、课程名、修课类别,其中修课类别分为必修、选修、重修。.每学期结束时要生成学生修课成绩表,内容包括学号、姓名、课程名、修课类别、平时成绩、卷面成绩、总评成绩。生成教师授课服务表,内容包括教师号、教师名、课程名、授课类别、学时数、班数,授课类别分为主讲、辅导、带实验。安全性要求 本门课程的主讲教师才具有对其所讲授课程的成绩的修改权,教学秘书和系主任才有修改教师授课服务表中的内容的权力。其它人只有查询有关信息的权力。2 数据库设计2.1 概念设计概念设计核心活动:是系统中的其它活动都是围绕这个活动展开的或与此活动是密切相关的活动确定系统的核心活动:确定系统的核心活动:对现实系统分析的关键该教学管理系统中,核心活动就是授课,学生与课程之间是通过授课发生联系的,教师与课程之间是通过教师授课发生联系的。系统所包含的实体:课程:课程:元素为由一个主讲教师负责且教学内容相同的教学活动 单位,用课程号来标识此实体。学生:学生:元素为一个学生,由学号来标识。教师:教师:元素为一个教师,由教师号来标识。初步初步ER图图:学生修课课程授课教师nmnm课程号、课程名、讲授学期、学时数学号、姓名、系、专业、班级教师号、教师名、系、教研室2 数据库设计 2.2 设计关系模式设计基本关系模式主要就是从ER图出发,将其直接转换为关系模式。转换的规则为:1.将每个实体都转换为一个关系模式。实体的属性就是关系的属性,实体的主码就是关系的主码。2.将每个联系也转换为一个关系模式,该关系模式的属性由与该联系相连的各个实体的主码及该联系的属性组成,该联系的主码分三种情况:.若联系是1:1的,则每个实体的主码即是该联系的候选码。.若联系是1:n的,则此联系的主码是n端实体的主码。.若联系是m:n的,则此联系的主码是各个实体的主码的并。此此E ER R图的关系模式为:图的关系模式为:(1)课程(课程号,课程名,讲授学期,学时数),主码为课程号。(2)学生(学号、姓名、系、专业、班),主码为学号。(3)教师(教师号、教师名、系、教研室),主码为教师号。(4)修课(学号,课程号,修课类别,平时成绩,卷面成绩,总评成绩),主码为(学号,课程号)。(5)授课(课程号,教师号,授课类别,班数),主码为(课程号,教师号)。2.2 设计关系模式确定表中各属性的详细信息(1)(1)课程表课程表课程号:字符串型,10字节,主码课程名:字符串型,20字节,非空讲授学期:字符串型,2字节,非空学时数:整型,非空(2)(2)学生表学生表学号:字符串型,10字节,主码姓名:字符串型,20字节,非空系:字符串型,20字节,非空专业:字符串型,20字节,非空班:字符串型,10字节,非空(3)(3)教师表教师表教师号:字符串型,10字节,主码教师名:字符串型,20字节,非空 系:字符串型,20字节教研室:字符串型,10字节(4)(4)修课表修课表学号:字符串型,10字节,主码,学生表的外码课程号:字符串型,10字节,主码,课程表的外码修课类别:字符串型,4字节,非空平时成绩:浮点型,大于等于0,小于等于100卷面成绩:浮点型,大于等于0,小于等于100总评成绩:浮点型,大于等于0,小于等于100(5)(5)授课表授课表课程号:字符串型,10字节,主码,课程表的外码教师号:字符串型,10字节,主码,教师表的外码授课类别:字符串型,10字节班数:浮点型,大于0。假设选修课有半个班的情况,因此取浮点型。2.3 确定数据库应用的功能最常用的功能就是对数据的增、删、改、查及生成报表1.数据录入(增加)2.数据删除3.数据修改4.数据查询5.生成报表本例三张报表本例三张报表:(1)学生修课表(学号,姓名,课程名,修课类别)(2)学生成绩表(学号,姓名,课程名,修课类别,平时成绩,卷面成绩,总评成绩)(3)教师授课服务表(教师号,教师名,课程名,授课类别,学时数,班数)创建视图的创建视图的SQLSQL语句可描述为:语句可描述为:CREATE VIEW 学生修课表学生修课表(学号,姓名,课程名,修课类别)ASSELECT 学生.学号,学生.姓名,课程.课程名,修课.修课类别 FROM 学生,课程,修课 WHERE 学生.学号=修课.学号 AND 课程.课程号=修课.课程号包括对张表的数据录入有条件删除,有权限限制,有删除确认有条件查询后修改,有权限限制,修改后保存根据用户提出的条件查询,所有用户都有查询权限用数据库开发工具生成报表对对“学生成绩表学生成绩表”和和“教师授课服务表教师授课服务表”的处理与此类似的处理与此类似3 数据库开发环境在C/S环境下实现时应注意数据的分布 将数据全部放在服务器上-中央数据库中央数据库 将数据全部集中管理,数据只有一份,比如实时采集的数据一般都应该放在服务器端。将一部分数据放在服务器上,另一部分数据放在客户机上-地方数据库地方数据库 将数据分散管理,只将重要的、所有部门共享的数据放在中央数据库中,将各个部门自己需要的数据放在地方数据库中。例:例:本教学管理系统中,将所设计的五张表放在服务器,便于全校统一管理,各部门本教学管理系统中,将所设计的五张表放在服务器,便于全校统一管理,各部门共享,同时各部门有自己的地方数据库。共享,同时各部门有自己的地方数据库。如“修课表”,中央和地方各有一个,且两者结构一致,当地方课程数据库修改时,能及时修改中央数据库,在保持数据的一致性。将数据分为中央数据库和地方数据库的好处:减少对中央数据库的操作次数,先在地方数据库中录入数据有关数据(比如本系的修课情况表),当确认准确无误之后再送到中央数据库中。数据一旦被送到中央数据库就不能被随便地修改和删除,这也增加了中央数据库数据的安全性和可靠性。数据过于庞杂易于各部门开发自己专用的地方数据库分类3.1 Visual Basic中的数据访问Jet Jet:Visual Basic 提供的数据库引擎JetJet数据库引擎接口的方法数据库引擎接口的方法:Data控件(Data Control)和数据访问对象(DAO)VB中数据库编程的内容:创建数据访问对象,这些数据访问对象对应于被访问的物理数据库的不同部分,如:用这些对象的属性和方法来实现对数据库的操作。VBVB可以识别三类数据库:可以识别三类数据库:1.Visual Basic数据库:2.外部数据库:3.ODBC数据库:符合ODBC标准的客户/服务器数据库提供有限的不需编程就能访问现存数据库的功能DAO模型则是全面控制数据库的完整编程接口Database(数据库)、TableDef(表)、Field(字段)Index(索引)对象。数据库文件使用与Microsoft Access相同的格式dBase III或IVFoxPro 2.0和2.5Paradox版本3.x和4.xMicrosoft ExcelLotus 1-2-3Microsoft SQL Server3.2 Visual Basic 数据库体系结构JetJet引擎的作用:引擎的作用:处理存储、检索、更新数据的结构,并提供了功能强大的、面向对象的DAO编程接口VBVB数据库应用程序的组成数据库应用程序的组成用户界面Jet 引擎数据库实现“透明”访问(读取、写入或修改数据库,处理所有内部事物)显示数据并允许用户查看或更新数据窗体VB中添加或删除记录,执行查询等Jet包含在一组DLL文件中,被链接到VB程序,把应用程序译成.mdb文件或其它数据库的物理操作。包含数据表的一个或多个文件2.2.数据库应用程序的存放数据库应用程序的存放 远程数据库 客户机/服务器数据库3.2 Visual Basic 数据库体系结构数据库数据库引擎用户界面数据库用户界面数据库引擎客户/服务器服务器 客户机 远程 客户/服务器与远程数据库数据库的存放可同时对多个客户机的应用程序提供服务,操作数据库并对每个应用程序返回所请求的记录4 创建数据库VB中创建数据库途径:中创建数据库途径:1、可视化数据管理器2、DAO3、Microsoft Access4、外部数据库应用程序不编程即可创建Jet引擎使用VB的DAO部件可以通过编程的方法创建数据库用 Access创建的数据库和直接在VB中创建的数据库一样,两者用的数据库引擎与格式一样VB可通过ISAM或ODBC驱动程序来访问FoxPro、dBASE或ODBC客户/服务器应用程序4.1 可视化数据管理器数据管理器(Data Manager)可以用于快速地建立数据库结构及数据库内容。VB的数据管理器是一个独立的可单独运行的应用程序Visdata.exe。随安装过程放置在VB目录中,可以单独运行,也可以在VB开发环境中启动它。凡是VB有关数据库的操作,比如数据库结构的建立、记录的添加及修改以及使用ODBC连接到服务器端的数据库,如SQL Server,都可以利用此工具来完成。启动数据管理器的方法:启动数据管理器的方法:打开VB 外接程序可视化数据管理器 VisData 窗体工具栏提供了三组9个按钮在下图中介绍 以VB提供的Biblio.mdb数据库为实例介绍。文件打开数据库VB目录下的Biblio.mdb 确定表类型记录集动态集类型记录集快照类型记录集显示数据表数据群组按钮打开 Biblio.mdb 后的 VisData 窗口窗体窗口事务方式群组按钮所进行的增、删、改、查等操作直接更新数据库中的数据在内存中操作,不直接影响数据库只能读,不能改进行事物处理图1 数据管理器1、建立数据库建立数据结构建立数据结构文件新建Microsoft Access 版本7.0 输入存储的文件名如图1添加数据表添加数据表鼠标右键新表出现“结构表”表名称表名称:课程单击“添加字段”输入字段内容名称名称:课程名、授课学期、学时数等类型类型:text或integer大大小小:不定建立索引建立索引数据库窗口在窗体上使用DBGrid控件课程鼠标右键打开显示下图录入数据3.建立查询对已有数据的数据表进行有条件或无条件查询 VisData窗口实用程序查询生成器(右键新查询)输入查询条件4.2 数据访问对象DAODAO的引入:的引入:数据管理器:只适合于做比较简单的应用,如果要实现复杂的应用系统,使用VB提供的数据访问对象(DAO),DAO是通过编程来直接控制JET数据库引擎,来实现复杂的数据库应用系统。DAODAO的分层结构:的分层结构:数据访问对象是以分层形式组织而成的,大多数对象成员都是一个对象类别的集合,而这个集合又隶属于上一层的另一个对象类别,大多数数据访问对象被描述为“对象和集合”。分层结构的顶部是Microsoft Jet数据库引擎本身DBEngine对象。它是唯一不被其它对象所包含的数据访问对象 对象分层结构通过“包含”一种其它对象的“集合”实现,集合对象用于包含其它对象,集合中的对象都是同一类型的。DAO分层结构中的元素实际上是类,而不是对象,它们是对象的“蓝图”。类与数据类型类似,它只描述所引用的对象的“类型”。例如,例如,声明 Dim MyWs As WorkspaceMyWs是一个代表Workspace类型的对象的变量DBEngine对象WorkSpaces集合对象WorkSpace对象DataBases集合对象DataBase对象RecordSets集合对象QueryDefs集合对象TableDefs集合对象Relations集合对象Contains集合对象RecordSets对象QueryDefs对象TableDefs对象Relations对象Contains对象FieldFieldParamterFieldIndexFieldDocumentField.DAO分层结构图DAO创建数据库的步骤:创建数据库的步骤:创建新数据库的第一步是创建Database对象本身,然后添加与设计相一致的TableDef和Field对象来定义其结构,方法:1 1、使用、使用DimDim语句给数据库中的每一个对象创建对象变量语句给数据库中的每一个对象创建对象变量。除了构造构成环境的DBEnigne和缺省的Workspace对象外,还需要:一个Database对象每个表需要一个TableDef对象每个表中的每个字段需要一个Field对象每个表中的每个索引需要一个Index对象如如:用如下代码创建一个数据库对象变量:(数据库名:数据库名:JXGL.mdbJXGL.mdb)Dim MyDb As Database,MyWs As WorkspaceDim StuTd As TableDef,TeaTd As TableDef,CosTd As TableDef,XKTd As TableDef,SKTd As TableDef Dim StuFlds(5)As Field,TeaFlds(4)As Field,CosFlds(4)As Field,XKFlds(5)As Field,SKFlds(5)As FieldDim StuIdx As Index,TeaIdx As Index,CosIdx As Index,XKIdx(2)As Index,SKIdx(2)As Index4.2 数据访问对象4.2 数据访问对象 DAO创建数据库的步骤创建数据库的步骤2 2、使用、使用WorkspaceWorkspace对象的对象的CreateDatabaseCreateDatabase方法创建新的数据库。方法创建新的数据库。Set MyWs=DBEngine.Eorkspaces(0)Set MyDb=MyWs.CreateDatabase(“C:VBJXGL.mdb”,dbLangGeneral,dbVersion03)3 3、使用、使用DatabaseDatabase对象的对象的CreateTableDefCreateTableDef方法为数据库中的所有表创建新的方法为数据库中的所有表创建新的TableDefTableDef对象。对象。如本例中:Set StuTd=MyDB.CreateTableDef(“学生”)Set TeaTd=MyDB.CreateTableDef(“教师”)Set CosTd=MyDB.CreateTableDef(“课程”)Set XKTd=MyDB.CreateTableDef(“修课”)Set SKTd=MyDB.CreateTableDef(“授课”)4、使用使用TableDefTableDef对象的对象的CreateFieldCreateField方法,为表中每个字段创建方法,为表中每个字段创建FieldField对象,然后设对象,然后设置每个字段的属性来定义字段的长度、数据类型和其它所需的属性。置每个字段的属性来定义字段的长度、数据类型和其它所需的属性。例如,下面的代码用来创建JXGL.mdb数据库中的课程表:Set CosFlds(0)=CosTd.CreateField(“课程号”,dbText)Set CosFlds(0).Size=10Set CosFlds(1)=CosTd.CreateField(“课程名”,dbText)Set CosFlds(1).Size=20Set CosFlds(2)=CosTd.CreateField(“授课学期”,dbInteger)Set CosFlds(3)=CosTd.CreateField(“学时数”,dbInteger)5、用用AppendAppend方法把每个字段添加到表中,并把每个表添加到数据库中。例如方法把每个字段添加到表中,并把每个表添加到数据库中。例如:CosTd.Fields.Append CosFlds(0)CosTd.Fields.Append CosFlds(1)CosTd.Fields.Append CosFlds(2)CosTd.Fields.Append CosFlds(3)MyDb.TableDefs.Append CosTd4.2 数据访问对象 DAO创建数据库的步骤创建数据库的步骤用数据库表添加索引的步骤用数据库表添加索引的步骤:1.1.用用TableDefTableDef对象中的对象中的CreateIndexCreateIndex方法给每个表创建索引,并设置其属性方法给每个表创建索引,并设置其属性:Set CosIdx=CosTd.CreateIndex(“课程号”)CosIdx.Primary=True是主码 CosIdx.Unique=Ture值不重2.2.用用IndexIndex对象的对象的CreatefieldCreatefield方法给每个索引对象创建字段方法给每个索引对象创建字段:Set NewFld=CosIdx.CreateField(“课程号”)3.3.把字段追加到把字段追加到IndexIndex中,然后把中,然后把IndexIndex追究到追究到TableDefTableDef对象中对象中:CosIdx.Fields.Append NewFld CosTd.Indexes.Append AuIdx 注意注意:用Index对象中的CreateField方法创建的字段不添加到TableDef中,而是添加到Index对象中,并给Name属性赋值,该属性与被索引的TableDef字段中的Name属性相同。不用指定Index对象中字段的Type(类型)和Size(大小)属性。4.3 添加索引建好数据库之后,还要指定索引建好数据库之后,还要指定索引及各表间的关系:用及各表间的关系:用CreatIndex方法可以给方法可以给TableDef定义的表添定义的表添加索引,用加索引,用Index对象的对象的CreatField方法创建新的方法创建新的Field指指定被索引的字段定被索引的字段4.4 添加关系和引用完整性Jet数据库引擎提供了Relation对象来强制引用的完整性,以防止出现不一致的记录。给数据库添加关系的步骤:1.1.用用DatabaseDatabase对象的对象的CreateRelationCreateRelation方法创建方法创建RelationRelation对象,然后设置其对象,然后设置其tabletable和和ForeignTableForeignTable属性:属性:Dim Stu_XK As RelationSet Stu_XK=MyDb.CreateRelation(“Student_XK”)Stu_XK.Table=“学生”Stu_XK.ForeignTable=“修课”2.2.用用RelationRelation对象中的对象中的CreateFieldCreateField方法,创建一个字段,用来定义关系中的主码和方法,创建一个字段,用来定义关系中的主码和外码字段。外码字段。Dim TempField As FieldSet TempField=Stu_XK.CreateField(“学号”)TempField.ForeignName=“学号”3.3.用用AppendAppend方法把方法把FieldField对象添加到对象添加到RelationRelation中,然后把中,然后把RelationRelation添加到添加到DatabaseDatabase中。中。Stu_XK.Fields.Append TempFieldMyDb.Relations.Append Stu_XK在添加和删除记录时必须保持引用的完整性以确保数据库中的关系有用5 创建数据库应用程序5.1 数据控件(数据控件(Data Control)数据控件是连接数据库中的信息和用户用来显示信息的依附控件依附控件,是简单数据库应用程序的核心。依附控件是为处理创建数据库应用程序的数据控件而建立的控件。数据控件用于绑定数据库和数据库中的某个表,依附控件用于绑定表中的某个列。数据控件是VB工具箱中的一个可用控件,设置数据控件的步骤:设置数据控件的步骤:打开VB选择Data控件在窗体中画出Data控件设定Data控件的DatabaseName和RecordSource属性。用于绑定某个数据库用于绑定数据库中的某个表文本框、标签、校验框、图片框、图像等5 创建数据库应用程序 5.2 创建一个简单的应用程序创建一个简单的应用程序 例:创建一个课程表应用程序:例:创建一个课程表应用程序:1、建立窗体:、建立窗体:打开打开VB 添加Data控件设置控件的属性添加依附控件设置依附控件属性。Name:Course Name:Course Caption:Caption:课程课程DatabaseName:JXGL.mdbDatabaseName:JXGL.mdbRecordSourceRecordSource:课程课程文本框名绑定字段对应标签的标题Text1课程号课程号:Text2课程名课程名:Text3授课学期授课学期:Text4学时数学时数:数据访问窗体设置的数据访问窗体设置的DataFieldDataField和和CaptionCaptionVBVB设置屏幕设置屏幕 2.2.浏览数据库中数据:浏览数据库中数据:单击运行按钮,结果如下结果如下:5 创建数据库应用程序 5.2 创建一个简单的应用程序创建一个简单的应用程序第一个记录第一个记录最后一个最后一个记录记录下一条下一条记录记录上一条上一条记录记录3.3.数据控件的其它功能:数据控件的其它功能:添加记录、删除记录等添加记录、删除记录等 5 创建数据库应用程序 5.2 创建一个简单的应用程序创建一个简单的应用程序Private Sub 添加添加_Click()Data1.Recordset.AddNewEnd SubPrivate Sub 删除删除_Click()Data1.Recordset.DeleteIf Not Data1.Recordset.EOF ThenData1.Recordset.MoveNext Else Data1.Recordset.MoveLast End IfEnd Sub使用数据窗体模板使用数据窗体模板(Data Form WizardDFW)创建数据窗,创建数据窗,DFW是与VB一同发行的一个插件,用此插件用户只需选择一个数据库和数据表,DFW即自动为用户生成具有对此数据表进行增、删、改、浏览功能的窗体。用户可在此基础上进行修改,使之符合自己的需要。即:DFW是一种快速原型开发或简单应用程序的很好的工具。使用使用DFWDFW创建数据窗体的大致步骤为:创建数据窗体的大致步骤为:VB窗口窗口外接程序数据库窗体向导Access 数据库名(JXGL.mdb)根据提示(下一步)完成此操作,显示显示结果结果如下:如下:5 创建数据库应用程序 5.3 创建数据窗体创建数据窗体DFW生成的课程数据窗体小 结在数据库知识的基础上,根据数据库应用开发的步骤,实际地讲述了一个具有实际背景的数据库应用的开发。目前VB的使用范围越来越广泛,由于它简单易学,特别适合于普通应用的开发。VB开发工具具有开发周期短、应用范围广(从界面制作到数据库开发,包括个人机的和客户/服务器结构的以及远程数据库的应用,到Internet的开发,到多媒体应用的开发无一不行)等特性,因此得到广大应用开发人员的喜爱。我们选择VB作为数据库开发的工具来实现我们的例子。目前还有许多适合于普通开发人员的RAD(快速应用开发工具)工具,如:Delphi,Power Builder,C+Builder等,不要拘泥于某一种开发工具,重要的是掌握应用开发的基本思路并熟练掌握一种开发工具,做到触类旁通以收举一反三之效。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 成人自考


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!