数据库课程设计指导书.docx

上传人:b****8 文档编号:12159410 上传时间:2023-06-04 格式:DOCX 页数:22 大小:161.08KB
下载 相关 举报
数据库课程设计指导书.docx_第1页
第1页 / 共22页
数据库课程设计指导书.docx_第2页
第2页 / 共22页
数据库课程设计指导书.docx_第3页
第3页 / 共22页
数据库课程设计指导书.docx_第4页
第4页 / 共22页
数据库课程设计指导书.docx_第5页
第5页 / 共22页
数据库课程设计指导书.docx_第6页
第6页 / 共22页
数据库课程设计指导书.docx_第7页
第7页 / 共22页
数据库课程设计指导书.docx_第8页
第8页 / 共22页
数据库课程设计指导书.docx_第9页
第9页 / 共22页
数据库课程设计指导书.docx_第10页
第10页 / 共22页
数据库课程设计指导书.docx_第11页
第11页 / 共22页
数据库课程设计指导书.docx_第12页
第12页 / 共22页
数据库课程设计指导书.docx_第13页
第13页 / 共22页
数据库课程设计指导书.docx_第14页
第14页 / 共22页
数据库课程设计指导书.docx_第15页
第15页 / 共22页
数据库课程设计指导书.docx_第16页
第16页 / 共22页
数据库课程设计指导书.docx_第17页
第17页 / 共22页
数据库课程设计指导书.docx_第18页
第18页 / 共22页
数据库课程设计指导书.docx_第19页
第19页 / 共22页
数据库课程设计指导书.docx_第20页
第20页 / 共22页
亲,该文档总共22页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

数据库课程设计指导书.docx

《数据库课程设计指导书.docx》由会员分享,可在线阅读,更多相关《数据库课程设计指导书.docx(22页珍藏版)》请在冰点文库上搜索。

数据库课程设计指导书.docx

数据库课程设计指导书

 

数据库课程设计指导书

 

计算机与信息技术学院

计算机科学技术专业

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数据字典

数据元素

数据类型

长度

数据来源

系编号

varchar

50

院系表

系名

varchar

50

院系表

主任工号

varchar

50

院系表

电话

varchar

50

院系表

专业号

varchar

50

专业表

专业名

varchar

50

专业表

班号

varchar

50

班级表

班名

varchar

50

班级表

人数

varchar

50

班级表

教师号

varchar

50

教师表

姓名

varchar

50

教师表

性别

varchar

50

教师表

学号

varchar

50

学生表

姓名

varchar

50

学生表

性别

varchar

50

学生表

出生年月

smalldatetime

8

学生表

籍贯

varchar

50

学生表

名族

varchar

50

学生表

政治面貌

varchar

50

学生表

院系

varchar

50

学生表

专业班级

varchar

50

学生表

照片

image

16

学生表

电话

varchar

50

学生表

课号

varchar

50

课程表

课名

varchar

50

课程表

学分

float

8

课程表

类别

varchar

50

课程表

开课院系

varchar

50

课程表

任课老师

varchar

50

课程表

学时

varchar

50

课程表

成绩

varchar

50

选课表

效果

varchar

50

讲授表

2.2数据库概念结构设计

2.2.1E-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院系表

属性名

数据类型

长度

是否允许为空

有无索引

系编号

varchar

50

不允许

系名

varchar

50

允许

主任工号

varchar

50

允许

电话

varchar

50

允许

表2.3专业表

属性名

数据类型

长度

是否允许为空

有无索引

专业号

varchar

50

不允许

专业名

varchar

50

允许

系编号

varchar

50

不允许

表2.4班级表

属性名

数据类型

长度

是否允许为空

有无索引

班号

varchar

50

不允许

班名

varchar

50

允许

人数

varchar

50

允许

专业号

varchar

50

不允许

教师号

varchar

50

不允许

表2.5教师表

属性名

数据类型

长度

是否允许为空

有无索引

教师号

varchar

50

不允许

姓名

varchar

50

允许

性别

varchar

50

允许

系编号

varchar

50

不允许

表2.6学生表

属性名

数据类型

长度

是否允许为空

有无索引

学号

varchar

50

不允许

姓名

varchar

50

允许

性别

varchar

50

允许

出生年月

smalldatetime

8

允许

籍贯

varchar

50

允许

名族

varchar

50

允许

政治面貌

varchar

50

允许

院系

varchar

50

允许

专业班级

varchar

50

允许

照片

Image

16

允许

电话

varchar

50

允许

班号

varchar

50

不允许

表2.7课程表

属性名

数据类型

长度

是否允许为空

有无索引

课号

varchar

50

不允许

课名

varchar

50

允许

学时

varchar

50

允许

类别

varchar

50

允许

讲课学时

varchar

50

允许

开课院系

varchar

50

允许

任课老师

varchar

50

允许

学分

varchar

50

允许

表2.8选课表

属性名

数据类型

长度

是否允许为空

有无索引

学号

varchar

50

不允许

课号

varchar

50

不允许

成绩

Float

8

允许

表2.9讲授表

属性名

数据类型

长度

是否允许为空

有无索引

教师号

varchar

50

不允许

课号

varchar

50

不允许

效果

Float

8

允许

2.5.2关系图

通过设置各表的主键和外键,在各个关系间建立联系,得到以下关系图:

图2.4关系图

2.6数据库操作部分

2.6.1数据库的插入操作

INSERT

INTO<表名>[(<属性列1>[,<属性列2>…)]

VALUES(<常量1>[,<常量2>]);

例如:

在学生表中插入一个新同学的相关信息(注:

学号是主码,故不可以相同)

INSERT

INTO学生表(学号,姓名,性别,出生年月,籍贯,政治面貌,名族,院系,电话)

VALUES(‘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 from 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 from deleted)) where SId=(select SId from deleted) declare @count intselect @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 from inserted)) where SId=(select SId from deleted) select @count=@@error if(@count=0) 

commit transaction else 

rollback transaction  

--创建查找平均分存储过程

CREATEPROCEDUREproc_student_avg(@SIDvarchar(20))AS

begintransaction

selectavg(EScore)asSAvgfromscorewhereSId=@SIddeclare@countintselect@count=@@errorif(@count=0)

committransactionelse

rollbacktransaction

--创建通过学号查询学生信息的存储过程

Createprocproc_student_select_bySId(@SIdvarchar(20))as

begintransaction

declare@countintselect*fromstudentwhereSId=@SIdselect@count=@@errorif(@count=0)

committransactionelse

rollbacktransaction

--创建插入学生信息的存储过程

create proc proc_student_insert ( 

    @SId varchar(20),     @SName varchar(20),     @SClass varchar(20),     @SSex varchar(10) ) as 

begin transaction

declare @count int 

insert into student(SID,SName,SClass,SSex) values(@SId,@SName,@SClass,@SSex) 

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=@@errorif(@count=0) 

    commit transaction else 

    rollback transaction

--修改学生信息的存储过程 

Create proc proc_student_update ( 

    @SId varchar(20),     @SName varchar(20),     @SClass varchar(20),     @SSex varchar(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 @count=@@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

第三部分结束语

上面为大家简要介绍了本课程设计的目的及方法,并通过案例进行了详细的论述,大家可以根据自己的具体情况决定相应功能的实现方法,不要局限于上面的描述,要发挥自己创造力,设计出具有

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 农林牧渔

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2