2023年7月27日发(作者:)
数据库课程设计(学院学生管理信息系统) 2009 — 2010 学年第 二 学期
《网络数据库》
课程设计说明书
题 目:学院学生管理信息系统
2010 年 7 月 2 日
摘要
本文简要介绍了用SQL创建《学院学生管理信息系统》数据库的过程。针对每年新生入校和毕业生离校的情况,为了及时掌握在院学生情况,特建立此数据库。为了提高编程能力,建库者采用编写代码的形式实现创建过程。
创建全程分为系统需求分析、数据库系统概念设计、数据库系统逻辑结构设计、数据库系统实施等阶段。本文围绕创建过程展开。经过对《学院学生管理信息系统》需求的分析,建库者进行了数据库概念结构设计,绘制E-R图。按转换的原则,将概念模型转换为关系模型,并根据实际情况给实体各属性赋予恰当的数据类型和长度,实现数据库的逻辑结构设计。运用代码创建“学院学生管理信息系统”数据库,college、class、team、dorm、student五个基本表,并通过外键建立好表间联系。为每个表创建好存储过程后,利用存储过程对表中数据进行添加、修改、删除、等操作。因student表数据量大,所以为其建立索引。在假设某种查看数据需求的情况下,建立条件查询、多表查询。因为本系统针对学生管理,为使输入简化,特对student表中“性别”属性建立默认值,并进行检测。为维护系统正常运行,减低数据丢失的几率,建库者为系统指定了作业计划及备份。为方便用户查询数据及保证数据库数据的安全性,定义了用户和权限并设置不同的使用权限。本系统基本能反映学生信息,可作为SQL入门实例。
关键词:SQL SQL建库实例 SQL代码 数据库 数据库设计 概念结构 逻辑结构 视图 索引 查询 默认 备份 用户 角色
第一章 系统概述
本次课程设计我建立的数据库是《学院学生管理信息系统》。该系统是一个综合的管理信息系统。围绕学生,系统涵盖了学生隶属的班级概况,班级所属的学院信息,学生所参加运动队的概况及学生住宿状况等。该系统的设计能够满足对学院、班级、学生、运动队、宿舍等信息的查询以及修改。该系统性能的完好性将影响学生信息管理。
第二章 系统需求分析
一个学院根据专业及需要开设多个班级,一个班级只能隶属于一个学院,所以学院与班级是1:n的关系。学院属性有学院编号、学院名称;班级属性包括班级号、班级名、专业、教室。
每一个班级有多名学生,每名学生必须且只能属于一个班级,则班级与学生对应的关系为1:n。设学生属性有学号、姓名、性别、年龄。
每一个学院有若干运动队,一个运动队只能效力于一个学院,故学院与运动队的关系为1:n。参加运动队的同学在运动队里有参加项目。运动队属性有运动队号、队名、教练员、活动地点、活动时间。
一个宿舍可以有多名学生,但是一个学生只能住在一个宿舍里,宿舍属性有宿舍号、楼号、人数、管理员。
第三章 数据库系统概念设计
本系统首先自顶向下进行需求分析,再自底向上设计概念结构,先定义各局部应用的概念结构,然后按一定的规则将他们集合起来得到全局概念。
根据以上系统需求分析,绘制E—R图如下:
学院学1
隶n
班班班学院拥运1
参加参n
1
教专住1
宿包n
学n
队号
队名
1 n
教练活动活动学姓性年宿楼人管
图3-1 学院学生信息管理系统E-R图
第四章 数据库系统逻辑结构设计
按转换原则将图3-1的学院学生管理信息系统E-R视图转化成拥有主键(下有下划线)和外键(下有波浪线)的关系模型。
学院(学院编号,学院名称)
班级(班级号,班级名,专业,教室,学院编号)
运动队(队号,队名,教练员,活动时间,活动地点,学院编号)
宿舍(宿舍号,楼号,人数,管理员)
学生(学号,姓名,性别,年龄,班级号,队号,宿舍号,参加项目)
第五章 表结构设计
表5-1学院表(College)表结构
列名
college_num
College_name
说明
学院编号
学院名称
数据类型
char
char
数据长度
5
20
约束
主键
非空
表5-2班级表(class)表结构
列名
Class_num
Class_name
major
classroom
说明
班级号
专业
教室
数据类型 数据长度 约束
Char
Char
Char
5
20
20
8
5
主键
非空
外键,引用College表的college_num
表5-3运动队表(team)表结构
列名
Team_num
班级名称 char
College_num 学院编号 char
说明
队号
数据类型 数据长度 约束
char
5 主键 Team_name
Coach
Place
Sporttime
队名
教练
char
char
8
8
10
5
非空
外键,引用College表
的college_num
活动地点 char
活动时间 datetime
College_num 学院编号 char
表5-4宿舍表(Course)表结构
列名
dorm_num
说明
宿舍号
数据类型 数据长度 约束
char
char
char
char
3
4
2
80
主键
Building_num 楼号
Total_member 人数
adm
管理员
表5-5学生表(student)表结构
列名
Stu_num
gender
Age
说明
学号
性别
年龄
数据类型 数据长度 约束
char
char
char
10
8
2
主键
非空
默认“男”,限“男”或“女”
默认为21
非空,外键,引用class表
Class-num
Team_num 队号 char 5
3
10
外键,引用team表team_num
外键,引用dorm表dorm_num
stu_name 姓名
smallint
5 Class_num 班级号
Dorm_num 宿舍号 char
pro 参加项目 char
第六章 创建数据库和表
6.1数据库的创建
使用查询分析器建库,代码如下:
create database 学院学生管理信息系统
直接在“对象资源管理器”的“数据库”上右击选择“新建数据库”建库。本文采用第二种方法。
6.2表的创建
调用查询分析器,用代码创建表,编写代码过程如图5-1,代码如下:
create table college(college_num char(5) primary key,
college_name char(20) not null);
create table class(class_num char(5) primary key,
class_name char(20) not null,
major char(20),
classroom char(8),
college_num
college(college_num));
create table team(team_num char(5) primary key,
team_name char(8) not null,
coach char(8),
place char(10),
sporttime datetime,
college_num
college(college_num));
create table dorm(dorm_num char(3) primary key,
building_num char(4),
char(5) references
char(5) references total_member char(2),
adm char(8));
create table student(stu_num char(10) primary key,
stu_name char(8) not null,
gender char(2) check (gender in ('男','女')),
age smallint default 21,
class_num
class(class_num),
team_num char(5) references team(team_num),
dorm_num char(3) references dorm(dorm_num),
pro char(10));
char (5) not null,references
图6-1 表结构的创建
6.3关系图的创建
在“对象资源管理器”中“学院学生管理信息系统”数据库右击“关系” 新建关系图。关系图如图5-2所示。
图6-2 表间关系图
第七章 创建存储过程并输入数据
7.1通过存储过程并向表中添加数据
打开数据库,在“存储过程”上右击,选择“新建存储过程”,然后输入代码。
7.2表college
创建存储过程,代码如下
CREATE PROCEDURE add_college @college_num char(5),@college_name
char(20)
AS insert into college(college_num,college_name)
values (@college_num,@college_name)
运用exec语句向表中输入数据,过程如图7-1所示,表内容如图7-2所示。
图7-1运用exec语句向college表输入数据
图7-2表college内容
7.3表class
创建存储过程,过程如图7-3所示,代码如下:
CREATE PROCEDURE add_class @class_num char(5),@class_name
char(20),@major char(20),@classroom char(8),@college_num char (5)
AS
Insert into class(class_num,class_name,major,
classroom,college_num)
values (@class_num,@class_name,@major,@classroom,@college_num)
图7-3创建表class存储过程
运用exec语句向表中输入数据,过程如图7-4所示,表内容如图7-5所示。
图7-4运用exec语句向表class输入数据
图7-5 class表内容
7.4表team
创建存储过程,代码如下:
CREATE PROCEDURE add_team @team_num char(5), @team_name
char(8),@coach
AS
char(8),@place
Insert
char(10),@sporttime
into
datetime,@college_num char(5)
team(team_num,team_name,coach,place,sporttime,college_num)
values(@team_num,@team_name,@coach,@place,@sporttime,@college_num)
运用exec语句向表中输入数据,过程如图7-6所示,表内容如图7-7所示。
图7-6 向表team输入数据
图7-7 team表内容
7.5 dorm表
创建存储过程,代码如下:
CREATE
AS
insert into class(class_num,class_name,major,
classroom,college_num)
values (@class_num,@class_name,@major,@classroom,@college_num)
运用exec语句向表中输入数据,过程如图7-8所示,表内容如图7-9所示。
PROCEDURE add_class @class_num char(5),@class_name
char(20),@major char(20),@classroom char(8),@college_num char (5)
图7-8向表dorm输入数据
图7-9表dorm内容
7.6 tudent表
创建存储过程,代码如下:
CREATE PROCEDURE add_student @stu_num char(10),@stu_name
char(8),@gender char(2),@age smallint,@class_num char (5),@team_num
char(5),@dorm_num char(8),@pro char(10)
AS
insert into student(stu_num,stu_name,gender,age,class_num,team_num,
dorm_num,pro)
values(@stu_num,@stu_name,@gender,@age,@class_num,@team_num,@dorm_num,@pro)
运用exec语句向表中输入数据,过程如图7-10所示,表内容如图7-11所示。
图7-10 向表student输入数据
图7-11表student内容
第八章 数据库实施
8.1 修改
将student表学号为“011101”的学生年龄由20岁改为21岁
首先,创建存储过程,代码如下:
CREATE PROCEDURE update_student @stu_num char(10),@age smallint
AS update student set age=@age where stu_num=@stu_num
接着,在查询分析器里面执行修改过程,修改前student表内容如图8-1所示,修改后如图8-2所示。代码如下:
exec update_student '011101','21'
图8-1修改前表student内容
图8-2修改后表student内容
8.2 删除
删除表team中team_name为“商院乒乓”的记录
创建存储过程及代码如图8-3所示
图8-3表team创建删除的存储过程
在查询分析器中输入代码,执行语句前后标内容对照如图8—4、图8-5所示。代码如下:
exec delete_team '商院乒乓'
图8-4表team删除“商院乒乓”记录前表内容
图8-4表team删除“商院乒乓”记录后表内容
8.3 添加
对college表添加关于艺术学院的记录:
直接调用已建立好的add_college存储过程,在查询分析器中输入代码:exec add_college 'gxu11','艺术学院'即可添加艺术学院的记录。结果如图8-5所示。
8.4 设置默认值并检测
将student表中学生的性别属性设置默认值为“男”。右击“默认”,在名称框输入默认名,在值中输入默认值,点击确定后默认名即建立完毕。创建过程如图8-5。
图8-5 创建默认名为“性别”的默认
右击“性别”默认,选中“属性”选项,点击“绑定列…”进入“将默认值绑定到列-性别”选项卡,选择[dbo].[student],将gender添加到绑定列框中,点击确定即完成。创建过程如图8-6:
图8-6 将表student的“性别”属性设置默认
检测默认值设置是否成功用查询分析器输入下列代码,其中代码中没有为“性别”属性赋值:
Insert into
student(stu_num,stu_name,age,class_num,team_num,dorm_num,pro)
values('011103','米粒',21,'0111','01P','B62','乒乓球');
打开student表,可见表中添加了“米粒”的记录,并且“性别”属性列里出现值“男”。创建代码如图8-7,结果如图8-8、图8-9所示。
图8-7 创建默认检测代码
图8-8 添加“米粒”记录前student表的内容
图8-9 添加“米粒”记录后student表的内容
8.5 建索引
因为student表数据量较大,比较难维护。故对student表建立索引,以加快数据查询速度,保证数据的唯一性和加快连接速度。建立索引代码如下:
create unique index index_stu_num on student(stu_num asc);
8.5 视图
8.5.1一张表内的简单条件查询
查询student表中学生王刚的学号、姓名、性别、年龄等个人基本信息。为此建立视图如图8-10所示。代码如下:
select stu_num,stu_name,gender,age
from student
where stu_name='王刚'
图8-10 查询“王刚”个人信息
8.5.2多表查询
假设学校举办校运会,各学院的运动员需要对自己的学号、姓名、性别、参加项目、学院等个人信息进行确认。根据需要,我们建立运动员个人信息确认的视图如图8-11所示。
建立视图代码如下:
Create view
sportmeeting(stu_num,stu_name,gender,pro,college_name)
As select
_num,_name,gender,pro,e_name
from student,college,team
where
_num=_e_num=e_num
图8-11多表查询结果(各学院运动员信息确认)
8.6 为数据库创建用户和角色,并为不同的用户设置不同的使用权限
新建角色“wjx”和“xun”(如图8—12所示),并赋予他们不同的权限。
图8-12设置角色“xun”的权限
新建用户user1,登录名为BUILTIN﹨Administrators,并赋予此用户“wjx”的角色,使他具有wjx所具有的权限(如图8—13所示)。
图8-13设置用户user1的权限
8.7制定作业计划,让系统在适当的时候备份数据库。
在对象资源管理器中点击“管理”,右击“数据库维护计划”进入“数据库维护计划向导”。按照提示步骤,建立好维护计划,如图8-14所示。维护计划如下:
数据库:学院学生管理信息系统
服务器: (local)
优化: 每 1 周在 星期日 发生,在 1:00:00。
执行下列操作:
重新组织数据页和索引页,将可用空间更改为原始空间的 10。
当数据库的大小超过 50 MB 时收缩数据库。保留 10 % 的数据空间作为可用空间。
INTEGRITY CHECKS:每 1 周在 星期日 发生,在 0:00:00。
执行下列操作:
检查数据库
完全备份
每 1 周在 星期日 发生,在 2:00:00。
备份媒体: 磁盘
将备份文件存储在默认的 SQL Server 备份目录中。
完成后验证备份。
事务日志备份:
每 1 周在 星期一,星期二,星期三,星期四,星期五,星期六 发生,在
0:00:00。
备份媒体: 磁盘
将备份文件存储在默认的 SQL Server 备份目录中。
完成后验证备份。
图8-14 维护计划完成
总结
本系统作为SQL建库入门实例,基本能完成对学生所属学院、所属班级、 住宿、参加运动队等情况的添加、修改、删除的操作。能恰当地建立索引,提高数据查询速度。根据实际设置默认,有效地提高了数据输入的速度。针对不同用户设置不同的视图,有利于用户查询自己需要的信息及保证系统数据的安全性。为系统设置了不同的用户和角色并赋予不同的权限,有利于系统的安全性。并制作了维护计划和数据备份。总的来说系统功能较完整。
但是,由于种种原因限制,建库过程缺少联系实际,针对细节的一些约束在系统内没有得到实现,对于用户和角色权限的设置也没有结合实际情况。
参考文献
苗兰雪 刘瑞新 宋歌. 数据库系统原理及应用教程. 北京:机械工业出版社,2007 年. 44-85,153-179
致谢
发布者:admin,转转请注明出处:http://www.yc00.com/news/1690433847a349227.html
评论列表(0条)