《药品进销存管理系统数据库设计(共13页).doc》由会员分享,可在线阅读,更多相关《药品进销存管理系统数据库设计(共13页).doc(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上药品进销存管理系统数据库设计一、基本分析1.1数据库环境说明采用的数据库系统:mysql编程工具:MyEclipse8.0数据库建模工具:powerdesigner151.2 基本功能分析本设计要实现的是药品进销存管理系统,在设计该系统时,应尽可能贴近实际、便于用户操作.系统在实现上应该具有如下功能:1.系统要提示用户必须输入正确的用户名和密码才能进入系统.2. 其功能模块图如下:药品进销存管理系统系统登录用户管理基本信息业务管理业务查询系统管理增加用户用户维护药品情况客户情况供应商情况药品采购药品销售库存盘点销售退货客户回款基本信息入库明细销售明细回款信息系统退出数
2、据库备份二 、概念设计在需求分析的基础上,我们对药品进销存管理系统有了一定的了解。在分析设计概念模型时,首先找出模型所需的实体,然后找到各实体之间的关系,画出ER模型图。2.1、实体及其间的关系设计对于药品进销存系统,我们设计了药品,客户,供货商,仓库,操作员四个实体。结合实际情况及对数据库设计的方便,各个实体之间的关系如下:供货商和药品之间应该是存在采购关联,它们之间为多对多关系。仓库,药品之间存在存储关联,它们之间为多对多关系。药品,客户之间存在销售关联,它们之间为多对多关系。操作员,仓库之间存在药品入库和出库关联,它们之间为多对多关系。2.2 E-R模型图的设计根据较为详细的需求分析,我
3、们设计出了以下E-R模型图如下.三 、逻辑设计逻辑结构设计的目的是将ER模型向关系模型转换,注意转换时关系的主键、外键的设置以保持原有的ER模型中实体与实体之间的关系,另外还应当进行规范化处理以消除数据冗余。3.1 ER图向关系模型的转化(主键标志为)存在冗余的关系,根我们把它拆分成两张或更多张表 3.2、ER图转换成关系模型所遵循的原则我们把ER图转换成关系模型所遵循的原则:1) 每一个实体类型转换成一个关系模式。如实体药品,客户,供货商,仓库,操作员,都可以转化成对应的一个关系模式。关系模型的主键是ER模型的标识符,其他属性一样。2) 一个联系可转化为一个关系模式,那么,两端关系的标识符及
4、该联系属性为关系的属性,而关系的标识符为两端实体标识符的组合。3)我们还涉及到了引用完整性约束,也就是外键的约束,外码的约束贯穿着我们设计的始终,它把我们建立的关系紧密的联系在了一起。4) 我们对关系模式进行了消除数据冗余的处理。应符合第三范式,不允许出现传递依赖、冗余、异常等等。在逻辑设计中形成了关系表后需要对关系作规范化处理,使每个关系表至少满足第三范式的要求。对违反第三范式的关系我们进行了分析并作了相应的调整。对各关系模式之间的数据依赖进行了极小化处理,消除了冗余。对违反第三范式的关系模式进行了必要的分解和合并。3.3 表汇总表名功能说明tb_buy_detaile药品采购明细表tb_b
5、uy_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 not nullprimary key入库流水号码 rkdjh varchar(2
6、0)入库单据号 ypbh varchar(20)药品编号 rksl int入库数量 rkdj float入库单价 rkje float入库金额 rkrq datetime入库日期 kcsl int库存数量 kcsts char(4)库存状态补充说明表名tb_buy_main 列名数据类型(精度范围)空/非空约束条件名称 rkdjh varchar(20) not nullprimary key入库单据号 pzs int品种数量 rksl int入库数量 rkje float入库金额 rkrq datetime入库日期 jbr varbinary(10)经办人 sts varchar(2)库存状
7、态 gysbh varchar(20)供应商编号补充说明表名tb_client_hkqk列名数据类型(精度范围)空/非空约束条件名称 hklshvarchar(20)not nullprimary key回款流水号 xslsh int销售流水号 khbh varchar(20)客户编号 hkrq datetime回款日期 qkje decimal(2)欠款金额 skhj decimal(2)实收金额 ljye decimal(2)累计余额补充说明表名tb_client_jbqkb列名数据类型(精度范围)空/非空约束条件名称 khbh varchar(20)not nullprimary key
8、客户编号 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)not nullprimary key供应商编号 gysmc varchar(80)供应商名称 pym v
9、archar(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)not nullprimary key药品编号 yptm varchar(20)药品条码 ypmc varchar(80)药品名称 tym varchar
10、(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 列名数据类
11、型(精度范围)空/非空约束条件名称 xslsh intnot null primary key销售流水号码 ypbh varchar(20)药品编号 xsdjh varchar(20)销售单据号 xssl int销售数量 xsdj float销售单价 xsje float销售金额 xsrq datetime销售日期 thsts char(10)退货状态补充说明表名tb_sell_detaile_th 列名数据类型(精度范围)空/非空约束条件名称 xslsh varchar(50) not nullprimary key销售流水号 ypbh varchar(50)药品编号 thsl int退库数
12、量 thrq datetime退货日期 thje float退货金额 jbr varchar(50)经办人补充说明表名tb_sell_main列名数据类型(精度范围)空/非空约束条件名称 xsdjh varchar(20) not nullprimary key销售单据号 khbh varchar(20)客户编号 pzs int品种数量 xszs int销售总数 xsje float销售金额 xszk float销售折扣 ysje float应收金额 ssje float实收金额 wsje float未收金额 xsrq datetime销售日期 skfs varchar(10)收款方式 jbr
13、 varchar(10)经办人 qssts varchar(2)清算状态 hkje float回款金额 hkrq datetime回款日期补充说明表名tb_stock 列名数据类型(精度范围)空/非空约束条件名称 ypbh varchar(50)not nullprimary key药品编号 rksl int入库数量 xssl int销售数量 kcsl int库存数量 pdsl int盘点数量 pdrq datetime盘点日期补充说明表名tb_username列名数据类型(精度范围)空/非空约束条件名称 userid varchar(20) not nullprimary key用户ID u
14、sername varchar(50)用户名 password varchar(50)密码 passconf varchar(50)确认密码补充说明四、 物理设计4.1 索引设计关系属性A上的索引是一种数据结构,它可以提高查找在属性A上具有某个特定值的元组的效率。索引通常有助于包含有属性A和常量的查询,但当关系变化很大时,通过扫描关系中所有的元组来找出那些匹配给定条件的元组的操作方式代价太高。故我们设计索引需要对下两方面折中选择。首先,对某个属性使用索引能极大的提高对该属性值的检索效率,使用该属性时,还可以加快连接。其次,对关系上某个属性的索引会使得对关系的插入、删除、修改变得复杂和费时。因此
15、经过分析本系统的功能和需求可知,本系统的药品表中的记录可能相当的庞大,而且基于药品名称或编码的查询和修改相当的频繁,加之在数据库更新和维护过程中对供货商的更新和查询也比较的频繁,而且供货商的数量也可能比较大,综合考量后应为本系统建立如下3个索引,以达到操作的便捷和系统功能的优化。各表中建立索引的表项: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_m
16、edicine_jbqkb(ypbh);create unique index userid_index on tb_username(userid);五、安全性设计角色与权限设立两种级别用户Administrator,Superuser.对每种类型的用户设置不同的权限.Administrator:提供对系统的实际操作功能(适于仓库管理人员)Superuser:拥有系统的一切权限(适于总经理,系统维护管理人员)六、用SQL实现设计经数据库建模后,由模型导出数据库的SQL语言,将SQL语言导入到MySQL数据库中建立所有的数据表。/*=*/* Table: tb_buy_detaile */*=
17、*/create table tb_buy_detaile( rklsh int not null auto_increment, rkdjh varchar(20), ypbh varchar(20), rksl int, rkdj float, rkje float, rkrq datetime, kcsl int, kcsts char(4), primary key (rklsh);/*=*/* Table: tb_buy_main */*=*/create table tb_buy_main( rkdjh varchar(20) not null, pzs int, rksl int
18、, rkje float, rkrq datetime, jbr varbinary(10), sts varchar(2), gysbh varchar(20), primary key (rkdjh);/*=*/* Table: tb_client_hkqk */*=*/create table tb_client_hkqk( hklsh varchar(20) not null, xslsh int , khbh varchar(20), hkrq datetime, qkje decimal(2,0), skhj decimal(2,0), ljye decimal(2,0), pri
19、mary 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);/*=*/* Table
20、: tb_gys_jbqkb */*=*/create table tb_gys_jbqkb( gysbh varchar(20) not null, 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), primary key (gysbh);/*=*/* Table: tb_medicine_jbqkb */*=*/creat
21、e table tb_medicine_jbqkb( ypbh varchar(20) not null, 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,
22、 yplb varchar(20), ylbh varchar(10), primary key (ypbh);/*=*/* Table: tb_sell_detaile */*=*/create table tb_sell_detaile( xslsh int not null auto_increment, ypbh varchar(20), xsdjh varchar(20), xssl int, xsdj float, xsje float, xsrq datetime, thsts char(10), primary key (xslsh);/*=*/* Table: tb_sell
23、_detaile_th */*=*/create table tb_sell_detaile_th( xslsh varchar(50) not null, ypbh varchar(50), thsl int, thrq datetime, thje float, jbr varchar(50), primary key (xslsh);/*=*/* Table: tb_sell_main */*=*/create table tb_sell_main( xsdjh varchar(20) not null, khbh varchar(20), pzs int, xszs int, xsje
24、 float, xszk float, ysje float, ssje float, wsje float, xsrq datetime, skfs varchar(10), jbr varchar(10), qssts varchar(2), hkje float, hkrq datetime, primary key (xsdjh);/*=*/* Table: tb_stock */*=*/create table tb_stock( ypbh varchar(50) not null, rksl int, xssl int, kcsl int, pdsl int, pdrq datetime, primary key (ypbh);/*=*/* Table: tb_username */*=*/create table tb_username( userid varchar(20) not null, username varchar(50), password varchar(50), passconf varchar(50), primary key (userid);在MySQL数据库中建立各表项:专心-专注-专业