药品进销存管理系统数据库设计说明.docx
《药品进销存管理系统数据库设计说明.docx》由会员分享,可在线阅读,更多相关《药品进销存管理系统数据库设计说明.docx(28页珍藏版)》请在冰豆网上搜索。
![药品进销存管理系统数据库设计说明.docx](https://file1.bdocx.com/fileroot1/2023-1/30/fe441b3f-d567-4511-890c-6487bb3d12f6/fe441b3f-d567-4511-890c-6487bb3d12f61.gif)
药品进销存管理系统数据库设计说明
.
药品进销存管理系统数据库设计
一、基本剖析
1.1数据库环境说明
采纳的数据库系统:
mysql
编程工具:
数据库建模工具:
powerdesigner15
基本功能剖析
本设计要实现的是药品进销存管理系统,在设计该系统时,应尽可能切近实
际、便于用户操作.系统在实现上应当拥有以下功能:
1.系统要提示用户一定输入正确的用户名和密码才能进入系统.
2.其功能模块图以下:
药品进销存管理系统
系统登录用户管理基本信息业务管理业务查问系统管理
增添用户药品状况药品采买基本信息系统退出
用户保护客户状况药品销售入库明细数据库备份
供给商状况库存清点销售明细
销售退货回款信息
客户回款
二、观点设计
在需求剖析的基础上,我们对药品进销存管理系统有了必定的认识。
在剖析
设计观点模型时,第一找出模型所需的实体,而后找到各实体之间的关系,画出
E—R模型图。
2.1、实体及此间的关系设计
...
.
关于药品进销存系统,我们设计了药品,客户,供货商,库房,操作员四个
实体。
联合实质状况及对数据库设计的方便,各个实体之间的关系以下:
供货商和药品之间应当是存在采买关系,它们之间为多对多关系。
库房,药品之间存在储存关系,它们之间为多对多关系。
药品,客户之间存在销售关系,它们之间为多对多关系。
操作员,库房之间存在药品入库和出库关系,它们之间为多对多关系。
2.2E-R模型图的设计
依据较为详尽的需求剖析,我们设计出了以下E-R模型图以下.
药品
药品编号Variablecharacters(20)
药品名称Variablecharacters(80)0,n
单位Variablecharacters(4)
有效期Variablecharacters(10)
零售价钱Float
Identifier_1
0,n
0,n
储存
采买
入库流水号码Variablecharacters(20)入库票据号Variablecharacters(20)药品编号Variablecharacters(20)入库数目Integer
入库单价Float
...
0,n
供给商
供给商编号Variablecharacters(20)
供给商名称Variablecharacters(80)
拼音编码Variablecharacters(10)
供给商地点Variablecharacters(80)
Identifier_1
销售
客户
销售流水号码Variablecharacters(20)
客户编号Variablecharacters(20)
销售票据号Variablecharacters(20)
0,n客户名称
Variablecharacters(80)
药品编号
Variablecharacters(20)
客户地点
Variablecharacters(80)
销售数目
Integer
Identifier_1
销售单价
Float
...
...
0,n
库房
药品编号Variablecharacters(50)
入库数目
Integer
销售数目
Integer
0,n
库存数目
Integer
清点数目
Integer
清点日期
Date
Identifier_1
出库
0,n
入库
0,n
0,n用户
用户IDVariablecharacters(20)
用户姓名Variablecharacters(50)
用户口令Variablecharacters(50)
用户权限Variablecharacters(50)
Identifier_1
三、逻辑设计
逻辑构造设计的目的是将ER模型向关系模型变换,注意变换时关系的主键、
外键的设置以保持原有的ER模型中实体与实体之间的关系,此外还应当进行规
化办理以除去数据冗余。
3.1ER图向关系模型的转变(主键标记为)
...
.
存在冗余的关系,根我们把它拆分红两或更多表
tb_buy_detaile
rklsh
int
rkdjh
varchar(20)
ypbh
varchar(20)
rksl
int
rkdj
float
rkje
float
rkrq
datetime
kcsl
int
kcsts
char(4)
tb_gys_jbqkb
gysbh
varchar(20)
gysmc
varchar(80)
pym
varchar(10)
gusdz
varchar(80)
ssdq
varchar(40)
yzbm
varchar(10)
tel
varchar(20)
lxr
varchar(10)
khyh
varchar(40)
khzh
varchar(20)
tb_sell_main
xsdjh
varchar(20)
khbh
varchar(20)
pzs
int
xszs
int
xsje
float
xszk
float
ysje
float
ssje
float
wsje
float
xsrq
datetime
skfs
varchar(10)
jbr
varchar(10)
qssts
varchar
(2)
hkje
float
hkrq
datetime
tb_client_jbqkb
tb_buy_main
khbh
varchar(20)
tb_client_hkqk
khmc
varchar(80)
rkdjh
varchar(20)
pym
varchar(10)
pzs
int
hklsh
varchar(20)
khdz
varchar(80)
rksl
int
xslsh
int
ssdq
varchar(40)
rkje
float
khbh
varchar(20)
yzbm
varchar(10)
rkrq
datetime
hkrq
datetime
tel
varchar(20)
jbr
varbinary(10)
qkje
decimal(2,0)
lxr
varchar(10)
sts
varchar
(2)
skhj
decimal(2,0)
khyh
varchar(40)
gysbh
varchar(20)
ljye
decimal(2,0)
khzh
varchar(20)
tb_medicine_jbqkb
ypbh
varchar(20)
yptm
varchar(20)
ypmc
varchar(80)
tym
varchar(20)
pym
varchar(10)
dw
varchar(4)
gg
varchar(20)
jx
varchar(10)
cd
varchar(20)
bzsl
int
tb_sell_detaile
yxq
varchar(10)
zlbz
varchar(20)
xslsh
int
tb_sell_detaile_th
jyfs
varchar(8)
ypbh
varchar(20)
ph
varchar(10)
xsdjh
varchar(20)
xslsh
varchar(50)
lsjg
float
xssl
int
ypbh
varchar(50)
jhjg
float
xsdj
float
thsl
int
pfjg
float
xsje
float
thrq
datetime
yplb
varchar(20)
xsrq
datetime
thje
float
ylbh
varchar(10)
thsts
char(10)
jbr
varchar(50)
tb_stock
ypbh
varchar(50)
tb_username
rksl
int
xssl
int
userid
varchar(20)
kcsl
int
username
varchar(50)
pdsl
int
password
varchar(50)
pdrq
datetime
passconf
varchar(50)
3.2、E-R图变换成关系模型所按照的原则
我们把E-R图变换成关系模型所按照的原则:
1)每一个实体种类变换成一个关系模式。
照实体药品,客户,供货商,
库房,操作员,都能够转变成对应的一个关系模式。
关系模型的主键是E-R
模型的表记符,其余属性同样。
2)一个联系可转变为一个关系模式,那么,两头关系的表记符及该联系
属性为关系的属性,而关系的表记符为两头实体表记符的组合。
3)我们还波及到了引用完好性拘束,也就是外键的拘束,外码的拘束贯衣着我们设计的一直,它把我们成立的关系密切的联系在了一同。
4)我们对关系模式进行了除去数据冗余的办理。
应切合第三式,不一样意
出现传达依靠、冗余、异样等等。
在逻辑设计中形成了关系表后需要对关系作
...
.
规化办理,使每个关系表起码知足第三式的要求。
对违犯第三式的关系我们进
行了剖析并作了相应的调整。
对各关系模式之间的数据依靠进行了极小化处
理,除去了冗余。
对违犯第三式的关系模式进行了必需的分解和归并。
表汇总
表名
功能说明
tb_buy_detaile
药品采买明细表
tb_buy_main
药品采买主表
tb_client_hkqk
客户回款状况表
tb_client_jbqkb
客户基本状况表
tb_gys_jbqkb
供给商基本状况表
tb_medicine_jbqkb
药品基本状况表
tb_sell_detaile
药品销售明细表
tb_sell_detaile_th
药品销售退货表
tb_sell_main
药品销售主表
tb_stock
药品库存清点信息表
tb_username
操作员信息表
各表信息
表名
tb_buy_detaile
列名
数据种类(精度围)
空/非空
拘束条件
rklsh
int
notnull
primarykey
rkdjh
varchar(20)
ypbh
varchar(20)
rksl
int
rkdj
float
rkje
float
rkrq
datetime
kcsl
int
kcsts
char(4)
增补说明
表名
tb_buy_main
列名
数据种类(精度围)
空/非空
拘束条件
rkdjh
varchar(20)
notnull
primarykey
pzs
int
rksl
int
rkjefloat
rkrqdatetime
jbrvarbinary(10)
stsvarchar
(2)
gysbhvarchar(20)
名称
入库流水
入库票据号
药品编号
入库数目
入库单价
入库金额
入库日期
库存数目
库存状态
名称
入库票据号
品种数目
入库数目
入库金额
入库日期
经办人
库存状态
供给商编号
...
.
增补说明
表名
tb_client_hkqk
列名
数据种类(精度围)
空/非空
拘束条件
名称
hklsh
varchar(20)
notnull
primarykey
回款流水号
xslsh
int
销售流水号
khbh
varchar(20)
客户编号
hkrq
datetime
回款日期
qkje
decimal
(2)
欠款金额
skhj
decimal
(2)
实收金额
ljye
decimal
(2)
累计余额
增补说明
表名
tb_client_jbqkb
列名
数据种类(精度围)
空/非空
拘束条件
名称
khbh
varchar(20)
notnull
primarykey
客户编号
khmc
varchar(80)
客户名称
pym
varchar(10)
拼音编码
khdz
varchar(80)
客户地点
ssdq
varchar(40)
所属地域
yzbm
varchar(10)
邮政编码
tel
varchar(20)
联系
lxr
varchar(10)
联系人
khyh
varchar(40)
开户银行
khzh
varchar(20)
开户账号
增补说明
表名
tb_gys_jbqkb
列名
数据种类(精度围)
空/非空
拘束条件
名称
gysbh
varchar(20)
notnull
primarykey
供给商编号
gysmc
varchar(80)
供给商名称
pym
varchar(10)
拼音编码
gysdz
varchar(80)
供给商地点
ssdq
varchar(40)
所属地域
yzbm
varchar(10)
邮政编码
tel
varchar(20)
联系
lxr
varchar(10)
联系人
khyh
varchar(40)
开户银行
khzh
varchar(20)
开户账号
增补说明
表名tb_medicine_jbqkb
列名数据种类(精度围)空/非空拘束条件名称
...
.
ypbh
varchar(20)
notnull
primarykey
药品编号
yptm
varchar(20)
药品条码
ypmc
varchar(80)
药品名称
tym
varchar(20)
通用名称
pym
varchar(10)
拼音码
dw
varchar(4)
单位
gg
varchar(20)
规格
jx
varchar(10)
剂型
cd
varchar(20)
产地
bzsl
int
包装数目
yxq
varchar(10)
有效期
zlbz
varchar(20)
质量标准
jyfs
varchar(8)
经营方式
ph
varchar(10)
批号
lsjg
float
零售价钱
jhjg
float
进货价钱
pfjg
float
批发价钱
yplb
varchar(20)
药品类名
ylbh
varchar(10)
医疗保险编号
增补说明
表名
tb_sell_detaile
列名
数据种类(精度围)
空/非空
拘束条件
名称
xslsh
int
notnull
primarykey
销售流水
ypbh
varchar(20)
药品编号
xsdjh
varchar(20)
销售票据号
xssl
int
销售数目
xsdj
float
销售单价
xsje
float
销售金额
xsrq
datetime
销售日期
thsts
char(10)
退货状态
增补说明
表名
tb_sell_detaile_th
列名
数据种类(精度围)
空/非空
拘束条件
名称
xslsh
varchar(50)
notnull
primarykey
销售流水号
ypbh
varchar(50)
药品编号
thsl
int
退库数目
thrq
datetime
退货日期
thje
float
退货金额
jbr
varchar(50)
经办人
增补说明
...
.
表名
tb_sell_main
列名
数据种类(精度围)
空/非空
拘束条件
xsdjh
varchar(20)
notnull
primarykey
khbh
varchar(20)
pzs
int
xszs
int
xsje
float
xszk
float
ysje
float
ssje
float
wsje
float
xsrq
datetime
skfs
varchar(10)
jbr
varchar(10)
qssts
varchar
(2)
hkje
float
hkrq
datetime
增补说明
表名tb_stock
列名数据种类(精度围)空/非空拘束条件
ypbhvarchar(50)notnullprimarykey
rkslint
xsslint
kcslint
pdslint
pdrqdatetime
增补说明
表名tb_username
列名数据种类(精度围)空/非空拘束条件
useridvarchar(20)notnullprimarykey
usernamevarchar(50)
passwordvarchar(50)
passconfvarchar(50)
增补说明
四、物理设计
索引设计
名称
销售票据号
客户编号
品种数目
销售总数
销售金额
销售折扣
应收金额
实收金额
未收金额
销售日期
收款方式
经办人
清理状态
回款金额
回款日期
名称
药品编号
入库数目
销售数目
库存数目
清点数目
清点日期
名称
用户ID
用户名
密码
确认密码
...
.
关系属性A上的索引是一种数据构造,它能够提升查找在属性A上拥有某个特定值的元组的效率。
索引往常有助于包括有属性A和常量的查问,但当关系变化很大时,经过扫描关系中全部的元组来找出那些般配给定条件的元组的操作方式代价太高。
故我们设计索引需要对下双方面折中选择。
第一,对某个属性使用索引能极大的提升对该属性值的检索效率,使用该属性时,还能够加速连结。
其次,对关系上某个属性的索引会使得对关系的插入、删除、改正变得复杂和费时。
所以经过剖析本系统的功能和需求可知,本系统的药品表中的记录可能相
当的宏大,并且鉴于药品名称或编码的查问和改正相当的屡次,加之在数据库更新和保护过程中对供货商的更新和查问也比较的屡次,并且供货商的数目也可能比较大,综合考量后应为本系统成立以下3个索引,以达到操作的便利和系统功能的优化。
各表中成立索引的表项:
createuniqueindexkhbh_indexontb_client_jbqkb(khbh);createuniqueindexgysbh_indexontb_gys_jbqkb(gysbh);createuniqueindexypbh_indexontb_medicine_jbqkb(ypbh);createuniqueindexuserid_indexontb_username(userid);
五、安全性设计
角色与权限
建立两种级别用户Administrator,Superuser.对每种种类的用户设置不一样的权限.
Administrator:
供给对系统的实质操作功能(适于库房管理人员)
Superuser:
拥有系统的全部权限(适于总经理,系统保护管理人员)
六、用SQL实现设计
经数据库建模后,由模型导出数据库的SQL语言,将SQL语言导入到MySQL数据库中
成立全部的数据表。
/*===========================