最新消息报道,进销存系统数据库设计,对于一个系统来说是不可缺少的一部分,那么如何做好数据库的设计呢?下面我们就来具体来说下。</p>
讯享网
讯享网<img alt='探讨 | 进销存系统数据库设计逻辑' src='https://www.hishop.com.cn/uploads/hishop.jpg'></p> 理清一下整个进销存系统逻辑:</p> 讯享网 1、录入出入库记录时不要实时地更新总表的记录。象YANG_说的,好不要用库存余额这样的字段。可以通过单据审核或过账过程来完成总表的记录更新问题。因为单据审核(或过账)后是不允许改的。按你上面的方法,单据除非是不允许保存后再更改,否则,改一个单据,所有时间在其后的单据的余额数都要进行更新。而且还要锁定,不允许新的单据保存(因为最后的余额还没确定)。更不能进行删除,删除也会影响大量单据的余额字段更新问题。你这样的方式,需要花太大的代价去维护库存余额的正确性。实在不可取。</p> 2、断货表的内容是怎么来的?余额为零时就生成记录吗?通过查询总表来得出断货的记录就可以了,何必设一个表?</p> 讯享网 3、在实际的系统中,我觉得最好不要使用不规范的计量单位,比如:包(不是小包,是那种大的包装)、瓶、件、车等。因为不能用来确定实际数量,比如一包中可能有10瓶,可能有20瓶,很可能会有调整。我以前公司用过的系统就有过这样的问题,一包由6个单位改成5个单位,使用人理所当然地在基础资料里将6改成5,结果所有报表都不对。既然你在数据库里保存的就是瓶,就让用户录入以瓶为单位的(虽然我觉得若是生产型的企业,以瓶也不严格,因为可能有大瓶,小瓶。我们现在公司用的单位大家猜猜,是用升的,MYGOD,真是晕死了。但我觉得只有用L才是准确的,因为用瓶,根本不能确定诸如实际产量之类的数据,实际产量非要用L才准确。)。不过实际情况中也不能要求太高,但是一定要注意避免这样的问题。所以我觉得你这里肯定也最好就用瓶来做单位,不允许用其他单位。因为可能换算关系会变,但操作员的思路不会变的,他上次一包是4瓶,他会录入1包,现在是1包5瓶,他肯定也是录入1包的。结果当然会乱了。</p> 4、加上月结的处理,按你的思路,需要存分月的出入库总表,在月结时,当月没有业务发生的数据也要在总表中有记录,而不是等到以后月份有出入库了再去补充。这样才能保证总表中的记录的完整的。试想一下,若不是这样,你按总表出本月余额表是不是会很难?(因为本月无记录的,需要找最近月份的记录查出当时的余额,怎么样SQL语句都会难写些,效率也低很多)。我怕你到时候又要来问该怎么写这样的SQL了。</p> 讯享网 5、很奇怪,为什么在细表中看不到单据编号,且时间只精确到日,你怎么确定单据的先后?确定不了先后怎么确定得了每张单据上的库存数?</p> 6、建议找点写得好的进销存系统的数据库来研究研究。不要被这样糟糕的设计耽误了。</p> 讯享网 7、不会数据库、不会SQL不是最要紧的,设计数据库只是个技术活,对业务的理解,系统的分析与设计才是最根本的。</p> 下面举个进销存系统数据库设计例子:</p> 讯享网 CREATE TABLE user(</p> User_Id varchar(6),</p> 讯享网 User_Pwd varchar(8) NULL,</p> Again_Pwd varchar(8) NULL,</p> 讯享网 Bel_Group varchar(3) NULL,</p> Div_Type varchar(1) NULL,</p> 讯享网 User_Auth varchar(1) NULL,</p> Auth_Type varchar(1) NULL,</p> 讯享网 User_Status varchar(1) NULL,</p> Create_User varchar(6) NULL,</p> 讯享网 Create_Date varchar(7) NULL,</p> Create_Time varchar(6) NULL,</p> 讯享网 Appr_User varchar(6) NULL,</p> Appr_Date varchar(7) NULL,</p> 讯享网 Appr_Time varchar(6) NULL,</p> Pwd_Date varchar(7) NULL,</p> 讯享网 Err_Count float NULL,</p> Use_eJCIC varchar(1) NULL</p> 讯享网 )</p> CREATE TABLE Supplier /*供应商表*/</p> 讯享网 (</p> Supplier_ID int IDENTITY(1,1) NOT NULL, /* 供应商编号 ,主键 */</p> 讯享网 Name varchar(250) NOT NULL, /* 供应商名称 */</p> Address varchar(250) NOT NULL, /* 地址 */</p> 讯享网 Phone varchar(25) NULL, /* 电话 */</p> Fax varchar(25) NULL, /* 传真 */</p> 讯享网 PostalCode varchar(10) NULL, /* 邮编 */</p> ConstactPerson varchar(20) NULL /* 联系人 */</p> 讯享网 )</p> CREATE TABLE Customer /* 客户表*/</p> 讯享网 (</p> Customer_ID int IDENTITY(1,1) NOT NULL, /* 客户编号,主键*/</p> 讯享网 Name varchar(250) NOT NULL, /* 客户名称 */</p> Address varchar(250) NOT NULL, /* 地址 */</p> 讯享网 Phone varchar(25) NULL, /* 电话 */</p> Fax varchar(25) NULL, /* 传真 */</p> 讯享网 PostalCode varchar(10) NULL, /* 邮编 */</p> ConstactPerson varchar(20) NULL /* 联系人 */</p> 讯享网 )</p> CREATE TABLE Dept /* 部门表 */</p> 讯享网 (</p> Dept_ID int IDENTITY(1,1) NOT NULL, /* 部门编号,主键 */</p> 讯享网 Name varchar(30) NOT NULL, /* 名称 */</p> Remark varchar(250) NOT NULL/* 描述,备注 */</p> 讯享网 )</p> CREATE TABLE Dept_Supplier /* 部门--供应商表*/</p> 讯享网 (</p> Dept_ID int NOT NULL, /* 部门编号,主键 , 外键( 参照 DEPT 表 )*/</p> 讯享网 Supplier_ID int NOT NULL /* 供应商编号 ,主键,外键( 参照 SUPPLIER 表) */</p> )</p> 讯享网 CREATE TABLE Dept_Customer /* 部门--客户表*/</p> (</p> 讯享网 Dept_ID int NOT NULL, /* 部门编号,主键 , 外键( 参照 DEPT 表 )*/</p> Customer_ID int NOT NULL /* 客户编号,主键, 外键( 参照 SUPPLIER 表) */</p> 讯享网 )</p> CREATE TABLE StoreHouse /* 仓库表 */</p> 讯享网 (</p> StoreHouse_ID int IDENTITY(1,1) NOT NULL, /* 仓库编号,主键 */</p> 讯享网 Address varchar(250) NOT NULL, /* 地址 */</p> Phone varchar(25) NULL, /* 电话 */</p> 讯享网 Employee_ID INT NOT NULL, /* 仓库保管 ,外键 ( 参照 EMPLOYEE 表 ) */</p> CreateDate datetime NULL /* 仓库成立时间 */</p> 讯享网 )</p> CREATE TABLE ProductClass /* 商品总分类表 */</p> 讯享网 (</p> ProductClass_ID int IDENTITY(1,1) NOT NULL, /* 商品总分类编号, 主键 */</p> 讯享网 Name varchar(30) NOT NULL, /* 商品分类名称 */</p> Employee_ID INT NOT NULL, /* 建分类人 ,外键 ( 参照 EMPLOYEE 表 )*/</p> 讯享网 CreateDate datetime NULL, /* 建分类时间 */</p> Remark varchar(250) NULL, /* 描述,备注 */</p> 讯享网 )</p> CREATE TABLE ProductList /* 商品细分类表 */</p> 讯享网 (</p> ProductClass_ID INT NOT NULL, /* 商品总分类编号, 外键 ( 参照PRODUCTCLASS 表 ) */</p> 讯享网 ProductList_ID int IDENTITY(1,1) NOT NULL, /* 商品细分类编号,主键 */</p> Name varchar(30) NOT NULL, /* 商品名称 */</p> 讯享网 Employee_ID INT NOT NULL, /* 建分类人,外键 ( 参照 EMPLOYEE 表 )*/</p> CreateDate datetime NULL, /* 建分类时间 */</p> 讯享网 Remark varchar(250) NULL, /* 描述 ,备注 */</p> )</p> 讯享网 CREATE TABLE ProductSpec /* 商品规格表 */</p> (</p> 讯享网 ProductSpec_ID INT IDENTITY(1,1) NOT NULL, /* 商品规格编号,主键 */</p> Name varchar(30) NOT NULL, /* 商品规格名称 */</p> 讯享网 Employee_ID INT NOT NULL, /* 操作员 ,外键 ( 参照 EMPLOYEE 表 )*/</p> CreateDate datetime NULL, /* 创建时间 */</p> 讯享网 Remark varchar(250) NULL /* 描述,备注 */</p> )</p> 讯享网 CREATE TABLE ProductUnit /* 商品计量单位表 */</p> (</p> 讯享网 ProductUnit_ID INT IDENTITY(1,1) NOT NULL, /* 计量单位编号 ,主键 */</p> Name varchar(30) NOT NULL, /* 计量单位名称 */</p> 讯享网 Employee_ID INT NOT NULL, /* 操作员 ,外键 ( 参照 EMPLOYEE 表 )*/</p> CreateDate datetime NULL, /* 创建时间 */</p> 讯享网 Remark varchar(250) NULL /* 描述,备注 */</p> )</p> 讯享网 CREATE TABLE Product /* 商品目录表 */</p> (</p> 讯享网 ProductList_ID int NOT NULL, /* 商品细分类编号, 外键 ( 参照 PRODUCTLIST 表 ) */</p> Product_ID INT IDENTITY(1,1) NOT NULL, /* 商品名称编号, 主键 */</p> 讯享网 Name varchar(30) NOT NULL, /* 商品名称 */</p> ProductSpec_ID INT NOT NULL, /* 商品规格, 外键 ( 参照 PRODUCTSPEC 表 ) */</p> 讯享网 ProductUnit_ID INT NOT NULL, /* 计量单位, 外键 ( 参照 PRODUCTUNIT 表 ) */</p> Price MONEY NULL, /* 参考价格 */</p> 讯享网 Employee_ID INT NOT NULL, /* 操作员, 外键 ( 参照 EMPLOYEE 表 )*/</p> CreateDate datetime NULL, /* 创建时间 */</p> 讯享网 Remark varchar(250) NULL /* 描述,备注 */</p> )</p> 讯享网 CREATE TABLE Product_Supplier /* 商品--供应商表 */</p> (</p> 讯享网 Product_ID INT NOT NULL, /* 商品名称编号,主键 , 外键( 参照 PRODUCT 表 )*/</p> Supplier_ID INT NOT NULL /* 供应商编号 , 主键, 外键( 参照 SUPPLIER 表) */</p> 讯享网 )</p> CREATE TABLE Employee /* 员工表 */</p> 讯享网 (</p> Employee_ID INT IDENTITY(1,1) NOT NULL, /* 员工编号 */</p> 讯享网 Dept_ID INT NOT NULL, /* 所属部门编号 */</p> Name varchar(30) NOT NULL, /* 姓名 */</p> 讯享网 Duty varchar(20) NOT NULL, /* 职务 */</p> Gender varchar(6) NOT NULL, /* 性别 */</p> 讯享网 BirthDate datetime NOT NULL, /* 出生日期 */</p> HireDate datetime NULL, /* 合同签订 日期 */</p> 讯享网 MatureDate datetime NULL, /* 合同到期日 */</p> IdentityCard varchar(20) NULL, /* 身份证号 */</p> 讯享网 Address varchar(250) NULL, /* 住址 */</p> Phone varchar(25) NULL, /* 电话 */</p> 讯享网 Email varchar(30) NULL /* E_MAIL */</p> )</p> 讯享网 /*-///////////////////////////////////////////////////////////////////////////////////////-*/</p> CREATE TABLE BuyOrder /* 进货合同 */</p> 讯享网 (</p> BuyOrder_ID INT IDENTITY(1,1) NOT NULL, /* 进货合同编号 , 主键 */</p> 讯享网 WriteDate datetime NOT NULL, /* 合同签订日期 */</p> InsureDate datetime NOT NULL, /* 合同生效日期 */</p> 讯享网 EndDate datetime NOT NULL, /* 合同到期日期 */</p> Dept_ID INT NOT NULL, /* 签订部门, 外键 ( 参照 DEPT 表 ) */</p> 讯享网 Supplier_ID INT NOT NULL, /* 供应商, 外键 ( 参照 SUPPLIER 表 ) */</p> Employee_ID INT NOT NULL /* 合同主要负责人, 外键 ( 参照 EMPLOYEE 表) */</p> 讯享网 )</p> CREATE TABLE BuyOrder_Detail /* 进货合同明细表 */</p> 讯享网 (</p> BuyOrder_ID INT NOT NULL, /* 进货合同编号,主键, 外键 ( 参照 BUYORDER 表 ) */</p> 讯享网 Product_ID INT NOT NULL, /* 所进商品编号,主键, 外键 (参照 PRODUCT 表 ) */</p> Quantity INT NOT NULL, /* 商品数量 */</p> 讯享网 Price money NOT NULL /* 商品进价 */</p> )</p> 讯享网 CREATE TABLE EnterStock /* 入库单表 */</p> (</p> 讯享网 EnterStock_ID INT IDENTITY(1,1) NOT NULL, /* 入库单编号 , 主键 */</p> EnterDate datetime NOT NULL, /* 入库时间 */</p> 讯享网 Dept_ID INT NOT NULL, /* 入库部门 ,外键 ( 参照 DEPT 表 )*/</p> StoreHouse_ID INT NOT NULL, /* 所入仓库 ,外键 ( 参照 STOREHOUSE 表)*/</p> 讯享网 Employee_ID INT NOT NULL /* 入库人 , 外键 ( 参照 EMPLOYEE 表)*/</p> /*需添加 仓库保管员如何来验证入库单 ?? */</p> 讯享网 )</p> CREATE TABLE EnterStock_Detail /* 入库单明细 */</p> 讯享网 (</p> EnterStock_ID INT NOT NULL, /* 入库单编号 , 主键, 外键 (参照 ENTERSTOCK 表 )*/</p> 讯享网 Product_ID INT NOT NULL, /* 此种商品编号,主键, 外键 (参照 PRODUCT 表 ) */</p> Quantity int NOT NULL, /* 此种商品数量 */</p> 讯享网 Price money NULL, /* 此种商品参考价格 */</p> HaveInvoice bit not null, /* 此种商品有没有开发票 ( 缺省为 0 , 有没有开票 )*/</p> 讯享网 InvoiceNum varchar(30) NULL /* 发票号 */</p> )</p> 讯享网 CREATE TABLE BackStock /* 退库单表 */</p> (</p> 讯享网 BackStock_ID INT IDENTITY(1,1) NOT NULL, /* 退库单编号 , 主键 */</p> BackDate datetime NOT NULL, /* 退库时间 */</p> 讯享网 Dept_ID INT NOT NULL, /* 退库部门 , 外键 ( 参照 DEPT 表 )*/</p> StoreHouse_ID INT NOT NULL, /* 所退入仓库 ,外键 ( 参照 STOREHOUSE 表)*/</p> 讯享网 Employee_ID INT NOT NULL, /* 退库人 , 外键 ( 参照 EMPLOYEE 表)*/</p> Remark varchar(250) NULL /* 退库原因 */</p> 讯享网 )</p> CREATE TABLE BackStock_Detail /* 退库单明细表 */</p> 讯享网 (</p> BackStock_ID INT NOT NULL, /* 退库单编号 , 主键, 外键 (参照 BACKSTOCK 表 )*/</p> 讯享网 Product_ID INT NOT NULL, /* 所退商品编号,主键, 外键 (参照 PRODUCT 表 ) */</p> Quantity int NOT NULL, /* 退入数量 */</p> 讯享网 Price money NULL /* 参考价格 */</p> 
)</p> 讯享网 CREATE TABLE LeaveStock /* 出库单表 */</p> (</p> 讯享网 LeaveStock_ID INT IDENTITY(1,1) NOT NULL, /* 出库单编号 , 主键, 外键 (参照 LEAVESTOCK 表 )*/</p> LeaveDate datetime NOT NULL, /* 出库时间 */</p> 讯享网 Dept_ID INT NOT NULL, /* 出库部门 , 外键 ( 参照 DEPT 表 )*/</p> StoreHouse_ID INT NOT NULL, /* 所出仓库 ,外键 ( 参照 STOREHOUSE 表)*/</p> 讯享网 ToStoreHouse_ID INT NOT NULL, /* 所入仓库 ,外键 ( 参照 STOREHOUSE 表)*/</p> Employee_ID INT NOT NULL /* 出库人 , 外键 ( 参照 EMPLOYEE 表)*/</p> 讯享网 /* 仓库保管员如何来验证出库单 ?? */</p> )</p> 讯享网 CREATE TABLE LeaveStock_Detail /* 出库单明细表 */</p> (</p> 讯享网 LeaveStock_ID INT NOT NULL, /* 出库单编号 , 主键, 外键 (参照 BACKSTOCK 表 )*/</p> Product_ID INT NOT NULL, /* 所出商品编号,主键, 外键 (参照 PRODUCT 表 ) */</p> 讯享网 Quantity int NOT NULL, /* 出库数量 */</p> Price money NULL /* 出库价格 */</p> 讯享网 )</p> CREATE TABLE BackSale /* 退货单表 */</p> 讯享网 (</p> BackSale_ID INT IDENTITY(1,1) NOT NULL, /* 退货单编号 , 主键 */</p> 讯享网 BackDate datetime NOT NULL, /* 退货日期 */</p> Dept_ID INT NOT NULL, /* 退货部门 , 外键 ( 参照 DEPT 表 )*/</p> 讯享网 StoreHouse_ID INT NOT NULL, /* 退入仓库 , 外键 ( 参照 STOREHOUSE 表)*/</p> Employee_ID INT NOT NULL, /* 退货人 , 外键 ( 参照 EMPLOYEE 表)*/</p> 讯享网 Remark varchar(250) NULL /* 退货原因 */</p> )</p> 讯享网 CREATE TABLE BackSale_Detail /* 退货单明细表 */</p> (</p> 讯享网 BackSale_ID INT NOT NULL, /* 退货单编号 , 主键, 外键 (参照 BACKSTOCK 表 )*/</p> Product_ID INT NOT NULL, /* 所退商品编号,主键, 外键 (参照 PRODUCT 表 ) */</p> 讯享网 Quantity int NOT NULL, /* 退货数量 */</p> Price money NULL /* 价格 */</p> 讯享网 )</p> CREATE TABLE SaleOrder /* 销售合同 */</p> 讯享网 (</p> SaleOrder_ID INT IDENTITY(1,1) NOT NULL, /* 合同编号 , 主键 */</p> 讯享网 WriteDate datetime NOT NULL, /* 合同签订日期 */</p> InsureDate datetime NOT NULL, /* 合同生效日期 */</p> 讯享网 EndDate datetime NOT NULL, /* 合同到期日期 */</p> Dept_ID INT NOT NULL, /* 签订部门, 外键 ( 参照 DEPT 表 ) */</p> 讯享网 Customer_ID INT NOT NULL, /* 客户编号, 外键 ( 参照 CUSTOMER 表 ) */</p> Employee_ID INT NOT NULL /* 合同主要负责人, 外键 ( 参照 EMPLOYEE 表) */</p> 讯享网 )</p> CREATE TABLE SaleOrder_Detail /* 销售合同明细表 */</p> 讯享网 (</p> SaleOrder_ID INT NOT NULL, /* 销售合同编号,主键, 外键 ( 参照 BUYORDER 表 ) */</p> 讯享网 Product_ID INT NOT NULL, /* 销售商品编号,主键, 外键 (参照 PRODUCT 表 ) */</p> Quantity int not null, /* 商品数量 */</p> 讯享网 Price money null /* 商品进价 */</p> )</p> 讯享网 CREATE TABLE Buy /* 进货表 ( 验货表 ) */</p> (</p> 讯享网 Buy_ID INT IDENTITY(1,1) NOT NULL, /* 进货编号 , 主键 */</p> ComeDate datetime NOT NULL, /* 进货日期 */</p> 讯享网 Dept_ID INT NOT NULL, /* 进货部门, 外键 ( 参照 DEPT 表 ) */</p> Employee_ID INT NOT NULL /* 验货人, 外键 ( 参照 EMPLOYEE 表)*/</p> 讯享网 )</p> CREATE TABLE Buy_Detail /* 进货表明细 ( 验货表 ) */</p> 讯享网 (</p> Buy_ID INT NOT NULL, /* 进货编号,主键, 外键 ( 参照 BUY 表 ) */</p> 讯享网 Product_ID INT NOT NULL, /* 商品编号,主键, 外键 ( 参照 PRODUCT 表 ) */</p> BuyOrder_ID INT NULL, /* 采购合同, 外键 ( 参照 BUYORDER 表 ) */</p> 讯享网 Quantity int not null, /* 数量 */</p> Price money null /* 价格 */</p> 讯享网 /* BUYORDER_ID 为 NULL 时, 为现金进货 */</p> )</p> 讯享网 CREATE TABLE Sale /* 销售 表 */</p> (</p> 讯享网 Sale_ID INT IDENTITY(1,1) NOT NULL, /* 销售 编号 */</p> SaleDate datetime not null, /* 销售 日期 */</p> 讯享网 Dept_ID INT NOT NULL, /* 销售部门, 外键 ( 参照 DEPT 表 ) */</p> Employee_ID INT NOT NULL /* 售货人, 外键 ( 参照 EMPLOYEE 表)*/</p> 讯享网 )</p> CREATE TABLE Sale_Detail /* 销售明细 ( 验货表 ) */</p> 讯享网 (</p> Sale_ID INT NOT NULL, /* 销售编号,主键, 外键 ( 参照 SALE 表 ) */</p> 讯享网 Product_ID INT NOT NULL, /* 商品编号,主键, 外键 ( 参照 PRODUCT 表 ) */</p> SaleOrder_ID INT NULL, /* 销售合同, 外键 ( 参照 SALEORDER 表 ) */</p> 讯享网 Quantity int not null, /* 数量 */</p> Price money not null, /* 价格 */</p> 讯享网 Discount int null /* 折扣 */</p> /* SALEORDER_ID 为 NULL 时, 为现金销售 */</p> 讯享网 )</p> CREATE TABLE StockPile /* 库存表 */</p> 讯享网 (</p> StockPile_ID INT IDENTITY(1,1) NOT NULL, /* 库存编号 , 主键 */</p> 讯享网 Dept_ID INT NOT NULL, /* 商品所属部门, 外键 ( 参照 DEPT 表 ) */</p> StoreHouse_ID INT NOT NULL, /* 所在仓库, 外键 ( 参照 SOTREHOUSE 表 ) */</p> 讯享网 Product_ID INT NOT NULL, /* 商品编号, 外键 ( 参照 PRODUCT 表 ) */</p> FirstEnterDate datetime not null, /* 此种商品第一次入库时间 */</p> 讯享网 LastLeaveDate datetime null, /* 此种商品最后一次出库时间 */</p> Quantity int not null, /* 所存数量 */</p> 讯享网 Price money not null /* 加权价 */</p> /* LASTLEAVEDATE 为NULL 时,此种商品从来没有 卖过 */</p> 讯享网 )</p> 进销存系统数据库设计,HiShop友数进销存管理系统,为了对企业生产经营中进货、出货、批发销售、付款等进行全程进行跟踪,管理,而设计的整套方案。</p> 讯享网 相关阅读:有哪些比较好用的免费进销存管理软件?</p>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/146305.html