企业进销存管理系统后台数据库的设计
一、 需求分析
1.1 总体说明
根据客户的要求,我们整个系统将划分为四个模块,
(1) 基础信息模块 基础信息模块包括各种数据处理模块,如用户、帐套、商品、
供应商、客户、仓库的数据处理。
用户:因为每个业务流程涉及到不同职责的人,不同的人具有不同的权限,需要对每
个用户设置权限并在执行相应操作时进行权限认证。
帐套:系统分为三个帐套。库存帐套用来记录各个仓库货物的进出;销售帐套用来记
录前台货物的进出;往来帐套保存应收帐款和应付帐款的单据;
(2) 进货模块处理 该模块负责处理与进货相关的各种业务,如进货、进货付款,
进货退货。
(3) 库存模块
该模块负责处理库存循环的各种业务,如库存调拨,商品调价、
库存商品查询等
(4) 销售模块
销售模块处理销售循环的各种业务,如前台销售、信用销售、销
售退货等
1.2 具体需求
基础信息模块应该提供以下功能:
(1) 所有的用户都应该具有登录系统的权利
(2) 用户管理用户具有添加删除用户和更改权限的权利
(3) 采购管理用户应该具有查看、删除、创建、修改采购单的权利
(4) 销售管理用户具有查看、删除、创建、修改销售单等管理的权利
(5) 库存管理用户具有库存的创建、撤消等管理权利
库存管理模块提供的功能:
(1) 商品调出用户和商品验收用户可以应用库存调拨程序进行库存调拨操作
(2) 商品调价用户可以利用调拨程序重新设置商品的售价
(3) 库存商品查询用户可以查询商品的库存量。
进货管理模块需要提供的功能:
(1) 采购用户利用采购程序购买商品
(2) 采购用户可以利用退货程序处理退货物
(3) 查询用户可以查看进货单
(4) 采购付款人员可以进行采购付款操作
销售模块需要提供的功能:
(1) 前台销售用户可以利用前台销售程序进行商品的现金销售
(2) 信用销售用户可以进行信用销售
(3) 销售收款用户可以进行收款操作
(4) 销售单查询用户可以进行销售单查询
二、 概念设计
2.1 实体关系
用户:公司由各个职能部门组成,每部门由具有不同职责的员工组成。不同的员工具
有不同操作权限。为每个用户设置在不同信息模块的权限,各个信息模块的权
限我们用整数表示.比如对于销售模块,我们设置:
1 表示有直销及销售单查看权限,对应公司的销售人员
2 表示有代销及销售单查看权限,对应公司的代销人员
3 销售收款权限及单据查询权限,对应公司财务相关人员
每个商品都有相关记录,并属于某个分类
客户应该有详细的资料,以便进行相关的发货等操作
商品分类:每个商品都属于一个分类,商品按照类别来管理
商品:
客户:
供应商: 每种物品的提供者
仓库:
分布在不同的地方
库存帐套:与库存进出相关的单据。有几种类型,我们用整形表示。
0:表示进货定货单
1:表示进货退货单据
2:表示商品调出单
3:表示商品调入单
4:表示销售出库单
5:表示销售退货单
6:表示库存盘店单。
库存帐套明晰单:表示帐套单(进货单、销售出库单等)上与商品相关的信息
销售帐套:与销售业务相关的单据,有几种单据,用整数表示。
0:表示前台销售单据
1:表示信用销售单
2:表示前台销售退货单
3:表示信用销售退货单。
销售帐套明晰单:表示销售帐套(前台销售单、信用销售单上商品的详细信息)
往来帐套: 表示应付款或者应收款的单据,帐套类型:
0:表示应付款单
1:表示应收款单
2:表示销售退货票据
2.2 ER 图(由于实体属性多,属性在此没有列出,请参考后面的数据表)
1) 库存管理模块
用户(调出)
调 出 单 / 掉
入单
用户(调入)
仓库(出入)
用户
商品
仓库
2) 采购管理模块
采购用户
`
采购单
商品
供应商
3) 销售管理模块
销售用户
销售单
商品
客户
三、逻辑设计
3.1 ER 图到关系数据表的转换
用户数据表:
字段名
数据类型 大小 默认 许空 唯一 key 自 动
foreign 备注
nvarchar
nvarchar
int
50
50
int
int
int
1
2
3
4
5
6
username
userpasswor
Baseinfo
function
stockfunction
Stockmanage
fuction
salefunction
商品分类数据表:
增值
*
*
用户名
用户密码
基 础 信 息
模块权限
进 货 模 块
权限
库 存 模 块
权限
销 售 模 块
权限
字段名
数据类型 大小 默认 许空 唯一 key 自动增
foreign 备注
1
2
3
4
categoryId
parentID
Category
Name
Category
Description
int
int
nvarchar
ntext
商品数据表:
值
*
*
序号
父索引
类别名称
类别描述
字段名
数据类型 大小 默认 许空 唯一 key 自动增
foreign 备注
nvarchar
20
*
*
值
int
nvarchar
nvarchar
nvarchar
numeric
10
10
20
18.2
1
2
3
4
5
6
Good
barcode
categoryId
goodsName
unit
producer
saleprice
供应商数据表:
条形码
分类标识
商品类别
单位
生产厂商
售价
字段名
数据类型 大小 默认 许空 唯一 key 自 动
foreign 备注
1
suppliername
nvarchar
2
4
5
6
7
8
9
10
11
12
13
14
15
16
supplyzone
abbreviation
companyphone
linkman
mobilephone
fax
fixedPhone
address
zipcode
bankname
bankAccount
email
homesite
remark
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
ntext
*
增值
*
*
供 应 商
名
地区
简称
联系电话
联系人
手机
传真
固话
地址
邮编
开户银行
开户帐号
邮件
网站
评论
仓库数据表:
字段名
数据类型 大小 默认 许空 唯一 key 自 动
foreign 备注
1
2
3
4
warehousID
warehoursName
location
description
int
nvarchar
nvarchar
ntext
10
20
100
增值
*
*
仓库编号
仓库名
位置
描述
客户数据表
字段名
数据类型 大小 默认 许空 唯一 key 自 动
foreign 备注
1
2
4
5
6
7
8
9
10
11
12
13
14
15
16
17
customername
customerzone
abbreviation
companyphone
linkman
mobilephone
fax
fixedPhone
address
zipcode
bankname
bankAccount
email
homesite
creditlimit
remark
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
numeric
ntext
仓库帐套数据表:
*
增值
*
*
客户名
地区
简称
联系电话
联系人
手机
传真
固话
地址
邮编
开户银行
开户帐号
邮件
网站
信用额度
评论
字段名
数据类型 大小 默认 许空 唯一 key 自 动
foreign 备注
增值
1
2
3
4
5
6
7
8
9
orderID
orderType
supplierName
submmituser
commituser
checkuser
cashuser
nvarchar
int
nvarchar
nvarchar
nvarchar
nvarchar
address
warehouse
nvarchar
nvarchar
单据编号
单据类型
供应商名
请购员名
订购员名
验货员名
现 金 管 理
员
收货地址
仓库名
orderDate
stockDate
onprocess
10
11
12
完成状态:0 表示进行中
datetime
datetime
int
定单日期
到货日期
完成状态
1 表示撤消
2 表示完成
库存帐套明细数据表:
字段名
数据类型 大小 默认 许空 唯一 key 自 动
foreign 备注
1
2
3
4
5
serialId
orderID
goodsbarcode
int
nvarchar
nvarchar
costprice
quatity
number
int
20
10
18.2
销售帐套数据表
增值
*
*
明晰编号
单据编号
商 品 条 形
码
进货价
数量
字段名
数据类型 大小 默认 许空 唯一 key 自 动
foreign 备注
增值
1
2
3
4
5
6
saleID
saleType
customerrName
countuser
nvarchar
int
nvarchar
nvarchar
credituser
nvarchar
cashuser
7
8
9
10
address
fillerdate
deliverydate
onprocess
nvarchar
nvarchar
datetime
int
销售帐套明细数据表:
单据编号
单据类型
客户名
前 台 销 售
员名
信 用 销 售
员名
现 金 管 理
员
送货地址
仓库名
定单日期
完成状态
字段名
数据类型 大小 默认 许空 唯一 key 自 动
foreign 备注
1
2
3
4
5
serialId
saleID
goodsbarcode
int
nvarchar
nvarchar
actualprice
quatity
number
int
20
10
18.2
增值
*
*
明晰编号
单据编号
商 品 条 形
码
实际售价
数量
往来帐套数据表:
字段名
数据类型 大小 默认 许空 唯一 key 自 动
foreign 备注
增值
单据编号
相 关 连 的
票据标识
票据类型
金额
收款人
开票人
现 金 管 理
员
开票日期
收/付款日
期
完成状态
1
2
3
4
5
6
7
8
9
accountID
LinkID
Type
amount
receiverName
documentfiller
cashuser
fillerdate
paydate
nvarchar
int
nvarchar
nvarchar
nvarchar
nvarchar
nvarchar
datetime
10
onprocess
int
3.2 表的 SQL 语句创建
用户表
CREATE TABLE userTable (
userName nvarchar(50) NOT NULL PRIMARY KEY,
userPassword nvarchar(50) NOT NULL ,
baseInforFunction int NOT NULL ,
stockFunction int NOT NULL ,
stockManageFunction int NOT NULL ,
saleFunction int NOT NULL
)
商品分类:
CREATE TABLE goodsCategory (
categoryId int NOT NULL PRIMARY KEY,
parentId int NOT NULL ,
categoryName nvarchar(100) NOT NULL ,
categoryDescription ntext NOT NULL
)
商品表:
CREATE TABLE goods (
goodsBarCode nvarchar(20) NOT NULL PRIMARY KEY,
categoryId int NOT NULL ,
goodsName nvarchar(100) NOT NULL ,
goodsNickName nvarchar(50) NOT NULL ,
goodsAssistantName nvarchar(10) NOT NULL ,
goodsPYName nvarchar(10) NOT NULL ,
unit nvarchar(10) NOT NULL ,
specification nvarchar(50) NOT NULL ,
producer nvarchar(50) NOT NULL ,
upperLimit int NOT NULL ,
lowerLimit int NOT NULL ,
salePrice numeric(18, 2) NOT NULL ,
)
客户表:
CREATE TABLE customer (
customerName nvarchar(50) NOT NULL PRIMARY KEY,
customerZone nvarchar(20) NOT NULL ,
abbreviation nvarchar(20) NOT NULL ,
companyPhone nvarchar(15) NOT NULL ,
linkman nvarchar(20) NOT NULL ,
mobilePhone nvarchar(15) NOT NULL ,
fax nvarchar(15) NOT NULL ,
fixedPhone nvarchar(15) NOT NULL ,
address nvarchar(100) NOT NULL ,
zipCode nvarchar(10) NOT NULL ,
bankName nvarchar(50) NOT NULL ,
bankAccount nvarchar(50) NOT NULL ,
email nvarchar(20) NOT NULL ,
homesite nvarchar(20) NOT NULL ,
creditlimit numeric(18, 2) NOT NULL ,
)
供应商表:
CREATE TABLE supplier (
supplierName nvarchar(50) NOT NULL PRIMARY KEY,
supplierZone nvarchar(20) NOT NULL ,
abbreviation nvarchar(20) NOT NULL ,
companyPhone nvarchar(15) NOT NULL ,
linkman nvarchar (20) NOT NULL ,
mobilePhone nvarchar(15) NOT NULL ,
fax nvarchar(15) NOT NULL ,
fixedPhone nvarchar(15) NOT NULL ,
address nvarchar(100) NOT NULL ,
zipCode nvarchar(10) NOT NULL ,
bankName nvarchar(50) NOT NULL ,
bankAccount nvarchar(50) NOT NULL ,