数据库学生宿舍管理系统Word文档格式.docx
《数据库学生宿舍管理系统Word文档格式.docx》由会员分享,可在线阅读,更多相关《数据库学生宿舍管理系统Word文档格式.docx(35页珍藏版)》请在冰点文库上搜索。
(1)各种信息记录的完整性,信息记录内容不能为空;
(2)各种数据间相互的联系的正确性;
(3)相同的数据在不同记录中的一致性。
1.3系统功能分析
根据上图可以大致看出该数据库的基本功能:
基本信息管理:
包括对学生、学院、负责人、宿舍的基本信息的维护管理;
对宿舍的卫生、用水、用电有基本的统计分析功能;
对贵重物品的出入有一定的检测功能。
数据库操作功能:
查询、删除、修改、插入。
1.4业务流程概述
系统的业务是系统要达到的业务目标,业务流程分析是系统分析中的基础环节。
根据数据库所要完成的功能,将宿舍管理业务分成基本信息管理和服务管理两个模块。
1.基本信息管理
宿舍信息管理:
主要是记录宿舍的基本状况,可住人数,已住人数,电话号码,便于工作人员分配寝室以及联系。
学生信息管理:
宿舍的学生信息主要来自学生处提供的,对于已住进宿舍的学生,工作人员从学生处提取相关信息,进行统一管理。
员工信息管理:
记录在宿舍、楼管处工作的员工信息,及时增、删、改,便于有个统一的收集、管理、宿舍更好的运作。
学院信息管理:
有关学生的信息管理,可把学生的学习生活结合起来。
2.服务管理
用水量:
楼管在每个月记录宿舍的买水桶数;
用电量:
楼管记录每个宿舍每月的用电情况,超额用电时,自动断电,必须重新购买。
贵重物品出入登记:
为防止贵重物品失窃,带贵重物品离开宿舍楼时需要在楼下登记。
1.5业务流程图
(1)学生宿舍管理业务流程图
买电业务流程图:
买水业务流程图:
卫生检查业务流程图:
贵重物品带出业务流程:
1.6数据流程图
学生宿舍管理系统的顶层数据流程图:
学生事物要求
信息记录
第一层数据流程图:
基本信息事务
服务管理事务
第二层数据流程图1:
宿舍楼信息
负责人信息
基本信息事务
宿舍信息
学生信息
学院信息
第二层数据流程图2:
用电信息用电信息
买水信息买水信息
服务事项
卫生信息卫生信息
贵重物品信息贵重物品信息
1.7数据字典
(1)数据项
1.宿舍楼数据字典:
属性名
类型
长度
备注
楼号
char
8
宿舍楼的编号
楼名
16
宿舍楼名称
所在校区
40
校区名称
负责人工号
int
20
负责人的编号
容纳人数
该楼容纳的人数
层数
smallint
楼的层数
电话
该楼的联系电话
楼性质
Char
4
男生楼或女生楼
2.学生数据字典:
学号
学生的学号
姓名
学生的姓名
学院编号
籍贯
宿舍
入住时间
datetime
入住宿舍楼的时间
3.学院数据字典:
编号
名称
院长
人数
学院的总人数
4.宿舍数据字典:
所在楼号
舍长
舍长姓名
5.负责人数据表:
工号
Int
性别
‘男’或‘女’
年龄
工龄
6.电费数据字典:
宿舍号
用电量
用电量度
买点情况
Smallint
买电度数
7.用水数据字典:
买水量
8.贵重物品带出数据字典:
物品名称
带出者姓名
卫生检查数据字典;
得分
宿舍卫生检查得分
二、概念设计
2.1概念模型设计
(1)各部分E-R图。
(a)宿舍学生关系:
n1
(b)宿舍与宿舍楼关系:
(c)负责人与宿舍关系:
111n
(d)宿舍与学院关系:
1n1
(e)宿舍服务管理部分E-R图
1
111n
n
2.2视图的集成
将以上的部分E-R图合并,按照要求消除属性冲突、命名冲突、结构冲突等,消除冗余得到下图的基本E-R图:
n1m
1
三、逻辑结构设计
根据课本所学,概念结构是独立于任何一种数据结构的信息结构。
逻辑结构的设计任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
3.1E-R图向关系模型的转换
根据以上分析,将学生实体,宿舍楼实体,学院实体,宿舍实体,负责人实体,电费实体,用水实体,卫生检查实体,贵重物品带出实体分别转化为单独的关系模型。
具体的关系模式转化如下:
学生:
(学号,姓名,学院编号,籍贯,楼号,宿舍,入住时间)
宿舍楼:
(楼号,楼名,所在校区,负责人工号,人数,层数,电话)
学院:
(学院编号,名称,院长,人数)
宿舍:
(宿舍号,所在楼号,舍长,电话)
负责人:
(工号,姓名,性别,年龄,工龄,电话)
电费:
(楼号,宿舍号,用电量,买电情况)
用水:
(楼号,宿舍号,用水量,买水量)
卫生检查:
(楼号,宿舍号,卫生得分)
贵重物品带出:
(宿舍,楼号,姓名,物品名称,带出时间)
(注:
带下划线为主属性)
四.数据库实施阶段
4.1建立数据库、数据表、视图、索引
4.1.1建立数据库
createdatabasedormsystem;
4.1.2建立数据表
1.建立宿舍楼负责人信息表;
createtablefuze
(fnointprimarykey,
fnamechar(40),
fsexchar(4)check(fsex='
男'
orfsex='
女'
)notnull,
fsagesmallint,
fworksmallint,
fphoneint)
截图如下:
2.建立学院信息表:
createtablecollege
(conochar(10)primarykey,
conamechar(40),
copchar(20),
cozint,
)
3.建立宿舍信息表:
createtabledorm
(dnochar(8)primarykey,
dbnochar(10),
dfuzechar(10),
dphonechar(20),
foreignkey(dbno)referencesbuilding(bno)
);
4.建立宿舍楼新信息表:
createtablebuilding
(bnochar(10)primarykey,
bnamechar(40),
bschoolchar(40),
bfuzeint,
bamountint,
bfloorsmallint,
bphoneint,
bsexchar(4)check(bsex='
orbsex='
),
foreignkey(bfuze)referencesfuze(fno));
5.建立用电信息表:
createtableelectricity
(enochar(10),
ednochar(8),
eamountchar(10),
eynchar(4)check(eyn='
是'
oreyn='
否'
primarykey(eno,edno),
foreignkey(eno)referencesbuilding(bno),
6.建立用水信息表:
createtablewater
(wnochar(10),
wdnochar(8),
primarykey(wno,wdno),
foreignkey(wno)referencesbuilding(bno),
7.建立贵重物品带出信息表:
createtableobject
(onochar(40),
onamechar(40),
otimedatetime,
obnochar(10),
primarykey(ono),
foreignkey(obno)referencesbuilding(bno),
8.建立卫生检查信息表:
createtablehealth
(hnochar(10),
hdnochar(8),
hgradesmallint,
primarykey(hno,hdno),
foreignkey(hno)referencesbuilding(bno),
4.1.3建立视图
1.建立兴隆山校区宿舍视图
/*建立兴隆山校区宿舍视图*/
createviewxilongbuilding
as
select*
frombuilding
wherebschool='
兴隆山校区'
;
截图:
2建立兴隆山宿舍负责人视图
/*建立兴隆山校区宿舍楼负责人视图*/
createviewxinglongfuze
selectfuze.*
fromfuze,building
andbfuze=fno;
截图如下;
3.建立男生宿舍楼视图:
createviewnanbuilding
as
wherebsex='
4.建立卫生检查优秀宿舍及舍长视图:
/*建立卫生检查优秀(分数大于等于)宿舍及舍长视图*/
createviewyouxiudorm
selecthdno,dfuze
fromdorm,health
wherehgrade>
=90andhdno=dno;
4.1.4数据更新
1.插入数据
学生200900023333在2012-6-15带出笔记本电脑,插入该数据
insert
intoobject(ono,oname,otime,obno)
values('
200900023333'
'
笔记本电脑'
2012-6-5'
null)
2.修改数据
/*将所有负责人工龄加一岁*/
updatefuze
setfwork=fwork+1
3.更新数据:
/*将编号为的宿舍楼人数改为*/
updatebuilding
setbamount=400
wherebno=5;
4.1.5数据查询
1.查询山东省学生的信息
/*查询山东省学生的信息*/
fromstudent
whereshomelike'
山东%'
结果截图:
2.查询卫生检查不合格宿舍
/*查询卫生检查不合格宿舍*/
selecthdno
fromhealth
wherehgrade<
60;
结果截图
3.
/*查询各个宿舍卫生检查成绩,并按降序排列*/
selecthdno,hgrade
orderbyhgradedesc
4.
/*查询机械工程学院学生住的楼所在校区*/
selectbname,bschool
fromdistinctbuilding,student,college
whereconame='
机械工程学院'
andcono=scollegeandbno=sbuilding
5.采用嵌套查询
/*查询用电量过度宿舍信息*/
fromdorm
wherednoin
(selectedno
fromelectricity
whereeyn='
结果截屏
6.为了防止宿舍贵重物品的丢失,利用嵌套查询语句,一旦出现失窃事件,及时查询相关人员,即带出物品者和宿舍楼负责人
/*查询带出笔记本电脑的学生及宿舍楼负责人信息*/
selectstudent.*,fuze.*
fromstudent,fuze,building
wheresnoin
(selectono
fromobject
whereoname='
)
andsbuilding=bnoandbfuze=fno;
结构截图:
7.查询西校区宿舍所住学生信息和学院概况
/*查询西校区宿舍所住学生信息和学院概况*/
selectdistinctstudent.*,college.*
fromstudent,college,building
wheresbuildingin
(selectbno
frombuilding
wherebschool='
西校区'
andscollege=cono;
8.查询负责人开始工作年龄并排序
/*查询负责人开始工作年龄并排序*/
selectfno,fname,fsex,fphone,'
开始工作年龄'
fsage-fwork
fromfuze
orderbyfsage-fworkdesc
结果:
4.1.6建立触发器
1.定义一个after行级触发器,当用电量超过12度,自动将买电该为‘是’
createtriggerupdateelectricity
onelectricity
afterupdate
asbegin
if(new.eamount)>
12
thennew.eyn='
endif;
end;
五.总结与感想
这几天的数据库设计让我学到了很多数据库的知识。
以前在课本上学到的只是一些基础性的知识,而在实际应用中不仅会很多意想不到的问题而且仅有的课本知识也不能完全满足自己设计数据库的需要。
因此,设计数据库的过程是对数据库学习的进一步的提高和深入理解。
在这个过程中自己便会升华课本所学,对数据库有更加深入的认识。
同时,在这个过程中也认识到了自己很多方面的不足,因为在网上查阅资料是和询问计算机有关专业同学时,认识到数据库并不像我想象的那么简单,自己原来认为数据库只是对数据的存储和管理,没有考虑很多数据间的各种关系,数据冗余等。
数据库是按照数据结构来组织、存储和管理数据的仓库,StorageTek公司首席执行官J.Martin给数据库下了一个比较完整的定义:
数据库是存储在一起的相关数据的集合,这些数据是结构化的,无有害的或不必要的冗余,并为多种应用服务;
数据的存储独立于使用它的程序;
对数据库插入新数据,修改和检索原有数据均能按一种公用的和可控制的方式进行。
当某个系统中存在结构上完全分开的若干个数据库时,则该系统包含一个“数据库集合”。
按照这个定义我认识到了自己设计数据库的各种不足:
由于对冗余方面理解不深刻,自己的数据库里难免会有这方面的错误;
宿舍管理系统是一个庞大的管理系统,里面的数据量大,结构复杂,远比我提供的人数,结构复杂。
因此觉得自己对真正应用型的数据库设计还有很大差距;
数据库应该是个有好的交互界面,由于知识不足,友好界面没有设计,但在今后的学习生活中会努力学习这方面的知识,学以致用。
在数据库的结构设计中,各层数据是一环扣一环,紧密联系的,里面的关系要仔细考虑,不能疏漏,不然在最后数据查询时会出现虽然sql语句正确但查询不到自己想要的结果的现象。
数据库应用广泛,在以后的学业生活中,尽量结合自己的专业知识,更加深入学习数据库的知识,做出适应现实需要的数据库。