学生宿舍数据库管理系统

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

课程项目考核报告课程名称:《数据库原理与应用》项目名称:《宿舍管理系统》___宿舍管理系统分析与设计1.项目背景:信息要求学生宿舍管理系统对于一个学校来说是必不可少的组成部分。目前好多学校还停留在宿舍管理人员手工记录数据的最初阶段,手工记录对于规模小的学校来说还勉强可以接受,但对于学生量比较庞大,需要记录存档的数据比较多的高校来说,人工记录是相当麻烦的。我针对此情况,设计了合适的学生宿舍管理系统,可以方便学生宿舍的管理,提高宿舍管理工作效率及查询效率。2.系统功能结构根据宿舍馆管理系统的特点,可以将其分为系统管理、系统查询两个部分,其中各部分及其包括的具体功能如图1所示。3.数据库设计(1)概念结构设计概念结构设计阶段是整个数据库设计的关键,它通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。设计学生宿舍管理数据库,包括学生、宿舍、宿舍楼、职工四个关系。其E-R图如下:宿舍管理系统系统管理系统查询学生管理宿舍管理宿楼管理员工管理信息查询管理查询N1N111包含管理宿舍宿舍号宿舍楼号宿舍电话应住人数住宿学生班级学号hao号性别姓名宿舍号床铺号移动电话宿舍楼宿舍数宿舍楼号楼层数职工号宿舍类别职工职工号职工姓名性别宿舍楼号设计宿舍管理数据库,包括职工、宿舍楼、宿舍、学生四个关系,其关系模式中对每个实体定义的属性如下:职工表Employee:(职工号,职工姓名,性别,宿舍楼号)宿舍楼表House:(宿舍楼号,宿舍类别,职工号,楼层数,宿舍数)宿舍表Dorm:(宿舍号,宿舍楼号,宿舍电话,应住人数)学生表Student:(学号,姓名,性别,班级,移动电话,宿舍号,床铺号)职工表(Employee)字段名字段含义数据类型长度备注Emp_Id职工号char10唯一,且不可为空Emp_Name职工姓名char10Emp_Sex性别char2Hou_Id宿舍楼号char10宿舍楼表(House)字段名字段含义数据类型长度备注Hou_Id宿舍楼号char10唯一,且不可为空Hou_type宿舍类别char2Emp_Id职工号char10Hou_floor楼层数char10Hou_Num宿舍数char10宿舍表(Dorm)字段名字段含义数据类型长度备注Dor_Id宿舍号char10唯一,且不可为空Hou_Id宿舍楼号char10Dor_Tel宿舍电话char10Dor_Num应住人数char101、学生表(Student)字段名字段含义数据类型长度备注Stu_Id学号char10唯一,且不可为空Stu_Name姓名char10Stu_Sex性别char2Stu_class班级char10Stu_Tel移动电话varchar15Dor_Id宿舍号char10Stu_Bed床铺号char101、创建数据库DMS:CreatedatabaseDMS2、创建数据表:职工表Employee(Emp_Id,Emp_Name,Emp_Sex,Hou_Id)createtableEmployee(Emp_Idchar(10)notnullunique,Emp_Namechar(10)notnull,Emp_Sexchar(2)notnull,Hou_Idchar(10)notnull,primarykey(Emp_Id))宿舍楼表House(Hou_Id,Hou_type,Emp_Id,Hou_floor,Hou_Num)createtableHouse(Hou_Idchar(10)notnullunique,Hou_typechar(2)notnull,Emp_Idchar(10)notnull,Hou_floorchar(10)notnull,Hou_Numchar(10)notnull,primarykey(Hou_Id),check(Hou_Id0andHou_Id100))宿舍表Dorm(Dor_Id,Hou_Id,Dor_Tel,Dor_Num)的建表语句:createtableDorm(Dor_Idchar(10)notnullunique,Hou_Idchar(10)notnull,Dor_Telchar(10)notnull,Dor_Numchar(10)notnull,primarykey(Dor_Id))学生表Student(Stu_Id,Stu_Name,Stu_Sex,Stu_Class,Stu_Tel,Dor_Id,Stu_Bed)的建表语句:createtableStudent(Stu_Idchar(10)notnullunique,Stu_Namechar(10)notnull,Stu_Sexchar(2)notnull,Stu_Classchar(10)notnull,Stu_Telvarchar(15)notnull,Dor_IDchar(10)notnull,Dor_Bedchar(10)notnull,primarykey(Stu_Id))(1)视图设计(至少一个视图)SELECTdbo.Dorm.Dor_Id,dbo.Dorm.Hou_Id,dbo.Student.Stu_Id,dbo.Student.Stu_Name,dbo.Student.Stu_Class,dbo.Student.Dor_IDASExpr1FROMdbo.DormINNERJOINdbo.StudentONdbo.Dorm.Dor_Id=dbo.Student.Dor_ID(2)约束默认规则设计要求:至少完成一个Check约束条件、一个默认对象和一个外健约束外键约束定义:建立Employee表和House表之间的参照关系,如图5所示外键约束定义:建立House表和Dorm表之间的参照关系外键约束定义:建立Dorm表和Student表之间的参照关系(3)存储过程设计(至少一个带输入参数的存储过程)存储过程功能:用CREATEPROCEDURE语句创建存储过程getStudent,要求根据stu_id(学生学号)返回学生的stu_name(学生姓名)和stu_class(学生班级)。创建存储过程UseDMSGOCreateProceduregetStudent@stu_idchar(10),@stu_namechar(10)OUTPUT,@stu_classchar(10)OUTPUTAsSelect@stu_name=stu_name,@stu_class=stu_classFromstudentWhere@stu_id=stu_idGO执行存储过程执行已创建的存储过程要使用T-SQL的execute语句UseDMSGODeclare@stu_namechar(10),@stu_classchar(10)Executegetstudent'610110101',@stu_nameOUTPUT,@stu_classOUTPUTPrint'学号610110101学生的姓名为:'+@stu_namePrint'学号610110101学生的班级为:'+@stu_classGO触发器设计触发器功能:使用T-SQL的CREATETRIGGER语句在DMS数据库的student表上创建一个更新触发器student_update,当在student表中更新读者姓名时,激活该触发器,显示被更改读者的姓名变更信息。UseDMSGoCreatetriggerstudent_updateOnstudentforupdateAsIfupdate(stu_name)BeginDeclare@new_stunamechar(10),@old_stunamechar(10)Declare@msgchar(60)Select@new_stuname=@new_stunamefrominsertedSelect@old_stuname=@old_stunamefrominsertedRaiserror('student_update触发器开始执行……',16,1)Set@msg='本表中学生'+@old_stuname+'被更名为'+@new_stuname+'!'Raiserror(@msg,16,2)EndGo在查询分析器中输入修改记录的update语句验证触发器的运行,如下图所示,由于查询分析口头窗口下半部分的“消息”标签中显示的信息可知,update语句确实激活了student_updateUpdatestudentsetstu_name=’钟浩’wherestu_name=’钟强’6)多表(复杂)查询语句设计查询语句功能:查询所有宿舍号为01开头的学生姓名和所在的宿舍楼号。查询语句定义,如图8所示:USEDMSSELECTstudent.stu_name,hou_idFROMstudent,dormWHEREstudent.dor_idIN(SELECTdor_idFROMdormWheredor_id=’01%’)4.数据库创建数据库创建参数如表所示参数参数值数据库名DMS逻辑数据文件名DMS_dat数据物理文件名C:\DMS_dat.mdf数据文件的初始大小5MB数据文件的最大大小20MB数据文件增长帐度15%事务日志逻辑文件名DMS_log事务日志物理文件名C:\DMS_log.ldf日志文件初始大小3MB日志文件增长幅度5MB

1 / 18
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功