学生宿舍管理数据库设计(下)
Posted 葳蕤Vantal
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学生宿舍管理数据库设计(下)相关的知识,希望对你有一定的参考价值。
一、系统开发概述 3
1.1 系统开发背景 3
1.2 系统功能需求分析 3
1.3 系统性能需求分析 4
1.4 系统数据流程分析 5
二、数据库概念结构设计 5
2.1 数据库局部E-R图 5
2.2 数据库全局E-R图 6
三、数据库逻辑结构设计 7
3.1关系模式的转换 7
3.2 数据模型的优化 8
四、数据库物理结构设计 9
4.1数据库及数据表的创建 9
4.1.1 数据库创建 9
4.1.2 数据表的创建 10
4.2数据完整性设计 13
4.2.1 主键约束的创建 13
4.2.2 DEFAULT约束的创建 14
4.2.3外键约束的创建 15
4.2.4 UNIQUE约束的创建 16
4.2.5 CHECK约束的创建 17
4.3 索引的创建 18
4.4 视图的创建 18
4.5 存储过程的创建 19
4.6 触发器的创建 20
五、数据库的操作 22
5.1数据操纵 22
5.1.1表结构的修改 22
5.1.2 数据插入 23
5.1.3数据更新 24
5.1.4数据删除 25
5.2 数据查询 26
5.2.1 单表查询 26
5.2.2多表查询 27
六、总结 29
七、参考文献 29
四、数据库物理结构设计
本系统设计选择SQL Server 2008数据库管理系统为开发工具,实现数据库的创建,表的设计及索引、视图、存储过程和触发器的创建。
4.1数据库及数据表的创建
4.1.1 数据库创建
(1)创建学生宿舍管理系统数据库
createdatabase学生宿舍管理系统
图4-1-1 创建数据库
(2)数据库信息说明
创建数据库,将数据库命名为学生宿舍管理系统,初始大小为3MB,数据库按照1MB比例自动增长;日志文件的初始大小为1MB,最大增长到50MB,按照10%增长,数据库的逻辑文件名为“学生宿舍管理系统”,物理文件名为“学生宿舍管理系统.mdf”。日志文件逻辑名“学生宿舍管理系统_log”,物理名称“学生宿舍管理系统_log.LDF”,数据库存放路径为“C:\\Program Files\\Microsoft SQLServer\\MSSQL10_50.MSSQLSERVER\\MSSQL\\DATA”。日志文件存放路径为“C:\\Program Files\\Microsoft SQL Server\\MSSQL10_50.MSSQLSERVER\\MSSQL\\DATA”
图4-1-2 查看数据库
4.1.2 数据表的创建
(1)使用SQLserver 2008图形工具创建学生表,属性如下:
图4-1-3 创建学生表
(2)使用SQLserver 2008图形工具创建管理员表,属性如下:
图4-1-1 创建管理员表
(3)使用SQL语句创建表宿舍楼:
createtable宿舍楼
( 宿舍楼varchar(15)primarykey,
管理员varchar(15),
介绍 varchar(30));
(4)使用SQL语句创建表宿舍:
createtable宿舍
( 宿舍号varchar(15)primarykey,
宿舍楼varchar(15),
几人间varchar(15),
空余床位int,
电话int,
foreignkey(宿舍楼)references宿舍楼(宿舍楼));
(5)使用SQL语句创建表学生缺寝记录:
createtable学生缺寝记录
(snointprimarykey,
宿舍楼varchar(15),
宿舍号varchar(15),
snamevarchar(15),
原因varchar(30),
管理员varchar(15),
constrainta1foreignkey(宿舍楼)references宿舍楼(宿舍楼),
constrainta2foreignkey(宿舍号)references宿舍(宿舍号));
(6)使用SQL语句创建表学生迁出记录:
createtable学生迁出记录
(snointprimarykey,
宿舍号varchar(15),
宿舍楼varchar(15),
snamevarchar(15),
迁出原因varchar(30),
迁出时间date,
constrainta3foreignkey(宿舍楼)references宿舍楼(宿舍楼),
constrainta4foreignkey(宿舍号)references宿舍(宿舍号));
(7)使用SQL语句创建表学生迁入记录:
createtable学生迁入记录
( 学号intprimarykey,
宿舍号varchar(15),
宿舍楼varchar(15),
姓名 varchar(15),
性别 varchar(5),
状态 varchar(10),
constrainta5foreignkey(宿舍楼)references宿舍楼(宿舍楼),
constrainta6foreignkey(宿舍号)references宿舍(宿舍号));
(8)使用SQL语句创建表宿舍评分管理:
createtable宿舍评分管理
( 宿舍号varchar(15),
宿舍楼varchar(15),
工号int,
管理员姓名varchar(15),
评分 float
constraintb1primarykey(宿舍号,宿舍楼),
constrainta7foreignkey(宿舍楼)references宿舍楼(宿舍楼),
constrainta8foreignkey(宿舍号)references宿舍(宿舍号),
constrainta9foreignkey(工号)references管理员(工号));
4.2数据完整性设计
4.2.1主键约束的创建
创建表时已经添加列级primary key约束,或者表级完整性约束,若未添加,则SQL语句如下:
(1)添加列级完整性约束,使用SQL语句
alter table 学生
add constraint a1primary key(学号);
(2)添加学生表主键约束使用图形界面,第一步右击学生表,点击设计,第二步选择码右键设置为主键。
图4-2-1设置主键约束
(3)添加表级完整性约束
alter table 宿舍评分管理
add constraint a2primary key(宿舍号,宿舍楼);
4.2.2DEFAULT约束的创建
(1)使用SQL语句创建约束,default约束用于向列中插入默认值,如果没有规定其他的值,那么会将默认值添加到所以的新记录。将学生迁入表状态属性默认为‘入住’。
altertable 学生迁入记录
addconstraint b2 default '入住' for 状态;
图4-2-2创建默认值约束
(2)使用图形工具创建约束,第一步点右键击表的设计,第二步选择属性列,第三步右侧输入默认值。
图4-2-3设置默认值约束
4.2.3外键约束的创建
(1)使用SQL语句创建外键约束
altertable student
addforeign key(宿舍号) references 宿舍(宿舍号);
图4-2-4创建外键约束
(2)使用图形界面创建外键约束,第一步点击设计表,第二部选择属性右键点击关系,第三步添加外键关系,第四步点击表和列的管理,设置主键表外键表。
图4-2-5设置外键约束
4.2.4UNIQUE约束的创建
(1)unique约束是唯一性约束,主要用来确保不受 primary key约束的列上数据的唯一性。前面已经假设管理员姓名不重复,取工号为码,设置姓名唯一。
alter table 管理员
add constraint b4unique(姓名);
图4-2-6唯一性约束
4.2.5CHECK约束的创建
(1)管理员表用户定义年龄在(age>35 and age<50),使用SQL语句如下:
altertable 管理员
addconstraint b5 check(年龄>35 and 年龄<50);
图4-2-7 创建检查约束
(2)宿舍评分管理表中,管理员对每个学生卫生和缺寝综合评分,输入一个宿舍学生平均成绩,用户定义评分(score>=60 and score<=100),SQL语句如下:
alter table 宿舍评分管理
add constraint b6 check(评分>=60 and 评分<=100);
图4-2-8 创建检查约束
(3)定义宿舍表空余床位,六人间人数小于等于六,四人间人数小于等于四,也就是(空余床位<=几人间 and 空余床位>=0),SQL语句如下:
图4-2-9创建check约束
alter table 宿舍
add constraint aa check(空余床位<=几人间 and 空余床位>=0);
4.3 索引的创建
在使用关系数据库系统时,用户所可能到和操作的数据就好像是在简单的二维表中,而实际上数据在磁盘上是如何存储的用户并不清楚,但是,数据的物理存储却是决定数据库性能的主要因素。索引是最常见的改善数据库性能的技术。以下依此对八个表建立索引。
(1)createuniqueindexid1onstudent(学号);
(2)createuniqueindexid2on管理员(工号);
(3)createuniqueindexid3on宿舍(宿舍号);
(4)createuniqueindexid4on宿舍楼(宿舍楼);
对宿舍评分管理表经行数据查询对宿舍楼和宿舍创建升序,按照工号降序建立唯一索引,其他表按照宿舍号升序,学号降序建立索引。
(5)createuniqueindexid5on宿舍评分管理(宿舍楼,宿舍号ASC,工号DESC);
(6)createuniqueindexid6on学生迁入记录(宿舍号ASC,学号DESC);
(7)createuniqueindexid7on学生迁出记录(宿舍号ASC,snoDESC);
(8)createuniqueindexid8on学生缺寝记录(宿舍号ASC,snoDESC);
图4-3-1 建立索引
4.4 视图的创建
(1)将学生表中所有大数据专业的学生定义为一个视图,虽然语句显示create view只能在批处理中创建,但仍然可以执行,SQL语句如下:
createviewT_D
as
select*
fromstudent
where 专业='大数据';
图4-4-1 建立视图
(2)将学生缺寝表中,按照宿舍号分组,对每个分组(每个宿舍)统计缺寝的人数定义为一个视图,SQL语句如下:
createviewT_D1(宿舍号,数量)
as
select 宿舍号,COUNT(sno)
from 学生缺寝记录
groupby宿舍号;
图4-4-2建立视图
4.5 存储过程的创建
(1)创建能返回大数据专业学生的学号,姓名,宿舍楼的存储过程p_pree,SQL语句如下:
createprocp_presswithrecompile,encryption
as
select 学号,姓名,宿舍楼
fromstudent
where 专业='大数据';
图4-5-1创建存储过程1
(2)利用存储过程实现:向学生迁出记录中插入一条记录,并且查询迁出时间大于2020-9-1的所有学生人数。SQL语句如下:
createprocinsert_stu@a1int,@a2varchar(15),@a3varchar(15),
@a4varchar(15),@a5varchar(30),@a6date,@a7intoutput
as
insertinto学生迁出记录(sno,宿舍号,宿舍楼,sname,迁出原因,迁出时间)
values(@a1,@a2,@a3,@a4,@a5,@a6)
select@a7=COUNT(distinctsno)
from 学生迁出记录
where 迁出时间>'2020-9-1'
go
图4-5-2创建存储过程2
4.6 触发器的创建
(1)创建触发器,当修改或者删除宿舍表中的‘宿舍号’字段时,同时修改或者删除学生表中的该宿舍号。SQL语句如下:
createtriggersushe_trig
on 宿舍forupdate,delete
as
begin
if(UPDATE(宿舍号))
updatestudentset宿舍号=(select 宿舍号frominserted)
where 宿舍号=(select 宿舍号fromdeleted)
else
deletefromstudent
where 宿舍号in(select 宿舍号fromdeleted)
end
图4-6-1创建触发器1
(2)创建触发器,当学生表的宿舍号修改或者删除,学生换宿舍时或者学生毕业,当修改学生表属性宿舍号时,对应deleted表中的原来宿舍床位增加,。SQL语句执行结果如图4-6-2。
createtriggerins_s
onstudentforupdate,delete
as
begin
if(update(宿舍号))
update 宿舍set 空余床位=空余床位+1
where 宿舍号=(select 宿舍号fromdeleted)and
宿舍楼=(select 宿舍楼fromdeleted)
else
update 宿舍set 空余床位=空余床位+1
where 宿舍号=(select 宿舍号fromdeleted)and
宿舍楼=(select 宿舍楼fromdeleted)
end
(3)当学生表新插入一个已知宿舍楼宿舍号的学生,对应宿舍空余床位减一。SQL语句执行结果如图4-6-3。
createtriggerdel_s
onstudentforinsert
as
begin
update宿舍set 空余床位=空余床位-1
where宿舍号=(select 宿舍号frominserted)and
宿舍楼=(select 宿舍楼frominserted)
end
图4-6-2创建触发器2
图4-6-3创建触发器3
五、数据库的操作
5.1数据操纵
5.1.1表结构的修改
(1)给宿舍楼表添加一列,地理位置,SQL语句如下:
altertable宿舍楼
add 位置varchar(15);
图5-1-1修改表1
(2)给上述宿舍楼表添加地理位置一列删除,SQL语句如下:
altertable宿舍楼
dropcolumn位置;
图5-1-2修改表2
5.1.2数据插入
(1)先插入管理员表,再插入宿舍楼表,因为宿舍楼中管理员是外键,SQL语句执行显示行受影响,最后查询表结果如下:
insert
into 管理员
values(01,'李梅',10088,'竹一',39);
insert
into 管理员
values(02,'Marry',10087,'竹二',36);
图5-1-3数据插入结果
(2)将学生信息插入学生表,在插入数据时,要保持实体完整性约束和参照完整性约束,先将定义的外键表赋值,SQL语句如下:
insert
intostudent
values(22,'张三','男',19,11033,'大数据','竹二',113);
insert
intostudent
values(23,'刘亦菲','女',19,11035,'大数据','竹一',112);
图5-1-4数据插入结果
5.1.3数据更新
(1)对学生缺寝记录中学号为22的学生,缺寝原因经行修改,将原因由感冒改为阳了。SQL语句如下:
update 学生缺寝记录
set 原因='阳了'
where sno=22;
图5-1-5数据更新结果1
(2)将学生评分管理表中,宿舍楼为竹二宿舍号为113,的宿舍评分改为99.9,SQL语句如下:
update 宿舍评分管理
set 评分=99.9
where 宿舍号=113 and宿舍楼='竹二';
图5-1-6数据更新结果2
5.1.4数据删除
(1)管理员表中姓名为杨幂的管理员要辞职,删除她的信息,SQL如下:
delete
from 管理员
where 姓名='杨幂';
图5-1-7数据删除1
(2)学生表中学号为22的学生毕业,删除学号为22学生个人信息,因为删除学生信息会触发触发器对宿舍空余床位数据更新,所有显示受两次影响。
delete
fromstudent
where 学号=22 ;
图5-1-8数据删除2
5.2 数据查询
5.2.1单表查询
(1)查询宿舍楼表对竹一宿舍楼的介绍,SQL语句如下:
select 管理员,介绍
from 宿舍楼
where 宿舍楼='竹一';
图5-2-1单表查询1
(2)查询宿舍表中那个宿舍还有空余床位可以入住,也就是空余床位不等于零,创建SQL语句如下:
select 宿舍号,宿舍楼,几人间,电话,空余床位
from 宿舍
where 空余床位>0;
图5-2-2单表查询2
(3)查询宿舍评分管理表中,评分大于七十的宿舍所有信息,SQL语句如下:
select*
from 宿舍评分管理
where 评分>=70;
图5-2-3单表查询3
5.2.2多表查询
(1)嵌套查询,查询学号为23学生宿舍评分,SQL语句如下图5-2-4:
select 宿舍号,宿舍楼,评分
from 宿舍评分管理
where 宿舍号=(select 宿舍号
fromstudent
where 学号=23);
(2)连接查询,查询学号为23学生宿舍评分
select 宿舍评分管理.宿舍号,宿舍评分管理.宿舍楼,评分
from 宿舍评分管理,student
wherestudent.宿舍号=宿舍评分管理.宿舍号and
student.宿舍楼=宿舍评分管理.宿舍楼and 学号=23;
图5-2-4多表查询1
(3)查询学号为23,姓名为刘亦菲所在宿舍共有几个人,SQL语句如下:
select 宿舍号,宿舍楼,(几人间-空余床位)
from 宿舍
where 宿舍号=(select 宿舍号
fromstudent
where 学号=23 and姓名='刘亦菲');
图5-2-5多表查询2
(4)查询李白所在宿舍楼的全部缺寝人数次数,SQL如下:
selectCOUNT(宿舍楼)
from 宿舍评分管理
where 宿舍楼in (select 宿舍楼
fromstudent
where 姓名='李白');
图5-2-6 多表查询3
六、总结
略(此处本人有感而发,就不供参考啦)
七、参考文献
[1]黄敏.基于B/S架构的学生宿舍管理系统数据库设计与实践[J].电脑知识与技术,2018,14(35):83-84+92.
[2]薛文辉. 德州学院学生公寓管理信息系统设计与实现[D].山东大学,2018.
JavaWeb项目-疫情环境下校园宿舍管理系统-附源码-毕业设计
@[toc]
1.课程简介
课程源码下载地址:https://edu.51cto.com/course/29255.html
本系统主要是针对疫情的大环境下的学生宿舍信息管理,本系统功能模块主要分为:信息浏览浏览功能、宿舍打卡浏览功能、学生提交信息功能、宿舍搜索功能、在线留言功能、信息管理功能、个人信息管理功能、人员管理功能、历史宿舍功能。
普通用户只能对自己提交的的信息进行修改删除,每天学生登录后可以在“体温提交”模块上进行实时的体温提交,当学生因为需要要去不同楼的宿舍进行访问,为了确保安全需要在“来访人员信息录用”模块进行信息登记。学生能在我的信息里面能看到过去一个月所进行的活动已及信息修改、提交等的数据。
管理老师分为不同等级,高等级的可以对低等级的进行操作,宿管阿姨可以对她所管理的那栋楼里的学生信息进行查看、更改,也能发布的通告信息等。管理人员高等级的用户功能覆盖了低等级的用户功能,并且能对低等级用户进行进行增、删、改、查。
2.你将收获
- 掌握项目开发的基础流程
- 掌握JavaEE的Web开发常见技术
- 熟悉企业级项目管理与构建
- 提升学员代码编码能力和实战项目编码经验
3.测试账号
-
超级管理员:
账号: admin
密码: 123456 -
宿舍管理员:
账号: zhangsan
密码: 123456 - 学生:
账号: 20201911
密码: 123456
4.部分截图
课程源码下载地址:https://edu.51cto.com/course/29255.html
以上是关于学生宿舍管理数据库设计(下)的主要内容,如果未能解决你的问题,请参考以下文章
javaweb学生宿舍管理系统设计与实现(含程序+论文+数据库)
JavaWeb项目-疫情环境下校园宿舍管理系统-附源码-毕业设计
Java项目:基于springboot+vue的学生宿舍管理系统—计算机毕业设计