陕西理工大学数据库课程设计(设备管理系统)
总结
项目概述
本次课程设计旨在构建一个制造企业设备管理的数据库系统,涵盖需求分析到总结的全过程。
需求分析
系统功能需求
- 基本数据管理:存储员工信息(工号、姓名)、设备信息(编号、类别)、生产任务信息(生产线编号)及报废信息。
- 设备运行管理:支持设备状态监控(使用中/维修中/待用)及故障处理。
- 生产与调度管理:记录生产任务安排及执行情况。
用户角色与用例模型- 用户分为员工类(可执行维护处理)、部门类(可作为外部参与者)、生产任务类(可参与调度)。
- 每个角色对应特定的操作如维护处理故障或调度使用。
实体结构与属性- 实体包括员工(工号)、部门(dno)、产品(prono)、设备(devinu)、生产任务(prono)及报废记录。
E-R图到关系模式转换- 设计了全局E-R图并将其转换为具体的关系模式如depart, staff, product, 等表格。
存储过程与触发器- 创建存储过程proc_dzjy用于查询相关信息。
- 使用触发器保护设备编号不可修改性。
逻辑结构设计
设计了多个表格并定义其字段及其数据类型:- depart 表用于存储部门信息。
- staff 表记录员工基本信息及外键关联。
- product 表存储产品信息及外键关联。
- device 表保存设备详细信息及外键关联。
- 其他辅助表如dumping, maintain, 等用于支持业务逻辑。
确保所有外键正确无误并遵循M:1或1:N关系原则。
物理结构设计
使用SQL Server 2013创建数据库“生产设备”并执行各基本表的创建语句:
`sql
create table depart (dno char(10) primary key, dname char(8) not null, diper char(8) not null, tele char(13));
create table staff (jobnu char(10) primary key, jname char(8) not null, sex char(2) not null default '男', dno char(10), foreign key(dno)
文章目录
-
-
1.摘 要
-
2.需求分析
-
- 2.1系统功能需求
- 2.2系统用例模型
- 2.3系统对象模型
-
3概念结构设计
-
- 3.1抽象出系统的实体
- 3.2设计全局E-R图
-
4. 逻辑结构设计
-
- 4.1转换规则
- 4.2根据以上规则得到以下关系模式
-
5 物理结构设计
-
6.创建数据库和基本表
-
- 6.1创建数据库
- 6.2创建基本表
-
7录入数据
-
8访问数据库
-
- 8.1数据查询
- 8.2数据更新
-
9总结
-
1.摘 要
首先对需开发的制造企业设备管理系统数据库进行系统规划工作。具体包括开展需求分析工作、开展概念结构的设计采用了E-R图法、详细规划其存储架构以及制定相应的技术规范要求四个阶段的工作内容。整个过程均以SQLServer作为开发平台,并构建必要的表及功能模块。该系统具备完善的业务流程处理能力以及良好的扩展性特征,在数据管理方面表现突出。系统具有友好的人机交互界面,并且操作简便。此外还支持视图建立、存储过程编写等高级功能模块的操作权限控制机制
2.需求分析
2.1系统功能需求
基于需求调研结果的分析与评估, 该系统将对以下功能进行支撑.
(1) 基础数据管理 : 支持录入并存储设备基本信息 (包括设备类别, 价格 等项), 同时提供部门信息, 员工基本信息等项的支持.
(2) 设备的运行管理 : 系统具备对设备日常运行的全生命周期管理能力, 包括但不限于设备日常使用安排, 设备生产加工任务安排, 设备使用状态 (如使用中, 维修中, 待用, 检测中 等) 的实时监控与记录.
(3) 设备的维修与报废管理 : 该模块不仅支持故障信息的采集与分析, 能够制定完善的设备维修计划 (包括维修产品型号, 维修时间周期, 维修用料计划), 同时提供维修过程中的记录登记功能 (涉及维修人员、用料领料 及故障分析). 此外还支持对老旧损坏设 备的报废申请及处理流程.
(4) 设备日常维护管理 : 根据不同类型设 备的特点制定个性化的保养方案 (包含保养周期设置, 维护成本预算规划以及经费保障等内容).
(5) 设备调度管理 : 系统具备完善的调度管理模块, 支持设备在生产过程中的车间间移动作业以及对外租借操作; 同时能够建立并维护好调度记录制度
2.2系统用例模型
(1) 确定参与者和用例
对员工来说,主要系统用例由生产设备,维修设备,报废设备,调度设备,保养设备,查询员工(本人)信息。
(2) 建立用例图
识别了参与者和用例,并确定了它们之间的关系后,就可以构造系统的用例图。用例图是描述参与者和用例之间关系的图形。在UML中,用类似小人的符号表示参与者,用椭圆表示用例,用矩形框表示系统边界。系统用例图如图2.1所示。

(3)用例规约

2.3系统对象模型
(1)识别系统的对象和类别
(2)确定属性
(3)确定服务操作

(4)属性字典和服务说明

3概念结构设计
3.1抽象出系统的实体


3.2设计全局E-R图

4. 逻辑结构设计
4.1转换规则
将一个实体类型对应到一个关系模型中,在此过程中,实体的字段与关系的字段保持一致,并且实体的主键与关系的主键相匹配。不同类型的实体间联系可能呈现出以下几种不同的情况:
(1)一种一对一的关系可以通过创建独立的关系模式来实现管理;对于任一对端可实现的一对多关系,则可以选择将两端均可实现一对一或一对多的方式进行处理。
(2)一种一对多关系的主要方法包括创建独立的关系模式以及将单方的信息整合到另一方中;对于一对多关系中的多对一情况,则可以选择保留单一方信息并整合另一方信息的方式进行处理。
(3)对于一对多至多对一的关系,在设计数据库模型时可以选择将其转化为单一的关系模式,并通过组合双方的关键字字段来生成该关系的独特关键字字段。
4.2根据以上规则得到以下关系模式
部门信息 (部门编号字段、部门名称字段、部门负责人字段、电话号码字段)
员工信息 :(工号字段、姓名字段、性别字段、入职时间字段、联系电话字段)
设备信息 :(设备编号字段、设备名称字段、类别名称字段、租赁费用字段)
生产任务信息 :(生产线编号字段, 生产线名称字段, 关键工序列表字段, 安装地点列表字段)
报废记录 :(工号, 设备编号, 报废数量, 报废日期) 外码:工号, 设备编号
维修记录 :(工号, 设备编号, 维修问题描述, 维修所需时间周期) 外码:工号, 设备编号
调度状态记录 :(工号, 设备编号, 状态标记值, 记录更新时间) 外码:工号, 设备编号
保养计划记录 :(工号, 设备编号, 定期保养周期天数 , 维护费用金额 , 资金保障情况) 外码:工号, 设备编号
生产订单记录 :(生产线编号 , 设备型号列表 , 订单交货期天数 , 质量检验标准值 , 总成本金额 ) 外码:生产线编号 , 设备型号列表
注意 :蓝色标记的就是主码!
5 物理结构设计






6.创建数据库和基本表
6.1创建数据库
create database 设备管理
on primary
(
name=设备管理_data,
filename='E:\data\设备管理_data.mdf',
size=10mb,
maxsize=50mb,
filegrowth=10%
)
log on
(
name=设备管理_log,
filename='E:\data\设备管理_log.ldf',
size=5mb,
maxsize=20mb,
filegrowth=5%
)
go

6.2创建基本表
我用的是SQL Server 2013进行操作的。
use 设备管理
go
create table depart( --创建部门表
dno char(10) primary key,
dname char(8) not null,
dipr char(8) not null,
tele char(13)
)
create index ic on depart(dname asc) --创建索引
go
create table staff(
jobnu char(10) primary key,
jname char(8) not null,
sex char(2) not null default '男',
hireda date not null,
tele char(13) ,
dno char(10),
foreign key(dno)references depart(dno)
)
create index id on staff(jname asc)
go
create table product(
prono char(10) primary key,
proname char(8) not null,
proce char(4) not null,
addres char(8) not null,
dno char(10),
foreign key(dno) references depart(dno)
)
create index im on product(proname asc)
go
create table device(
devinu char(10) primary key,
dename char(8) not null,
devicla char(6) not null,
renpri date ,
usestatus char(7) not null,
yea smallint not null,
prono char(10),
foreign key(prono)references product(prono)
)
create index il on device(dename asc)
go
create table dumping(
jobnu char(10),
devinu char(10),
amount smallint ,
dumpdate date not null,
dumpcau char(5) not null
primary key(jobnu,devinu),
foreign key(jobnu)references staff(jobnu),
foreign key(devinu)references device(devinu)
)
go
create table maintain(
jobnu char(10),
devinu char(10),
pfa char(6) not null,
cyctiome date not null,
material char(5) not null,
primary key(jobnu,devinu),
foreign key(jobnu)references staff(jobnu),
foreign key(devinu)references device(devinu)
)
create table control(
jobnu char(10),
devinu char(10),
contatus char(5) not null,
contime date not null,
primary key(jobnu,devinu),
foreign key(jobnu)references staff(jobnu),
foreign key(devinu)references device(devinu)
)
create table care(
jobnu char(10),
devinu char(10),
caretime char(4) not null,
cost char(7) not null,
funguaran char(5) not null,
primary key(jobnu,devinu),
foreign key(jobnu)references staff(jobnu),
foreign key(devinu)references device(devinu)
)
create table pro(
prono char(10),
devinu char(10),
primary key(prono,devinu),
foreign key(prono)references product(prono),
foreign key(devinu)references device(devinu)
)

7录入数据
在每个基本表中录入一批数据
--部门表的录入
insert into depart
values
('10','生产部门','张一','1234100'),
('11','报废部门','张二','1234101'),
('12','维修部门','张三','1234102'),
('13','调度部门','张四','1234103'),
('14','保养部门','张五','1234104')
go
select * from depart

--员工表
insert into staff
values
('10000','张一',default,'2019-01-03','1234100','10'),
('10001','小明',default,'2022-01-03','1234110','10'),
('10002','张二',default,'2020-01-03','1234101','11'),
('10003','小华',default,'2021-06-03','1234111','11'),
('10004','张三',default,'2019-02-03','1234102','12'),
('10005','王明',default,'2022-03-07','1234112','12'),
('10006','张四',default,'2019-02-03','1234103','13'),
('10007','李磊',default,'2021-08-03','1234113','13'),
('10008','张五',default,'2019-04-13','1234104','14'),
('10009','李刚',default,'2021-12-03','1234114','14'),
('10010','李一',default,'2021-11-03','1234115','11'),
('10011','李龙',default,'2021-12-23','1234116','12'),
('10012','孙军',default,'2021-10-03','1234117','13'),
('10013','孙树',default,'2019-12-03','1234118','14')
select * from staff

--生产任务表
insert into product
values
('100','生产线1','室外组装工艺','机房1','10'),
('101','生产线2','室内组装工艺','机房2','10'),
('102','生产线3','室外组装工艺','机房3','10'),
('103','生产线4','室内组装工艺','机房4','10')
select * from product

--设备表
insert into device
values
('1000','冲床','机械类','20000$','使用中','8','100'),
('1001','水泵','水利类','200$','维修中','7','101'),
('1002','手电钻','手工类','20$','待用','5','103'),
('1003','液压机','机械类','5000$','检测中','5','102'),
('1004','变压器','电气类','10000$','维修中','10','102'),
('1005','发动机','运输类','20000$','使用中','12','101'),
('1006','计算机','办公类','2000$','维修中','7','103'),
('1007','打印机','办公类','80$','使用中','11','101')
select * from device

--报废表
insert into dumping
values
('10003','1002','3','2022-03-01'),
('10003','1005','2','2022-04-01'),
('10010','1002','4','2022-03-25'),
('10010','1004','2','2022-01-25')
select * from dumping

--维修表
insert into maintain
values
('10005','1001','设备陈旧','5天','0.5kg'),
('10011','1004','设备损坏','15天','10kg'),
('10005','1006','机器故障','6天','2kg'),
('10011','1005','设备损坏','8天','8kg'),
('10005','1002','设备成旧','2天','1kg')
select * from maintain

--调度表
insert into control
values
('10007','1000','车间移动','2022-03-10'),
('10007','1004','外企租用','2022-02-23'),
('10012','1002','借用','2021-12-15'),
('10012','1007','车间移动','2021-11-15'),
('10007','1005','外企租用','2022-07-09')
select * from control

--保养表
insert into care
values
('10009','1000','15天','100$','全额'),
('10009','1001','20天','20$','定额'),
('10009','1002','20天','30$','定额'),
('10009','1003','17天','80$','全额'),
('10009','1004','20天','200$','定额'),
('10013','1005','20天','70$','差额'),
('10013','1006','30天','50$','差额'),
('10013','1007','50天','10$','差额')
select * from care

--生产表
insert into pro
values
('100','1000','2018-10-12','优','30000$'),
('100','1001','2018-9-12','中','150$'),
('101','1002','2018-6-12','合格','15$'),
('101','1003','2018-7-12','优','6000$'),
('102','1004','2018-11-12','优','9000$'),
('102','1005','2018-10-12','中','10000$'),
('103','1006','2018-4-12','优','5000$'),
('103','1007','2018-3-12','良','100$')
select * from pro

8访问数据库
8.1数据查询
(1)查询工号为“10002”的员工基本信息
select *
from staff
where jobnu='10002'

(2)查询“生产部门”的负责人
select dipr
from depart
where dname='生产部门'

(3)查询设备编号为“1002”的设备信息
select *
from device
where devinu='1002

(4)询姓名为“王明”所维修的设备的信息
select jname,maintain.*
from staff inner join maintain on staff.jobnu=maintain.jobnu
and jname='王明'

(5)查询“李磊”调度设备记录的信息
select jname,control.*
from staff,control
where staff.jobnu=control.jobnu and jname='李磊'

(6)建立试图,试图名为”device-care”,包含:设备名称,保养周期,费用,经费保障
create view device_care
as select dename,caretime,cost,funguaran
from device inner join care on device.devinu=care.devinu

8.2数据更新
(1)再生产任务表中,修改生产线编号为“102”的记录,将安装地点修改为机房1
update product
set addres='机房1'
where prono='102'
select *
from product
where prono='102'

(2)在设备表中,修改设备编号为“1006”的记录,将其租用价格修改为“1000$”
update device
set renpri='1000$'
where devinu='1006'
select *
from device
where devinu='1006'

(3)将工号为“10003”的员工调整到工号为“10005”所门中去
update staff
set dno=(select dno
from staff
where jobnu='10005')
where jobnu='10003'
select *
from staff
where jobnu='10003'

(4)删除姓名为“小明”的员工信息
delete staff
from staff
where jname='小明'
在设备管理系统的数据库中,请注册并定义名为proc_dzjy的存储过程用于检索工号信息、设备编号信息、设备名称信息以及报废日期信息。
use 设备管理
go
create procedure proc_dzjy
as select jobnu,device.devinu,dename,dumpdate
from device inner join dumping on device.devinu=dumping.devinu

(6)在设备表中定义的设备编号具有唯一标识且无法更改的特点。通过设置专门的触发器来维护更新操作对设备编号的影响。
create trigger tri_t3 on device
for update
as
if
update(devinu)
begin
print'每一个设备编号的是唯一不变的,不能改变'
rollback transaction
end
9总结
在这次课程设计中, 我收获颇丰. 首先, 这次亲手设计数据库帮助我对数据库的设计有了更深入的理解. 其中在整体过程中会遇到各种各样的问题. 感谢我的指导老师详细指导, 让我在学习过程中少走了许多不必要的捷径. 由于我的水平有限, 在写作过程中难免会有不足之处, 请各位专家多多批评指正.
