1、一个数据库应用系统的设计与实现 1 应用背景与需求说明在单机上实现一个教学管理系统的例子,并且可以很容易地把它移植到 C/S结构中,只涉及教学管理中的对学生、课程和教师的管理部分:项目的具体要求是: .运行环境是 Windows 95/98操作系统,数据库的前端开发环境是 VB 5.0。 一门课程可由多名教师来讲授。 一个教师可讲授多门课程。 一个学生可以选修多门课程。 需产生的报表有 .每学期开学时要生成学生修课情况表 ,内容包括学号、姓名、课程名、修课类别,其中修课类别分为必修、选修、重修。 .每学期结束时要生成学生修课成绩表 ,内容包括学号、姓名、课程名、修课类别、平时成绩、卷面成绩、总
2、评成绩。 生成教师授课服务表,内容包括教师号、教师名、课程名、授课类别、学时数、班数,授课类别分为主讲、辅导、带实验。 安全性要求 本门课程的主讲教师才具有对其所讲授课程的成绩的修改权,教学秘书和系主任才有修改教师授课服务表中的内容的权力。其它人只有查询有关信息的权力。2 数据库设计 2.1 概念设计 核心活动 :是系统中的其它活动都是围绕这个活动展开的或与此活动是密切相关的活动 确定系统的核心活动: 对现实系统分析的关键 该教学管理系统中,核心活动就是授课,学生与课程之间是通过授课发生联系的,教师与课程之间是通过教师授课发生联系的。 系统所包含的实体:课程: 元素为由一个主讲教师负责且教学内
3、容相同的教学活动单位,用课程号来标识此实体。学生: 元素为一个学生,由学号来标识。 教师: 元素为一个教师,由教师号来标识。初步 E R图 :课程号、课程名、讲授学期、学时数学号、姓名、系、专业、班级教师号、教师名、系、教研室2 数据库设计 2.2 设计关系模式设计基本关系模式主要就是从 E R图出发,将其直接转换为关系模式。转换的规则为:1.将每个实体都转换为一个关系模式。实体的属性就是关系的属性,实体的主码就是关系的主码。2.将每个联系也转换为一个关系模式,该关系模式的属性由与该联系相连的各个实体的主码及该联系的属性组成,该联系的主码分三种情况:. 若联系是 1:1的,则每个实体的主码即是
4、该联系的候选码。. 若联系是 1:n的,则此联系的主码是 n端实体的主码。. 若联系是 m:n的,则此联系的主码是各个实体的主码的并。此 E R图的关系模式为:(1)课程(课程号,课程名,讲授学期,学时数),主码为课程号。(2)学生(学号、姓名、系、专业、班),主码为学号。(3)教师(教师号、教师名、系、教研室),主码为教师号。(4)修课(学号,课程号,修课类别,平时成绩,卷面成绩,总评成绩),主码为(学号,课程号)。(5)授课(课程号, 教师号,授课类别,班数),主码为( 课程号, 教师号)。2.2 设计关系模式确定表中各属性的详细信息(1)课程表课程号:字符串型, 10字节,主码课程名:字
5、符串型, 20字节,非空讲授学期:字符串型, 2字节,非空学时数:整型,非空(2) 学生表学号:字符串型, 10字节,主码姓名:字符串型, 20字节,非空系:字符串型, 20字节,非空专业:字符串型, 20字节,非空班:字符串型, 10字节,非空(3) 教师表教师号:字符串型, 10字节,主码教师名:字符串型, 20字节 ,非空系:字符串型, 20字节教研室:字符串型, 10字节(4) 修课表学号:字符串型, 10字节,主码,学生表的外码课程号:字符串型, 10字节,主码,课程表的外码修课类别:字符串型, 4字节,非空平时成绩:浮点型,大于等于 0,小于等于 100卷面成绩:浮点型,大于等于
6、0,小于等于 100总评成绩:浮点型,大于等于 0,小于等于 100(5) 授课表课程号:字符串型, 10字节,主码,课程表的外码教师号:字符串型, 10字节,主码,教师表的外码授课类别:字符串型, 10字节班数:浮点型,大于 0。假设选修课有半个班的情况,因此取浮点型。2.3 确定数据库应用的功能 最常用的功能就是对数据的增、删、改、查及生成报表1.数据录入(增加)2.数据删除3.数据修改4.数据查询5.生成报表本例三张报表 :(1) 学生修课表(学号,姓名,课程名,修课类别)(2) 学生成绩表(学号,姓名,课程名,修课类别,平时成绩,卷面成绩,总评成绩)(3) 教师 授课服务表( 教师号,
7、教师名,课程名,授课类别,学时数,班数) 创建视图的 SQL语句可描述为:CREATE VIEW 学生修课表 (学号,姓名,课程名,修课类别) ASSELECT 学生 .学号,学生 .姓名,课程 .课程名,修课 .修课类别 FROM 学生,课程,修课 WHERE 学生 .学号 = 修课 .学号 AND 课程 .课程号 = 修课 .课程号包括对张表的数据录入有条件删除,有权限限制,有删除确认 有条件查询后修改,有权限限制,修改后保存根据用户提出的条件查询,所有用户都有查询权限 用数据库开发工具生成报表对 “ 学生成绩表 ” 和“ 教师授课服务表 ”的处理与此类似3 数据库开发环境 在 C/S环境
8、下实现时应注意 数据的分布 将数据全部放在服务器上 -中央数据库将数据全部集中管理,数据只有一份,比如实时采集的数据一般都应该放在服务器端。 将一部分数据放在服务器上,另一部分数据放在客户机上 -地方数据库将数据分散管理,只将重要的、所有部门共享的数据放在中央数据库中,将各个部门自己需要的数据放在地方数据库中。例: 本教学管理系统中,将所设计的五张表放在服务器,便于全校统一管理,各部门共享,同时各部门有自己的地方数据库。如 “ 修课表 ” ,中央和地方各有一个,且两者结构一致,当地方课程数据库修改时,能及时修改中央数据库,在保持数据的一致性。 将数据分为中央数据库和地方数据库的好处:减少对中央
9、数据库的操作次数,先在地方数据库中录入数据有关数据(比如本系的修课情况表),当确认准确无误之后再送到中央数据库中。数据一旦被送到中央数据库就不能被随便地修改和删除,这也增加了中央数据库数据的安全性和可靠性。数据过于庞杂易于各部门开发自己专用的地方数据库分类3.1 Visual Basic中的数据访问 Jet : Visual Basic 提供的数据库引擎 Jet数据库引擎接口的方法 : Data控件( Data Control) 和数据访问对象( DAO) VB中数据库编程的内容:创建数据访问对象,这些数据访问对象对应于被访问的物理数据库的不同部分, 如: 用这些对象的属性和方法来实现对数据库
10、的操作。 VB可以识别三类数据库: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 Visua
11、l Basic 数据库体系结构 Jet引擎的作用:处理存储、检索、更新数据的结构,并提供了功能强大的、面向对象的 DAO编程接口 VB数据库应用程序的组成实现 “ 透明 ” 访问(读取、写入或修改数据库,处理所有内部事物)显示数据并允许用户查看或更新数据窗体VB中添加或删除记录,执行查询等Jet包含在一组 DLL文件中,被链接到 VB程序,把应用程序译成 .mdb文件或其它数据库的物理操作。 包含数据表的一个或多个文件2.数据库应用程序的存放远程数据库客户机 /服务器数据库3.2 Visual Basic 数据库体系结构客户 /服务器与远程数据库数据库的存放可同时对多个客户机的应用程序提供服务,操作数据库并对每个应用程序返回所请求的记录4 创建数据库 VB中创建数据库途径:1、可视化数据管理器2、 DAO3、 Microsoft Access4 、 外部数据库应用程序不编程即可创建 Jet引擎 使用 VB的DAO部件可以通过编程的方法创建数据库用 Access创建的数据库和直接在 VB中创建的数据库一样,两者用的数据库引擎与格式一样VB可通过 ISAM或ODBC驱动程序来访问 FoxPro、dBASE或 ODBC客户/服务器应用程序