数据库课程设计指导书2015年7月

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据库课程设计指导书
计算机与信息技术学院
计算机科学技术专业
2015年7月
第一部分数据库课程设计概述
数据库技术是近年来计算机科学技术中发展最快的领域之一,它已成为计算机信息系统与应用系统的核心技术和重要基础。

数据库课程设计的目的和选题原则如下:
一、课程设计的目的和意义
1.加深对讲授内容的理解
数据库理论课中有关数据库技术的基本理论、基本概念、设计与实现的方法和阶段性知识,光靠课堂讲授既枯燥无味又难以记住,但它们都很重要,要想熟练掌握,必须经过大量实践环节加深对它们的理解。

2.通过课程设计,掌握数据库应用系统设计与开发的方法及步骤
数据库是一门应用性很强的学科,开发一个数据库系统需要集理论、系统和应用三方面为一体,以理论为基础,以系统(DBMS)作支柱,以应用为目的,将三者紧密结合起来。

同时结合实际需要开发一个真实的数据库系统,对于较大型的系统可多人一起完成,但无论如何都应完成数据库的需求分析、数据的分析与建模、数据库的建立、数据库的开发与运行等全部过程。

在此过程中将所学的知识贯穿起来,达到能够纵观全局,分析、设计具有一定规模的题目要求,基本掌握数据库系统设计与开发的基本思路和方法,并且做到对知识的全面掌握和运用。

3.培养自学以及主动解决问题的能力
通过本次设计,使同学能够主动查阅与数据库相关资料,掌握一些课堂上老师未曾教授的知识,从而达到培养学生自学以及主动解决问题的能力的目的,为后面的毕业设计打下坚实的基础。

二、选题的原则
课程设计题目选用学生相对比较熟悉的业务模型,通过本次实践性教学环节,巩固数据库的基本概念、基本原理、关系数据库的设计理论、设计方法等主要相关知识点,针对实际问题设计概念模型,并应用现有的工具完成小型数据库系统的设计与实现。

1. 选题要求
(1)能覆盖多个知识点,使用现有工具能够解决的问题。

(2)难易适中,具有典型意义。

2. 参考选题
(1)教工管理系统
(2)超市管理系统
(3)社团管理系统
(4)毕业设计管理系统
(5)实验室管理系统
(6)网络购物管理系统
(7)票务管理系统
(8)图书管理系统
(9)其他:同学自己提出,由教师确认的题目。

三、课程设计实施步骤
同学们可按下列步骤完成所选题目的设计并写出设计报告。

第一步:问题分析
在对所选题目进行调研的基础上,明确该选题要做什么。

依据调查结果,进一步分析和表达用户的需求。

1.绘制数据流程图:
(1)基本符号
(2)数据流程图绘制方法:自顶向下,分层绘制。

(3)数据流程图绘制规则
①每张数据流程图须从左往右绘制,即从产生数据的外部实体开始到使用数据的外部
实体结束。

②对含义明显的数据流,其名称可以省略。

③尽量避免数据流的交叉。

④对于需在两个设备上进行的处理,应避免直接相连。

可以在它们之间加一个数据存
储。

⑤如果一个外部实体提供给某一处理的数据流过多,可将它们合并成一个综合的数据
流。

⑥下层图中的数据流应与上层图中的数据流守恒。

⑦对于大而复杂的系统,其图中的各元素应加以编号。

通常在编号之首冠以字母,用
以表示不同的元素,可以用P表示处理,用D表示数据流,用F表示数据存储,用S表示外部实体。

2.构建数据字典
(1)数据项
(2)数据结构
(3)数据流
(4)数据存储
(5)处理过程
第二步:数据库设计与实现。

包括:
数据库的概念结构(E—R)图:
(1)画出系统各部分(子系统)E-R模型图
(2)消除冲突和冗余,合并各部分E-R模型图,形成总体E-R模型图
(3)若系统较简单可直接画出系统总体E-R模型图;
逻辑与物理结构设计:将E-R图转换为关系模型,及设计数据库中的表、视图(如果使用)、
存储过程(如果使用)的结构和定义(可以用SQL脚本提供);
将所设计的数据库在SQL Server2000上实现,并进行备份;
设计系统查询功能及要求,写出主要的查询SQL语句。

第三步:系统功能设计与实现,同时对设计结果进行评价与总结。

对设计结果的合理性、规范程度和实际运行的结果以报告的形式进行提交。

通过存储过程和触发器完成相关功能。

四、课程设计报告要求
课程设计报告有四个方面的要求:
1. 问题描述。

包括此问题的理论和实际两个方面。

2. 解决方案。

包括:
(1)数据流图及数据字典;
(2)E-R模型要设计规范、合理,关系模式的设计要满足关系规范化理论,数据库的设计要考虑完整性的要求;
(3)给出E-R模型和关系模式的描述或说明;
(4)数据表结构;
(5)相应的触发器、存储过程。

3. 报告撰写格式要规范,具体参见样例。

