药品进销存管理系统数据库设计.docx
- 文档编号:25506577
- 上传时间:2023-06-09
- 格式:DOCX
- 页数:24
- 大小:253.52KB
药品进销存管理系统数据库设计.docx
《药品进销存管理系统数据库设计.docx》由会员分享,可在线阅读,更多相关《药品进销存管理系统数据库设计.docx(24页珍藏版)》请在冰豆网上搜索。
药品进销存管理系统数据库设计
药品进销存管理系统数据库设计
一、基本分析
1.1数据库环境说明
采用的数据库系统:
mysql
编程工具:
MyEclipse8.0
数据库建模工具:
powerdesigner15
1.2基本功能分析
本设计要实现的是药品进销存管理系统,在设计该系统时,应尽可能贴近实际、便于用户操作.系统在实现上应该具有如下功能:
1.系统要提示用户必须输入正确的用户名和密码才能进入系统.
2.其功能模块图如下:
二、概念设计
在需求分析的基础上,我们对药品进销存管理系统有了一定的了解。
在分析设计概念模型时,首先找出模型所需的实体,然后找到各实体之间的关系,画出E—R模型图。
2.1、实体及其间的关系设计
对于药品进销存系统,我们设计了药品,客户,供货商,仓库,操作员四个实体。
结合实际情况及对数据库设计的方便,各个实体之间的关系如下:
供货商和药品之间应该是存在采购关联,它们之间为多对多关系。
仓库,药品之间存在存储关联,它们之间为多对多关系。
药品,客户之间存在销售关联,它们之间为多对多关系。
操作员,仓库之间存在药品入库和出库关联,它们之间为多对多关系。
2.2E-R模型图的设计
根据较为详细的需求分析,我们设计出了以下E-R模型图如下.
三、逻辑设计
逻辑结构设计的目的是将ER模型向关系模型转换,注意转换时关系的主键、外键的设置以保持原有的ER模型中实体与实体之间的关系,另外还应当进行规范化处理以消除数据冗余。
3.1ER图向关系模型的转化(主键标志为
存在冗余的关系,根我们把它拆分成两张或更多张表
3.2、E-R图转换成关系模型所遵循的原则
我们把E-R图转换成关系模型所遵循的原则:
1)每一个实体类型转换成一个关系模式。
如实体药品,客户,供货商,仓库,操作员,都可以转化成对应的一个关系模式。
关系模型的主键是E-R模型的标识符,其他属性一样。
2)一个联系可转化为一个关系模式,那么,两端关系的标识符及该联系属性为关系的属性,而关系的标识符为两端实体标识符的组合。
3)我们还涉及到了引用完整性约束,也就是外键的约束,外码的约束贯穿着我们设计的始终,它把我们建立的关系紧密的联系在了一起。
4)我们对关系模式进行了消除数据冗余的处理。
应符合第三范式,不允许出现传递依赖、冗余、异常等等。
在逻辑设计中形成了关系表后需要对关系作规范化处理,使每个关系表至少满足第三范式的要求。
对违反第三范式的关系我们进行了分析并作了相应的调整。
对各关系模式之间的数据依赖进行了极小化处理,消除了冗余。
对违反第三范式的关系模式进行了必要的分解和合并。
3.3表汇总
表名
功能说明
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
入库数量
rkje
float
入库金额
rkrq
datetime
入库日期
jbr
varbinary(10)
经办人
sts
varchar
(2)
库存状态
gysbh
varchar(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
列名
数据类型(精度范围)
空/非空
约束条件
名称
ypbh
varchar(50)
notnull
primarykey
药品编号
rksl
int
入库数量
xssl
int
销售数量
kcsl
int
库存数量
pdsl
int
盘点数量
pdrq
datetime
盘点日期
补充说明
表名
tb_username
列名
数据类型(精度范围)
空/非空
约束条件
名称
userid
varchar(20)
notnull
primarykey
用户ID
username
varchar(50)
用户名
password
varchar(50)
密码
passconf
varchar(50)
确认密码
补充说明
四、物理设计
4.1索引设计
关系属性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数据库中建立所有的数据表。
/*==============================================================*/
/*Table:
tb_buy_detaile*/
/*==============================================================*/
createtabletb_buy_detaile
(
rklshintnotnullauto_increment,
rkdjhvarchar(20),
ypbhvarchar(20),
rkslint,
rkdjfloat,
rkjefloat,
rkrqdatetime,
kcslint,
kcstschar(4),
primarykey(rklsh)
);
/*==============================================================*/
/*Table:
tb_buy_main*/
/*==============================================================*/
createtabletb_buy_main
(
rkdjhvarchar(20)notnull,
pzsint,
rkslint,
rkjefloat,
rkrqdatetime,
jbrvarbinary(10),
stsvarchar
(2),
gysbhvarchar(20),
primarykey(rkdjh)
);
/*==============================================================*/
/*Table:
tb_client_hkqk*/
/*==============================================================*/
createtabletb_client_hkqk
(
hklshvarchar(20)notnull,
xslshint,
khbhvarchar(20),
hkrqdatetime,
qkjedecimal(2,0),
skhjdecimal(2,0),
ljyedecimal(2,0),
primarykey(hklsh)
);
/*==============================================================*/
/*Table:
tb_client_jbqkb*/
/*==============================================================*/
createtabletb_client_jbqkb
(
khbhvarchar(20)notnull,
khmcvarchar(80),
pymvarchar(10),
khdzvarchar(80),
ssdqvarchar(40),
yzbmvarchar(10),
telvarchar(20),
lxrvarchar(10),
khyhvarchar(40),
khzhvarchar(20),
primarykey(khbh)
);
/*==============================================================*/
/*Table:
tb_gys_jbqkb*/
/*==============================================================*/
createtabletb_gys_jbqkb
(
gysbhvarchar(20)notnull,
gysmcvarchar(80),
pymvarchar(10),
gysdzvarchar(80),
ssdqvarchar(40),
yzbmvarchar(10),
telvarchar(20),
lxrvarchar(10),
khyhvarchar(40),
khzhvarchar(20),
primarykey(gysbh)
);
/*==============================================================*/
/*Table:
tb_medicine_jbqkb*/
/*==============================================================*/
createtabletb_medicine_jbqkb
(
ypbhvarchar(20)notnull,
yptmvarchar(20),
ypmcvarchar(80),
tymvarchar(20),
pymvarchar(10),
dwvarchar(4),
ggvarchar(20),
jxvarchar(10),
cdvarchar(20),
bzslint,
yxqvarchar(10),
zlbzvarchar(20),
jyfsvarchar(8),
phvarchar(10),
lsjgfloat,
jhjgfloat,
pfjgfloat,
yplbvarchar(20),
ylbhvarchar(10),
primarykey(ypbh)
);
/*==============================================================*/
/*Table:
tb_sell_detaile*/
/*==============================================================*/
createtabletb_sell_detaile
(
xslshintnotnullauto_increment,
ypbhvarchar(20),
xsdjhvarchar(20),
xsslint,
xsdjfloat,
xsjefloat,
xsrqdatetime,
thstschar(10),
primarykey(xslsh)
);
/*==============================================================*/
/*Table:
tb_sell_detaile_th*/
/*==============================================================*/
createtabletb_sell_detaile_th
(
xslshvarchar(50)notnull,
ypbhvarchar(50),
thslint,
thrqdatetime,
thjefloat,
jbrvarchar(50),
primarykey(xslsh)
);
/*==============================================================*/
/*Table:
tb_sell_main*/
/*==============================================================*/
createtabletb_sell_main
(
xsdjhvarchar(20)notnull,
khbhvarchar(20),
pzsint,
xszsint,
xsjefloat,
xszkfloat,
ysjefloat,
ssjefloat,
wsjefloat,
xsrqdatetime,
skfsvarchar(10),
jbrvarchar(10),
qsstsvarchar
(2),
hkjefloat,
hkrqdatetime,
primarykey(xsdjh)
);
/*=============================
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 药品 进销存 管理 系统 数据库 设计