学生信息管理系统SQL需求分析报告.docx
《学生信息管理系统SQL需求分析报告.docx》由会员分享,可在线阅读,更多相关《学生信息管理系统SQL需求分析报告.docx(15页珍藏版)》请在冰豆网上搜索。
学生信息管理系统SQL需求分析报告
SQLServer课程设计报告
院系:
专业:
学号:
姓名:
指导教师:
一:
需求分析阶段………………………………………..….3
1.1分析阶段……………………………….…3
二:
概念结构设计阶段………………………………...……3
2.1实体间的联系…………………………….4
三:
逻辑结构设计阶段………………………………4
3.1系统中的关系模式………………………4
四:
物理结构设计阶段………………………………5
4.1数据结构…………………………………...5
4.2关系………………………………………...6
4.3存储过程…………………………………...6
4.4触发器…………………………………..….7
五:
实施阶段……………………………………………..….7
5.1创建数据库……………………………..….7
5.2创建备份………………………………..….7
5.3创建数据表文件………………………..….8
5.4创建存储过程…………………………..….9
5.5创建存储过程……………………………..15
六:
截图………………………………………………..…...16
七:
小结………………………………………………….…17
学生信息管理系统
一:
需求分析阶段
学生信息管理系统就是对学生信息的管理,所以首先我们需要知道的是学生有那些信息,并且是怎样进行分类的。
学生的信息包含1:
基本信息;2:
课程及成绩;3课程表。
基本信息根据要求应该包括学生的基本情况、获得奖励情况、受到处分情况、学生的家庭信息等;课程及成绩应该包含对应课程对应学生的成绩;课程表包含课程号及其先导课。
学生唯一一一对应的是学号,所以学号是唯一的主键,其他的都不能是,根据学号我们可以查找学生的姓名信息,还有学生的上过课的课程成绩等有关信息;根据学号,可以知道学生的各科成绩查询。
综合分析对信息管理系统分四个表:
学生基本信息(学号,姓名,性别,出生日期,学生所在系,班号,入校成绩,入学时间,电话,父亲,母亲,获得奖励情况,受到处分情况),
学生成绩表(学号,课程号,成绩),
课程表(课程号,课程名,教师姓名,先导课程)。
二:
概念结构设计阶段
实体间的联系:
1:
学生基本信息与学生成绩表中,学号是相同的,成绩表的学号依附于学生基本信息中的学号。
2:
课程表中的学号与,学生的基本信息中的学号有联系,可以根据学号知道一个学生的信息。
3:
课程表中的课程号与学生成绩表中的课程号对应,课程表中的课程号依附于学生成绩表中的课程号。
4:
课程号于老师是一对一的关系,课程名对成绩是一对一的关系。
学号于课程号同样是一对多的关系,课程号对成绩是一对多的关系,一个学号和一个课程号对于成绩是一一对应的关系。
E-R图如下
三:
逻辑结构设计阶段
学生信息系统中的关系模式如下:
学生基本信息(学号,姓名,性别,出生日期,入校成绩,入学时间,电话,父亲,母亲,家庭住址,获得奖励情况,受到处分情况),主键是学号。
学生成绩表(学号,课程号,成绩),主键是学号+课程号。
课程表(课程号,课程名,教师姓名,先导课程)。
主键是课程号。
四:
物理结构设计阶段
1:
数据结构:
学生基本信息
(学号char(10)notnullprimarykey,
姓名char(8)notnull,
性别char
(2)notnull,
出生日期datetimenotnull,
学生所在系varchar(20)notnull,
入校成绩intnotnull,
入学时间datetimedefault(getdate())notnull,
电话char(6)null,
父亲char(6)null,
母亲char(6)null,
获得奖励情况varchar(20)null,
受到处分情况varchar(10)null;
学生成绩表
(学号char(10)notnullforeignkey(学号)references学生基本信息(学号),
课程号varchar(6)null,
成绩intnull);
课程表
(课程号char(3)primarykey,
课程名varchar(20),
教师姓名varchar(8),
先导课程char(3))
2:
关系
程数据表与课程表的课程号建立父子关系,
学生基本信息与学生成绩表的学号建立父子关系。
3:
数据库名字为:
学生信息管理系统
逻辑数据库名:
学生信息管理系统
数据文件:
学生信息管理系统dat.mdf,初始大小:
1MB,最大空间为:
20MB,增长量:
2MB。
日志文件:
学生信息管理系统log.ldf,初始大小:
1MB,最大空间为:
20MB,增长量:
2MB。
备份设备名:
备份;备份文件:
学生信息管理备份。
4:
存储过程:
1能录入、修改、查询、输出学生的档案信息,这些信息包括学生的基本情况、简历情况、获得奖励情况、受到处分情况、学生的家庭信息、学生的体检情况;
2能录入、修改、查询、输出学生的入校成绩、各学期各门课的成绩信息,并支持按年级、班级等条件的统计、查询、报表输出。
5:
触发器:
修改学生基本信息中的学号同时修改学生成绩表中的学号
修改课程数据表中的课程号,同时修改课程表中的课程号
删除学生基本信息的同学同时删除学生成绩中该生的信息。
五:
实施阶段
1:
创建数据库
createdatabase学生信息管理系统
on
(name=学生信息管理系统,
filename='d:
\sql\学生信息管理系统.mdf',
size=1,
maxsize=20,
filegrowth=2
)
logon
(name=学生信息管理系统log,
filename='d:
\sql\学生信息管理系统log.ldf',
size=1,
maxsize=20,
filegrowth=2
)
2:
创建备份
sp_addumpdevice'disk','备份','d:
\sql\学生信息管理备份.dat'
go
backupdatabase学生信息管理系统to备份
go
3:
创建数据表文件
createtable学生基本信息
(
学号char(10)notnullprimarykey,
姓名char(8)notnull,
性别char
(2)notnull,
出生日期datetimenotnull,
入校成绩intnotnull,
入学时间datetime,
电话char(6)null,
父亲char(6)null,
母亲char(6)null,
获得奖励情况varchar(20)null,
受到处分情况varchar(10)null,
)
Go
createtable学生成绩表
(
学号char(10)notnullforeignkey(学号)references学生基本信息(学号),
课程号varchar(6)null,
成绩intnull
)
Go
createtable课程表
(
课程号char(3)primarykey,
课程名varchar(20),
教师姓名varchar(8),
先导课程char(3)
)
Go
4:
创建存储过程
createprocedure录入学生基本信息
(@学号char(10),
@姓名char(8),
@性别char
(2),
@出生日期datetime,
@入校成绩int,
@入学时间datetime,
@电话char(6),
@父亲char(6),
@母亲char(6),
@获得奖励情况varchar(20),
@受到处分情况varchar(10)
)
asif@学号isnullor@姓名isnullor@性别isnullor@出生日期isnullor@入校成绩isnull
print'请输入完整信息!
'
elseinsertinto学生基本信息表
values(@学号,@姓名,@性别,@出生日期,@入校成绩,@入学时间,@电话,@父亲,@母亲,@获得奖励情况,@受到处分情况)
Go
createprocedure修改学生基本信息
(@学号char(10),
@姓名char(8),
@性别char
(2),
@出生日期datetime,
@入校成绩int,
@入学时间datetime,
@电话char(6),
@父亲char(6),
@母亲char(6),
@获得奖励情况varchar(20),
@受到处分情况varchar(10)
)
asupdate学生基本信息
set学号=@学号,
姓名=@姓名,
性别=@性别,
出生日期=@出生日期,
入校成绩=@入校成绩,
入学时间=@入学时间,
电话=@电话,
父亲=@父亲,
母亲=@母亲,
获得奖励情况=@获得奖励情况,
受到处分情况=@受到处分情况
where学号=@学号
go
createprocedure查询学生基本信息
(@学号char(10)
)
asselect*from学生基本信息where学号=@学号
go
createprocedure输出学生基本信息
(@学号char(10)
)
asselect*from学生基本信息where学号=@学号
go
createprocedure录入学生成绩
(@学号char(10),
@课程号varchar(6),
@成绩int
)
as
insertinto学生成绩表
values(@学号,@课程号,@成绩)
go
createprocedure修改学生成绩
(
@学号char(10),
@课程名varchar(20),
@成绩int
)
asupdate学生成绩表
set成绩=@成绩where学号=@学号and课程号=(select课程号from课程数据表where
课程名=@课程名)
go
createprocedure查询学生成绩
(
@学号char(10),
@课程名varchar(20)
)
asselect成绩from学生成绩where学号=@学号and课程号=(select课程号from课程表where课程名=@课程名)
go
createprocedure输出学生成绩
(
@学号char(10),
@课程名varchar(20)
)
asselect成绩from学生成绩where学号=@学号and课程号=(select课程号from课程表where课程名=@课程名)
go
createprocedure录入入校成绩
(
@学号char(10),
@入校成绩int
)
asinsertinto学生基本信息(学号,入校成绩)
values(@学号,@入校成绩)
go
createprocedure修改入校成绩
(
@学号char(10),
@入校成绩int
)
asupdate学生基本信息
set入校成绩=@入校成绩where学号=@学号
go
createprocedure查询入校成绩
(@学号char(10)
)
asselect入校成绩from学生基本信息where学号=@学号
go
createprocedure输出入校成绩
(
@学号char(10)
)
asselect入校成绩from学生基本信息where学号=@学号
go
createprocedure查询信息
(
@学号char(10)
)
asselect课程名,成绩from学生成绩表,课程数据表,课程表where学生成绩表.课程号=课程表.课程号and学生成绩表.学号=@学号
go
createprocedure报表
(@学号char(10)
)
asselect课程名,成绩from学生成绩表,课程表where学生成绩表.课程号=课程表.课程号and学生成绩表.学号=@学号
go
五:
创建触发器
createtrigger更新学号
on学生基本信息
forupdate
as
begin
if(columns_updated()&1)>0
update学生成绩表
set学生成绩表.学号=(selecta.学号frominserteda)
where学生成绩表.学号=(selectb.学号fromdeletedb)
end
createtrigger更新课程号
on课程表
forupdate
as
begin
if(columns_updated()&1)>0
update课程表
set课程表.课程号=(selecta.课程号frominserteda)
where课程表.课程号=(selectb.课程号fromdeletedb)
end
createtrigger删除学号
on学生基本信息
fordelete
as
begin
deletefrom学生成绩表
where学生成绩表.学号=(select学号fromdeleted)
end
六:
截图
学生基本信息
课程表
学生成绩表
七:
小结
通过对该课程的实验设计,我们不仅系统的复习了SQL的指令用法,还深入了解了SQL数据库的功能,对Transact-SQL命令熟练运用。
欢迎您的光临,Word文档下载后可修改编辑.双击可删除页眉页脚.谢谢!
让我们共同学习共同进步!
学无止境.更上一层楼。
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求