数据库课程设计仓库管理系统数据库的设计与实现.docx
仓库管理系统数据库设计与实现一. 实验时间、地点时间:第十三周(11月21日一一25日)地点:软件楼305二. 实验目的通过本次课程设计让学生能够综合运用所学的关系数据库原理知识解决并 能设计一个实际问题,进一步掌握数据库原理的相关理论和数据库的设计实现过 程,进一步提高学生的分析问题和解决问题的能力以及学生的动手能力。三. 课程设计要求:1. 对各个系统进行系统功能需求分析2. 数据库设计分析阶段,进行详细的数据库需求分析,进行概念数据库的 设计,画出数据库的E-R图(局部和整体E-R图)3. 设计出详细的逻辑数据库结构,将各个实体和联系转化为相应的二维表 即关系模式,指定各个关系的主关键字和外部关键字,并对各个关系的约束加以 限定4. 通过企业管理器或是查询分析器实现各个二维关系(建议最好用SQL代 码实现),要求建立相关的索引5. 根据系统功能需求设计相应的查询视图6. 要求根据系统功能需求建立存储过程7. 根据功能需求建立相应的触发器以保证数据的一致性8. 通过建立用户和权限分配实现数据库一定的安全性,考虑数据库的备份 与恢复(此内容选作)四. 仓库管理系统实验要求描述:设计一个仓库管理系统,实现下列功能:1. 零件信息登记(包括种类,名称和库存数量等信息);2. 零件进库登记(包括种类,名称和库存数量等信息);3. 零件出库登记(包括种类,名称和库存数量等信息);五. 实现思路1 .关系模式零件信息表(零件编号,零件名,单价,数量,零件类型号,生产厂家号) 生产商情况表(生产厂家号,生产厂家名,生产厂家地址,生产厂家电话) 入库登记表(零件编号,零件名,入库数量,零件类型,生产厂家号,入库时间) 出库登记表(零件编号,零件名,出库数量,出库时间)零件类型信息表(零件类型号,类型)2.设计思路仓库管理系统设计了五个二维表,他们的设计表如下(3)入库登记设计表(4)出库登记设计表列名数据类型长度允许空零件蝙号char10零件名char10颜色char8V入库数量int4V零件类型char0V生产商号char6V入库时间datetime8V列名数据类型长度零件编号char10零件名char10出库数量int4出库性质charS提货人员char12出库时间datetim已S允许空列名数据类型长度允许空列名数据类型长度允许空9零件编号char10生产商号char6零件名char10生产商名varchar16颜色charsV生产商地址varchar40重量char6V生产商电话char12单价moneySV1-数量int4V零件类型号char10V生产商号char6V(1)零件信息设计表(2)生产商情况设计表(5)零件类型信息设计表列名数据类型长度允许空零件类型号char10类型char10用途char103 .仓库管理系统全局ER图零件信息六. 实现过程create database仓库管理系统on(name 二仓库 _dat,Filename='e:microsoft SQL ServerMSSQLDate、仓库.mdf',Size=10,Maxsize=150)Log on(name 二仓库 _ log,Filename='e:microsoft SQL ServerMSSQLDate仓库.ldf',Size=10,Maxsize=80)create table 零件信息表(零件编号 char(10) primary key,零件名 char(10) not null,单价 money constraint 单价_Chk check(单价 between 80 and 660),数量int,零件类型号char(10),生产厂家号char(6);select * from零件信息设计表零件蝙号I零件名I颜色I重量I单价I数量I零件类型号I生产商号1 2 3 4 5 6 7 0 0 0 0 0 0-01 0 0 0 0 0 0-00 o o o o o o o O具旋 体 母栓钉轮轮胎导标 螺螺螺凸齿轮半鼠色 色 色色色色M色黄色 黑灰蓝青墨黑金红40150typ 已 3N00145156typ _N00350200typ 已 6N00418。130typ _N002ISO110t2<peSN00626670type5N00728050typ 已 4N001165237type3N0010/*创建并查询零件信息表索引*/-create unique index零件信息_index on零件信息表(零件编号) exec Sp_helpindex 零件信息表table生产厂家信息表r/ r/ r/ r/ 卫 卫 卫 卫 1 *1 *1 *1 广广广广 性生生生家号 char(6) primary key , 家名 varchar(16) not null, 家地址 varchar(40), 家电话 char(12);select * from生产厂豕信息表生产商号生产商名生产商地址生产商电话N001精益北京市海淀区经济开发区119号212919899N0010无线电厂香港经济开发区43号21322131N0011半导体厂漠门市东城区蛭济开发区倒号21324657N002盛锡上海市浦东区经济开发区23号543534939N003东方红北京市海淀区经济开发区的号22322293N004丰盛泰武汉市武昌区经济开发区日。号271719S99N005为民武汉市汉口区经济开发区M号2125433344N006三建北京布'东城区经济开发区41号21324664N007一汽南髭市惶惶区经济开发区67S号21322221N008弹簧厂江芳市经济开发区2343号21324545N009机车厂杭州市经济开发区41号21329645/*创建并查询生产厂家信息索引*/create index生产厂家信息_index on生产厂家信息表(生产厂家号)exec Sp_helpindex 零件信息表 create table零件类型信息表(零件类型号 char(10) primary key, 类型 char(10);select * from零件信息设计类型表零件类型号I类型用途typel工程零件type2零件结构type3零部件typ 已 4核心零件type5橡胶成品type6零件工具工成装售备出加合组出装借/*创建并查询零件类型信息索引*/create index零件类型信息表_index on零件类型信息表(零件类型号) exec Sp_helpindex零件类型信息表 create table入库登记表(零件编号char(10),零件名 char(10) not null,入库数量int,零件类型char(8),生产厂家号char(6),入库时间datetime);select * from入库登记设计表零件蝙号零件名颜色入库数量零件类型生产商号入库时间0008弹簧徐色226type3NOOO02010-11-250009铜线金黄色137typeGN00112010-11-251/*创建并查询入库登记表索引*/create index入库登记表_index on入库登记表(零件编号)exec Sp_helpindex 入库登记表create table出库登记表(零件编号char(10),零件名char(10),出库数量int,出库时间datetime);select * from出库登记设计表零件编号零件名出库数量出库性质提货人员出库时间0001螺母60借出阿佳2010-11-26003螺钉旋具S0售出小唐2010-11-10005齿轮36借出老高2010-11-27007半导体20售出小徐2010-11-23/*创建出库登记表索引*/create index入库登记表_index1 on出库登记表(零件编号)create index入库登记表_index2 on出库登记表(出库数量)create index入库登记表_index3 on出库登记表(出库时间)/*查询零件名为“硬盘”的信息*/select零件编号,零件名,单价,数量,生产厂家信息表.生产厂家名,生产厂家地址,生产厂家电话,零件信息类型设计表.类型from零件信息表,生产厂家信息表,零件信息类型设计表where(零件信息设计表.零件类型号二零件信息类型设计表.零件类型号and生产厂家信息设计表.生产厂家号二零件信息设计表.生产厂家号and零件名二'硬盘')查询结果为:零件编号零件名颜色重量单价数重生产商名生产商地址生产商电话类型用途10007半导体金黄色2280.000050半导体厂澳门市东城区经济开度区54号21324657核心零件出售/*创建零件信息表视图*/create view v_lj as select * from 零件信息表/*创建生产厂家信息表视图*/create view v_sc as select * from 生产厂家信息表create view select _ 零件信息表 asselect零件信息设计表.零件编号,零件信息设计表.零件名,零件信息设计表.零件类型号from零件信息设计表inner join零件信息类型设计表on零件信息设计表.零件类型号二零件类型 信息设计表.零件类型号零件编号零件名零件类型号/*创建数量在200900之间的规则,并绑定规则*/create rule 数量_ruleas 数量 >=200 and 数量 <=900exec sp_helptext'数量_rule,exec sp_bindrule'数量_rule','零件信息表.数量'exec sp_unbindrule'零件信息表.数量'drop rule 数量_rule/*创建向表中添加信息的存储过程*/create procedure insert _ 零件信息(零件编号char(10), 零件名 char(10), 单价 money,数量int,零件类型号char(10),生产厂家号char(6)asinsert into零件信息表values(零件编号,零件名,单价,数量,零件类型 号,生产厂家号)exec insert_零件信息零件编号='001',零件名=,鼠标,单价=80,数量 二'1000',零件类型号='L1',生产厂家号二'01'select * from零件信息表 /*删除存储过程*/drop procedure insert _ 零件信息/*创建触发器并向利用触发器向表内添加信息*/ create trigger ChangDisplayon零件信息表for insert as select * from零件信息表insert into 零件信息表 values('002','数据线',80,'800','L2','06')七. 实验总结本系统是一个面向小型企业,具有一定实用性的数据库仓库管理系统。它主 要完成对零件仓库的一系列管理,包括入库、出库、库存以及供应商信息管理。 本系统采用数据库SQL来完成整个系统的设计。在零件入库、出库和库存三者之 间建立了良好的链接关系,某一部分地修改均会自动引发系统对与其相关的部分 进行连锁修改。系统在设计过程中不可避免地遇到了各种各样的问题,由于整个系统完全都 是由个人设计的,有关SQL的许多细节问题都要靠自己去摸索,加之本人水平有 限,并没有完全地理解SQL的强大功能,而且还存在着许多不足之处。如:受开 发条件和开发时间的限制,本系统能存储的数据量也有一定限制,并没有发挥出 SQL在数据库方面的优势;报表打印功能尚不够全面完善,不能实现动态报表, 在一些数据输入时没有及时的进行数据格式校验,不能保证数据输入的绝对正确 性。由于时间关系,系统功能实现不够完善,使用不是很方便,比如,没有实现 多条记录的连锁删除和添加以及数据的导入功能。这些都是需要完善的地方,该 系统离实际使用也还有相当的距离,需要我进行不断地补充和完善。通过本次毕业设计我学到了不少新的东西,也发现了大量的问题,有些在设 计过程中已经解决,有些还有待今后慢慢学习。只要学习就会有更多的问题,有 更多的难点,但也会有更多的收获。