1、数据库仓库管理课程设计报告 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 13 个人收集整理 勿做商业用途 课程设计报告
2、 课程设计题目:仓库管理系统数据库的设计与实现 专 业: 班 级: 姓 名: 学 号: 指导教师: 2013年 1 月 6 日 一、实验题目:仓库管理系统数据库的设计与实现 二、实验时间:2012—12-29至2013—01—06 三、实验地点:软件楼606 四、实验目的: 通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的
3、设计实现过程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力. 五、实验要求: 1.对各个系统进行系统功能需求分析 2。 数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的设计,画出数据库的E-R图(局部和整体E—R图) 3。 设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以限定 4。 通过企业管理器或是查询分析器实现各个二维关系(建议最好用SQL代码实现),要求建立相关的索引 5. 根据系统功能需求设计相应的查询视图 6. 要求根据系统功能需求建立存储过程 7
4、 根据功能需求建立相应的触发器以保证数据的一致性 8。 通过建立用户和权限分配实现数据库一定的安全性,考虑数据库的备份与恢复(此内容选作) 需求分析: 系统功能分析 1:零件信息表用于储存零件,有该零件的一些基本信息,用户可以通过此表知道仓库里有哪些零件 2:入库登记表,可查询零件的入库信息,并且在零件信息表实现相应的变动 3:出库登记表,零件出库时要判断该出库零件在仓库里有没有,有的话够不够出库 4:生产厂家表,存放对于零件该厂家的具体信息
5、 六、实验思路: 关系模式 零件信息(零件编号,零件名,厂家号,已存数量) 入库登记(零件编号,零件名,入库数量,入库时间) 出库登记(零件编号,零件名,出库数量,出库时间) 生产厂家(厂家号,厂家名,厂家地址,厂家电话) 零件信息 零件编号 厂家号 已存数量 生产 生产厂家 厂家号 零件名 厂家名 厂家地址 厂家电话 入库登记 零件编号 零件名 入库数量 入库时间 入库 出库 出库登记 零件编号 零件名 出
6、库数量 出库时间 数据库设计: /*零件信息信息表*/ create table 零件信息 (零件编号 char(10) primary key, 零件名 varchar(50) not null, 厂家号 char(10) , 已存数量 int ) /*生产厂家表*/ create table 生产厂家 (厂家号 char(10) primary key, 厂家名 varchar(50) not null, 厂家地址 varchar(50), 厂家电话 char(10) ) /*入库登记表*/ create table 入库登记
7、零件编号 char(10), 零件名 varchar(50), 入库数量 int, 入库时间 datetime) /*出库登记表*/ create table 出库登记 (零件编号 char(10), 零件名 varchar(50), 出库数量 int, 出库时间 datetime) /*零件入库登记触发器*/ create trigger 入库管理 on 入库登记 instead of insert as begin if (exists (select 零件编号 from 零件信息 where 零件编号=( select 零件编号 fro
8、m inserted))) begin print'仓库已有该零件,并放置成功’ declare @入库数量 int update 零件信息 set 已存数量=已存数量+@入库数量 where 零件编号=(select 零件编号 from inserted) end if(not exists(select 零件编号 from 零件信息 where 零件编号=( select 零件编号 from inserted))) begin print'仓库没有该零件,已加入仓库’ declare @零件编号 char(10) declare @零件名 varchar(50)
9、 declare @已存数量 int declare @厂家号 char(10) declare @入库时间 datetime insert into 零件信息 values (@零件编号,@零件名,@厂家号,@已存数量) select 零件编号,零件名,厂家号,已存数量 from 零件信息 insert into 入库登记 values (@零件编号,@零件名,@入库数量,@入库时间) select 零件编号,零件名,入库数量,入库时间 from 入库登记 end end /* 若已存数量为零则删除该零件信息*/ cre
10、ate trigger 删除信息 on 零件信息 for update as delete from 零件信息 where 已存数量=0 /*零件出库登记触发器*/ create trigger 出库时更新 on 出库登记 for insert as declare @出库数量 int select @出库数量=出库数量 from inserted update 零件信息 set 已存数量=已存数量-@出库数量 where 零件编号 in (select 零件编号 from inserted) /*零
11、件出库时的提示信息*/ create trigger 提示信息 on 出库登记 for insert as print’此零件库存数量不足’ select 出库数量 from inserted where 出库数量〉(select 已存数量 from 零件信息) insert into 零件信息 values('L2','衣服’,’C2’,100) insert into 出库登记 values('L2',’衣服’,110,2013-01-05) 七、实验总结: 在零件入库时,仓库本没有这零件
12、在自动插入时提示错误, 原因是零件信息表中的零件编号为主键,不能为空,就算是能插进去的话,那零件信息表里的厂家号也为空,还有就是在入库时间那有点问题,本来是要自己输入进去的,结果那系统自己给了个时间,零件出库功能也做得很不到位,出库时如果出库数量多于仓库里的已存数量,不会显示没有足够的零件,而且在零件信息表里的已存数量会为负数,出库时会提示次零件在仓库里到底有没有,有的话够不够出库,只能实现些简单的加减问题。 八、心得体会: 通过这次课程设计发现如果平时不自己多动手,有些简单的问题也会搞错,一些简单的常用的代码也会出错,找错的时间比别人的多,办事没效率,当其他同学都完成的差不多时,我这还有些错于是心里干着急,假如平时没事就自己多动手写代码,多实践也不会像现在这样这么没效率,在遇到问题时应该多想想,自己多动手解决,不要老想着别人帮忙,有些问题其实还是可以自己解决的,只要静下心来,多看看错在哪,还要敢于修改,别怕再次出错或者又出现了更多的问题,在这次课程设计,觉得对很多东西都有了更进一步的理解和认识,所以要想学的好的话,就应该多实践,多写代码,认真的理解每一条代码。






