1、每学期注册登记,以及费用缴纳等;4、来访:人员来访登记及结束访问登记等;5、查询功能;6、账户功能。根据上述功能分析,可以设计出该系统的体系结构图:系统流程图如下: 重试 否 失败 失败公寓楼管理信息 学生信息管理 缴费管理 来访登记管理管理自己的用户信息管理自己的用户信息管理普通用户的用户信息成功 用户管理模块 学生公寓管理模块 3、数据库系统设计3.1概念结构设计根据需求分析抽象出信息结构,可得出系统的E-R图。学生系统的E-R图如下所示:公寓系统的E-R图如下所示:寝室系统的E-R图如下所示:缴费信息的E-R图如下所示:来访信息的E-R图如下所示:操作员信息的E-R图如下所示:综上进行优
2、化后,得到的最终总E-R图如下:3.2逻辑结构设计(1) 将图3.7总体概念结构E-R图转化成关系模型。关系模型:学生(学号,id,姓名,性别,出生日期,专业,班级,联系方式,公寓号,寝室号)公寓(公寓号,id,楼层数,房间数,启用时间)寝室(寝室号,公寓号,id,可住人数,住宿费用,电话)交费(id,公寓号,寝室号,交费时间,交费类型,金额)来访(id,来访人姓名,人数,被访者姓名,所属关系,来访时间,结束时间,事由)操作员(操作员id,操作员姓名,密码,权限)(2)数据模型的优化将转化的关系模式进行优化,最终达到BCNF。1、确定数据依赖学号id ,学号姓名,学号性别 ,学号出生日期学号专
3、业,学号班级,学号联系方式,学号公寓号学号寝室号(均为完全函数依赖)公寓号id,公寓号楼层数,公寓号房间数公寓号启用时间(均为完全函数依赖)由于不同的公寓楼会产生相同的寝室号,所以仅用寝室号无法单独确定某一特定的寝室,但限定在公寓楼内的寝室号却是唯一的,故此处选用公寓好和寝室号共同用作主键。(寝室号,公寓号) id,(寝室号,公寓号)可住人数,(寝室号,公寓号)住宿费用,(寝室号,公寓号)电话(均为完全函数依赖)交费(id,公寓号,寝室号,交费时间,交费类型,金额)id 公寓号,id寝室号,id交费时间id交费类型,id金额(均为完全函数依赖)id来访人姓名,id人数,id被访者姓名,id所属
4、关系id来访时间, id结束时间,id事由(均为完全函数依赖)操作员id操作员姓名,操作员id密码,操作员id权限(均为完全函数依赖)3、对各关系模式间数据依赖进行极小化处理,消除冗余由分析可得,数据关系中已不存在数据冗余:学生关系中由学号决定公寓号和寝室号;公寓关系中公寓号作为主键;寝室关系中,尽管寝室限制在了公寓中,但此处的寝室实体指代的是所有学生公寓中的寝室,故单独一个寝室号无法确定特定的某一寝室,而选用寝室号和公寓号两者共同作为主键来确定寝室;缴费关系中,采用记录编号作为主键,此外也可采用寝室号和公寓号共同作为主键,理由同上。3、消除传递依赖由以上分析可知各关系中的函数依赖都是完全函数
5、依赖,而且没有传递函数依赖,所以此关系模型满足BCNF,尽管模型可以继续优化,但在实际中此模型已经满足要求。3.3 物理结构设计学生信息表结构编号字符名称数据类型长度说明1idint4记录编号,不允许空2学号nvarchar30学生学号,主键3姓名20允许空性别char不允许空5出生日期smalldatetime6专业7班级8联系方式9公寓号10寝室号11备注50公寓信息表结构 编号 字符名称 数据类型 长度 说明公寓楼编号,主键楼层数房间数启用时间寝室信息表结构字段名称记录编号,不空主键可住人数住宿费用float 5电话交费信息表结构编号,主键交费时间交费类型金额来访信息表结构记录编号,主键
6、来访人姓名人数被访者姓名所属关系来访时间结束时间事由值班人操作员信息表结构操作员id操作员姓名密码权限4、数据库实现4.1创建学生信息表create table Student ( id int not null, Sno nvarchar(30) primary key, Sname nvarchar(20), Ssex char(2) not null, Sbirth smalldatetime, Sdept nvarchar(20), Sclass nvarchar(20), Sphone nvarchar(20), Sbuild nvarchar(10), Sroom nvarchar
7、(10), Sother nvarchar(50), foreign key(Sbuild) references Building(Sbuild), FOREIGN KEY(Sroom,Sbuild) REFERENCES Dorm(Sroom,Sbuild),)4.2创建公寓信息表create table Building ( id int not null, Sbuild nvarchar(10) primary key, floornum int, roomnum int, usetime smalldatetime, Bother nvarchar(50), ) 4.3创建寝室信息表
8、create table Dorm Sroom nvarchar(10), Dnum int, Dfee float(8), Dphone nvarchar(10), Sbuild nvarchar(10), Dother nvarchar(50), primary key(Sroom,Sbuild), )4.4创建交费信息表create table Pay ( id int primary key, paytime smalldatetime, paytype nvarchar(10), Pfee float(8), Pother nvarchar(50), foreign key(Sroo
9、m,Sbuild) references Dorm(Sroom,Sbuild),4.5创建来访信息表create table Visit Vname nvarchar(10), Vnum int, Vnamed nvarchar(10), relat nvarchar(10), Vtime smalldatetime, Vend smalldatetime, reason nvarchar(50), watch nvarchar(10), 4.6创建操作员信息表create table Operator ( id int primary key, Oid nvarchar(10), Oname
10、 nvarchar(10), Opass nvarchar(10), Olimit char(6), Oother nvarchar(50),4.7关系图如下4.8插入数据-插入公寓楼insert into Buildingvalues(0001,01051002000-1-1,无0002022001-1-1无000303061502002-1-10004042005-1-100052007-1-1select * from Building -插入寝室信息insert into Dorm1-10141000452165352-101452165344525653545816535645258
11、735000641256535select * from Dorm-插入学生信息insert into Student20160001王一男1994-1-2科甲一班1111111120160002王二1994-10-2二班2222222220160003王三1995-1-2科乙333333320160004王四1994-1-12科丙三班4444444420160005王五女1994-5-25555555520160006王六1994-11-266666666000720160007王七1993-4-277777777000820160008王八1994-3-188888888000920160
12、009王九1994-2-999999999001020160010王十1994-3-500000000select * from Student -插入缴费信息insert into Pay2016-5-1水电费8670569080select * from Pay-插入来访信息insert into Visit张三1朋友2016-5-3玩刘五2同学2016-7-32016-7-5select * from Visit-插入操作员信息insert into Operator 425001班超001240select * from Operator4.9设置触发器create trigger I
13、nsert_or_Update_Dnum before insert or update on Dorm for each row as begin if (new.Sbuild=) and (new.Dnum4) then new.Dnum :=4; end if; end;对寝室人数设置触发器:当人数超过4时自动改为4。同样,可对公寓楼02,03,04设置,对公寓楼05和06设置寝室人数为6。此外还可以对寝室费用的设置触发器,将寝室费用全部设置为1000元;当输入数据不等于1000时,自动改为1000。5、数据库运行6、课程设计感想通过本次课程设计,我们经历了如下过程:1、确定课设的目的,并由此确定课设的任务;2、对问题进行需求分析;3、对系统流程进行设计;4、对模块分类和系统概念结构进行设计;5、对E-R图进行设计;6、对系统逻辑结构进行设计和优化;7、对物理结构进行设计和实现;8、对数据库进行实现。在这一实践过程中,我们更加深入地理解了日前学习到的数据库理论,并在实际操作中大幅巩固了所学知识,磨练了对于给定结构的数据库进行创建、操作、建立系统程序、调试等等过程,使我们更深一层地明白了知识的巩固必须在实践中进行,让我们受益匪浅。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1