第二部分学生管理系统示例
2.1 需求分析
2.1.1 需求描述
通过调研分析,我们认为学生管理系统的具体要求为:
1.能全面管理学校教学相关的各类主体,如院系信息、教师信息、班级信息、学生信息、课程信息、专业信息等;
2.通过使用计算机能方便的维护(包括插入、删除、修改)各信息表;
3.能方便的实现基于多个表的连接查询;
因而,我们所开发的管理系统正是围绕以上几个方面进行的,在开发过程中充分考虑到本系统的应用特点,按照数据库设计的几个步骤进行。

2.1.2 数据流图
图2.1 数据流图(1)
图2.2 数据流图(2) 2.1.3 数据词典
表2.1 数据字典
2.2 数据库概念结构设计
2.2.1 E-R 图
图2.3 实体联系图、主要联系及其属性
2.2.2 实体及属性的定义
在此系统中实体有:院系、专业、班级、教师、学生、课程多对多联系有:选课、讲授
……
2.3 数据库逻辑结构设计
2.3.1 初始关系模式
将E-R图转换成关系数据模式,其中,每个实体转换成一个关系模式,多对多联系转换成独立的关系模式,一对多联系并入多端实体,得到以下初始关系模式:院系(系编号,系名,主任工号,电话)
专业(专业号,专业名,系编号)
班级(班号,班名,人数,专业号,教师号)
教师(教师号,姓名,性别,系编号)
学生(学号,姓名,性别,出生年月,籍贯,民族,政治面貌,院系,电话,班号)
课程(课号,课名,讲课学时,开课院系,任课老师,学分)
选课(学号,课号,成绩)
讲授(教师号,课号,效果)
2.3.2 规范化处理
经过对初始关系模式的规范化处理,以下关系模式中不存在部分函数依赖和传递函数依赖,已经达到3NF。

