商城类电商软件及服务提供商--HiShop海商,欢迎您!
最新消息报道,进销存系统数据库设计,对于一个系统来说是不可缺少的一部分,那么如何做好数据库的设计呢下面我们就来具体来说下。
理清一下整个进销存系统逻辑:
2、断货表的内容是怎么来的余额为零时就生成记录吗通过查询总表来得出断货的记录就可以了,何必设一个表
3、在实际的系统中,我觉得最好不要使用不规范的计量单位,比如:包(不是小包,是那种大的包装)、瓶、件、车等。因为不能用来确定实际数量,比如一包中可能有10瓶,可能有20瓶,很可能会有调整。我以前公司用过的系统就有过这样的问题,一包由6个单位改成5个单位,使用人理所当然地在基础资料里将6改成5,结果所有报表都不对。既然你在数据库里保存的就是瓶,就让用户录入以瓶为单位的(虽然我觉得若是生产型的企业,以瓶也不严格,因为可能有大瓶,小瓶。我们现在公司用的单位大家猜猜,是用升的,MYGOD,真是晕死了。但我觉得只有用L才是准确的,因为用瓶,根本不能确定诸如实际产量之类的数据,实际产量非要用L才准确。)。不过实际情况中也不能要求太高,但是一定要注意避免这样的问题。所以我觉得你这里肯定也最好就用瓶来做单位,不允许用其他单位。因为可能换算关系会变,但操作员的思路不会变的,他上次一包是4瓶,他会录入1包,现在是1包5瓶,他肯定也是录入1包的。结果当然会乱了。
4、加上月结的处理,按你的思路,需要存分月的出入库总表,在月结时,当月没有业务发生的数据也要在总表中有记录,而不是等到以后月份有出入库了再去补充。这样才能保证总表中的记录的完整的。试想一下,若不是这样,你按总表出本月余额表是不是会很难(因为本月无记录的,需要找最近月份的记录查出当时的余额,怎么样SQL语句都会难写些,效率也低很多)。我怕你到时候又要来问该怎么写这样的SQL了。
6、建议找点写得好的进销存系统的数据库来研究研究。不要被这样糟糕的设计耽误了。
7、不会数据库、不会SQL不是最要紧的,设计数据库只是个技术活,对业务的理解,系统的分析与设计才是最根本的。
下面举个进销存系统数据库设计例子:
CREATETABLEuser(
User_Idvarchar(6),
User_Pwdvarchar(8)NULL,
Again_Pwdvarchar(8)NULL,
Bel_Groupvarchar(3)NULL,
Div_Typevarchar(1)NULL,
User_Authvarchar(1)NULL,
Auth_Typevarchar(1)NULL,
User_Statusvarchar(1)NULL,
Create_Uservarchar(6)NULL,
Create_Datevarchar(7)NULL,
Create_Timevarchar(6)NULL,
Appr_Uservarchar(6)NULL,
Appr_Datevarchar(7)NULL,
Appr_Timevarchar(6)NULL,
Pwd_Datevarchar(7)NULL,
Err_CountfloatNULL,
Use_eJCICvarchar(1)NULL
)
CREATETABLESupplier/*供应商表*/
(
Supplier_IDintIDENTITY(1,1)NOTNULL,/*供应商编号,主键*/
Namevarchar(250)NOTNULL,/*供应商名称*/
Addressvarchar(250)NOTNULL,/*地址*/
Faxvarchar(25)NULL,/*传真*/
PostalCodevarchar(10)NULL,/*邮编*/
ConstactPersonvarchar(20)NULL/*联系人*/
CREATETABLECustomer/*客户表*/
Customer_IDintIDENTITY(1,1)NOTNULL,/*客户编号,主键*/
Namevarchar(250)NOTNULL,/*客户名称*/
CREATETABLEDept/*部门表*/
Dept_IDintIDENTITY(1,1)NOTNULL,/*部门编号,主键*/
Namevarchar(30)NOTNULL,/*名称*/
Remarkvarchar(250)NOTNULL/*描述,备注*/
CREATETABLEDept_Supplier/*部门--供应商表*/
Dept_IDintNOTNULL,/*部门编号,主键,外键(参照DEPT表)*/
Supplier_IDintNOTNULL/*供应商编号,主键,外键(参照SUPPLIER表)*/
CREATETABLEDept_Customer/*部门--客户表*/
Customer_IDintNOTNULL/*客户编号,主键,外键(参照SUPPLIER表)*/
CREATETABLEStoreHouse/*仓库表*/
StoreHouse_IDintIDENTITY(1,1)NOTNULL,/*仓库编号,主键*/
Employee_IDINTNOTNULL,/*仓库保管,外键(参照EMPLOYEE表)*/
CREATETABLEProductClass/*商品总分类表*/
ProductClass_IDintIDENTITY(1,1)NOTNULL,/*商品总分类编号,主键*/
Namevarchar(30)NOTNULL,/*商品分类名称*/
Employee_IDINTNOTNULL,/*建分类人,外键(参照EMPLOYEE表)*/
Remarkvarchar(250)NULL,/*描述,备注*/
CREATETABLEProductList/*商品细分类表*/
ProductClass_IDINTNOTNULL,/*商品总分类编号,外键(参照PRODUCTCLASS表)*/
ProductList_IDintIDENTITY(1,1)NOTNULL,/*商品细分类编号,主键*/
Namevarchar(30)NOTNULL,/*商品名称*/
CREATETABLEProductSpec/*商品规格表*/
ProductSpec_IDINTIDENTITY(1,1)NOTNULL,/*商品规格编号,主键*/
Namevarchar(30)NOTNULL,/*商品规格名称*/
Employee_IDINTNOTNULL,/*操作员,外键(参照EMPLOYEE表)*/
Remarkvarchar(250)NULL/*描述,备注*/
CREATETABLEProductUnit/*商品计量单位表*/
ProductUnit_IDINTIDENTITY(1,1)NOTNULL,/*计量单位编号,主键*/
Namevarchar(30)NOTNULL,/*计量单位名称*/
CREATETABLEProduct/*商品目录表*/
ProductList_IDintNOTNULL,/*商品细分类编号,外键(参照PRODUCTLIST表)*/
Product_IDINTIDENTITY(1,1)NOTNULL,/*商品名称编号,主键*/
ProductSpec_IDINTNOTNULL,/*商品规格,外键(参照PRODUCTSPEC表)*/
ProductUnit_IDINTNOTNULL,/*计量单位,外键(参照PRODUCTUNIT表)*/
PriceMONEYNULL,/*参考价格*/
CREATETABLEProduct_Supplier/*商品--供应商表*/
Product_IDINTNOTNULL,/*商品名称编号,主键,外键(参照PRODUCT表)*/
Supplier_IDINTNOTNULL/*供应商编号,主键,外键(参照SUPPLIER表)*/
CREATETABLEEmployee/*员工表*/
Employee_IDINTIDENTITY(1,1)NOTNULL,/*员工编号*/
Dept_IDINTNOTNULL,/*所属部门编号*/
Namevarchar(30)NOTNULL,/*姓名*/
Dutyvarchar(20)NOTNULL,/*职务*/
Gendervarchar(6)NOTNULL,/*性别*/
BirthDatedatetimeNOTNULL,/*出生日期*/
HireDatedatetimeNULL,/*合同签订日期*/
MatureDatedatetimeNULL,/*合同到期日*/
IdentityCardvarchar(20)NULL,/*身份证号*/
Addressvarchar(250)NULL,/*住址*/
Emailvarchar(30)NULL/*E_MAIL*/
/*-///////////////////////////////////////////////////////////////////////////////////////-*/
CREATETABLEBuyOrder/*进货合同*/
BuyOrder_IDINTIDENTITY(1,1)NOTNULL,/*进货合同编号,主键*/
WriteDatedatetimeNOTNULL,/*合同签订日期*/
InsureDatedatetimeNOTNULL,/*合同生效日期*/
EndDatedatetimeNOTNULL,/*合同到期日期*/
Dept_IDINTNOTNULL,/*签订部门,外键(参照DEPT表)*/
Supplier_IDINTNOTNULL,/*供应商,外键(参照SUPPLIER表)*/
Employee_IDINTNOTNULL/*合同主要负责人,外键(参照EMPLOYEE表)*/
CREATETABLEBuyOrder_Detail/*进货合同明细表*/
BuyOrder_IDINTNOTNULL,/*进货合同编号,主键,外键(参照BUYORDER表)*/
Product_IDINTNOTNULL,/*所进商品编号,主键,外键(参照PRODUCT表)*/
QuantityINTNOTNULL,/*商品数量*/
PricemoneyNOTNULL/*商品进价*/
CREATETABLEEnterStock/*入库单表*/
EnterStock_IDINTIDENTITY(1,1)NOTNULL,/*入库单编号,主键*/
Dept_IDINTNOTNULL,/*入库部门,外键(参照DEPT表)*/
StoreHouse_IDINTNOTNULL,/*所入仓库,外键(参照STOREHOUSE表)*/
Employee_IDINTNOTNULL/*入库人,外键(参照EMPLOYEE表)*/
/*需添加仓库保管员如何来验证入库单*/
CREATETABLEEnterStock_Detail/*入库单明细*/
EnterStock_IDINTNOTNULL,/*入库单编号,主键,外键(参照ENTERSTOCK表)*/
Product_IDINTNOTNULL,/*此种商品编号,主键,外键(参照PRODUCT表)*/
QuantityintNOTNULL,/*此种商品数量*/
PricemoneyNULL,/*此种商品参考价格*/
HaveInvoicebitnotnull,/*此种商品有没有开发票(缺省为0,有没有开票)*/
InvoiceNumvarchar(30)NULL/*发票号*/
CREATETABLEBackStock/*退库单表*/
BackStock_IDINTIDENTITY(1,1)NOTNULL,/*退库单编号,主键*/
Dept_IDINTNOTNULL,/*退库部门,外键(参照DEPT表)*/
StoreHouse_IDINTNOTNULL,/*所退入仓库,外键(参照STOREHOUSE表)*/
Employee_IDINTNOTNULL,/*退库人,外键(参照EMPLOYEE表)*/
Remarkvarchar(250)NULL/*退库原因*/
CREATETABLEBackStock_Detail/*退库单明细表*/
BackStock_IDINTNOTNULL,/*退库单编号,主键,外键(参照BACKSTOCK表)*/
Product_IDINTNOTNULL,/*所退商品编号,主键,外键(参照PRODUCT表)*/
QuantityintNOTNULL,/*退入数量*/
PricemoneyNULL/*参考价格*/
CREATETABLELeaveStock/*出库单表*/
LeaveStock_IDINTIDENTITY(1,1)NOTNULL,/*出库单编号,主键,外键(参照LEAVESTOCK表)*/
Dept_IDINTNOTNULL,/*出库部门,外键(参照DEPT表)*/
StoreHouse_IDINTNOTNULL,/*所出仓库,外键(参照STOREHOUSE表)*/
ToStoreHouse_IDINTNOTNULL,/*所入仓库,外键(参照STOREHOUSE表)*/
Employee_IDINTNOTNULL/*出库人,外键(参照EMPLOYEE表)*/
/*仓库保管员如何来验证出库单*/
CREATETABLELeaveStock_Detail/*出库单明细表*/
LeaveStock_IDINTNOTNULL,/*出库单编号,主键,外键(参照BACKSTOCK表)*/
Product_IDINTNOTNULL,/*所出商品编号,主键,外键(参照PRODUCT表)*/
QuantityintNOTNULL,/*出库数量*/
PricemoneyNULL/*出库价格*/
CREATETABLEBackSale/*退货单表*/
BackSale_IDINTIDENTITY(1,1)NOTNULL,/*退货单编号,主键*/
BackDatedatetimeNOTNULL,/*退货日期*/
Dept_IDINTNOTNULL,/*退货部门,外键(参照DEPT表)*/
StoreHouse_IDINTNOTNULL,/*退入仓库,外键(参照STOREHOUSE表)*/
Employee_IDINTNOTNULL,/*退货人,外键(参照EMPLOYEE表)*/
Remarkvarchar(250)NULL/*退货原因*/
CREATETABLEBackSale_Detail/*退货单明细表*/
BackSale_IDINTNOTNULL,/*退货单编号,主键,外键(参照BACKSTOCK表)*/
QuantityintNOTNULL,/*退货数量*/
PricemoneyNULL/*价格*/
CREATETABLESaleOrder/*销售合同*/
SaleOrder_IDINTIDENTITY(1,1)NOTNULL,/*合同编号,主键*/
Customer_IDINTNOTNULL,/*客户编号,外键(参照CUSTOMER表)*/
CREATETABLESaleOrder_Detail/*销售合同明细表*/
SaleOrder_IDINTNOTNULL,/*销售合同编号,主键,外键(参照BUYORDER表)*/
Product_IDINTNOTNULL,/*销售商品编号,主键,外键(参照PRODUCT表)*/
Quantityintnotnull,/*商品数量*/
Pricemoneynull/*商品进价*/
CREATETABLEBuy/*进货表(验货表)*/
Buy_IDINTIDENTITY(1,1)NOTNULL,/*进货编号,主键*/
ComeDatedatetimeNOTNULL,/*进货日期*/
Dept_IDINTNOTNULL,/*进货部门,外键(参照DEPT表)*/
Employee_IDINTNOTNULL/*验货人,外键(参照EMPLOYEE表)*/
CREATETABLEBuy_Detail/*进货表明细(验货表)*/
Buy_IDINTNOTNULL,/*进货编号,主键,外键(参照BUY表)*/
Product_IDINTNOTNULL,/*商品编号,主键,外键(参照PRODUCT表)*/
BuyOrder_IDINTNULL,/*采购合同,外键(参照BUYORDER表)*/
Quantityintnotnull,/*数量*/
Pricemoneynull/*价格*/
/*BUYORDER_ID为NULL时,为现金进货*/
CREATETABLESale/*销售表*/
Sale_IDINTIDENTITY(1,1)NOTNULL,/*销售编号*/
SaleDatedatetimenotnull,/*销售日期*/
Dept_IDINTNOTNULL,/*销售部门,外键(参照DEPT表)*/
Employee_IDINTNOTNULL/*售货人,外键(参照EMPLOYEE表)*/
CREATETABLESale_Detail/*销售明细(验货表)*/
Sale_IDINTNOTNULL,/*销售编号,主键,外键(参照SALE表)*/
SaleOrder_IDINTNULL,/*销售合同,外键(参照SALEORDER表)*/
Pricemoneynotnull,/*价格*/
Discountintnull/*折扣*/
/*SALEORDER_ID为NULL时,为现金销售*/
CREATETABLEStockPile/*库存表*/
StockPile_IDINTIDENTITY(1,1)NOTNULL,/*库存编号,主键*/
Dept_IDINTNOTNULL,/*商品所属部门,外键(参照DEPT表)*/
StoreHouse_IDINTNOTNULL,/*所在仓库,外键(参照SOTREHOUSE表)*/