1、药品进销存管理系统数据库设计药品进销存管理系统数据库设计一、基本分析1.1 数据库环境说明采用的数据库系统: mysql编程工具: MyEclipse8.0数据库建模工具: powerdesigner151.2 基本功能分析本设计要实现的是药品进销存管理系统 ,在设计该系统时 ,应尽可能贴近实际、便于用户操作 .系统在实现上应该具有如下功能 :1.系统要提示用户必须输入正确的用户名和密码才能进入系统 .2.其功能模块图如下:药品进销存管理系统系统登录 用户管理 基本信息 业务管理 业务查询 系统管理增加用户 药品情况 药品采购 基本信息 系统退出用户维护 客户情况 药品销售 入库明细 数据库备
2、份供应商情况 库存盘点 销售明细销售退货 回款信息客户回款二 、概念设计在需求分析的基础上, 我们对药品进销存管理系统有了一定的了解。 在分析设计概念模型时, 首先找出模型所需的实体, 然后找到各实体之间的关系, 画出E R 模型图。2.1 、实体及其间的关系设计对于药品进销存系统,我们设计了药品,客户,供货商,仓库,操作员四个实体。结合实际情况及对数据库设计的方便,各个实体之间的关系如下:供货商和药品之间应该是存在采购关联,它们之间为多对多关系。仓库,药品之间存在存储关联,它们之间为多对多关系。药品,客户之间存在销售关联,它们之间为多对多关系。操作员,仓库之间存在药品入库和出库关联,它们之间
3、为多对多关系。2.2 E-R 模型图的设计根据较为详细的需求分析 ,我们设计出了以下 E-R 模型图如下 .药品药品编号 Variable characters (20) 药品名称 Variable characters (80) 0,n单位 Variable characters (4)有效期 Variable characters (10)零售价格 FloatIdentifier_1 0,n0,n存储采购入库流水号码Variable characters (20) 入库单据号 Variable characters (20) 药品编号 Variable characters (20) 入库
4、数量 Integer入库单价 Float.0,n供应商供应商编号 Variable characters (20)供应商名称 Variable characters (80)拼音编码 Variable characters (10)供应商地址 Variable characters (80)Identifier_1 销售客户销售流水号码Variable characters (20)客户编号 Variable characters (20)销售单据号 Variable characters (20)0,n 客户名称Variable characters (80)药品编号Variable cha
5、racters (20)客户地址Variable characters (80)销售数量IntegerIdentifier_1销售单价Float.0,n仓库药品编号 Variable characters (50)入库数量Integer销售数量Integer0,n库存数量Integer盘点数量Integer盘点日期DateIdentifier_1出库0,n入库0,n0,n 用户用户ID Variable characters (20)用户姓名 Variable characters (50)用户口令 Variable characters (50)用户权限 Variable character
6、s (50)Identifier_1 三 、逻辑设计逻辑结构设计的目的是将 ER 模型向关系模型转换,注意转换时关系的主键、外键的设置以保持原有的 ER 模型中实体与实体之间的关系,另外还应当进行规范化处理以消除数据冗余。3.1 ER 图向关系模型的转化 (主键标志为 )存在冗余的关系,根我们把它拆分成两张或更多张表tb_medicine_jbqkbypbh varchar(20) yptm varchar(20)ypmc varchar(80)tym varchar(20)pym varchar(10)dw varchar(4)ggvarchar(20)jx varchar(10) cd v
7、archar(20) bzsl intyxq varchar(10) zlbz varchar(20) jyfs varchar(8) ph varchar(10) lsjg floatjhjg float pfjg floatyplb varchar(20) ylbh varchar(10)3.2 、 E R 图转换成关系模型所遵循的原则我们把 E R 图转换成关系模型所遵循的原则:1 ) 每一个实体类型转换成一个关系模式。如实体药品,客户,供货商,仓库,操作员,都可以转化成对应的一个关系模式。关系模型的主键是 E R模型的标识符,其他属性一样。2 ) 一个联系可转化为一个关系模式,那么,两
8、端关系的标识符及该联系属性为关系的属性,而关系的标识符为两端实体标识符的组合。3)我们还涉及到了引用完整性约束,也就是外键的约束,外码的约束贯穿着我们设计的始终,它把我们建立的关系紧密的联系在了一起。4 ) 我们对关系模式进行了消除数据冗余的处理。应符合第三范式,不允许出现传递依赖、冗余、异常等等。在逻辑设计中形成了关系表后需要对关系作规范化处理, 使每个关系表至少满足第三范式的要求。 对违反第三范式的关系我们进行了分析并作了相应的调整。 对各关系模式之间的数据依赖进行了极小化处理,消除了冗余。对违反第三范式的关系模式进行了必要的分解和合并。3.3 表汇总表名 功能说明tb_buy_detai
9、le药品采购明细表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列名数据类型(精度范围)空 /非空约束条件名称rklshintnot nullprimary key入库流水号码rkdjhvarchar
10、(20)入库单据号ypbhvarchar(20)药品编号rkslint入库数量rkdjfloat入库单价入库金额rkje float入库日期rkrq datetime库存数量kcsl int库存状态kcsts char(4)补充说明表名tb_buy_main列名数据类型(精度范围)空 /非空约束条件名称rkdjhvarchar(20)not nullprimary key入库单据号pzsint品种数量rkslint入库数量rkjefloat入库金额rkrqdatetime入库日期jbrvarbinary(10)经办人stsvarchar(2)库存状态gysbhvarchar(20)供应商编号补
11、充说明表名tb_client_hkqk列名数据类型(精度范围)空 /非空约束条件名称hklshvarchar(20)not nullprimary key回款流水号xslshint销售流水号客户编号khbh varchar(20)回款日期hkrq datetime欠款金额qkje decimal(2)实收金额skhj decimal(2)累计余额ljye decimal(2)补充说明表名tb_client_jbqkb列名数据类型(精度范围)空 /非空约束条件名称khbhvarchar(20)not nullprimary key客户编号khmcvarchar(80)客户名称pymvarchar
12、(10)拼音编码khdzvarchar(80)客户地址ssdqvarchar(40)所属地区yzbmvarchar(10)邮政编码telvarchar(20)联系电话lxrvarchar(10)联系人khyhvarchar(40)开户银行khzhvarchar(20)开户账号补充说明表名tb_gys_jbqkb列名 数据类型(精度范围) 空 / 非空 约束条件 名称供应商编号gysbh varchar(20) not null primary key供应商名称gysmc varchar(80)拼音编码pym varchar(10)供应商地址gysdz varchar(80)所属地区ssdq v
13、archar(40)邮政编码yzbm varchar(10)联系电话tel varchar(20)联系人lxr varchar(10)开户银行khyh varchar(40)开户账号khzh varchar(20)补充说明表名tb_medicine_jbqkb列名数据类型(精度范围)空 /非空约束条件名称ypbhvarchar(20)not nullprimary key药品编号yptmvarchar(20)药品条码ypmcvarchar(80)药品名称tymvarchar(20)通用名称pymvarchar(10)拼音码dwvarchar(4)单位ggvarchar(20)规格剂型jx va
14、rchar(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列名数据类型(精度范围)空 /非空约束条件名称xslshintnot nullprimary key销售流水号码ypbhvarchar(20)药品编号xsdjhvarch
15、ar(20)销售单据号xsslint销售数量xsdjfloat销售单价xsjefloat销售金额销售日期xsrq datetime退货状态thsts char(10)补充说明表名tb_sell_detaile_th列名数据类型(精度范围)空 /非空约束条件名称xslshvarchar(50)not nullprimary key销售流水号ypbhvarchar(50)药品编号thslint退库数量thrqdatetime退货日期thjefloat退货金额jbrvarchar(50)经办人补充说明表名tb_sell_main列名数据类型(精度范围)空 /非空约束条件名称xsdjhvarchar(
16、20)not nullprimary key销售单据号khbhvarchar(20)客户编号pzsint品种数量xszsint销售总数xsjefloat销售金额xszkfloat销售折扣应收金额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)not nul
17、lprimary key药品编号rkslint入库数量xsslint销售数量kcslint库存数量pdslint盘点数量pdrqdatetime盘点日期补充说明表名tb_username列名 数据类型(精度范围) 空 / 非空 约束条件 名称用户 IDuserid varchar(20) not null primary key用户名username varchar(50)密码password varchar(50)确认密码passconf varchar(50)补充说明四、 物理设计4.1 索引设计关系属性 A 上的索引是一种数据结构,它可以提高查找在属性 A 上具有某个特定值的元组的效率。
18、 索引通常有助于包含有属性 A 和常量的查询, 但当关系变化很大时, 通过扫描关系中所有的元组来找出那些匹配给定条件的元组的操作方式代价太高。故我们设计索引需要对下两方面折中选择。首先,对某个属性使用索引能极大的提高对该属性值的检索效率,使用该属性时,还可以加快连接。其次,对关系上某个属性的索引会使得对关系的插入、删除、修改变得复杂和费时。因此经过分析本系统的功能和需求可知,本系统的药品表中的记录可能相当的庞大, 而且基于药品名称或编码的查询和修改相当的频繁, 加之在数据库更新和维护过程中对供货商的更新和查询也比较的频繁, 而且供货商的数量也可能比较大, 综合考量后应为本系统建立如下 3 个索
19、引,以达到操作的便捷和系统功能的优化。各表中建立索引的表项:create unique index khbh_index on tb_client_jbqkb(khbh);create unique index gysbh_index on tb_gys_jbqkb(gysbh);create unique index ypbh_index on tb_medicine_jbqkb(ypbh);create unique index userid_index on tb_username(userid);五、安全性设计角色与权限设立两种级别用户 Administrator,Superuser.
20、 对每种类型的用户设置不同的权限 .Administrator: 提供对系统的实际操作功能 (适于仓库管理人员 )Superuser: 拥有系统的一切权限 (适于总经理 ,系统维护管理人员 )六、用 SQL 实现设计经数据库建模后,由模型导出数据库的 SQL 语言,将 SQL 语言导入到 MySQL 数据库中建立所有的数据表。/*=*/* Table: tb_buy_detaile */*=*/create table tb_buy_detaile(rklshrkdjhypbhrkslrkdjrkjerkrqkcslkcstsint not null auto_increment,varcha
21、r(20),varchar(20),int,float,float,datetime,int,char(4),primary key (rklsh);/*=*/* Table: tb_buy_main */*=*/create table tb_buy_main(rkdjh varchar(20) not null,pzs int,rksl int,rkje float,rkrq datetime,jbr varbinary(10),sts varchar(2),gysbh varchar(20),primary key (rkdjh);/*=*/* Table: tb_client_hkqk
22、 */*=*/create table tb_client_hkqk(hklshvarchar(20) not null,xslshint ,khbhvarchar(20),hkrqdatetime,qkjedecimal(2,0),skhjdecimal(2,0),ljyedecimal(2,0),primary key (hklsh);/*=*/* Table: tb_client_jbqkb */*=*/create table tb_client_jbqkb(khbh varchar(20) not null,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),primary key (khbh);/*=*/* Tab
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1