数据库综合实验报告
班 级:
学 号 :
姓 名 :
20##年5月
数据库应用系统的初步开发
一、实验目的
1.掌握数据库设计的基本技术,熟悉数据库设计的每个步骤中的任务和实施方案,并加深对数据库系统系统概念和特点的理解。
2.初步掌握基于C/S的数据库应用系统分析、设计和实现方法。
3.进一步提高学生的知识综合运用能力。
二、实验内容
在SQL Server2000数据库管理系统上,利用 Microsoft Visual C++ 6.0开发工具开发一个学生成绩管理系统的数据库应用系统。
三、实验过程
(一.)系统需求说明
1 系统功能要求设计:此系统实现如下系统功能:
(1)使得学生的成绩管理工作更加清晰、条理化、自动化。
(2)通过用户名和密码登录系统,查询课程基本资料,学生所选课程成绩,修改用户密码等功能。 容易地完成学生信息的查询操作。
(3) 设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。
2 系统模块设计
成绩管理系统大体可以分成二大模块如, 一是学生的基本信息模块,里面应该包含学生的各方面的基本信息;再者便是课程管理模块, 在该模块中应该包含有对学生成绩信息的查询和处理,;再其次还有教师、课程等相关信息的模块;可以得到系统流程图:
3 数据字典
数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。利用SQL Server 2000建立“学生选课”数据库,其基本表清单及表结构描述如下:
数据库中用到的表:
Student基本情况数据表,结构如下:
course数据表,结构如下:
score情况数据表,结构如下:
(二)数据库结构设计
1.概念结构设计
由需求分析的结果可知,本系统设计的实体包括:
(1)学生基本信息:学号,姓名,性别。
(2)课程基本信息: 课程名,课程号,分数。
2.逻辑结构设计
这些实体间的关系模式如下:
(1)学生(学号,姓名,性别),其主关键字为学号;
(2)课程(课程名,课程号),其中主关键字为课程号;
(3)成绩(课程号,学号,分数)其中主关键字为学号和课程号。可以与学生关系模式合 并 为:学生(学号,姓名,性别,成绩,课程号)。
3. 确定关系模型的存取方法
在将概念模型转换成物理模型之后,我们可以对物理模型进行设计,双击物理模型的关系,可以对该关系的名称、注释等信息进行查询。可对该关系的属性列进行设计,可分别设置其名称、码、数据类型以及主码、是否为空等。在实际设计中最常用的存取方法是索引发,使用索引可以大大减少数据的查询时间,在建立索引时应遵循:在经常需要搜索的列上建立索引; 在主关键字上建立索引;在经常用于连接的列上建立索引,即在外键上建立索引;在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的等规则。才能充分利用索引的作用避免因索引引起的负面作用。
4.确定数据库的存储结构
确定数据库的存储结构主要指确定数据的存放位置和存储结构,包括确定关系、索引、日志、备份等的存储安排及存储结构,以及确定系统存储参数的配置。因为该成绩管理系统的数据量小,,所以我们只用把数据存储在使用的电脑硬盘上,不用作更多的安排。
(1)创建学生基本信息表:
create table Student (
学号 varchar(11) not null,
姓名 varchar(6) not null,
性别 varchar(2) not null,
constraint PK_STUDENT primary key (学号)
)
go
execute sp_addextendedproperty 'MS_Description',
'学生基本信息描述',
'user', '', 'table', 'StudentsInfo'
go
(2)创建课程表:
create table Course (
cno varchar(5) not null,
cname varchar(10) null,
constraint PK_COURSE primary key (课程号))
go
execute sp_addextendedproperty 'MS_Description',
(3)创建学生与课程的成绩表
create table SC ( sno varchar(11) not null,
cno varchar(5) not null,
chengji varchar(4) not null
constraint PK_SC primary key (学号, 课程号)
)
go
在SC表上创建索引SC_FK与SC2_FK
create index SC_FK on SC (学号 ASC)
Go
create index SC2_FK on SC (课程号 ASC)
go
建立课程号索引
create index TC_FK on TC (
课程号 ASC
)
go
下图显示了学生,课程和成绩三个关系的物理设计其中课程号与学号号分别为关系的主码。
五 数据库的实施与维护
5.1 数据库的实施:
此阶段主要任务包括创建数据库,加载初始数据,数据库试运行,数据库的安全性和完整性控制数据库的备份与恢复,数据库性能的监督分析和改仅,数据库的重组和重构等。首先在数据库中建立一个学生成绩管理系统数据库,然后新建一个数据源。主要代码如下:
1)基本表的创建,建表语句
create table students(
stuno char(10) primary key,
stuname varchar(40) not null,
stusex char(2) not null,
stuage char(10) not null,
stumajor char(10) not null,
studepart char(10) not null,
)
(2)基本表的删除
drop tablestudents
2. 数据查询操作
A.单表查询:
(1)查询sno为09901学生的sname
select sname
from student
where sno=' 0901'
结果:
(2)查询ssex为’女’并且sdepart为’金融系’的sname
select sname
from student
where ssex ='女' and
sdepart ='金融系'
结果:
(3)查询所有学生的姓名和系别。
select sname,Depart
from student
结果:
(4)查询Depart为计算机系的sname。
select sname
from student
where Depart ='计算机系'
结果:
(5)查询所有学生所在院系名称
select distinct Depart
from student
结果:
(6)查询学生信息表中年龄小于21和年龄大于21的学生的姓名和系别
select sname,Depart
from student
where sage>21 or sage<21
结果:
B.嵌套查询
查询选修了0304这门课的所有学生的学号、姓名、年龄、院系
Select sno,sname,sage,Depart
From student
Where sno in
(select sno
From score
Where cno=’0304’)
查询结果
3. 数据库更新操作
A.插入数据
向Student表中添加一项记录:
姓名:杨昇昇,学号:0907,性别:男,年龄:22专业:信息管理,系别:金融系
Insert
Into
Student1(Sno,Sname, Ssex,sage,major,depart)
Values ('0907',' 杨昇昇', '男',' 22',' 信息管理','金融系')
B.修改数据
修改的学号为0908:
Update Student
Set Sno=’0908’
Where Sname=’陈波’;
C.删除数据
删除所有金融学生的记录
Delete
from student
Where(depart=’金融系’);
4. 视图的操作:数据库视图的定义(创建和删除)、查询和更新
A.查询所有学生选课的信息,包括学号、姓名、课程号、课程名、成绩
create view score1
as
select student.sno'学号',student.sname'学生名',class.cno'课程号',class.cname'课程名',score.degree'成绩'
from student,class,score
where student.sno=score.sno and class.cno=score.cno
Go
查询结果
B.更新视图:
(1)修改信息:将宋丹丹的名字改为宋丹
Update score1
set 学生名='宋丹丹'
where 学生名='宋丹'
(2)删除信息:删除视图score1中王恒文的记录
delete
from score
where 学生名='王恒文'
5.create database stuDB
在此学生成绩管理系统中需要创建三个表,即课程信息表、学生信息表和成绩表。
创建数据库后,为stuDB数据库添加数据表,步骤如下。
(1) 新建查询窗口
(2) 在查询窗口中键入下列SQL语句
create table Class( //创建课程信息表
cno char(10) primary key, //课程号
cname char(10) not null, //课程名
teano char(10) Not null //教师号
credit char(4), Not null //学分
)
执行上述SQL语句即可创建课程信息表相关表格
create table student1( //创建学生信息表
sno char(10) primary key, //学号
sname char(10) not null, //姓名
ssex char(2) not null, //性别
Sage char(2) not null, //年龄
Major char(10) not null, //专业
Depart char(10) not null, / /系别
)
执行上述SQL语句即可创建学生信息表相关表格
create table score( //创建成绩表
sno char(10), //学号
cno char(10), //课程号
cdegree char(10), //学分
cname char(10), //课程名
执行上述SQL语句即可创建成绩表相关表格
6. 组织数据入库
学生信息表
课程信息表
成绩信息表
5.2数据库的维护
当试运行数据库合格后,数据库开发设计的工作就基本完成了,接下来就是正式运行中的调试,应为该系统比较简单,数据量小,数据库中几乎不会发生什么大的变化,但是还是需要做好数据的备份,在sqlserver中我们可以利用备份数据库的功能对已经设计好的数据做备份,如果数据库受到破坏或系统故障,我们便可轻松的利用备份文件恢复数据库的数据。当然也可以利用其他各种方法进行数据维护。
六、实验总结
通过本次设计实验,进一步深入理解数据库设计的整个过程,该学生选课系统的需求分析、数据库概念结构设计有关内容等。综合熟悉并练习了SQL语言在编程中的使用。 综合训练编程能力。认识系统,取得系统需求分析,更重要得是在编程方面提高了实现目标代码得能力及调试代码得能力。
这次的设计完成的是学生数据库成绩的查询,增,删,改。如果有经验有条件的话,可以在别的方面着手,进一步完善!
目 录
一、数据库功能设计.................................... 2
二、数据库需求分析设计................................ 2
三、数据库概念结构设计................................ 5
四、数据库逻辑结构设计................................ 6
六、总结............................................. 8
参考文献:........................................... 9
一、数据库功能设计
用户的需求具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入,收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
该学生成绩管理系统,实现简单的成绩查询、课程查询、学生查询等操作,并能实现简单的数据统计。
(一)学生查询
1、学生信息修改
修改选中当前学生的信息。
2、学生信息的添加
增加新学生的信息。
3、学生信息删除
删除选中当前学生信息。
(二)课程查询
1、课程修改
实现对课程名、学时、学分的修改。
2、课程添加
对一门新开设的课程进行录入,并存入数据库。
3、课程删除
对一门不在开设的课程进行删除,并从数据库中删除。
(三)成绩查询
1、成绩修改
先选中要修改的成绩信息,然后进行修改。
2、成绩添加
直接弹出添加对话框,然后进行添加。
3、成绩删除
先选中要删除的成绩信息,然后直接删除。
二、数据库需求分析设计
2.1数据流程图
图2-1系统的数据流图
2.2 数据字典
数据项是数据库的关系中不可再分的数据单位,下表分别列出了数据的名称、数据类型、长度、取值能否为空。利用SQL Server 2000建立“StudentCourse”数据库,其基本表清单及表结构描述如下:
数据库中用到的表:
Student基本情况数据表,结构如下:
Course数据表,结构如下:
Score情况数据表,结构如下:
2.3 存储过程
(1)在Course中插入一元组
CREATE PROCEDURE Course_prod
AS
Insert
Into Course
Values('1018','微机原理','36','3.5')
(2)创建一个查询过程
CREATE PROCEDURE Course_prod1
AS
Select *
From Course
(3)创建一个删除存储过程
CREATE PROCEDURE Course_prod2
AS
Delete
From Course
Where Course_cno='1007'
三、数据库概念结构设计
3.1 E-R图
由需求分析的结果可知,本系统设计的实体包括:
(1)学生基本信息:学号,姓名,性别,地址,年龄,专业。
(2)课程基本信息: 课程名,课程号,学时,学分。
(3)成绩基本信息:课程号,学号,分数。
这些实体间的联系包括:
每位学生可以学习多门课程,每门课程可供多位学生学习。
由上述分析可得到系统的E—R图:
四、数据库逻辑结构设计
4.1将E-R图转换为关系模型
实体型转换为关系模式。实体的属性就是关系的属性,实体的码就是关系的码。对于实体间的联系则有以下不同的情况:
一个m:n联系转换为一个独立的关系模式。与该联系相联的个实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合。
一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系模式合并。如果转换为一个独立的关系模式,则与该联系相联的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为n端实体的码。
一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。3个或3个以上实体间的一个多元联系可以转换为一个关系模式。与该多元联系相联的各实体的码以及联系本身的属性均转换为关系的属性,而关系的码为各实体码的组合,具有相同的关系模式可合并。
具体的基本E—R图向关系模式的转化如下:
(1)学生(学号,姓名,性别,年龄,地址,系别),其主关键字为学号;
(2)课程(课程名,课程号,学时,学分),其中主关键字为课程号;
(3)成绩(课程号,学号,分数)其中主关键字为学号和课程号。
可以与学生关系模式合并为:
学生(学号,姓名,性别,年龄,地址,系别,成绩,课程号)。
4.2 模型优化
关系模式学生,课程不存在非主属性对主属性的部分函数依赖,也不存在传递函数依赖,已经达到了3NF。
五、数据库的物理设计
1. 建立数据表
(1) 学生信息表的建立。
CREATE TABLE Student
(Student_sno char(10) primary key,
Student_sname char(10) not null,
Student_sex char(2),
Student_dept char(10),
Student_age char(10),
Student_address char(10));
(2) 课程信息表的建立
CREATR TABLE Course
(Course_cno char(10) primary key,
Course_cname char(10) not null,
Course_hour int,
Course_score float(8));
(3) 分数信息表的建立
CREATE TABLE Score
(Course_cno char(10),
Student_sno float(8),
Score float(8));
2. 建立视图
(1) 查询学生基本信息的视图定义如下:
CREATE VIEW Student_view(Student_sno,Student_sname,Student_sex,Student_dept,Student_age,Student_address)
AS
SELECT *
FROM Student
(2) 课程信息查询的视图定义如下:
CREATE VIEW Course_view(Course_cno, Course_cname, Course_hour, Course_score)
AS
SELECT *
FROM Course
(3) 成绩信息查询视图定义如下:
CREATE VIEW Score_view(Course_no, Student_sno, Score float)
AS
SELECT *
FROM Score
3. 建立索引
(1)为学生Student表的学生姓名建立索引。
Create cluster index snameindex on Student(Student_sname);
(2)为课程Course表的课程名建立索引。
Create cluster index cnameindex on Course(Course_cname);
六、总结
在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。
通过此次数据库的课程设计,真正达到了学与用的结合,增强了对数据库方面应用的理解,对自己今后参与开发数据库系统积累了不少经验,在实验过程中,从建立数据开始,对数据库设计理念及思想上有更高的认识,从需求分析,到概念设计和逻辑设计,E-R图的表示,数据字典的创建,懂得了不少有关数据库开发过程中的知识,增强了自己在数据库中应用SQL语言的灵活性,其中包括,插入、删除、修改、查询,牵涉表和表之间的联系,主建与外主键的定义,约束项的设置,使逻辑更严密,在学习过程中,我也能过上网查了不少资料,也看了一些别人设计的图书馆管理信息系统的设计报告,学以致用,自我创新,独立完成了这份自己的报告,从中在学到用,从用又到学,不断修改,系统更新。虽然不能达到完善系统,但也做到了尽善尽美,加强理论学习对完善系统会有很多帮助,不管怎么说,对这次做的课程设计自己觉得还算满意。
课程设计是我们专业课程知识综合应用的实践训练,是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础。
参考文献:
[1] 陈志泊,李冬梅,王春玲编著.数据库原理及应用教程.人民邮电出版社.2006.7
[2] 张海藩编著.软件工程(第二版).人民邮电出版社.2006.7
[3] 萨师煊,王珊.数据库系统概论(第三版).高等教育出版社.2001.1
[4](美)Philip J.Pratt. Jose J.Adamski, S.Sudarshan 译本.机械工业出版社2000.1
数据库综合实验报告班级:计科***班学号:****姓名:***20XX年12月数据库应用系统的初步开发一、实验类别:综合型实验二、…
西安科技大学数据库原理及应用课程设计报告题目寄宿学校管理信息系统的设计与实现学院计算机科学与技术学院专业及班级软件工程1202及1…
数据库原理课程设计课程设计任务书一目的与要求1本实验是为网络工程信息安全等专业的学生在学习数据库原理后为培养更好的解决问题和实际动…
实验一SQLServer基本使用与数据定义一实验目的1掌握企业管理器及查询的定义方法使用方法2熟悉数据库建模及ER图的画法3掌握S…
重庆大学经济与工商管理学院实验报告课程名称数据库原理及应用实验学期20xx年至20xx年第2学期学生所在学院经济与工商管理学院年级…
20xx-20xx学年第一学期——近代物理实验总结哈萨克族时间过得真快啊!我以为自己还有很多时间,只是当一个睁眼闭眼的瞬间,一个学…
华南师范大学实验报告姓名组员课件密码30620学号实验题目二茂铁的绿色合成组别第四组实验时间20xx0320前言1实验目的了解一些…
近代光学创新实验双曝光全息照相技术介绍院系专业光学工程学生许祯瑜学号班号20xx年6月双曝光全息照相技术介绍摘要双曝光全息照相技术…
近代光学创新实验双曝光全息照相技术介绍院系英才学院专业机械设计制造及其自动化学生学号班号20xx年6月双曝光全息照相技术介绍摘要双…
塞曼效应摘要本实验主要运用光栅摄谱仪拍摄Hg在磁场中与无磁场中的谱线了解Hg谱线的分裂情况并利用Fe做比较光谱用阿贝比长仪测量并计…