学校管理数据库系统.docx
《学校管理数据库系统.docx》由会员分享,可在线阅读,更多相关《学校管理数据库系统.docx(7页珍藏版)》请在冰豆网上搜索。
学校管理数据库系统
实训报告
一.实训任务
本试训的任务是“学校管理数据库系统”的设计与实现,本系统是为了方便学校管理而设计的,具体包括:
院系管理子系统、专业管理子系统、住宿管理子系统、选课管理子系统,以及图书借阅管理子系统。
二.实训步骤
1.需求分析阶段
院系管理子系统主要用于学校各个院系的管理。
假定部门在成立时提供了院系名称(不可以为空)、院系编号(唯一)、院系领导(可以为空)信息。
专业管理子系统主要用于学校的专业建设与管理。
假定在专业成立时提供了专业号、专业名称及所属系。
一个专业只属于一个系,但一个系可以含有多个专业(也可以为0)。
在学生入校前就要为学生建好班级,入校后皆有了唯一的班级和学号,在该系统中包含学生的多个信息。
住宿管理子系统主要为了方便学生住宿的管理,为学生更好的服务。
选课管理子系统旨在学生选课注册管理和学生成绩。
假设学生入校后提供了学号、姓名等个人信息,其中学号是他们唯一拥有的,学校开设的课程,每门课都有其课程号、课程名、任课教师等的基本信息,其中各科有唯一的课程号。
在学生开学选课,放学登记成绩。
图书借阅管理系统主要方便图书馆里工作人员的管理。
假定学生开学时提供了各自的有效信息,同样学生的学号时唯一的,用学号当作学生的节借阅证号,图书有其自己的书号、书名、出版社等的信息,唯一的是书号。
允许学生自由借书还书,以便登记借阅时间。
2.概念模型设计阶段
3.逻辑模型设计阶段
图B.1学生档案表
字段名
类型
字长
约束
学号
s_no
char
10
主键
姓名
s_name
char
10
性别
sex
char
2
图B.2宿舍楼管理表
字段名
类型
字长
约束
宿舍楼号
s_no
char
10
主键
宿舍楼名称
教师编号
dorm_name
Ter_id
char
char
12
4
外键
备注
sex
char
2
......
4.逻辑结构设计阶段
表C.1 数据库College
参数
使用值
参数
使用值
数据库名
College
文件组
promary
主数据文件名
College_data
事务日志文件名
College_log
位置
‘F:
\课程\chmSQLsever\作业\’
位置
‘F:
\课程\chmSQLsever\作业\’
初始大小
5mb
初始大小
4mb
文件增长
10%
文件增长
1mb
最大文件大小
30mb
最大文件大小
10mb
5.数据库实施阶段
a.创建数据库
usemaster
ifdb_id('College')isnotnull
begin
dropdatabaseCollege
end
createdatabaseCollege
onprimary
(name=College_data,
Filename='F:
\课程\chmSQLsever\作业\qlshooldb_data.mdf',
size=5mb,
Maxsize=30mb,
Filegrowth=10%)
logon
(
name=College_log,
Filename='F:
\课程\chmSQLsever\作业\qlchooldb_data.ldf',
size=4mb,
Maxsize=10mb,
Filegrowth=1mb
)
b.创建表
useCollege
ifobject_id('宿舍楼管理表')isnotnull
droptable宿舍楼管理表
ifobject_id('课程表')isnotnull
droptable课程表
.......
go
createtable班级表
(
c_nochar(8)primarykey,
sub_idchar
(2)null
)
createtable学生档案表
(
s_nochar(10)primarykey,
c_nochar(8)references班级表(c_no),
s_namechar(10)nuLL,
sexchar
(2)null,
jiguanchar(20),
birthdaychar(20)
)
.......
c.向表插入信息
--向系部表插入信息
useCollege
go
insertintodepartment
values('11','计算机系','1101');
insertintodepartment
values('12','化学工程系','1201');
insertintodepartment
values('13','基础课程','1301');
insertintodepartment
values('14','总务处','3101');
go
--向专业表插入信息
useCollege
insertinto院系部门结构表values('11','计算机系','1101')
insertinto院系部门结构表values('12','化学工程系','1201')
insertinto院系部门结构表values('13','基础课部','1301')
insertinto院系部门结构表values('14','总务处','3101')
insertinto专业目录表values('11','计算机软件','11')
insertinto专业目录表values('12','计算机应用','11')
insertinto专业目录表values('21','应用化学','12')
insertinto专业目录表values('22','高分子材料','12')
......
d.创建索引
useCollege
ifexists(selectnamefromsys.indexeswherename='IX_班级表')
dropindexIX_班级表on班级表
createunique
indexIX_班级表
on班级表(c_no)
go
ifexists(selectnamefromsys.indexeswherename='IX_教工表')
dropindexIX_教工表on教工表
createunique
indexIX_教工表
on教工表(tea_id)
go
......
e.创建视图
useCollege
go
createviewV_学生成绩管理
as
select院系部门结构表.dep_name,专业目录表.sub_name,班级表.c_no,学生档案表.s_no,学生档案表.s_name,课程表.course_name,选课表.grade
from学生档案表,课程表,选课表,院系部门结构表,专业目录表,班级表
where学生档案表.s_no=选课表.s_noand课程表.course_id=选课表.course_idand学生档案表.c_no=班级表.c_noand班级表.sub_id=专业目录表.sub_idand专业目录表.dep_id=院系部门结构表.dep_id
go
createviewV_图书借阅管理
as
select借阅表.Book_id,图书表.book_name,借阅表.s_no,院系部门结构表.dep_name,专业目录表.sub_name,班级表.c_no,学生档案表.s_name,借阅表.Borrow,借阅表.back
from学生档案表,借阅表,图书表,院系部门结构表,专业目录表,班级表
where借阅表.s_no=学生档案表.s_noand借阅表.Book_id=图书表.book_idand 学生档案表.c_no=班级表.c_noand班级表.sub_id=专业目录表.sub_idand专业目录表.dep_id=院系部门结构表.dep_id
go
三.实训心得
通过学习,我对数据库没有了神秘感,简单的说下我对数据库的理解吧。
我觉得它就是创建一些表格,然后再用一些语句根据他们之间的关系,把它们组合在一起。
最基本的就是子查询了。
我的子查询经验就是先写出select*我们要找什么,然后写条件,我们要找的东西有什么条件,然后在写条件,我们的条件涉及那些表,那些字段,再在这些字段中通过我们学过的简单select语句选出来,有时候还要用到几层子查询,不过无所谓,只要思路是清晰的就没什么问题了。
接下来,关联查询之类的,学起来也是不难的,但有一点必须注意,那就是上课必须跟着老师的进度走,一定要注意听讲,勤做笔记.这样,你学起来就会得心应手,没什么困难。