数据库实习医药销售管理系统论文.docx
信息工程学院数据库课程设计论文题 目:医药销售数据库设计学 号:专业班级:信管103姓 名:指导老师:杨丽丽 完成日期:2012-7-6引言- 1 -1需求分析- 1 -2数据库结构设计- 4 -2.1 概念设计- 4 -2.1.1 分E-R图建立- 5 -2.2 逻辑设计- 7 -2.2.1 建立关系模式- 8 -2.2.2 关系模式规范化处理- 9 -2.2.3 用户子模式建立- 9 -2.2.4 关系模式逻辑结构定义- 9 -3 数据库物理设计- 10 -3.1索引- 10 -3.2触发器- 10 -3.3存储过程- 10 -4数据库实施和测试- 11 -4.1 数据库实施- 11 -4.1.1 数据库及数据库对象建立- 11 -4.1.2 数据入库- 11 -4.2 数据库测试- 11 -5总结- 12 -6附录- 12 -6.1 附录一 数据字典- 12 -6.1.1 数据项- 12 -6.1.2数据结构- 14 -6.1.3数据流- 15 -6.1.4处理逻辑- 17 -6.1.5 数据存储- 18 -6.2 附录二 关系表- 19 -6.3 附录三 Sql语句- 23 -6.4 附录四 Sql语句验证- 31 -6.5附录五 Oracle语句- 36 -6.6 附录六Oracle语句验证- 41 -医药销售数据库设计学生姓名 张文萍(信息工程学院信息管理和信息系统10级3班)摘要 目前中小型药店营业规模不断扩大,药品数量和种类不断增加。对于许多仍处于人工管理阶段药店来说,管理也越来越复杂。如果以药店工作人员增加来实现药品管理,虽然能使工作变得方便起来,但是这样带来更大经济开销,对于中小型药店来说要解决实际问题并不是很合适。开发药品进销存管理系统可以很大程度上方便管理人员对药品管理,实现药品管理高效化和统一化。为便于管理方便性和可行性。根据现阶段应用需求开发目标设计药品进销存数据库管理系统。实现药品采购,库存和销售管理功能,完成对药品从采购到销售流水作业数据管理功能。关键字:药品;数据库设计;药品采购入库销引言当今社会不断进步,医药超市以及便民药店等药品销售服务机构已经走入了人们生活,成为了人们生活必不可少一部分,在很大程度上方便了人们生活。为了在更大程度上满足人们需求,许多药店规模进一步扩大,管理也进一步改善。逐步走向 市场销售成熟化,管理成熟化。而方便有效管理手段已经成为了所有管理部门管理有力工具,经营和运行整个药店药品进销存工作。传统管理手段在今天高速发展时代中,已经不再体现人工管理优势了,繁复和大量手工记录和计算给管理带来了更多重复工作,如果能将复杂各类管理过程封装在一个操作中,执行每个管理步骤时使用相对应功能,那就能给管理者带来更大便捷。数据库设计目标就是为用户和各种应用系统提供一个信息基础设施和高效运行环境。随着科学技术不断提高, 计算机科学日渐成熟, 其强大功能已为人们深刻认识, 它已进入人类社会各个领域并发挥着越来越重要作用.作为计算机应用一部分, 使用计算机对物资信息进行管理, 具有比手工管理所无法比拟优点.例如:检索迅速,查找方便,可靠性高,存储量大等。这些优点能够极大地提高人事劳资管理效率,也是企业科学化,正规化管理重要条件。针对典型进销存管理系统,以医药销售行业药品进销存业务为载体,设计药品进销存管理系统。以满足药店管理者对各类档案数据管理,以现代化思维模式去经营。1需求分析需求分析阶段就是分析用户需求,这也是设计数据库起点。药品进销存管理系统是中型药店管理人员方便药店作业各个流程工作为目。在设计需求分析这个阶段,主要确定药品进销存业务流程、数据流程,以及要实现功能、目标,还要用来判定设计结果是否符合实际和实用,达到最初设计目标,就是进一步完善药品管理系统功能,使销售服务更加方便,也能在很大程度上减轻工作者负担。药品进销存管理主要目标就是通过药品销售整个作业流程管理和控制及对库存数据有效统计和分析,以保证管理畅通,使决策人员及早发现问题,采取相应措施,调整管理方式,同时,通过数据分析,可以或得当前市场信息,也便于管理人员不断进行管理优化和提高管理水平。通过查询资料和分析当前药店经营状况,明确用户需求而进行设计。并完成业务流程图和数据流程图。进一步创建数据字典,完成数据结构和数据处理功能模块。业务流图主要是阐述整个药品进销存过程流水作业过程,包括药品采购,库存管理和销售。实现进销存有机统一结合。经过进一步分析,详细业务流图如图1-1所示。图1-1 药品进销存管理系统业务流图数据流程图反映是药店作业过程数据去向和流向。通过数据流程图,抽象现实世界数据到药品进销存物理模型。再根据这个物理模型要抽象出信息流,将物理模型转化成逻辑模型,反映信息在系统中流动、处理和存储情况,在整个过程中,所得到数据流程图可如下图1-2至图1-6所示,分为顶层数据流图,第一层数据流图,第二层数据流图。图1-2 顶层数据流图图1-3 第一层层数据流图图1-4 第二层层数据流图(采购)图1-5 第二层层数据流图(销售)图1-6 第二层层数据流图(报损管理)图1-7 第二层层数据流图(盘存管理)2数据库结构设计主要包括概念设计和逻辑设计两个部分。2.1 概念设计将需求分析得到用户需求抽象为信息结构(概念模型)过程。要能充分反应事物和事物之间联系,是对现实世界一个真实模型。在需求分析阶段得到应用需求首先抽象为信息世界结构才能更好用某一DBMS实现这些需求。E-R模型是概念模型有力工具。逐一设计分E-R图,再将所有分E-R图综合成系统总E-R图。2.1.1 分E-R图建立分E-R图建立依据于数据流图建立。以下可从第二层数据流图分别建立分E-R图。详见图2-1至2-8。 图2-1 分E-R图 图2-2 分E-R图 图2-3 分E-R图 图2-4 分E-R图图2-5 分E-R图图2-6 分E-R图 图2-7 分E-R图 图2-8 分E-R图综合各部分分E-R图,药品进销存管理系统总体E-R图设计如下图2-10所示。图2-10 全局 E-R图2.2 逻辑设计逻辑结构设计任务就是把概念结构设计阶段设计好基本E-R图转换为和选用DBMS产品所支持数据模型相符合逻辑结构。根据DBMS产品以及不同系统限制,设计逻辑结构时一般有以下三个步骤:首先将概念结构转换为一般关系,网状,层次模型;将转换来关系,网状,层次模型向特定DBMS支持下数据模型转换;最后对数据模型进行优化。药品管理系统设计采用关系模型。E-R图转化为关系模型实际上就是要将实体型、实体属性和实体型之间联系转换为关系模式。一个实体型转换为一个关系模式。实体属性就是关系属性,实体码就是关系码。对于实体型间联系有以下不同情况:(1) 一个1:1联系可以转换为一个独立关系模式,也可以和任意一端对应关系模式合并。如果转换为一个独立关系模式,则和该联系相连各实体码以及联系本身属性均转换为关系属性。(2) 一个1:n联系可以转换为一个独立关系模式,也可以和n端对应关系模式合并。如果转换为一个独立关系没模式,则和联系向连各实体码以及联系本身属性均转换为关系属性。(3) 一个m:n联系转换为一个关系模式,和该联系相连各实体码以及联系本身属性均转换为关系属性,各实体码组成关系码或关系码一部分。2.2.1 建立关系模式药品进销存系统涉及到关系主要有:供应厂家和药品为m:n(多对多)关系,将它们之间联系转换为独立关系模式。仓库和药品关系为1:n(1对多),将其之间联系和n端实体合并。职工和仓库关系为1:n(一对多)关系,也将其之间联系和n端实体合并。客户和药品之间联系为m:n(多对多)关系,将它们之间联系转换为独立关系模式。具体转换如下所示,主键或外键已标注:(主键加粗,外键下划线)供应商(供应商编号,供应商名称,供应商地址,供应商电话)药品(药品名称,药品分类,药品剂型,药品单价,药品保质期)职员(职员编号,职员姓名,职员类别)仓库(仓库编号,仓库类别,仓库地址)客户(客户编号,客户姓名,客户性别,客户电话)采购(采购单编号,供应商编号,药品名称,职员编号,采购量,采购日期)发货(发货单编号,供应商编号,药品名称,职员编号,发货量,发货日期)客户订药(订药单编号,客户编号,药品名称,职员编号,订药量,订药日期)销售(销售单编号,客户编号,药品名称,职员编号,销售量,销售日期)入库(入库单编号,药品名称,仓库编号,职员编号,入库量,入库日期)出库(出库单编号,药品名称,仓库编号,职员编号,出库量,出库日期)报损(报损单编号,药品名称,仓库编号,职员编号,报损量,报损原因)盘存(盘存单编号,药品名称,仓库编号,职员编号,盘存量)采购退货(购退货单编号,供应商编号,药品名称,职员编号,退货量,退货原因)客户退货(户退货单编号,客户编号,药品名称,职员编号,退货量,退货原因)2.2.2 关系模式规范化处理关系数据库中关系必须满足一定规范化要求,对于不同规范化程度可用范式来衡量。范式是符合某一种级别关系模式集合,是衡量关系模式规范化程度标准,达到关系才是规范化。一个低一级范式关系模式,通过模式分解可以转换为若干个高一级范式关系模式集合。在本系统中,所有建立表都符合三范式。2.2.3 用户子模式建立根据需求分析,研究建立满足不同需求用户子模式,各个子模式建立在更大程度上方便数据操作。用户子模式定义如表3-1所示。具体实现过程见附录。供应商(供应商编号,供应商名称,供应商地址,供应商电话)药品(药品名称,药品分类,药品剂型,药品单价,药品保质期)药品销售(药品名称,销售量,销售日期)仓库报损(仓库编号,药品名称,报损量)库存(仓库编号,药品名称,盘存量)编号名称作用V-1Vi_supplier查询供应商信息V-2Vi_goods查询各类药品信息V-3Vi_sale查询药品销售信息V-4Vi_baosun查询仓库药品报损信息V-5Vi_Kucun查询仓库药品库存信息 表2-12.2.4 关系模式逻辑结构定义对每个关系模式要以表格形式描述其具体内容。关系模式表格形势将以附录二形式列出。 3 数据库物理设计主要包括数据库在物理设备上存储结构和存取方法就是数据库物理结构,它依赖于选定数据库管理系统。为一个给定逻辑数据模型选取一个最合适应用环境物理结构过程,就是数据库物理设计。这一阶段主要任务是确定数据库物理结构,并不断进行优化处理,主要建立索引,触发器,存储过程。3.1索引建立索引是加快查询速度有效手段。如果访问某一数据项频率较高时,可为之建立索引。而系统在存取数据时会自动选择合适索引作为存取路径,对用户是透明。在本系统由于药品和供应厂家访问频率较大,故为之建立索引。由于在使用时供应商信息表,药品信息表,客户信息表访问次数较多。故为之建立索引。建立索引如下表所示。 表3-1编号名称定义备注I-1In_SupName见附录3.2触发器触发器是用户定义在关系表上一类由事件驱动过程。触发器定义可以更加便捷实现数据操作,增加数据操作灵活性,对数据有更大控制能力。这里只要建立触发器来实现对数据约束条件。如进货量,药品入库时保质期检测等。主要建立触发器见表。编号触发器名称定义作用T-1tri_C02见附录三限制删除C-02客户退货记录T-2tri_Acc见附录三限制某一药品入库量不小于400T-3tri_gprice见附录三限制更新药品价格不小于1元,小于元改为1元T-4tri_gshelf见附录三保质期到2010年不允许插入T-5tri_buy见附录三限制采购量更新量不小于100表3-23.3存储过程存储过程可以实现数据库操作增删改功能,在执行时需要调用。运用想函数一样,也可以有参数参和。定义存储过程提供了过程封装效果,执行只需调用,在更大程度上简化了数据处理过程。药品进销存过程部分存储过程如下表所示。表3-3编号存储过程名称定义作用P-1Goods_shelf见附录三查询某一药品保质期P-3pro_Gtype见附录三查询剂型为普通片药品P-4pro_cback见附录三查询某种原因药品退货量P-5pro_addgoods见附录三插入一条药品信息P-6pro_delgoods见附录三删除一条药品记录P-7pro_orderSale见附录三按药品销量排序P-8pro_updIn见附录三更新入库量4数据库实施和测试数据库物理设计阶段之后就进入了实施阶段,这一阶段要用SQL2008来操作。具体数据库,数据表,视图,索引和存储过程等都是这个阶段用SQL语句创建。4.1 数据库实施4.1.1 数据库及数据库对象建立药店药品管理所涉及对象主要包括:数据库、基本表、视图、索引、触发器以及存储过程。以实现对数据操作简便和有效。(详细sql代码见附录三)。4.1.2 数据入库对各个主要数据表要录入20条以上记录,方法可用EXCEL批量导入,也可以逐条录入。4.2 数据库测试主要内容是对建立数据库及数据库对象进行测试具体要求:(1)要设计好测试数据(2)对测试结果要以图片形式,同时注意图片格式(3)对测试结果进行分析,是否满足设计要求。(数据操作验证详见附录,存储过程验证详见附录四。)5总结在此次数据库设计中,我有一下心得及体会:一在这学期数据库系统概论学习中,因为对数据库系统认识不够深刻,以及平时所做练习都是老师给定表,自己只是做简单查询,删除,更新工作,所以给了我一个很大误区:数据库系统只是一个很简单系统,它只会做简单工作。在老师说做数据库设计师,我觉得就是一个简单事情。但是我错了,在这次实习中我遇到了很多问题,比如:对于我题目医药销售管理系统,在对现实抽象上我遇到了较多问题,我觉得自己可以做业务一经老师指导才知道看似简单问题其实是那么复杂。二实习时,我深刻感受到了数据库设计是环环嵌套,只有做好了需求分析,有了好数据流图,才会使后期工作顺利展开,否则就会在折回来接着做需求分析,所以我们要花大量时间去做需求分析。在此次实习中我按时完成了数据库设计要求。同时经过实习我知道了做任何事都要事先考虑好所有可能发生事情,然后做好相应准备。6附录6.1 附录一 数据字典6.1.1 数据项 数据项编号数据项名数据项含义和其他数据项关系类型Dl-1Supnumber供应商编号varchar(10)Dl-2Supname供应商名称varchar(30)Dl-3Supadress供应商地址varchar(30)Dl-4Supphone供应商电话varchar(20)Dl-5Gsname药品名称varchar(20)Dl-6Gkind药品分类varchar(20)Dl-7Gtype药品剂型varchar(20)Dl-8Gprice药品单价floatDl-9Gshelf药品保质期dateDl-10Empnumber职员编号varchar(10)Dl-11Empkind职员类别varchar(10)Dl-12Empname职员姓名varchar(10)Dl-13Hounumer仓库编号varchar(10)Dl-14Houkind仓库类别varchar(10)Dl-15Houaddr仓库地址varchar(20)Dl-16Buynumber采购单编号varchar(10)Dl-17Buydate采购日期dateDl-18Buyliang采购量intDl-19Sendnumber发货单编号varchar(10)Dl-20Sendliang发货量intDl-21Senddate发货日期dateDl-22Lostnumber报损单编号varchar(10)Dl-23Lostreas报损原因varchar(30)Dl-24Lostliang报损量intDl-25Swnumber实物清单编号varchar(10)Dl-26Swliang实物数量intDl-27Jcnumber盘查记录单编号varchar(10)Dl-28Jcliang记录量intDl-29Pancnumber盘存单编号varchar(10)Dl-30Pancliang盘存实际量intDl-31Dynumber订药单编号varchar(10)Dl-32Dydate订药日期dateDl-33Dyliang订药数量intDl-34Salenumber销售单编号varchar(10)Dl-35Saledate销售日期dateDl-36Saleliang销售量intDl-37Cusnumber客户编号varchar(10)Dl-38Cusname客户姓名varchar(10)Dl-39Cussex客户性别varchar(2)Dl-40Cusphone客户电话varchar(20)Dl-41Innumber药品入库单编号varchar(10)Dl-42Indate药品入库日期dateDl-43Inliang药品入库量intDl-44Outnumber药品出库单编号varchar(10)Dl-45Outreas药品出库原因varchar(30)Dl-46Outdate药品出库时间dateDl-47Outliang药品出库量intDl-48CBacknum客户退货单编号varchar(10)Dl-49Cbackliang客户退货单量intDl-50Cbackreas客户退货原因varchar(30)Dl-51Sbacknum药店退货单编号varchar(10)Dl-52Sbackliang药店退货单数量intDl-53Sbackreas药店退货原因varchar(30)6.1.2数据结构数据结构编号数据结构名称数据结构含义 数据结构组成DS-1Supplier供应商Supnumber,Supname,Supadress,SupphoneDS-2Customer客户Cusnumber,Cusname,Cussex,CusphoneDS-3Goods药品Gname,Gkind,Gtype,Gprice,GshelfDS-4Hourse仓库Hounumber,Houkind,HouaddrDS-5Employer职员Empnumber,Empname,EmpkindDS-7Buylist采购单Buynumber,Buydate,Buyliang,Gname,Supnumber,EmpnumberDS-8Sendlist发货单Sendnumber,Sendliang,Senddate,Gname,Supnumber,EmpnumberDS-9Lostlist报损单Lostnumber,Lostreas,Lostliang,Gname,Empnumber,HounumberDS-10Swlist实物清单Swlistnumber,Swliang,Gname,Empnumber,HounumberDS-11Jclist盘查记录单Jcnumber,Empnumber,JcliangDS-12Panclist盘存单Pancnumber,Pancliang,Gname,Hounumber,EmpnumberDS-13Dyaolist订药单Dynumber,Dydate,Dyliang, Gname,Cusnumber,EmpnumberDS-14Salelist销售单Salenumber,Saledate,Saleliang,Cusnumber,Empnumber,GnameDS-15Inlist入库单Innumber,Indate,Inliang,Gname,Empnumber,HounumberDS-16Outlist出库单Outnumber,Outdate,Outliang,Gname,Empnumber,HounumberDS-17Cbacklist客户退货单CBacknumber,Cbackliang,Cbackreas,Gname,Cusnumber,EmpnumberDS-18Sbacklist采购退货单Sbacknumber,Sbackliang,Sbackreas,Gname,Empnumber,Supnumber6.1.3数据流数据流名称简述数据流来源数据流去向 数据流组成数据流量高峰流量发货单供应商发出收货单供应商验收货品模块Sendnumber,Sendliang,Senddate,Gname,Supnumber,Empnumber15/月30/月采购单采购部发给供应商采购单采购部供应商Buynumber,Buydate,Buyliang,Gname,Supnumber,Empnumber15/月30/月合格单采购部发给库管员进货单采购部库管模块Buynumber,Buydate,Buyliang,Gnumber,Gsname,Empnumber,Kugname15/月30/月不合格单采购部发给退货部清单采购部退货模块Buynumber,Buydate,Buyliang,Gnumber,Gsname15/月30/月退货单退货部发给供应商退货单退货部供应商Sbacknumber,Sbackliang,Sbackreas,Gname,Empnumber,Supnumber15/月30/月入库单库管员编制入库记录库管员编制库存记录模块Innumber,Indate,Inliang,Gname,,Hounumber30/月60/月退货记录单退货部向供应商退单记录退货部编制退货记录模块Sbacknum,Sbackliang,Sbackreas,Sbackdate,Gnumber,Gsname31/月61/月采购记录单采购部编制采购记录采购部采购记录模块SendnumberSendliangSenddate,Gnumber,Gsname,Supnumber,Supname32/月62/月订货单客户发出订货单客户销售部Dynumber,Dydate,Dyliang, Gname,Cusnumber,Empnumber50/月100/月销售单销售部给客户销售记录销售部客户Salenumber,Saledate,Saleliang,Cusnumber,Empnumber,Gname51/月101/月出库单销售部给库房出库记录销售部库房Outnumber,Outdate,Outliang,Gname,Empnumber,Hounumber52/月102/月退货单客户给退货部退货单客户退货模块CBacknumber,Cbackliang,Cbackreas,Gname,Cusnumber,Empnumber15/月30/月销售记录单销售部编制销售记录销售部销售记录模块Salenumber,Saledate,Saleliang,Cusnumber,Empnumber16/月31/月退货记录单退货部给客户退单记录退货部编制退货记录模块CBacknumber,Cbackliang,Cbackdate,Gnumber,Cusnumber17/月32/月退单退货部审核通过客户退单客户退货模块CBacknum,Cbackliang,Cbackreas,Cbackdate,Gnumber,Cusnumber18/月33/月退货确认单退货部给库房退货记录退货部库房CBacknum,Cbackliang,Cusnumber,Empnumber,19/月34/月报损单库管给主管部报损记录库管员编制主管部Lostnumber,Lostreas,Lostliang,Gname,Empnumber,Hounumber30/月50/月不合格报损单主管检查不生效报损单主管部库管Lostnumber,Lostliang,Gnumber,Gsname,Empnumber31/月51/月合格报损单主管检查生效报损单主管部报损模块Lostnumber,Lostliang,Gnumber32/月52/月报损记录单主管检查生效报损记录单主管部报损记录模块Lostnumber,Lostliang,Gnumber33/月53/月报损清单主管部发给库房报损记录主管部库房记录模块Lostnumber,Lostliang,Gnumber,Empnumber34/月54/月药品清单库管发给盘查部实物清单库管员编制盘查部Pancnumber,Pancdate,Pancliang,Gnumber,Empnumber35/月55/月记录单盘查部盘查后记录单盘查部编制盘查部Pancnumber,Pancdate,Pancliang,Gnumber36/月56/月盘存单账务不实盘查部生成新盘存单盘查部编制库房和盘存记录Pancnumber,Pancliang,Gname,Hounumber,Empnumber37/月57/月盘存清单盘查部发给库房记录盘查部编制库房记录模块Pancnumber,Pancdate,Pancliang,Gnumber,Empnumber38/月58/月盘存记录单盘查部生成盘查记录盘查部编制盘查记录模块Pancnumber,Pancdate,Pancliang,Gnumber,Empnumber38/月58/月6.1.4处理逻辑处理逻辑编号处理逻辑名称简述输入数据流处理输出数据流处理频率P1.1验收采购部检验来货F1发货单根据发货单检验商品F3合格单,F4不合格单30/月P1.2入库检验合格入库F3合格单登记库存账目F6入库记录单,F8采购记录单35/月P1.3退货检验不合格退去F4不合格单确定退货F5退货单,F7退货记录单10/月P2.1销售销售部向客户卖货F9订货单导购提货F10销售单,F11出库单50/月P2.2确认退货退货部处理客户退货单F12退货单处理退货单F15退单5/月P2.3退货客户退货成功F15退单客户退货成功F14退货记录单,F16退货确认单5/月P3.1主管检查主管检查报损单F17报损单根据报损单检查报损F18不合格报损单,F19合格报损单1/月P3.2确定报损单主管接受合格报损单F19合格报损单确定报损单F20报损记录单,F21报损清单1/月P3.3报损不生效主管反馈不合格报损单F18不合格报损单向库管反馈不合格报损单F18不合格报损单1/月P4.1存货清查对仓库存货清查F22药品清单根据药品清单存货清查F23记录单2/月P4.2对比账单对比清查结果F23记录单根据药品清单对比记录单F22药品清单,F24盘存单3/月P4.3确定盘存单确定盘存单F24盘存单登记盘存和库存记录F25盘存清单,F26盘存记录单4/月6.1.5 数据存储数据存储编号数据存储名称 简述 数据存储组成相关联处理S1库存记录商品入库出库,客户退货,报损盘存清查后修改库存量商品编号,仓库编号,存储量P1.2,P2.2,P2.3,P3.2,P4.3S2采购记录商店从供应商采购货物记录供应商编号,商品编号,商品名,商品数量,商品价格P1.2S3退货记录商店退给供应商退货记录供应商编号,商品编号,商品名,商品数量P1.3S4销售记录商品卖给客户销售记录商品编号,客户编号,商品名,商品数量P2.1S5退货记录客户退给商店退货记录商品编号,客户,商品名,商品数量P2.3S6报损记录库房报损记录仓库编号,商品编号,商品名,报损数量P3.2S7盘存记录商品盘存清查记录仓库编号,商品编号,商品名,实际数量P4.36.2 附录二 关系表 供应商列名数据类型约束主外键供应商编号varchar(10)not null主键供应商名称varchar(30)not null供应商地址varchar(40)供应商电话varchar(20) 药品列名数据类型约束主外键药品名称varchar(30)not null主键药品分类varchar(20)药品剂型varchar(20)药品单价floatnot null药品保质期date 职员列名数据类型约束主外键职员编号varchar(10)not null主键职员姓名varchar(10)职员类别varchar(10) 仓库列名数据类型约束主外键仓库编号varchar(10)not null主键仓库类别varchar(10)仓库地址varchar(20) 客户列名数据类型约束主外键客户编号varchar(10)not null主键客户姓名varchar(10)not null客户性别varchar(2)客户电话varchar(20) 采购列名数据类型约束主外键采购单编号varchar(10)not null主键供应商编号varchar(10)not null外键药品名称varchar(30)not null外键职员编号varchar(10)not null外键采购量intnot null采购日期date 发货列名数据类型约束主外键发货单编号varchar(10)not null主键供应商编号varchar(8)not null外键药品名称varchar(30)not null外键职员编号varchar(10)not null外键发货量intnot null发货日期date 采购退货列名数据类型约束主外键采购退货单编号varchar(10)not null主键供应商编号varchar(10)not null外键药品名称varchar(30)not null外键职员编号varchar(10)not null外键退货量intnot null退货原因varchar(30) 客户退货列名数据类型约束主外键客户退货单编号varchar(10)not null主键客户编号varchar(10)not null外键药品名称va