一、系统开发概述 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.

学生宿舍管理数据库设计(下)相关推荐

  1. 学生宿舍管理数据库设计(上)

    一.系统开发概述 3 1.1 系统开发背景 3 1.2 系统功能需求分析 3 1.3 系统性能需求分析 4 1.4 系统数据流程分析 5 二.数据库概念结构设计 5 2.1 数据库局部E-R图 5 2 ...

  2. 学生宿舍管理mysql设计_学生宿舍管理系统设计与实现(SSH,MySQL)

    学生宿舍管理系统设计与实现(SSH,MySQL)(任务书,开题报告,中期检查表,文献综述,外文翻译,毕业论文15000字,程序代码,MySQL数据库) 21世纪的今天,信息在社会上占着主流地位,计算机 ...

  3. 学生宿舍管理mysql设计_学生宿舍管理系统的设计与实现(PHP,MySQL)(含录像)

    学生宿舍管理系统的设计与实现(,MySQL)(含录像)(论文10000字,程序代码,MySQL数据库) 结合学校宿舍实际情况开发一款基于Web的高校宿舍管理系统,主要适用于宿舍管理员,学生两类人员的使 ...

  4. 【数据库课程设计】SQLServer数据库课程设计(学生宿舍管理),课设报告+源码+数据库关系图

    数据库课程设计--学生宿舍管理,需要全部源码可以关注私信我,把邮箱发在评论区 前言 一.课题背景和开发环境 1.课题背景 2.开发环境 二.系统功能及示意图 1.系统实现功能 2.功能示意图 2.1学 ...

  5. C++课程设计学生宿舍管理信息系统

      青岛农业大学c++课 程 设 计报 告 学院.系: 青岛农业大学理信学院 专业名称: 计算机科学与技术 课程设计科目 面向对象程序课程设计 学生姓名: 董松 指导教师: 苏万力 完成时间: 201 ...

  6. c语言宿舍管理设计报告,C语言课程设计—学生宿舍管理系统设计报告.doc

    word格式精心整理版 范文范例 学习指导 课 程 设 计 报 告 课程名称 C语言程序设计 课题名称 学生宿舍管理系统 专 业 班 级 学 号 姓 名 指导教师 2012年6月19日 湖南工程学院 ...

  7. 计算机网路络课设_学生宿舍网络规划与设计

    xxx大学学生宿舍网络规划与设计 摘 要 目 录 1 前 言 2 案例描述 3 项目分析 3.1 需求分析 3.1.1 网络主干线需求分析 3.1.2 网络系统的设计原则 3.2 可行性分析 3.2. ...

  8. 学生宿舍管理系统的设计与实现(课程论文)

    学生宿舍管理系统的设计与实现 摘  要:现如今高校大学生越来越多,寝室压力巨大,学生不好管理.学生宿舍管理系统对于一个学校来说是必不可少的组成部分.目前好多学校还停留在宿舍管理人员手工记录数据的最初阶 ...

  9. 基于java学生宿舍管理系统的设计和实现-毕业论文(可仅作参考)

    学生宿舍管理系统的设计和实现-毕业论文(可仅作参考) 可以仅作参考宝子们 ,这个只有论文版本不包含代码哦~ 论文word版本我会上传到资源里面供宝子看 文章目录 学生宿舍管理系统的设计和实现-毕业论文 ...

最新文章

  1. overflow超出显示_[CSS]text-overflow: ellipsis;什么时候可能不生效?
  2. Django的model.py
  3. 【DIY】简单粗暴低成本Arduino四轴机械臂方案,创客教育学习使用舵机首选方案!...
  4. Python和Flask真强大:不能错过的15篇技术热文(转载)
  5. 怎样根据字段域查找到其在数据库中关系与属性
  6. 重学java基础第二十课:环境配置和第一个helloWorld
  7. [转]让iframe自适应高度-真正解决
  8. Unity变量命名的6个重要提示
  9. 关于内容管理系统IWMS的几个问题
  10. 山石防火墙CLI创建VLAN
  11. 大数据技术原理与应用学习笔记(一)
  12. U3D连接Steamworks SDK制作成就系统
  13. 24种设计模式-单例模式-懒汉模式详解
  14. WINDOWS常见问题的最佳解决方案
  15. 【flv解析】Audio Specific Config 协议及解析
  16. php 时间 增加天数,php实现当前时间加天数的方法
  17. 苏嘉杭高速公路收费站升级改造(苏州地区)配电室综合监控系统的设计与应用
  18. 解决InfoPath 2007表单的部署问题
  19. 何钦铭c语言第三版第3章答案,何钦铭版C语言第3章答案精选.pdf
  20. Python 一个漂亮的音乐节奏可视化方案

热门文章

  1. Python抓取某东电商平台数据
  2. runtime.getruntime.availableprocessors
  3. M1卡修改各区块控制位值和数据
  4. 精心整理史上最全的数据结构flash演示动画,共5个版本,祝大家考研成功!
  5. 基于硬件的消息队列中间件 Solace 简介之二
  6. 区块链倪老师:区块链思维——序章
  7. python怎么在图片上写字_python在图片上写汉字
  8. 基于51单片机ds1302时钟、ds18b20、lcd12864的恒温器
  9. 计算机电影制作专业,影视制作专业是学什么的
  10. 人称代词I/my/mine/me 用法