1 概述
本次课程设计是数据库课程设计,我选的是学生宿舍管理系统,功能块主要是宿舍管理、学生管理、出入登记和来访登记,目的在于将学生宿舍的管理实现信息化,监控学生宿舍的情况防止意外发生。
课程设计任务的需求分析
2.1设计任务
设计出一个方便进行宿舍管理的系统的数据库。
2.2设计要求
假定学校有多栋宿舍楼,每栋楼有多层,每层有多个寝室,每个寝室可住多名学生,学生宿舍管理系统对学校的学生宿舍进行规范管理,其管理的对象如下:
.宿舍信息:编号、楼层、床位数、单价等。
.学生:学号、姓名、性别、年龄、所在院系、年级、电话等。
每个宿舍最多可以住4位同学,每个同学只能在一个宿舍,不同宿舍的费用标准可以不同。不同院系、年级的同学可以住同一间宿舍。
系统要能够对宿舍、学生、住宿信息进行登记、调整,并能随时进行各种查询、统计等处理。包括:
.寝室分配:根据院系、年级分配寝室。
.学生管理:实现入住学生信息的登记、维护和查询功能。
.信息查询:按公寓楼号、学生姓名等查询住宿信息。
.出入登记:对学生进出公寓的情况进行登记、实现基本的出、入监控功能。
2.3需求描述的规范文档
- 宿舍情况查询和清空宿舍;
- 学生信息查询和修改、删除和添加;
- 学生出入登记;
- 来访登记;
- 权限管理,包括三种权限(宿舍管理员、高级管理员和超级管理员);
- 宿舍管理员可以编辑出入登记和来访登记,但是不能操作学生信息和宿舍信息,只能查询;
- 高级管理员可以操作学生信息和宿舍信息但是不能编辑出入登记和来访登记;
- 超级管理员除了高级管理员的权限外还能对高级管理员和宿舍管理员的用户进行添加和删除修改。
3 概念结构设计
3.1概念结构设计工具(E-R模型)
使用E-R图作为概念结构设计工具,构建出数据库E-R模型。
3.2管理员子系统
3.2.1子系统描述
管理员表:id,名字,密码,联系方式,权限。
其中主键为id。
3.2.2分E-R图
3.2.3说明
管理员表用于记录管理员信息。
3.3宿舍子系统
3.3.1 子系统描述
``宿舍表:id,宿舍管理员id,宿舍号(如C),宿舍楼号,宿舍学生性别。
``其中主键为id,外键为宿舍管理员id。
3.3.2 分E-R图
3.3.3 说明
宿舍表用于记录已有宿舍信息。
3.4房间子系统
3.4.1 子系统描述
房间表:id,宿舍id,房间号,价格。
其中主键为id,外键为宿舍id。
3.4.2 分E-R图
3.4.3 说明
房间表用于记录房间信息。
3.5学生子系统
3.5.1子系统描述
学生表:id,学号,姓名,性别,年龄,联系方式,学院id,专业id,年级,宿舍id,房间id。
其中主键为id,外键为学院id,专业id,宿舍id,房间id。
3.5.2分E-R图
3.5.3说明
学生表用于记录学生信息。
3.6院系子系统
3.6.1子系统描述
院系专业表:id,院系名字,所属学院id。
其中主键为id,外键为所属学院id。
3.6.2分E-R图
3.6.3说明
院系专业表用于记录院系专业信息。
3.7出入登记子系统
3.7.1 子系统描述
出入登记表:id,宿舍id,学生id,出去时间,返回时间。
其中主键为id,外键为宿舍id,学生id。
3.7.2 分E-R图
3.7.3 说明
出入登记表用于记录学生出入宿舍的信息。
3.8来访登记子系统
3.8.1 子系统描述
来访登记表:id,宿舍id,学生id,来访人名字,来访时间,出去时间。
其中主键为id,外键为宿舍id,学生id。
3.8.2 分E-R图
3.8.3 说明
来访登记表用于宿舍来访登记。
3.9总体E-R图
4 逻辑结构设计
4.1 关系数据模式
管理员表(admin):
id int 主键
名字(aname) varchar(10) 非空
密码(password) varchar(10) 非空
联系方式(tel) varchar(20) 非空
权限(power) tinyint 非空
宿舍表(dormitory):
id int 主键
管理员id(a_id) int 非空 外键联系admin表
宿舍号(如C)(ch) char(1) 非空
宿舍编号(num) int 非空
宿舍学生性别(s_gender) varchar(10) 非空
房间表(room):
id itn 主键
宿舍id(d_id) int 非空 外键联系dormitory表
宿舍号(num) int 非空
剩余床位(margin) tinyint 非空
价格(price) int 非空
学生表(student):
id int 主键
学号(sno) varchar(20) 非空
姓名(sname) varchar(10) 非空
性别(gender) varchar(10) 非空
年龄(age) int 非空
联系方式(tel) varchar(20) 非空
学院id(u_id) int 非空 外键联系major表
专业id(m_id) int 非空 外键联系major表
年级(class) int 非空
宿舍id(d_id) int 非空 外键联系dormitory表
房间id(r_id) int 非空 外键联系room表
院系专业表(major):
id int 主键
名字(name) varchar(50) 非空
所属学院id(m_id) int 非空 外键联系major表
出入登记表(in_out):
id int 主键
宿舍id(d_id) int 非空 外键联系dormitory表
学生id(s_id) int 非空 外键联系student表
出去时间(out_date) datetime 非空
返回时间(in_date) datetime
来访登记表(visit):
id int 主键
宿舍id(d_id) int 非空 外键联系dormitory表
学生id(s_id) int 非空 外键联系student表
来访人名字(name) varchar(10) 非空
来访时间(in_date) datetime 非空
出去时间(out_date) datetime
4.2 视图的设计
dormitory和room之间的视图:
dormitory和in_out之间的视图:
dormitory和visit之间的视图:
4.3 优化
在宿舍表和房间表、学生表、出入登记表、来访登记表之间建立外键约束,实现删除和更新的级联,并且建立视图。
5 数据库物理设计与实施
5.1 数据库应用的硬件、软件环境介绍
此次数据库设计使用的硬件包括笔记本电脑一台,装有win10系统,软件环境为VS2012和sql server2008。
5.2 物理结构设计
数据库表的设计可见4.1关系数据模式,同时为了提高数据库的查找效率和用户响应速度,数据库应该建立相应的视图和索引提高存取效率,其中视图见4.2。
5.3 索引的设计
本次数据库课程设计除了主键索引和非空索引外并没有设置其他索引。
5.4 建立数据库
数据库:
CREATE DATABASE [dms] ON PRIMARY
( NAME = N'dms', FILENAME = N'D:\dms.mdf' , SIZE = 3072KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB )
LOG ON
( NAME = N'dms_log', FILENAME = N'D:\dms_log.ldf' , SIZE = 1024KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)
表:
admin表:
CREATE TABLE [dbo].[admin](
[id] [int] IDENTITY(1,1) NOT NULL,
[aname] [varchar](10) NOT NULL,
[password] [varchar](10) NOT NULL,
[tel] [varchar](20) NOT NULL,
[power] [tinyint] NOT NULL,
CONSTRAINT [PK_admin] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
dormitory表:
CREATE TABLE [dbo].[dormitory](
[id] [int] IDENTITY(1,1) NOT NULL,
[a_id] [int] NOT NULL,
[ch] [char](1) NOT NULL,
[num] [int] NOT NULL,
[s_gender] [varchar](10) NOT NULL,
CONSTRAINT [PK_dormitory] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH