数据库大作业——学生宿舍管理系统.doc
学生宿舍管理系统13070941 信管2班 李维1、 需求分析阶段 我们宿舍在管理上都是采用纸上登记,文本记录的,针对此现状,我提出了学生宿舍管理系统的设计。 (1)调查分析 现在要开发学生宿舍管理系统,首先要调查用户的需求。本次调查采取的主要步骤有:(1) 开调查会。通过与老师,学生座谈了解他们对该管理系统的期望与要求。(2) 请专人介绍。找专业老师了解宿舍的具体安排情况以及学生的入住信息。(3) 设计调查表请学生填写。调查学生的个人信息,宿舍的基本信息,工作人员的基本信息。首先调查基本信息:学生住在宿舍楼中,每站宿舍区都会有若干名阿姨负责本宿舍区的日常管理。(1)学生的基本信息:入校时,每位同学都有唯一的学号,并被分配到指定的宿舍楼和指定的宿舍,也会有一个宿舍号,其入校时间就是他的入住时间。(2)宿舍的基本信息:每间宿舍都有唯一的楼号和宿舍号,每站宿舍区都有自己的电话号码。(3)工作人员基本信息:每站宿舍区都有驻楼阿姨和保洁阿姨的编号。(4)报修的基本信息:宿舍楼中经常出现财产的损坏,比如灯泡坏了,厕所的马桶出故障了等,这时,同学们需要将财产损坏情况报告给宿舍楼管理员,以便学校派人进行维修。这时,需要记录报修的宿舍号和损坏的财产编号,同时记录报修的时间和损坏的原因。当损坏的财产维修完毕后,应记录解决时间,表示该报修成功解决。(5)来访者基本信息每站宿舍对于每一次的人员来访都要做好相应的登记。包括来访者和被访者的信息。 (2)用户对系统的要求1、信息要求:宿舍楼管理员能查询上面提到的宿舍楼的所有相关信息,包括某一学号的学生在宿舍楼中住宿的详细信息,报修的所有信息和来访者的信息,以利于对整个宿舍楼的全面管理。2、处理要求:当学生基本信息发生变化时,宿舍楼管理员能对其进行修改。比如,某些同学搬到其他的宿舍中去,他们在本宿舍楼中相应的记录就应该删去;当宿舍财产报修及时解决后,管理员应登记解决时间,表明该报修问题已成功解决。3、安全性与完整性要求:A、安全性要求:(1)系统应设置访问用户的标识以鉴别是否是合法用户,并要求合法用户设置其密码,保证用户身份不被盗用;(2)系统应对不同的数据设置不同的访问级别,限制访问用户可查询和处理数据的类别和内容;(3)系统应对不同用户设置不同的权限,区分不同的用户,如区分普通用户(学生),管理员。B、完整性要求:(1)各种信息记录的完整性,信息记录内容不能为空;(2)各种数据间相互的联系的正确性;(3)相同的数据在不同记录中的一致性。数据库功能:基本信息管理、住宿管理、服务管理、来访者管理。基本信息管理包括学生信息、宿舍信息、工作人员信息;住宿信息包括入住、分配床位、毕业退宿;服务管理包括电费、维修;来访者管理包括来访者信息登记、来访者查询。(3) 数据字典设计(数据项,数据结构,数据量,数据存储,处理过程)1、 数据项 数据项名含义说明别名数据类型长度取值范围学号住宿学生学生编号char8姓名住宿学生学生姓名Varchar10性别住宿学生char2专业住宿学生Varchar20联系方式住宿学生char11员工号宿舍阿姨员工编号char4员工姓名宿舍阿姨Varchar10年龄宿舍阿姨smallint2职位宿舍阿姨员工从事工作Varchar20联系方式宿舍阿姨手机号码char11区名宿舍所属园区澄,泽,沁,润Varchar2站名园区几站一站,二站char2楼号宿舍是几栋char2宿舍号宿舍几零几char3宿舍电话宿舍每站号码char12可住人数宿舍smallint2已住人数宿舍smallint2物品号物品报修varchar8报修原因物品报修char50提交日期物品报修datetime 8解决日期物品报修datetime8报修费用物品报修decimal5来访人姓名来访者Varchar10被访人姓名来访者Varchar10所属关系来访者Varchar20证件名称来访者Varchar20来访日期来访者Datetime8来访时间来访者Datetime8归访时间来访者Datetime8备注来访者Varchar502、 数据结构 数据结构名含义说明组成学生住宿信息学生登记入住信息学号,姓名,性别,专业,联系方式,入住时间员工信息员工就职信息员工号,姓名,年龄,性别,职位,家庭地址,联系方式宿舍信息学校宿舍园区分布情况以及入住情况区名,站名,楼号,宿舍号,宿舍电话,可住人数,已住人数报修信息设备保修楼号,宿舍号,物品号,报修原因,提交日期,解决日期,报修费用来访者信息每站来访人员登记来访人姓名,被访人姓名,所属关系,证件名称,来访日期,来访时间,归访时间,备注3、 数据流 以来访人员为例: 数据流:来访人员 说明:对每日的来访人员进行登记查询 数据流来源:来访者 数据流去向:来访者信息表 组成:来访信息 平均流量:20人/天 高峰期流量:50人/天4、 数据存储数据存储名说明输入的数据流输出的数据流组成存取频度存取方式报修信息表设备保修信息存储表报修信息已修信息报修信息报修信息已修信息5件/h随机来访者信息表来访者信息存储表来访信息来访结束信息来访信息来访信息来访结束信息10/天随机5、 处理过程处理过程名输入数据流输出数据流登记报修报修信息报修信息查询报修报修信息报修信息登记已修信息已修信息已修信息登记来访者信息来访者信息来访者信息查询来访者信息来访者信息来访者信息登记归访信息归访信息归访信息2、 概念结构设计(1) 分E-R图学生 联系方式专业学号姓名 已住人数宿舍 区名可住人数 楼号 站名 宿舍电话员工 年龄 员工号 职位联系方式员工姓名 来访者 性别 证件 关系姓名(2)总E-R图 学号 区名 入住时间 站名 楼号 姓名1n 宿舍电话 宿舍入住 学生 专业 可住人数 离宿时间11 联系方式 已住人数 来访时间管理来访 归访时间nn 年龄 员工 来访者 员工号 职位 性别 证件 联系方式 员工姓名 关系 姓名3、 逻辑结构设计(1)转换原则: 一个实体型转换为一个关系模式。 关系的属性:实体型的属性 关系的码:实体型的码 2. 一个1:n联系可以转换为一个独立的关系模式,也可以与n端对应的关系 模式合并。 1) 转换为一个独立的关系模式 关系的属性:与该联系相连的各实体的码以及联系本身的属性 关系的码:n端实体的码 2)与n端对应的关系模式合并 合并后关系的属性:在n端关系中加入1端关系的码和联系本身的属性 合并后关系的码:不变 可以减少系统中的关系个数,一般情况下更倾向于采用这种方法。 3一个1:1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。 1) 转换为一个独立的关系模式 关系的属性:与该联系相连的各实体的码以及联系本身的属性 关系的候选码:每个实体的码均是该关系的候选码 2) 与某一端对应的关系模式合并 合并后关系的属性:加入对应关系的码和联系本身的属性 合并后关系的码:不变 4一个m:n联系转换为一个关系模式。 关系的属性:与该联系相连的各实体的码以及联系本身的属性 关系的码:各实体码的组合。 5三个或三个以上实体间的一个多元联系转换为一个关系模式。 关系的属性:与该多元联系相连的各实体的码以及联系本身的属性 关系的码:各实体码的组合 6. 具有相同码的关系模式可合并。 目的:减少系统中的关系个数。 合并方法:将其中一个关系模式的全部属性加入到另一个关系模式中,然后去掉其中的同义属性(可能同名也可能不同名),并适当调整属性的次序(2) 关系模式(1)学生住宿表(student accommodation(SA):(学号xh,姓名xm,性别xb,专业zy,入住时间rzsj,联系方式lxfs,楼号lh,宿舍号ssh)(2)宿舍表(Dormitory):(区名qm,站名zm,楼号lh,宿舍号ssh,电话号码dhhm,可住人数kzrs,已住人数yzrs)(3)设备报修表(equipment maintenance(EM):(区名qm,站名zm,楼号lh,宿舍号ssh,物品号wph,报修原因bxyy,提交日期tjrq,解决日期jjrq, 报修费用bxfy)(4)来访者表Victor:(来访人姓名lfrxm,被访人姓名bfrxm,所属关系gx,证件名称zj,来访日期lfrq,来访时间lfsj,归访时间gfsj,学号xh) (5)员工信息表Staff:(员工号ygh,员工姓名ygxm,年龄nl,楼号lh,性别xb,职位zw,联系方式lxfs)4、 物理结构设计 数据库在物理设备上的存储结构与存储方法称为数据库的物理结构,为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程就是数据库的物理设计分两步走:(1)确定数据库的物理结构,在关系数据库中主要是存取方法和存储结构;(2)对物理结构进行评价,评价的重点是时间和空间效率。 对于不同的表要建立不同的索引,如学生住宿表建立唯一索引,宿舍表建立组合索引5、 实施和维护Create table SA(xh char(8) primary key,xm varchar(50) ,xb char(2),zy varchar(50), lxfs char(11),rzsj datetime ,lh char(2) ,ssh char(3), );Create table Dormitory(qm varchar(50),Zm int,Lh varchar(50),Ssh int,Dhhm int,Kzrs int,Yzrs int,);Create table EM(lh char(6) ,ssh char(6) ,wph char(8) ,bxyy char(50) ,tjrq datetime ,jjrq datetime ,bxfy decimal(5,2) ,);Create table Victor(lfzxm varchar(10) ,bfzxm varchar(10) ,gx Varchar(20) ,zj Varchar(20) ,lfrq Datetime ,lfsj Datetime ,gfsj Datetime ,bz Varchar(50),xh char(8) );Create table staff(ygh char(4) primary key,ygxm varchar(10) not null,nl smallint ),lh char(2),xm char(2) ,zw varchar(20) ,lxfs char(11),);导入数据Insert into SA(xh,xm,xb,zy,rzsj,lxfs,lh,ssh)Values()Insert into Dormitory(qm,zm,lh,ssh,dhhm,kzrs,yzrs)Values()Insert into EM(qm,zm,lh,ssh,wph,bxyy,tjrq,jjrq, bxfy)Values()Insert into Victor(lfrxm,bfrxm,gx,zj,lfrq,lfsj,gfsj,xh)Values()更新删除Update SA set xm=m+ygh Delete from Staff where nl>=50 简单查询Select * from SA;Select xh,xm,zy from SA where lh=5 and ssh=601;Select ygh from staff;Select ssh from Dormitory where qm=澄园;