摘要
山东大学校区众多,因而宿舍管理机构庞大,学生宿舍管理系统是应对学生宿舍管理的现代化、网络化,逐步摆脱以往学生宿舍管理的人工管理方式,提高学生宿舍管理效率而开发的。该系统开发由系统需求分析阶段、概念设计阶段、逻辑设计阶段、数据库实施阶段等阶段组成
一、需求分析阶段
1.1需求分析目的
根据自己的切身体会,山东大学各个校区的宿舍管理系统很发达,准确高效的记录着学生的各种信息,及宿舍情况。学习了课程《数据库系统概论》,现用sql server 2005大体模拟这一宿舍管理系统,以加深对数据库的理解,增强自己的数据库开发技术,锻炼和方面的能力。
1.2需求分析任务 (1) 信息要求:
1.宿舍楼的基本信息(building)包括:宿舍楼号、楼名、所在校区、负责人、容纳人数、负责人电话等,这些信息可以方便地查询每个楼的信息及特征。
2.学生表(student):主要包括学号、姓名、学生所在学院、学生籍贯、宿舍、入住时间;
3.学院表(college):包括学院编号、学院名称、院长、学院人数;
4.宿舍表(dorm):包括宿舍号、所在楼、舍长、宿舍电话;当宿舍出现什么问题,可以及时联系舍长;
5.负责人表(fuze):包括工号、姓名、性别、年龄、工龄、电话;
6.用电表(electricity):包括楼号、宿舍号、额定用电量、买电量,通过该表可以查找每个宿舍的用电情况;
7.用水表(water):包括楼号、宿舍号、买水量,通过该表可以查询每个宿舍的用水情况;
8.卫生检查表(health):包括楼号、宿舍号、每周检查卫生得分,通过该表可以查出每个宿舍的卫生情况,找出优秀宿舍和卫生不合格宿舍。
1 / 26
宿舍管理数据库 9.贵重物品出入登记(register):包括带出者姓名、带出时间、贵重物品名称、宿舍号;如有贵重物品丢失此表格可起到一定的作用。
(2) 处理要求:
用户对信息有什么处理要求,数据库会做出相应回复。即,输入信息查询或更改指令时,数据库或做出相应响应。
(3) 安全性与完整性要求:
A、安全性要求:
(1)系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;
(2)系统应对不同的数据设置不同的访问级别,访问用户可查询和处理数据的类别和内容;
(3)系统应对不同用户设置不同的权限,区分不同的用户,如区分普通用户(学生),管理员。
B、完整性要求:
(1)各种信息记录的完整性,信息记录内容不能为空; (2)各种数据间相互的联系的正确性; (3)相同的数据在不同记录中的一致性。
1.3系统功能分析
学生宿舍管理系统
基本信息管理
学院 信息
学生 信息
宿舍信息
负责人信息
卫生
服务管理
用水
电费
贵重物品出入
根据上图可以大致看出该数据库的基本功能:基本信息管理:包括对学生、学院、负责人、宿舍的基本信息的维护管理;对宿舍的卫生、用水、用电有基本
2 / 26
宿舍管理数据库 的统计分析功能;对贵重物品的出入有一定的检测功能。 数据库操作功能:查询、删除、修改、插入。 1.4业务流程概述
系统的业务是系统要达到的业务目标,业务流程分析是系统分析中的基础环节。根据数据库所要完成的功能,将宿舍管理业务分成基本信息管理和服务管理两个模块。
1.基本信息管理
宿舍信息管理:主要是记录宿舍的基本状况,可住人数,已住人数,电话号码,便于工作人员分配寝室以及联系。
学生信息管理:宿舍的学生信息主要来自学生处提供的,对于已住进宿舍的学生,工作人员从学生处提取相关信息,进行统一管理。
员工信息管理:记录在宿舍、楼管处工作的员工信息,及时增、删、改,便于有个统一的收集、管理、宿舍更好的运作。
学院信息管理:有关学生的信息管理,可把学生的学习生活结合起来。 2.服务管理
用水量:楼管在每个月记录宿舍的买水桶数;
用电量:楼管记录每个宿舍每月的用电情况,超额用电时,自动断电,必须重新购买。
贵重物品出入登记:为防止贵重物品失窃,带贵重物品离开宿舍楼时需要在楼下登记。
1.5业务流程图
(1)学生宿舍管理业务流程图 买电业务流程图:
3 / 26
宿舍管理数据库 用超断取 电 额 电 电 卡 学 购记生 电 录 信 个息 人 信 息 宿 舍买水业务流程图: 信 息 买费 水 用 桶 数 学 买生 水 个 人 信 息 宿记 舍录 信
息
卫生检查业务流程图:
4 / 26
宿舍通电 宿舍管理数据库 学 生
宿舍卫生检查 通知 打扫宿舍 楼管会检查卫生 学生信息 宿舍信息 宿舍卫情况打分 公示 信息记录 贵重物品带出业务流程: 带 出 物 品 学生 是否贵重 否 是 登记 离 开 宿 舍楼 学生信息 宿舍信息
5 / 26
宿舍管理数据库 1.6数据流程图
学生宿舍管理系统的顶层数据流程图:
学生事物要求
学生个人信息系
学生
事务处理 信息记录ﻩ
信息检索请求 P0 学生宿舍 管理系统 信息处理结果 负责人 第一层数据流程图:
管
理
员
D1 学院表 基本信息事务 1.1基本信息管理 D2 宿舍楼表 1.0接受事务 D3 学生表 D4 宿舍表 负责人 服务管理事务 1.2服务管理 D5 用电表 D6 买水表 D7 贵重物品登记 6 / 26 宿舍管理数据库
第二层数据流程图1: ﻩ负责人信息 1.1.0基本信息事务 事务 分类 ﻩ学生信息 ﻩ学院信息 第二层数据流程图2:
D1 宿舍楼表 1.1.1 宿舍楼管宿舍楼信息 1.1.2宿舍信息 宿舍管理 D2 宿舍表 负责人 宿舍信息 D3 学生表 1.1.3学生管理 学生信息 D4 学院表 1.1.4学院 学院信息 7 / 26
宿舍管理数据库 ﻩ用电信息 用电信息 买水信息 1.2.0 服务事项 服务 项分 类 ﻩ卫生信息ﻩ卫生信息 ﻩ贵重物品信息ﻩ贵重物品信息 1.2.1 电费管理 1.2.2买水管理 买水信息 负责人 1.2.3卫生管理 1.2.4贵重物品带出管理 1.7数据字典 (1)数据项
1.宿舍楼数据字典: 属性名 楼号 楼名 所在校区 负责人工号
类型 char char char int 长度 8 16 40 20 备注 宿舍楼的编号 宿舍楼名称 校区名称 负责人的编号 8 / 26
宿舍管理数据库 容纳人数 层数 电话 楼性质 2.学生数据字典: 属性名 学号 姓名 学院编号 籍贯 楼号 宿舍 入住时间 3.学院数据字典: 属性名 编号 名称 院长 人数 4.宿舍数据字典: 属性名 宿舍 所在楼号 舍长 电话 5.负责人数据表: 属性名 工号 姓名 性别 年龄 工龄 电话 6.电费数据字典: 属性名 楼号 宿舍号 用电量 买点情况 7.用水数据字典: 属性名 楼号
int smallint int Char 类型 char char Char Char Char char datetime 类型 Char Char Char int 类型 Char char char int 类型 Int Char char smallint smallint int 类型 Char Char smallint Smallint 类型 Char 长度 8 40 20 16 20 8 16 4 长度 8 20 8 8 8 8 8 备注 学院编号 该楼容纳的人数 楼的层数 该楼的联系电话 男生楼或女生楼 备注 学生的学号 学生的姓名 入住宿舍楼的时间 学院的总人数 长度 8 8 20 16 长度 20 20 4 16 16 16 长度 8 8 20 20 长度 8 备注 舍长姓名 备注 ‘男’或‘女’ 备注 用电量度 买电度数 备注 9 / 26
宿舍管理数据库 宿舍号 买水量 属性名 楼号 宿舍号 物品名称 带出者姓名 卫生检查数据字典; 属性名 楼号 宿舍号 得分 Char smallint 类型 Char Char Char Char 8 8 长度 8 8 40 20 备注 8.贵重物品带出数据字典: 类型 Char Char Int 长度 8 8 8 备注 宿舍卫生检查得分 二、概念设计
2.1概念模型设计
(1)各部分E-R图。 (a)宿舍学生关系:
ﻩnﻩ1
学生
(b)宿舍与宿舍楼关系:
宿舍 nﻩ1 住宿 宿舍 存在 宿舍楼 (c)负责人与宿舍关系: 1 负责人负责 (d)宿舍与学院关系: ﻩ1 nﻩ1 学院 包含 1 ﻩ1ﻩn 宿舍楼 包含 宿舍 学生 住宿 10 / 26 宿舍 宿舍管理数据库
(e)宿舍服务管理部分E-R图 ﻩn ﻩn
分数 1 检查卫生 1ﻩ1ﻩ1 n 住宿 nﻩ1 学生 1 带出 用水量(桶数) 用水 宿舍 用电 用电量(度数) 贵重物品 2.2视图的集成
将以上的部分E-R图合并,按照要求消除属性冲突、命名冲突、结构冲突等,消除冗余得到下图的基本E-R图:
11 / 26
宿舍管理数据库
属于 ﻩ1 ﻩnﻩ1 1 ﻩn 学院 分数 1 检查卫生 1ﻩ1ﻩ1 n 住宿 nﻩ1ﻩm n 学生 用水 属于 宿舍 用电 用电量(度数) 带出 用水量(桶数) 宿舍楼 1 管理 贵重物品 1 负责人 三、逻辑结构设计
根据课本所学,概念结构是于任何一种数据结构的信息结构。逻辑结构的设计任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
3.1 E-R图向关系模型的转换
根据以上分析,将学生实体,宿舍楼实体,学院实体,宿舍实体,负责人实体,电费实体,用水实体,卫生检查实体,贵重物品带出实体分别转化为单独的关系模型。
12 / 26
宿舍管理数据库 具体的关系模式转化如下: 学生:(学号,姓名,学院编号,籍贯,楼号,宿舍,入住时间) 宿舍楼:(楼号,楼名,所在校区,负责人工号,人数,层数,电话) 学院:(学院编号,名称,院长,人数) 宿舍:(宿舍号,所在楼号,舍长,电话)
负责人:(工号,姓名,性别,年龄,工龄,电话) 电费:(楼号,宿舍号,用电量,买电情况) 用水:(楼号,宿舍号,用水量,买水量) 卫生检查:(楼号,宿舍号,卫生得分) 贵重物品带出:(宿舍,楼号,姓名,物品名称,带出时间) (注:带下划线为主属性)
四.数据库实施阶段
4.1建立数据库、数据表、视图、索引 4.1.1建立数据库
create database dormsystem;
4.1.2建立数据表
1.建立宿舍楼负责人信息表;
create table fuze (fno int primary key, fname char(40),
fsex char(4) check(fsex='男' or fsex='女') not null,fsage smallint, fwork smallint, fphone int) 截图如下:
13 / 26
宿舍管理数据库
2.建立学院信息表:
create table college
(cono char(10) primary key, coname char(40), cop char(20), coz int, )
截图如下:
3.建立宿舍信息表:
create table dorm
(dno char(8) primary key, dbno char(10), dfuze char(10), dphone char(20),
foreign key(dbno) references building(bno) ); 截图如下:
14 / 26
宿舍管理数据库 4.建立宿舍楼新信息表:
create table building (bno char(10)primary key, bname char(40), bschool char(40), bfuze int, bamount int, bfloor smallint, bphone int,
bsex char(4) check(bsex='男' or bsex='女'), foreign key (bfuze) references fuze(fno)); 截图如下:
15 / 26
宿舍管理数据库
5.建立用电信息表:
create table electricity (eno char(10), edno char(8), eamount char(10),
eyn char(4) check (eyn='是' or eyn='否') primary key(eno,edno),
foreign key(eno) references building(bno), )
截图如下:
6.建立用水信息表:
create table water
16 / 26
宿舍管理数据库 (wno char(10), wdno char(8), eamount char(10), primary key(wno,wdno),
foreign key(wno) references building(bno), )
截图如下:
7.建立贵重物品带出信息表:
create table object (ono char(40), oname char(40), otime datetime, obno char(10), primary key(ono),
foreign key(obno) references building(bno), )
截图如下:
8.建立卫生检查信息表:
create table health
17 / 26
宿舍管理数据库 (hno char(10), hdno char(8), hgrade smallint,
primary key(hno,hdno),
foreign key(hno) references building(bno), )
截图如下:
4.1.3建立视图
1.建立兴隆山校区宿舍视图
/*建立兴隆山校区宿舍视图*/
create view xilongbuilding as
select * from building
where bschool='兴隆山校区'; 截图:
2建立兴隆山宿舍负责人视图
18 / 26
宿舍管理数据库 /*建立兴隆山校区宿舍楼负责人视图*/ create view xinglongfuze as
select fuze.* from fuze,building
where bschool='兴隆山校区' and bfuze=fno; 截图如下;
3.建立男生宿舍楼视图:
create view nanbuilding as select * from building where bsex='男' 截图如下:
4.建立卫生检查优秀宿舍及舍长视图:
/*建立卫生检查优秀(分数大于等于)宿舍及舍长视图*/ create view youxiudorm as
select hdno,dfuze from dorm,health
where hgrade>=90 and hdno=dno; 截图如下:
19 / 26
宿舍管理数据库 4.1.4数据更新
1.插入数据
学生200900023333在2012-6-15带出笔记本电脑,插入该数据
insert
into object(ono,oname,otime,obno)
values('200900023333','笔记本电脑','2012-6-5',null) 截图如下:
2.修改数据
/*将所有负责人工龄加一岁*/ update fuze
set fwork=fwork+1 截图如下:
3.更新数据:
/*将编号为的宿舍楼人数改为*/ update building set bamount=400 where bno=5; 截图如下:
20 / 26
宿舍管理数据库
4.1.5数据查询
1.查询山东省学生的信息
/*查询山东省学生的信息*/ select * from student
where shome like'山东%' 结果截图:
2.查询卫生检查不合格宿舍
/*查询卫生检查不合格宿舍*/ select hdno from health where hgrade<60; 结果截图
3.
/*查询各个宿舍卫生检查成绩,并按降序排列*/ select hdno,hgrade
21 / 26
宿舍管理数据库 from health
order by hgrade desc 结果截图:
4.
/*查询机械工程学院学生住的楼所在校区*/ select bname,bschool
from distinct building,student,college
where coname='机械工程学院' and cono=scollegeg 结果截图:
5.采用嵌套查询
/*查询用电量过度宿舍信息*/ select * from dorm where dno in (select edno from electricity where eyn='是'); 结果截屏
and bno=sbuildin 22 / 26
宿舍管理数据库
6.为了防止宿舍贵重物品的丢失,利用嵌套查询语句,一旦出现失窃事件,及时查询相关人员,即带出物品者和宿舍楼负责人
/*查询带出笔记本电脑的学生及宿舍楼负责人信息*/ select student.*,fuze.* from student,fuze,building where sno in (select ono from object
where oname='笔记本电脑')
and sbuilding=bno and bfuze=fno; 结构截图:
7.查询西校区宿舍所住学生信息和学院概况
/*查询西校区宿舍所住学生信息和学院概况*/ select distinct student.*,college.* from student,college,building where sbuilding in (select bno from building
where bschool='西校区') and scollege=cono; 结果截图:
8.查询负责人开始工作年龄并排序
/*查询负责人开始工作年龄并排序*/
select fno,fname,fsex,fphone,'开始工作年龄',fsage-fwork
23 / 26
宿舍管理数据库 from fuze
order by fsage-fwork desc 结果:
4.1.6建立触发器
1.定义一个after行级触发器,当用电量超过12度,自动将买电该为‘是’
create trigger updateelectricity on electricity after update as begin
if (new.eamount)>12 then new.eyn ='是'; end if; end;
五.总结与感想
这几天的数据库设计让我学到了很多数据库的知识。以前在课本上学到
的只是一些基础性的知识,而在实际应用中不仅会很多意想不到的问题而且仅有的课本知识也不能完全满足自己设计数据库的需要。因此,设计数据库的过程是对数据库学习的进一步的提高和深入理解。在这个过程中自己便会升华课本所学,对数据库有更加深入的认识。
同时,在这个过程中也认识到了自己很多方面的不足,因为在网上查阅资料是和询问计算机有关专业同学时,认识到数据库并不像我想象的那么简单,自己
24 / 26
宿舍管理数据库 原来认为数据库只是对数据的存储和管理,没有考虑很多数据间的各种关系,数据冗余等。数据库是按照数据结构来组织、存储和管理数据的仓库,StorageTek公司首席执行官J.Martin给数据库下了一个比较完整的定义:数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;数据的存储于使用它的程序;对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。按照这个定义我认识到了自己设计数据库的各种不足: 由于对冗余方面理解不深刻,自己的数据库里难免会有这方面的错误; 宿舍管理系统是一个庞大的管理系统,里面的数据量大,结构复杂,远比我提供的人数,结构复杂。因此觉得自己对真正应用型的数据库设计还有很大差距; 数据库应该是个有好的交互界面,由于知识不足,友好界面没有设计,但在今后的学习生活中会努力学习这方面的知识,学以致用。 在数据库的结构设计中,各层数据是一环扣一环,紧密联系的,里面的关系要仔细考虑,不能疏漏,不然在最后数据查询时会出现虽然sql语句正确但查询不到自己想要的结果的现象。 数据库应用广泛,在以后的学业生活中,尽量结合自己的专业知识,更加深入学习数据库的知识,做出适应现实需要的数据库。
25 / 26
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务