设备管理系统毕业设计(设计与代码实现)2
摘 要
数据库原理及应用课程设计是软件工程专业集中实践性环节之一,是学习完《数据库概论》课程后进行的一次全面的综合练习。其目的在于加深对数据库基础理论和基本知识的理解,掌握使用数据库进行软件设计的基本方法,提高运用数据库解决实际问题的能力,最终实现对于给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。
数据库及其应用系统是具有管理功能的计算机系统,而数据库原理及应用课程设计在开发应用程序中至关重要,合理的数据表结构不尽有利于软件的快速开发,而且有利于以后对软件的维护。 目前,我国的科技水平高速发展,计算机作为今天使用最广的现代化工具已深入到各个领域,并且正在成为未来社会——信息社会的重要支柱。在这样的大背景下,现代学校设备管理方式,资源建设等方面都发生了重大变化,这种变化表现在设备管理上,管理和服务平台发生的变化,设备管理工作不再是传统的手工操作,人工管理,而是全面实行计算机管理。
一个简单的设备管理系统包括设备的信息、使用人员信息以及借用等信息,系统在XP平台上用SQL语言来编写实现。此系统功能分为面向使用人员和面向管理员两部分,其中使用人员可以进行借用、续借、归还和查询设备等操作,管理员可以完成设备和使用人员的信
第1页/共24页
息的增加,删除和修改以及对使用人员借阅、续借、归还的确认、是否完好的确认。
关键词:SQL语言;数据库设计;设备管理器
第2页/共24页
设备管理器管理系统
目 录
1、需求分析 1.1、系统概述 1.2、需求分析过程 1.3、数据字典 2、概念模式设计 2.1、实体
2.2、E-R图和视图集成 3、逻辑模式设计
3.1、将E-R图转化为关系模式 3.2、数据模型的优化 4、检查是否满足设计需要 4.1、检查是否满足用户需要 5、其他数据库对象的考虑 5.1、建表 5.2、触发器 5.3、 6、备份及恢复 6.1、备份策略 6.2、恢复策略
第3页/共24页
1、 需求分析
1.1 系统概要
事业单位或公司里面有着大量的公共设备,这些设备就像图书馆里面的图书一样,需要一个专门的部门进行管理,而该部门需要一个专门的管理系统,才能很方便的进行各项操作。本系统可用来记录、浏览、查询学校里面公共设备的使用情况,从而方便管理员对设备的可视化管理,方便使用人员能快速的了解到自己所需设备的具体状况。
1.2、需求分析过程 (1)、流程
使用人员到设备管理处(网上也可以)查询所需设备,
看看是否有满足自己需求的设备,如果有,则查询该设备是否存在于设备管理处,是否能使用,是否完好:如果在设备储备室,则管理员在系统中记录借用者的信息,从而确认借用者的身份,并且记录借出设备的相关信息。如果设备不在储备室,则通知借用人员设备无法提供。同样使用人员可以可以到网上进行查询,预定自己所需要的设备,然后到设备管理处领取设备。 (2)、功能
实现设备的查询、借出、归还、保存使用记录(包括
使用人、设备管理员、使用设备是否完好等信息)
第4页/共24页
(3)数据流图
管理员查询和管理
使用人员 管理员 借用 修改 归还 修改 管理 管理 借用 记录 归还 记录 存入 用机记录(所有) 借一,存减一 还一,存加一 设备存储 存入
使用者查询
使用者 可用设备/设备存放 查询 自己的用机记录
第5页/共24页
1.2、数据字典
使用人员字典{编号 char,姓名 char,身份证号码 nchar 20,性别 char,所属部门 nchar
20,职位char} 属性 编号 姓名 性别 职位 所属部门 身份证号码 类型 char char char char nchar nchar 长度 10 10 2 10 20 20 备注 使用人员学校里面的编号 使用人员的姓名 使用人员的性别 使用人员的职位 使用人员所属部门 值班表{管理人员编号 char,姓名 char,值班时间 datetime})
属性 管理人员编号 姓名 值班时间 类型 char char datetime 长度 10 10 8 备注 一个时间段 损耗费用{使用者编号 char,设备编号 char,使用者姓名char,设备名称 char,设备价格money,结算时间 datetime,原因 nvchar 50} 属性 使用者编号 设备编号 使用者姓名 设备名称 设备价格 结算时间 原因 类型 char nhar char nhar money datetime nvchar 长度 10 20 10 20 8 10 50 备注 必须说明原因 出借{出借存档号 nchar 20,设备编号 char,设备名称 char,使用者编号 char,使用者姓
名 char,使用者编号 nchar 20,管理员编号 char,管理员姓名 char,出借时间 datetime} 属性 出借存档号 设备编号 设备名称 使用者编号 使用者姓名 使用所属部门 管理员编号 管理员姓名 出借时间 类型 nchar nchar char char char nchar Char Char datetime 长度 20 20 10 10 10 20 10 10 10 备注 第6页/共24页
归还{归还存档号 nchar 20,设备编号 char,设备名称 char,归还时间 datetime,使用者
编号 char,使用者姓名 char,管理员编号 char,管理员姓名 char} 属性 归还存档号 设备编号 设备名称 归还时间 使用者编号 使用者姓名 管理员编号 管理员姓名 类型 nchar nhar char datetime nchar char nhar char 长度 20 20 10 10 20 10 20 10 备注 管理人员{管理员编号 char,姓名 char,性别 char,身份证号 nchar 20,年龄 int,密
码 char} 属性 管理员编号 姓名 性别 身份证号 年龄 密码 类型 char char char Nchar char nchar 长度 10 10 2 20 10 20 备注 设备使用记录{记录存档编号 nchar 20,使用者编号 char,使用者姓名 char,出借经
手人编号 char,出借经手人姓名 char,归还经手人编号 char,归还经手人姓名 char,出借时间 datetime,归还时间 datetime,设备编号 char,设备名称 char} 属性 记录存档编号 使用者编号 使用者姓名 出借经手人 出借经手人编号 出借经手人姓名 归还经手人编号 归还经手人姓名 出借时间 归还时间 设备编号 设备名称 类型 nchar char char char nchar char nchar Char Datetime Datetime Nchar char 长度 20 10 10 10 20 10 20 10 10 10 20 10 备注
第7页/共24页
设备{设备编号 char,名称 char,型号 char,价值 money,状态 char}
属性 设备编号 型号 价值 状态 类型 nhar nchar money char 长度 20 20 20 10 备注 表情设备是否完好
设备存储{设备存放室 int,设备编号 char,设备状态char}
属性 设备存放室名称 设备存放室编号 设备状态 类型 char Nchar nchar 长度 10 20 20 备注 标明
2、 概念模式设计
2.1、实体
使用人员、出借、归还、损耗、设备、设备存放、管理人员、
设备使用记录、值班表
所有实体具体如下:
1. 使用人员{编号,姓名 ,身份证号码,性别,所属部门,职位}
编号 姓名 职位 使用人员 身份证号码 性别
2.值班表{管理人员编号 ,姓名,值班时间}
第8页/共24页
所属部门
值班表 管理人员姓名 值班时间 管理人员编号
3. 出借{设备编号,设备名称,使用者编号,使用者姓名 ,使用者所属部门编号,管理员编号,管理员姓名,出借时间}
使用者姓名 使用者编号 出借 管理员编号 管理员姓名 设备编号 使用者所属部门 出借时间 设备名称
4.归还{设备编号,设备名称,归还时间,使用者编号,使用者姓名 ,管理员编号,管理员姓名}
使用者姓名 使用者编号 归还 管理员编号 管理员姓名 设备编号 使用者所属部门 归还时间 设备名称
5.管理人员{管理员编号 ,姓名 ,性别 ,身份证号,年龄,密码}
第9页/共24页
密码 管理人员 年龄 管理员编号 性别 姓名 身份证号
6. 设备{设备编号 ,名称 ,型号 ,价值 ,状态 }
设备编号 设备 状态 名称 价值 型号
7. 设备使用记录{记录存档编号,使用者编号,使用者姓名,出借经手人编号,出借经手人姓名,归还经手人编号,归还经手人姓名,出借时间,归还时间,设备编号,设备名称}
使用人员编号 使用人员姓名 出借经手人编号 存档记录编号 归还经手人编号 归还经手人姓名 出借时间 归还时间 设备使用记录 出借经手人姓名 设备名称 设备编号 第10页/共24页
8. 损耗费用{使用者编号,设备编号,使用者姓名,设备名称,金额,结算时间,原因}
使用者编号 损耗费用 结算时间 使用者姓名 金额 设备名称 原因 设备编号
9.设备存放室{设备编号 ,设备名称 ,设备状态 }
设备名称
设备状态
设备存放 设备编号 2.2、E-R图与视图集成
所有实体模式都设计好了后,接下来就是把它们综合成单一的全局概念结构。全局概念结构不仅要支持所有实体模式,而且必须合理地表示一个完整、一致的数据库概念结构。 1)确定公共实体类型
为了给多个实体模式的合并提供开始合并的基础,首先要确定各局部结构中的公共实体类型。在这一步中我们仅根据实体类型名和键来认定公共实体类型。一般把同名实体类型作为公共实体类型的一类候选,把具有相同键的实体类型作为公共实体类型的另一类候选。
2)将实体通过键码连接起来构成局部E-R图
3)消除冲突
冲突分为三类:属性冲突、结构冲突、命名冲突。
设计全局ER模式的目的不在于把若干局部ER模式形式上合并为一个ER模式,而在于消除冲突,使之成为能够被所有用户共同理解和接受的同一的概念模
第11页/共24页
型。
4)全局ER模式的优化
在得到全局ER模式后,为了提高数据库系统的效率,还应进一步依据处理需求对ER模式进行优化。一个好的全局ER模式,除能准确、全面地反映用户功能需求外,还应满足下列条件:实体类型的个数要尽可能的少;实体类型所含属性个数尽可能少;实体类型间联系无冗余。综上所述,“设备管理器”的全局ER模式如下图所示。
损耗费用 归还 使用人员 管理人员
值班表 设备使用记录 值班 记录 出借 查询 管理 设备 存放 设备存放 系统全局E-R图(A-4)
3、逻辑模式设计
3.1将E-R图转化为关系模式
由于概念设计的结果是ER图,DBMS一般采用关系模型,因此数据库的逻辑设计过程就是把ER图转化为关系模式的过程。由于关系模型所具有的优点,逻辑设计可以充分运用关系数据库规范化理论,使设计过程形式化地进行。设计结果是一组关系模式的定义。
将图A-4总体概念结构E-R图转化成关系模型。
1. 使用人员{编号,姓名 ,身份证号码,性别,所属部门,职位} 2.值班表{管理人员编号 ,姓名,值班时间}
3. 出借{出借存档号,设备编号,设备名称,使用者编号,使用者姓名 ,使用者所属部门编号,管理员编号,管理员姓名,出借时间}
4.归还{归还存档号 20,设备编号,设备名称,归还时间,使用者编号,使用第12页/共24页
者姓名 ,管理员编号,管理员姓名}
5.管理人员{管理员编号 ,姓名 ,性别 ,身份证号,年龄,密码} 6. 设备{设备编号 ,名称 ,型号 ,价值 ,状态 }
7. 设备使用记录{记录存档编号,使用者编号,使用者姓名,出借经手人编号,出借经手人姓名,归还经手人编号,归还经手人姓名,出借时间,归还时间,设备编号,设备名称}
8. 损耗费用{使用者编号,设备编号,使用者姓名,设备名称,金额,结算时间,原因}
9.设备存放{设备编号 ,设备名称 ,设备状态 }
3.2数据模型的优化
将转化的关系模式进行优化,最终达到第三范式。
优化后的关系模式如下:
1. 使用人员{编号,姓名 ,身份证号码,性别,所属部门,职位} 2.值班表{管理人员编号 ,姓名,值班时间}
3. 出借{设备编号,设备名称,使用者编号,使用者姓名 ,使用者所属部门编号,管理员编号,管理员姓名,出借时间}
4.归还{设备编号,设备名称,归还时间,使用者编号,使用者姓名 ,管理员编号,管理员姓名}
5.管理人员{管理员编号 ,姓名 ,性别 ,身份证号,年龄,密码} 6. 设备{设备编号 ,名称 ,型号 ,价值 ,状态 }
7. 设备使用记录{记录存档编号,使用者编号,使用者姓名,出借经手人编号,出借经手人姓名,归还经手人编号,归还经手人姓名,出借时间,归还时间,设备编号,设备名称}
8. 损耗费用{使用者编号,设备编号,使用者姓名,设备名称,金额,结算时间,原因}
9.设备存放{设备编号 ,设备名称 ,设备状态 }
4检验是否满足用户需求
4.1调查用户需求
①使用者需求
(1)借用功能:能够方便的借用设备、续借设备、归还设备 (2)查询功能:
1)按设备编号查找设备 2)按设备名称名称查找设备
3)能够使用者能按照自己的编号查询自己的状态信息 4)能查询设备的状态
②设备管理需求
(1)使用者注册功能:能够对新的使用者进行登记,或注销使用者的信
第13页/共24页
息。(既是录入设备使用者的信息) (2)设备录入功能:能够将新到的设备信息输入到系统的设备信息库中。 (3)统计功能:
1)按设备编号统计设备数量 2)按设备名称统计数量
3)能查询、删除、修改设备的状态和使用人员的信息
5其它数据库对象(物理数据库设计)的考虑
5.1建表
建表代码如下:
CREATE TABLE [dbo].[使用人员] (
[编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[身份证号码] [nchar] (20) COLLATE Chinese_PRC_CI_AS NULL , [性别] [char] (2) COLLATE Chinese_PRC_CI_AS NULL ,
[所属部门] [nchar] (20) COLLATE Chinese_PRC_CI_AS NULL , [职位] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[值班表] (
[管理人员编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[值班时间] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[出借] (
[使用者编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [使用者姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[使用者所属部门] [nchar] (20) COLLATE Chinese_PRC_CI_AS NULL , [管理员编号] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [管理员姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [出借时间] [datetime] NULL ,
[设备编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [设备名称] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[归还] (
[归还时间] [datetime] NOT NULL ,
[使用者编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
第14页/共24页
[管理员编号] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [使用者姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [管理员姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [使用者所属部门] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [设备编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [设备名称] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[损耗费用] (
[使用者编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [使用者姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [设备编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [设备名称] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [结算时间] [datetime] NULL , [金额] [money] NULL ,
[原因] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[管理人员] (
[管理员编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [性别] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[身份证号] [nchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL , [年龄] [int] NULL ,
[密码] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[设备] (
[设备编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [名称] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [型号] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [价值] [money] NULL ,
[状态] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[设备使用记录] (
[使用人员编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [出借经手人编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [归还经手人编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [出借时间] [datetime] NULL ,
第15页/共24页
[归还时间] [datetime] NULL ,
[设备编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [出借经手人姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [归还经手人姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [使用人员姓名] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [设备名称] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[记录存档编号] [nchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ) ON [PRIMARY] GO
CREATE TABLE [dbo].[设备存放] (
[设备编号] [char] (10) COLLATE Chinese_PRC_CI_AS NOT NULL , [设备名称] [char] (10) COLLATE Chinese_PRC_CI_AS NULL , [设备状态] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ) ON [PRIMARY] GO
5.2约束条件以及外键约束: 约束:
ALTER TABLE [dbo].[使用人员] ADD
CONSTRAINT [PK_使用人员] PRIMARY KEY CLUSTERED (
[编号]
) ON [PRIMARY] ,
CONSTRAINT [CK_使用人员] CHECK ([性别] = '女' or [性别] = '男') GO
ALTER TABLE [dbo].[值班表] ADD
CONSTRAINT [PK_值班表] PRIMARY KEY CLUSTERED (
[值班时间] ) ON [PRIMARY] GO
ALTER TABLE [dbo].[出借] ADD
CONSTRAINT [PK_出借] PRIMARY KEY CLUSTERED (
[使用者编号], [设备编号] ) ON [PRIMARY] GO
第16页/共24页
ALTER TABLE [dbo].[归还] ADD
CONSTRAINT [PK_归还] PRIMARY KEY CLUSTERED (
[归还时间], [使用者编号], [设备编号] ) ON [PRIMARY] GO
ALTER TABLE [dbo].[损耗费用] ADD
CONSTRAINT [PK_损耗费用] PRIMARY KEY CLUSTERED (
[使用者编号], [设备编号] ) ON [PRIMARY] GO
ALTER TABLE [dbo].[管理人员] ADD
CONSTRAINT [PK_管理人员] PRIMARY KEY CLUSTERED (
[管理员编号] ) ON [PRIMARY] ,
CONSTRAINT [CK_管理人员] CHECK ([年龄] > 0),
CONSTRAINT [CK_管理人员_1] CHECK ([性别] = '女' or [性别] = '男') GO
ALTER TABLE [dbo].[设备] ADD
CONSTRAINT [PK_设备] PRIMARY KEY CLUSTERED (
[设备编号] ) ON [PRIMARY] ,
CONSTRAINT [CK_设备] CHECK ([价值] > 0),
CONSTRAINT [CK_设备_1] CHECK ([状态] = '不可用' or [状态] = '可用') GO
ALTER TABLE [dbo].[设备使用记录] ADD
CONSTRAINT [PK_设备使用记录] PRIMARY KEY CLUSTERED (
[记录存档编号] ) ON [PRIMARY] GO
ALTER TABLE [dbo].[设备存放] ADD
第17页/共24页
CONSTRAINT [PK_设备存放] PRIMARY KEY CLUSTERED (
[设备编号] ) ON [PRIMARY] ,
CONSTRAINT [CK_设备存放] CHECK ([设备状态] = '不可用' or [设备状态] = '可用') GO
外键约束:
ALTER TABLE [dbo].[值班表] ADD
CONSTRAINT [FK_值班表_管理人员1] FOREIGN KEY (
[管理人员编号]
) REFERENCES [dbo].[管理人员] ( [管理员编号] ) GO
ALTER TABLE [dbo].[出借] ADD
CONSTRAINT [FK_出借_管理人员1] FOREIGN KEY (
[管理员编号]
) REFERENCES [dbo].[管理人员] ( [管理员编号] ) GO
ALTER TABLE [dbo].[归还] ADD
CONSTRAINT [FK_归还_管理人员] FOREIGN KEY (
[管理员编号]
) REFERENCES [dbo].[管理人员] ( [管理员编号] ),
CONSTRAINT [FK_归还_使用人员] FOREIGN KEY (
[使用者编号]
) REFERENCES [dbo].[使用人员] ( [编号] ) GO
ALTER TABLE [dbo].[损耗费用] ADD
CONSTRAINT [FK_损耗费用_设备] FOREIGN KEY
第18页/共24页
(
[设备编号]
) REFERENCES [dbo].[设备] ( [设备编号] ),
CONSTRAINT [FK_损耗费用_使用人员] FOREIGN KEY (
[使用者编号]
) REFERENCES [dbo].[使用人员] ( [编号] ) GO
ALTER TABLE [dbo].[设备使用记录] ADD
CONSTRAINT [FK_设备使用记录_管理人员] FOREIGN KEY (
[出借经手人编号]
) REFERENCES [dbo].[管理人员] ( [管理员编号] ),
CONSTRAINT [FK_设备使用记录_管理人员1] FOREIGN KEY (
[归还经手人编号]
) REFERENCES [dbo].[管理人员] ( [管理员编号] ),
CONSTRAINT [FK_设备使用记录_设备1] FOREIGN KEY (
[设备编号]
) REFERENCES [dbo].[设备] ( [设备编号] ),
CONSTRAINT [FK_设备使用记录_使用人员1] FOREIGN KEY (
[使用人员编号]
) REFERENCES [dbo].[使用人员] ( [编号] ) GO
5.3建立视图如下:
SET QUOTED_IDENTIFIER ON GO
第19页/共24页
SET ANSI_NULLS ON GO
CREATE VIEW dbo.VIEW1 AS
SELECT dbo.设备使用记录.使用人员姓名 AS 姓名, dbo.设备使用记录.设备编号,
dbo.设备使用记录.出借时间, dbo.设备使用记录.归还时间 FROM dbo.设备使用记录 INNER JOIN
dbo.设备使用记录 [设备使用记录_1] ON
dbo.设备使用记录.记录存档编号 = [设备使用记录_1].记录存档编号 INNER JOIN
dbo.使用人员 ON dbo.设备使用记录.使用人员编号 = dbo.使用人员.编号 AND
[设备使用记录_1].使用人员编号 = dbo.使用人员.编号 GO
SET QUOTED_IDENTIFIER OFF GO
SET ANSI_NULLS ON GO
SET QUOTED_IDENTIFIER ON GO
SET ANSI_NULLS ON GO
CREATE VIEW dbo.VIEW2 AS
SELECT dbo.出借.使用者编号, dbo.出借.设备编号, dbo.出借.出借时间, dbo.管理人员.姓名 FROM dbo.出借 INNER JOIN
dbo.管理人员 ON dbo.出借.管理员编号 = dbo.管理人员.管理员编号 INNER JOIN
dbo.归还 ON dbo.管理人员.管理员编号 = dbo.归还.管理员编号 INNER JOIN
dbo.设备 ON dbo.出借.设备编号 = dbo.设备.设备编号 INNER JOIN dbo.设备存放 ON dbo.出借.设备编号 = dbo.设备存放.设备编号 INNER JOIN
dbo.设备使用记录 ON
dbo.管理人员.管理员编号 = dbo.设备使用记录.出借经手人编号 AND dbo.管理人员.管理员编号 = dbo.设备使用记录.归还经手人编号 AND dbo.设备.设备编号 = dbo.设备使用记录.设备编号 INNER JOIN dbo.使用人员 ON dbo.归还.使用者编号 = dbo.使用人员.编号 AND
第20页/共24页
dbo.设备使用记录.使用人员编号 = dbo.使用人员.编号 INNER JOIN dbo.损耗费用 ON dbo.设备.设备编号 = dbo.损耗费用.设备编号 AND dbo.使用人员.编号 = dbo.损耗费用.使用者编号 INNER JOIN
dbo.值班表 ON dbo.管理人员.管理员编号 = dbo.值班表.管理人员编号 GO
SET QUOTED_IDENTIFIER OFF GO
SET ANSI_NULLS ON GO
5.4建立存储过程如下
存储过程一:设备外借时,设备存放自动减少 SET QUOTED_IDENTIFIER ON GO
SET ANSI_NULLS OFF GO
CREATE PROCEDURE LendOut @userID char(10),@MachineID char(10),@AdmID char(10) AS
if @MachineID in (select 设备编号 from 设备存放 where 设备状态='可用') begin
declare @UserName char(10),@Dept nchar(20),@AdmName char(10), @MachineName char(10)
set @UserName=(select 姓名 from 使用人员 where 编号=@userID) set @Dept=(select 所属部门 from 使用人员 where 编号=@userID ) set @AdmName=(select 姓名 from 管理人员 where 管理员编号=@AdmID )
set @MachineName=(select 名称 from 设备 where 设备编号=@MachineID)
insert into 出借(使用者编号,设备编号,使用者姓名,使用者所属部门编号,管理员编号,
管理员姓名,出借时间,设备名称)
values(@userID,@MachineID,@UserName,@Dept,@AdmID,@AdmName, CURRENT_TIMESTAMP,@MachineName)
delete from 设备存放 where 设备编号=@MachineID
end else
第21页/共24页
begin
print'存放室不存在该设备!' end GO
SET QUOTED_IDENTIFIER OFF GO
SET ANSI_NULLS ON GO
存储过程二:设备归还时,设备存储增加,设备外借减少 SET QUOTED_IDENTIFIER ON GO
SET ANSI_NULLS OFF GO
CREATE PROCEDURE Return_Machine @userID char(10),@MachineID char(10),@AdmID char(10) AS
if @MachineID in (select 设备编号 from 出借 ) begin
declare @UserName char(10),@Dept nchar(20),@AdmName char(10),@OAdmID char(10),@OAdmName char(10),
@MachineName char(10),@OTime datetime
set @UserName=(select 姓名 from 使用人员 where 编号=@userID) set @Dept=(select 所属部门 from 使用人员 where 编号=@userID ) set @AdmName=(select 姓名 from 管理人员 where 管理员编号=@AdmID )
set @MachineName=(select 名称 from 设备 where 设备编号=@MachineID)
set @OTime=(select 出借时间 from 出借 where 设备编号=@MachineID) set @OAdmID=(select 管理员编号 from 出借 where 设备编号=@MachineID)
set @OAdmName=(select 管理员姓名 from 出借 where 设备编号=@MachineID)
insert into 设备使用记录(使用人员编号,出借经手人编号,归还经手人编号,出借时间,归还时间,设备编号,
出借经手人姓名,归还经手人姓名,使用人员姓名,设备名称,记录存档编号)
values(@userID,@OAdmID,@AdmID,@OTime,CURRENT_TIMESTAMP,@MachineID,@OAdmName,
@AdmName,@UserName,@MachineName,current_timestamp) delete from 出借 where 设备编号=@MachineID
insert into 归还(使用者编号,设备编号,使用者姓名,使用者所属部门,管
第22页/共24页
理员编号,
管理员姓名,归还时间,设备名称)
values(@userID,@MachineID,@UserName,@Dept,@AdmID,@AdmName, CURRENT_TIMESTAMP,@MachineName)
insert into 设备存放(设备存放室编号,设备编号,设备名称,设备状态) values(10,@MachineID,@MachineName,'可用') print'finished' end else
print'没有此设备外借记录' GO
SET QUOTED_IDENTIFIER OFF GO
SET ANSI_NULLS ON GO
5.5触发器的建立
新购设备时,自动放入设备存放 SET QUOTED_IDENTIFIER ON GO
SET ANSI_NULLS ON GO
CREATE TRIGGER NewMachine ON [dbo].[设备] FOR INSERT, UPDATE AS
DECLARE @NewMachineID char(10),@NewMachineName char(10)
SELECT @newmachineID = 设备编号 FROM INSERTED
SET @NewMachineName=(SELECT 名称 FROM INSERTED WHERE 设备编号=@newmachineID)
INSERT INTO 设备存放(设备编号,设备名称,设备状态) VALUES(@newmachineID,@NewMachineName,'可用') GO
SET QUOTED_IDENTIFIER OFF GO
SET ANSI_NULLS ON GO
第23页/共24页
6备份及恢复策略
6.1备份策略
1)每天进行一次动态增量转储 2)每星期进行一次动态海量转储 3)每月进行一次静态海量转储
6.2恢复策略
数据库中可能发生各种各样的故障,大致可以分为以下几类: 1.事物内部故障。
遇到次种故障的恢复策略主要是:
(1) 反向扫描日志文件,查找该事物的更新操作。 (2) 对该事物的更新操作执行逆操作。 (3) 继续反向扫描日志文件,查找该事物的其他更新操作,并做同样处理。 (4) 如此处理下去,直至读到此事物的开始标记,事物故障恢复就完成了。 2.系统故障。
遇到次种故障的恢复策略主要是:
(1) 正向扫描日志文件,找出在故障发生前已经提交的事务,将其事务标
识记入重做队列。同时找出故障发生时尚未完成的事务,将其事务标识记入撤消队列。
(2) 对撤消队列的各个事务进行撤消处理。 (3) 对重做队列的各个事务进行重做处理。 3.介质故障。
遇到次种故障的恢复策略主要是:
(1) 装入最新的数据库后备副本,使数据库恢复到最近一次转储的一致性
状态。
(2) 装入相应的日志文件副本,重做已完成的事物。
七、小结
设备管理器是一个能够广泛被应用的数据库,在此我们理解为机器被使用的
记录,机器可以当作设备的范畴。根据这一基本理解,我们设计出了这一设备管理器。这个模型可以移植到各种各样的管理部门,这个系统用于记录设备的什么时间段被什么人使用。这有利于设备的管理,可以追查机器损耗中的相关责任人。该系统可以延伸至各种东西的管理,比如图书外籍记录,比如电脑使用记录,比如汽车租赁等等。
心得:在完成数据库的过程中,我们遇到了不少困难,比如对触发器的设计、对存储过程的设计等,我们都查阅了大量资料才理解和掌握。虽不敢说精通,但还是达到了能够熟练使用。这使得我对书本上的知识理解更加深刻,更加熟练的运用。完成该数据库系统之后,我看到了如想要做出一个优秀的数据库,我们还有很长的路要走。现在总体上看我们的数据库,还有许多地方有待改进和优化。
第24页/共24页
因篇幅问题不能全部显示,请点此查看更多更全内容