超市进销存系统 数据库设计报告
来源:互联网 发布:linux快速回到根目录 编辑:程序博客网 时间:2024/04/28 08:16
超市进销存系统 数据库设计报告
注意:本设计报告省略了需求分析部分、实体说明、联系说明、索引说明等,重点是数据库的实现过程以及sql语言的编写以及其他一些我认为的重点展示
另外:本系统前期主要使用了软件PowerDesigner,从需求分析到模型设计、约束条件、视图、业务规则等,都是用的该软件。
产品简介
超市进销存系统主要为商品的进货上架、销售收银、仓库存储提供线上管理的功能。
目标客户:中小型超市
客户的业务需求:
改变传统的人工管理,实现日常管理信息化;
通过对库存和销售信息的快速查询和处理,提高商品的采购的速度和科学性;
提升超市管理水平,降低经营成本,提高工作效率。
本系统的总体框架
数据模型
BPM模型
CDM 模型
PDM模型
部分存储器、触发器、函数的设计
本人负责的是关于存货模块的存储器、触发器、函数设计,这里举了几个例子:
- 存储器设计1、
/*具有“采购员”职称的员工加薪15%,“理货员”加薪10%,“收银员”加薪5%,“经理”加薪20%*/create procedure proc_raiseasdeclare cur cursor for select workerNum,job from t_userdeclare @increment decimal(2,1)declare @num intdeclare @tjob varchar(50)open curfetch next from cur into @num,@tjobwhile(@@fetch_status=0)beginif @tjob='采购员' set @increment=0.15else if @tjob='理货员'set @increment=0.1else if @tjob='收银员' set @increment=0.05else if @tjob='经理' set @increment=0.2update t_userset salary=salary*(1+@increment)where workerNum=@numfetch next from cur into @num,@tjobendclose curdeallocate curgo
测试结果:
未执行存储器之前的员工表:
执行加薪功能的的存储器之后:
execute proc_raise
- 存储器设计2、
/*清空库存信息表:t_inventory钟库存量为0的商品信息*/create procedure proc_amount0asdeclare cur cursor for select goodsNum,amount from t_inventorydeclare @gnum intdeclare @gamount intopen curfetch next from cur into @gnum,@gamountwhile(@@fetch_status=0)beginif @gamount=0delete from t_inventorywhere goodsNum=@gnumfetch next from cur into @gnum,@gamountendclose curdeallocate cur
测试结果:
未执行存储器之前的t_inventory:
执行存储器:
execute proc_amount0
- 用户自定义函数设计1、
/*输入商品编号,在t_goodsOn表上将该商品标注为' 促销-买一送一'*/create function dbo.func_num_cuxiao(@gnum int)returns varchar(50)asbegindeclare @gname varchar(50);declare @gprice int;select @gname=goodsName from t_goodsOn where t_goodsOn.goodsNum=@gnum;select @gprice=price from t_goodsOn where t_goodsOn.goodsNum=@gnum;set @gname=@gname+'促销-买一送一';return @gnameenddeclare @t varchar(50)execute @t= dbo.func_num_cuxiao "01";update t_goodsOnset goodsName=@t where goodsNum=01 ;select *from t_goodsOn
测试结果:
- 用户自定义函数设计2、
/*对于库存量小于10的商品,备注remark里面添加“库存紧张!!!”的字段*/create function dbo.func_less(@gnum int)returns varchar(50)as begindeclare @mark varchar(50)set @mark='库存紧张!!!'+(select remark from t_inventory where goodsNum=@gnum)return @markendcreate procedure proc_tmpasdeclare cur cursor for select goodsNum from t_inventorydeclare @gnum intdeclare @ta int declare @t varchar(50)open curfetch next from cur into @gnumwhile(@@fetch_status=0)beginselect @ta=amount from t_inventory where goodsNum=@gnumif @ta<10beginexecute @t= dbo.func_less @gnum ;update t_inventoryset remark=@t where goodsNum=@gnum ;endfetch next from cur into @gnumendclose curdeallocate cur
结果测试:
原来的库存信息表t_inventory:
execute proc_tmp
执行之后:
- 触发器设计1、
/*触发器:t_goodsBuy商品进价变,t_incentory的同商品的进价也变,售价+(现进价-原进价),t_goodsSale商品售价也变*/create trigger tri_alter_coston dbo.t_goodsBuyafter insertasbegin declare @num int;declare cur cursor for select goodsNum from inserted;open cur;fetch from cur into @num;while @@FETCH_STATUS=0beginupdate t_inventoryset cost=(select cost from inserted where goodsNum=@num)where goodsNum=@num;update t_inventoryset price=price+(select cost from inserted where goodsNum=@num)-(select cost from t_inventory where goodsNum=@num)where goodsNum=@num;update t_goodsSaleset price=price+(select cost from inserted where goodsNum=@num)-(select cost from t_inventory where goodsNum=@num)where goodsNum=@num;fetch next from cur into @num;endclose cur;end
结果测试:
测试结果:
原来的库存表t_inventory:
原来的销售表t_goodsSale:
/*在采购员进货,增加t_goodsBuy之后:*/insert into t_goodsBuyvalues('01','口香糖','03','10','150','盒','绿箭公司','2016/8/23'), ('02','方便面','01','10','10','箱','康师傅公司','2016/8/23'), ('03','可乐','02','15','12','箱','可口可乐公司','2016/8/23'), ('04','饼干','04','11','15','箱','乐事公司','2016/8/23');
t_inventory库存表:
t_goodsSale销售表:
执行成功的SQL源码:
- 建表、创建索引
/*==============================================================*//* Table: t_buyer *//*==============================================================*/create table t_buyer ( workerNum int not null, workerName varchar(50) not null,)goalter table t_buyer add constraint PK_T_BUYER primary key nonclustered (workerNum)go/*==============================================================*//* Index: Index_workerNum *//*==============================================================*/create index Index_workerNum on t_buyer (workerNum ASC)go/*==============================================================*//* Index: Index_workerName *//*==============================================================*/create index Index_workerName on t_buyer (workerName ASC)go/*==============================================================*//* Table: t_cashier *//*==============================================================*/create table t_cashier ( workerNum int not null, workerName varchar(50) not null, workTime varchar(5) not null)goalter table t_cashier add constraint PK_T_CASHIER primary key nonclustered (workerNum)go/*==============================================================*//* Index: Index_workerNum *//*==============================================================*/create index Index_workerNum on t_cashier (workerNum ASC)go/*==============================================================*//* Index: Index_workerTime *//*==============================================================*/create index Index_workerTime on t_cashier (workTime ASC)go/*==============================================================*//* Table: t_goodsBuy *//*==============================================================*/drop table t_goodsBuy create table t_goodsBuy ( goodsNum int not null, goodsName varchar(50) not null, workerNum int not null, cost int not null, amount int not null, units varchar(50) not null, suppler varchar(50) not null, date varchar(50) not null)goalter table t_goodsBuy add constraint PK_T_GOODSBUY primary key nonclustered ()go/*==============================================================*//* Index: Index_goodsName *//*==============================================================*/create index Index_goodsName on t_goodsBuy (goodsName ASC)go/*==============================================================*//* Index: Index_date *//*==============================================================*/create index Index_date on t_goodsBuy (date ASC)go/*==============================================================*//* Index: Index_wokerNum *//*==============================================================*/create index Index_wokerNum on t_goodsBuy (workerNum ASC)go/*==============================================================*//* Table: t_goodsOn *//*==============================================================*/create table t_goodsOn ( goodsNum int not null, goodsName varchar(50) not null, cost int not null, prcie int not null, amount int not null, units varchar(50) not null, remark varchar(300) null, workerNum int not null)goalter table t_goodsOn add constraint PK_T_GOODSON primary key nonclustered (goodsNum, workerNum)go/*==============================================================*//* Index: Index_amount *//*==============================================================*/create index Index_amount on t_goodsOn (amount ASC)go/*==============================================================*//* Table: t_goodsOnOut *//*==============================================================*/create table t_goodsOnOut ( workerNum int not null, goodsNum int not null, goodsName varchar(50) not null, amount int not null)goalter table t_goodsOnOut add constraint PK_T_GOODSONOUT primary key nonclustered (workerNum, goodsNum, t_g_workerNum)go/*==============================================================*//* Index: Index_workerNum *//*==============================================================*/create index Index_workerNum on t_goodsOnOut (workerNum ASC)go/*==============================================================*//* Index: Index_goodsNum *//*==============================================================*/create index Index_goodsNum on t_goodsOnOut (goodsNum ASC)go/*==============================================================*//* Table: t_goodsSale *//*==============================================================*/drop table t_goodsSalecreate table t_goodsSale ( workerNum int not null, goodsNum int not null, goodsName varchar(50) not null, prcie int not null, amount int not null, units varchar(50) not null)goalter table t_goodsSale add constraint PK_T_GOODSSALE primary key nonclustered (goodsNum)go/*==============================================================*//* Index: Index_workerNum *//*==============================================================*/create index Index_workerNum on t_goodsSale (workerNum ASC)go/*==============================================================*//* Index: Index_profit *//*==============================================================*/--create index Index_profit on t_goodsSale (--profit ASC--)--go/*==============================================================*//* Index: Index_amount *//*==============================================================*/create index Index_amount on t_goodsSale (amount ASC)go/*==============================================================*//* Table: t_goosClass *//*==============================================================*/drop table t_goodsClasscreate table t_goodsClass ( classNum int not null, className varchar(50) not null, goodsNum int not null, goodsName varchar(50) not null, workerNum int not null)goalter table t_goodsClass add constraint PK_T_GOOSCLASS primary key nonclustered (goodsNum)go/*==============================================================*//* Index: Index_goodsName *//*==============================================================*/create index Index_goodsName on t_goodsClass (goodsName ASC)go/*==============================================================*//* Index: Index_className *//*==============================================================*/create index Index_className on t_goodsClass (className ASC)go/*==============================================================*//* Table: t_inventory *//*==============================================================*/create table t_inventory ( goodsNum int not null, goodsName varchar(50) not null, className varchar(10) not null, amount int not null, cost int not null, prcie int not null, units varchar(50) not null, remark varchar(300) null,)goalter table t_inventory add constraint PK_T_INVENTORY primary key nonclustered (goodsNum, workerNum)go/*==============================================================*//* Index: Index_className *//*==============================================================*/create index Index_className on t_inventory (className ASC)go/*==============================================================*//* Index: Index_amount *//*==============================================================*/create index Index_amount on t_inventory (amount ASC)go/*==============================================================*//* Table: t_manager *//*==============================================================*/create table t_manager ( workerNum int not null, workerName varchar(50) not null)goalter table t_manager add constraint PK_T_MANAGER primary key nonclustered (workerNum)go/*==============================================================*//* Index: Index_workerNum *//*==============================================================*/create index Index_workerNum on t_manager (workerNum ASC)go/*==============================================================*//* Index: Index_workerName *//*==============================================================*/create index Index_workerName on t_manager (workerName ASC)go/*==============================================================*//* Table: t_tallyClerk *//*==============================================================*/create table t_tallyClerk ( workerNum int not null, workerName varchar(50) not null)goalter table t_tallyClerk add constraint PK_T_TALLYCLERK primary key nonclustered (workerNum)go/*==============================================================*//* Index: Index_workerNum *//*==============================================================*/create index Index_workerNum on t_tallyClerk (workerNum ASC)go/*==============================================================*//* Index: Index_workerName *//*==============================================================*/create index Index_workerName on t_tallyClerk (workerName ASC)go/*==============================================================*//* Table: t_user *//*==============================================================*/drop table t_usercreate table t_user ( workerNum int not null, workerName varchar(50) not null, workerSex varchar(5) check(workerSex in('男','女')) not null, workerAge int check(workerAge>=18 and workerAge<=60) not null, workTime varchar(5) not null, job varchar(50) check(job in('采购员','收银员','理货员','经理')) not null, salary int not null)goalter table t_user add constraint PK_T_USER primary key nonclustered (workerNum)go/*==============================================================*//* Index: Index_workerNum *//*==============================================================*/create index Index_workerNum on t_user (workerNum ASC)go/*==============================================================*//* Index: Index_workerName *//*==============================================================*/create index Index_salary on t_user (salary DESC)go
- 创建视图
说明:视图的作用包括能够简化数据的操作、提供数据库的安全性等等,所以因为需要适时查看上架商品数量、库存数量,以及时补足,同时,查看销售量靠前的商品,优化销售方案等原因,设计了以下三个视图。
/*==============================================================*//* View: View_goodsOnAmount 查询上架商品数量视图 *//*==============================================================*/create view lihuoyuan.View_goodsOnAmount asselectgoodsNum,goodsName,amountfromt_goodsOnwith check optiongo/*==============================================================*//* View: View_goodsSale 查询商品销售数量视图 *//*==============================================================*/create view View_goodsSale asselectgoodsNum,goodsName,amountfromt_goodsSalego/*==============================================================*//* View: View_inventoryAmount 查询商品库存量视图 *//*==============================================================*/create view caigouyuan.View_inventoryAmount asselectgoodsNum,goodsName,amountfromt_inventorywith check optiongo
0 0
- 超市进销存系统 数据库设计报告
- 超市管理系统设计报告
- 进销存系统数据库设计报告
- 进销存系统数据库设计报告
- 超市收银系统设计思路
- 中小型超市系统中的分类/产品属性/扩展属性的数据库设计
- 客户关系管理系统数据库设计报告
- 数据库 员工管理系统 设计报告
- 超市账单管理系统设计思路
- 实验一数据库系统设计的实验报告
- 进销存系统数据库设计
- 进销存系统数据库设计
- 黑马程序员-------超市库存管理系统设计文档
- C#基础综合练习--超市收银系统的设计
- 数据库设计报告
- 网页设计超市
- c#之超市系统之超市仓库
- C#学习超市系统之超市前台
- 排序算法优劣
- make(makefile)执行流程
- Java中的异常处理机制
- IOS学习笔记之Object-C(二)
- iOS模态出一个半透明的ViewControlle
- 超市进销存系统 数据库设计报告
- Java之设计模式
- mybatis讲解以及示例程序
- 20170225C++项目班03_parser实现/调试/
- mysql user
- Xcode出现unable to boot the simulator和an internal error occurred.editing functionality may be limited
- 雨林木风 ghost win7 纯净版系统下载
- 继承
- 《谈话的力量》