实例2教室管理系统数据库设计课案doc文档格式.docx
《实例2教室管理系统数据库设计课案doc文档格式.docx》由会员分享,可在线阅读,更多相关《实例2教室管理系统数据库设计课案doc文档格式.docx(31页珍藏版)》请在冰豆网上搜索。
![实例2教室管理系统数据库设计课案doc文档格式.docx](https://file1.bdocx.com/fileroot1/2022-12/7/7aa897f2-381f-474d-ac70-16c24b559889/7aa897f2-381f-474d-ac70-16c24b5598891.gif)
数据项:
表1教室信息数据项
数据项名
数据项含义说明
数据类型
长度
取值范围
取值含义
于其他数据项的逻辑关系
数据项之间的联系
Spart
校区
char
10
Rname
教室名称
Position
所在位置
20
Type
教室类型
Room
容量
int
4
Cno
课程号
Cname
课程名称
Ctime
课程学时
Weed
周次
Day
星期
Node
节次
Mno
系号
Mname
系名
cg
班级
Number
人数
表2课程信息数据项
表3职工信息数据项
Pno
职工编号
等于维修工编号
Pname
姓名
等于维修工姓名
Sex
性别
Age
年龄
Jname
职业名称
Addr
住址
40
Tel
联系电话
Week
Ontime
上班时间
Uptime
下班时间
表4损坏信息数据项
Dlevel
损坏程度
Mend
修复难易
维修工编号
维修工姓名
Repair
是否修复
1.1.4数据结构
表5数据结构表
数据结构名
含义说明
组成
Class(T1)
教室信息
校区名,教室名称,所在位置,教室类型,容量
Course(T2)
课程信息
课程号,课程名称,周次,星期,节次,课程学时,教室名称,系号,系名,班级,人数
Worker(D1)
职工信息
职工编号,姓名,职业名称,性别,年龄,住址,联系电话
Duty(D2)
值班
职工编号,姓名,职业名称,星期,上班时间,下班时间
State(D3)
值班情况记录
职工编号,姓名,职业名称,星期,周次
Media(P1)
多媒体设备损坏记录
教室名称,损坏程度,修复难易,维修工编号,维修工姓名,是否修复
Routine(P2)
常规设备损坏记录
教室名称,损坏程度,维修工编号,维修工姓名,是否修复
1.1.5处理逻辑描述
(1)教室查询子系统
输入:
查询条件
输出:
查询结果
处理:
按照条件,在相应的表中,查找相应的数据,然后输出
(1)卫生管理子系统
查询、插入或修改的目标
结果:
输出查询的结果,或者插入成功,或者修改成功
在相应的表中完成相应的操作。
(3)设备管理子系统
插入或修改或查询的条件或目标
输出查询结果或插入成功或修改成功
在相关表中完成相关的操作。
1.2概念设计
1.2.1引言
概念结构的实际是整个数据库设计的关键,这个阶段主要的目标是通过对用户需求进行综合、归纳与抽象,形成一个独立于DBMS的概念模型(E-R图)。
它的主要特点是:
1.能真实、充分地反映现实世界,包括事物与事物之间的联系,能满足用户对数据的处理要求,是对现实世界的一个真实模型;
2.易于理解,因此可以用它和不熟悉计算机的用户交换意见;
3.易于更改,当应用环境和应用要求改变时,容易对概念模型修改和扩充;
4.易于向关系、网状、层次等各种数据模型转换。
1.2.2概念模型设计
(1)设计E-R图
详见附录2
1.2.3实体的属性、联系的属性
主码表示如:
教室名称;
外码表示如:
普通属性如:
教室名称。
教室(校区名,教室名称,所在位置,教室类型,容量);
课程(课程号,教室名称,课程名称,周次,星期,节次,课程学时,系名,班级,人数);
职工(职工编号,姓名,职业名称,性别,年龄,住址,联系电话);
多媒体设备损坏(教室名称,维修工编号,损坏程度,修复难易,维修工姓名,是否修复,备注);
常规设备损坏(教室名称,维修工编号,损坏程度,维修工姓名,是否修复,备注);
值班信息(职工编号,姓名,职业名称,星期,上班时间,下班时间);
值班记录(职工编号,姓名,职业名称,星期,周次);
1.3逻辑设计
1.3.1引言
这个阶段的任务就是把概念结构设计阶段设计好的基本E-R图转换为与DBMS所支持的数据模型相符合的逻辑结构。
在这个阶段里,该系统的目标就是把基本的E-R图转换成关系数据模型。
1.3.2数据组织
(1)将E-R图转换成关系模型:
E-R图转换成关系模型应该遵循以下原则:
1.一个实体型转换为一个关系模式。
2.一个1:
1联系可以转换为一个独立的关系模式,也可以与任意一端对应的关系模式合并。
3.把一个1:
n联系转换为一个独立的关系模式。
4.一个m:
n联系转换为一个关系模式。
5.三个或三个以上实体间的一个多元联系可以转换为一个关系模式。
6.具有相同码的关系模式可合并。
(2)转换的结果:
课程(课程号,教室名称,课程名称,教师编号,周次,星期,节次,课程学时,系名,班级,人数);
该模式没有插入异常,删除异常等操作异常现象,已经达到3NF。
(3)设计用户子模式:
鉴于安全问题,每一个表都应有相应的视图。
建立相关的视图如下:
教室视图:
Class1(校区,教室名称,地点,教室类型,容量);
课程与教室视图:
Course1(校区,教室名称,教室类型,课程名称,周次,星期,节次,容量);
这两个视图包含了允许学生和员工等用户查询的属性,不允许修改,插入和删除。
为职工做视图:
值日视图:
Duty1(职工编号,职工姓名,职业名称,上班时间,下班时间);
清洁工值班记录:
State1(职工编号,职工姓名,职业名称,日期,情况);
员工值班记录:
State2(职工编号,职工姓名,职业名称,日期,情况);
职工视图:
State3(职工编号,职工姓名,职业名称,日期,情况);
常规设备损坏纪录:
Routine1(教室名称,职工编号,职工姓名,描述,是否修复,日期,备注);
多媒体设备损坏:
Media1(教室名称,职工编号,职工姓名,描述,修复难易,是否修复,日期,备注);
职工信息:
Worker1(职工编号,姓名,职业名称,性别,年龄,住址,联系电话);
在这些视图中,值日视图允许各个职工查询,但只允许管理员(主任)进行修改,插入,删除等操作;
清洁工值班记录视图,除维修工外,其他各职工都可查询,员工还可进行修改操作,管理员(主任)可进行各种操作;
员工值班记录只允许员工查询;
常规设备损坏纪录视图允许员工和维修工进行查询,员工只对视图中的教室名称属性有修改,插入的权限,维修工对其他属性有修改权限;
在多媒体设备损坏信息视图中,允许员工和多媒体维修工进行查询,员工只对教室名称有修改和插入的权限,多媒体维修工对其他的属性有修改权限。
为方便,其中的部分权限在制作过程中要直接赋给基本表。
1.3.3数据处理
见系统的功能模块图:
1.4物理设计
1.4.1引言
数据库在物理设备上的存储与存取方法称为数据库的物理结构,它依赖于给定的计算机系统。
为一个给定的逻辑数据模型选取一个最适合应用要求的物理结构的过程,就是数据库的物理设计。
1.4.2目标与任务
对数据库进行合理的物理设计,以提高其时间和空间效率。
(1)数据存取方面
确定数据库的物理结构,在关系数据库中主要指存取方法和存储结构;
对物理结构进行评价,评价的重点是时间和空间效率。
如果评价结果满足原设计的要求,则可以进入到物理实施阶段,否则就需要重新设计或修改物理结构,有时甚至要返回逻辑设计阶段修改数据模型。
(2)功能模块
见图15所示
1.5数据库实施
1.5.1建立基本表
/*建立教室信息表*/
createtableClass
(
Spartchar(10),
Rnamechar(10)notnullunique,
Positionchar(20),
Typechar(10),
Roomint,
primarykey(Rname)
)
/*建立课程信息表*/
createtableCourse
Cnochar(10),
Cnamechar(20),
Rnamechar(10),
Cweekchar(10),
Cdaychar(10),
Nodechar(10),
Ctimeint,
Gradechar(10),
Numberint,
Sdeptchar(20)
/*建立职工信息表*/
createtableWorker
Wnochar(10)notnullunique,
Wnamechar(20),
Wsexchar(4),
Wageint,
Jnamechar(10),
Addrchar(40),
Telchar(20),
primarykey(Wno),
check(Wage>
=18andWage<
=60)
/*建立值班信息表*/
createtableDuty
Wnochar(10),
Ontimechar(20),
Uptimechar(20),
foreignkey(Wno)referencesWorker(Wno),
/*建立值班情况记录表*/
createtableState
Wdatechar(20),
statechar(20)
/*建立多媒体设备损坏记录表*/
createtableMedia
Rnamechar(10),
Describechar(20),
Dlevelchar(10),
Repairchar(4),
Mdatechar(20),
Pmarkchar(50)
/*建立常规设备损坏记录表*/
createtableRoutine
1.5.2建立视图
/*教室信息视图*/
createviewClass1(校区,教室名称,地点,教室类型,容量)
as
select*
fromClass
/*课程信息视图*/
createviewCourse1(校区,教室名称,教室类型,课程名称,周次,星期,节次,容量)
selectClass.Spart,Class.Rname,Type,Cname,Cweek,Cday,Node,Class.Room
fromClass,Course
WhereClass.Rname=Course.Rname
/*职工信息视图*/
createviewWorker1(职工编号,姓名,职业名称,性别,年龄,住址,联系电话)
fromWorker
/*值班信息视图*/
createviewDuty1(职工编号,职工姓名,职业名称,上班时间,下班时间)
fromDuty
/*清洁工值班情况记录视图*/
createviewState1(职工编号,职工姓名,职业名称,日期,情况)
fromState
whereJname='
清洁工'
/*除清洁工外其他职工值班情况视图*/
createviewState2(职工编号,职工姓名,职业名称,日期,情况)
whereJname!
='
/*总的职工值班情况视图*/
createviewState3(职工编号,职工姓名,职业名称,日期,情况)
/*常规设备损坏视图*/
createviewRoutine1(教室名称,职工编号,职工姓名,描述,是否修复,日期,备注)
fromRoutine
/*多媒体设备损坏视图*/
createviewMedia1(教室名称,职工编号,职工姓名,描述,修复难易,是否修复,日期,备注)
fromMedia
2.5.3查询与更新
/*员工课程查询*/
createProcedurejs_kc1
@C_Spartchar(10),
@C_Cweekchar(6),
@C_Cdaychar(4),
@C_Nodechar(5)
select校区,教室名称,课程名称,教室类型,容量
fromCourse1
where校区=@C_Spartand周次=@C_Cweekand星期=@C_Cday
and节次=@C_Nodeand教室类型='
多媒体教室'
orderby教室名称ASC
/*学生课程查询*/
createprocedurejs_kc2
where校区=@C_Spartand周次=@C_Cweekand星期=@C_Cdayand节次=@C_Node
/*空教室查询*/
createprocedurejs_kjs1
select校区,教室名称,教室类型,容量
fromClass1
wherenotexists
(
select*
fromCourse1
where校区=@C_Spartand周次=@C_Cweekand星期=@C_Cday
and节次=@C_Nodeand教室名称=Class1.教室名称
)
/*职工值班查询*/
createprocedurejs_zb1
@S_Wnochar(10)
select职工编号,职工姓名,职业名称,上班时间,下班时间
fromDuty1
where职工编号=@S_Wno
/*职工值班记录查询*/
createprocedurejs_zbjl1
select职工编号,职工姓名,职业名称,日期,情况
fromState3
/*员工对清洁工值班记录的插入(视图)*/
createprocedurejs_zlc1
@S_Wnochar(10),
@S_Wnamechar(20),
@S_Jnamechar(10),
@S_Wdatechar(20),
@S_statechar(20)
insertintoState1
values(@S_Wno,@S_Wname,@S_Jname,@S_Wdate,@S_state)
/*员工对清洁工值班记录的删除(视图)*/
createprocedurejs_zls1
delete
fromState1
/*主任除清洁工外的其他职工值班记录的插入(视图)*/
createprocedurejs_zlc2
insertintoState2
values(@S_Wno,@S_Wname,@S_Jname,@S_Wdate,@S_state)
/*主任除清洁工外的其他职工值班记录的删除(视图)*/
createprocedurejs_zls2
fromState2
/*主任对职工信息表的插入*/
createprocedurejs_zlc3
@W_Wnochar(10),
@W_Wnamechar(20),
@W_Wsexchar(4),
@W_Wageint,
@W_Jnamechar(10),
@W_Addrchar(40),
@W_Telchar(20)
insertintoWorker
values(@W_Wno,@W_Wname,@W_Wsex,@W_Wage,@W_Jname,@W_Addr,@W_Tel)
/*用游标完成的主任对职工信息表的修改*/
CREATEPROCEDUREjs_dmtxg1
@W_Telchar(