(=代表主码,≈代表外码)
院系(系编号,系名,主任工号,电话)
专业(专业号,专业名,系编号)
班级(班号,班名,人数,专业号,教师号)
教师(教师号,姓名,性别,系编号)
学生(学号,姓名,性别,出生年月,籍贯,民族,政治面貌,院系,电话,班号)
课程(课号,课名,讲课学时,开课院系,任课老师,学分)
选课(学号,课号,成绩)
讲授(教师号,课号,效果)
2.4 数据库物理结构设计
为了加快数据查询处理速度,为下列各关系模式创建如下索引:
院系:
专业:
班级:
教师:
学生:
课程:
选课:
讲授:
2.5 数据库实施
2.5.1 数据库各表结构
表2.2 院系表
表2.3 专业表
表2.4 班级表
表2.5 教师表
表2.6 学生表
表2.7 课程表
表2.8 选课表
表2.9 讲授表
2.5.2 关系图
通过设置各表的主键和外键,在各个关系间建立联系,得到以下关系图:
图2.4 关系图
2.6 数据库操作部分
2.6.1 数据库的插入操作
INSERT
INTO <表名>[(<属性列1>[,<属性列2>…)]
V ALUES(<常量1>[,<常量2>]);
例如:在学生表中插入一个新同学的相关信息(注:学号是主码,故不可以相同)
INSERT
INTO 学生表(学号,姓名,性别,出生年月,籍贯,政治面貌,名族,院系,电话) V ALUES(‘34’,’丁一’,’女’,’1986年1月1号’,’北京’,’团员’,’汉族’,’信息工程系’,’’)
2.6.2 数据库的修改操作
UPDATE <表名>
SET<列名>=<表达式>
[WHERE<条件>];
例如:在学生表中修改学号为’’的院系为’人文科学系’。

UPDATE 学生表
SET院系=人文科学系
WHERE 学号=
2.6.3 数据库的删除记录操作
DELETE
FROM<表名>
[WHERE<条件>];
例如:删除学号为’’的相关信息
DELETE
FROM学生表
WHERE 学号=
2.6.4 触发器和存储过程
利用触发器和存储过程完成一些相对复杂的操作。

存储过程:预先用SQL语句写好的,并用存储起来,如果需要的数据库提供与定义好的存储过程的功能相同时,只要调用execute()方法,即可执行。

触发器:是一种特殊的存储过程,当运行到标签所在的位置时,才触发这个SQL 语名的功能。

--创建计算平均值的触发器
create trigger trigger_avg_insert on score for insert as
begin transaction
declare @count int
update student set SScore=(select avg(EScore) from score where SId=(select SId fro m inserted)) where SId=(select SId from inserted) select @count=@@error if(@count=0) commit transaction else
rollback transaction
--创建计算平均值得触发器
create trigger trigger_avg_delete on score for delete as
begin transaction
update student set SScore=(select avg(EScore) from score where SId=(select SId fro m deleted)) where SId=(select SId from deleted) declare @count int
select @count=@@error if(@count=0)
commit transaction else
rollback transaction
--创建计算平均值的触发器
create trigger trigger_avg_update on score for update as
begin transaction
declare @count int
update student set SScore=(select avg(EScore) from score where SId=(select SId fro
m inserted)) where SId=(select SId from deleted) select @count=@@error if(@count=0) commit transaction else
rollback transaction
--创建查找平均分存储过程
CREATE PROCEDURE proc_student_avg ( @SID varchar(20) ) AS
begin transaction
select avg(EScore) as SAvg from score where SId=@SId declare @count int select @count=@@error if(@count=0)
commit transaction else
rollback transaction
--创建通过学号查询学生信息的存储过程
Create proc proc_student_select_bySId ( @SId varchar(20) ) as
begin transaction
declare @count int select * from student where SId=@SId select @count=@@error if(@count=0)
commit transaction else
rollback transaction
--创建插入学生信息的存储过程
create proc proc_student_insert (
@SId varchar(20), @SName varchar(20), @SClass varchar(20), @SSex v archar(10) ) as
begin transaction
declare @count int
insert into student(SID,SName,SClass,SSex) values(@SId,@SName,@SClass,@SSe x)
select @count=@@error if(@count=0)
commit transaction else
rollback transaction GO
--删除学生信息的存储过程
Create proc proc_student_delete (
@SId varchar(20) ) as
begin transaction
declare @count int
delete from student where SId=@SId select @count=@@error if(@count=0)
commit transaction else
rollback transaction
--修改学生信息的存储过程
Create proc proc_student_update (
@SId varchar(20), @SName varchar(20), @SClass varchar(20), @SSex v archar(10) ) as
begin transaction
declare @count int
update student set SName=@SName,SClass=@SClass,SSex=@SSex where SId=@ SId
select @count=@@error if(@count=0)
commit transaction else
rollback transaction
--创建查询课程信息的存储过程
Create proc proc_class_select as
begin transaction
declare @count int select * from class select @count=@@error if(@count=0) commit transaction else
rollback transaction
--创建通过课程号查询课程信息的存储过程
Create proc proc_class_select_byEId (
@EId varchar(20) ) as
begin transaction
declare @count int
select * from class where EId=@EId select @count=@@error if(@count=0)
commit transaction else
rollback transaction
--创建插入课程信息的存储过程
Create proc proc_class_insert (
@EId varchar(20), @EName varchar(20), @ETime int ) as
begin transaction
declare @count int
insert into class(EId,EName,ETime) values(@EId,@EName,@ETime) select @cou nt=@@error if(@count=0)
commit transaction else
rollback transaction
select @count=@@error if(@count=0)
commit transaction else
rollback transaction
--创建通过课程号查询课程信息的存储过程
Create proc proc_class_select_byEId (
@EId varchar(20) ) as
begin transaction declare @count int
select * from class where EId=@EId select @count=@@error if(@count=0) commit transaction else
rollback transaction
--创建插入课程信息的存储过程
Create proc proc_class_insert (
@EId varchar(20), @EName varchar(20), @ETime int ) as
begin transaction
declare @count int
select * from score where SId=@SId select @count=@@error if(@count=0) commit transaction else
rollback transaction
第三部分结束语
上面为大家简要介绍了本课程设计的目的及方法,并通过案例进行了详细的论述,大家可以根据自己的具体情况决定相应功能的实现方法,不要局限于上面的描述,要发挥自己创造力,设计出具有自己特色的系统。

本学期的课程设计,是我们在毕业设计之前最后一次锻炼系统开发的机会,希望大家要珍惜,互帮互助,共同把课程设计做好。

最后预祝大家在这两周内开发顺利、合作愉快!
附录
利用ADO访问数据库
如果系统采用SQL2000数据库,系统数据库的连接方式。

(1)数据库链接(Connection)
文件中如果要访问数据,必须首先创建与数据库的连接,数据库连接如下:
SqlConnection Conn = new SqlConnection("Data Source=local;Initial Catalog=tikuguanli;Integrated Security=True");
这条语句打开链接,Conn表示与数据源建立连接的对象,这里以与本系统的数据库连接为例,Source=local连接本地数据源,Initial Catalog选择要打开的数据库名。

(2)Command实例
创建数据库连接后,可以通过SqlCommand对象提供的方法传递对数据库操作的命令,并返回命令执行的结果。

操作命令的类型可以使SQL语句,也可以是存储过程。

例如下面是本系统中管理员登陆时所用到的Command对象:
SqlCommand cmd2 = new SqlCommand("select * from admin where admin_id ='" + Textbox_id.Text.ToString() + "' and admin_pwd ='" + Textbox_pwd.Text.ToString() + "'",conn);
cmd2是Command对象。

括号里面的是SQL语句,用来查询数据库中等于管理员所输入的用户名和密码的信息;如果存在,则用户名和密码正确,用户进入管理员界面;否则用户名或密码错误,不能登录系统。

(3)开数据库连接
SQL2000中的打开数据库连接的语句是:conn.Open();
(4)操作
打开数据库后,就可以执行之前的SQL语句,对数据库进行操作了。

(5)连接
在执行完数据库操作后,应当及时关闭数据库。

其关闭连接的语句是:conn.Close();
以上几个步骤中创建连接与打开连接缺一不可,因为链接对象的创建与打开是两回事,只有打开了才真正可以使用。

相关文档
最新文档