如何设计库存数据库中物料存储的数据库?

时间:2018-08-16 06:42:00

标签: sql sql-server database-design erp

这基本上是针对我当前正在使用的生产管理系统。我有多种类型的项目要存储在库存中(产品/零件/材料)。我想将它们存储在由(Store,Section,Rack,Bin)组成的库存商店中。我在完成此设计时遇到了困难,希望获得大家的帮助,就我如何完成此设计进行集思广益。

这就是我现在所拥有的。

Products:
    [ID]                   INT           IDENTITY (1, 1) NOT NULL,
    [Name]                 NVARCHAR (50) NOT NULL,
    [DefaultPurchasePrice] FLOAT (53)    NOT NULL,
    [DefaultSalePrice]     FLOAT (53)    NOT NULL,
    [Description]          TEXT          NULL,
    [ItemCode]             NVARCHAR (50) NOT NULL,
    [MinimumLevel]         INT           NOT NULL,
    [DateAdded]            DATE          NOT NULL,
    [LastModified]         DATETIME      NOT NULL
Stores:
    [ID]   INT           IDENTITY (1, 1) NOT NULL,
    [Name] NVARCHAR (50) NOT NULL
Storages:
    [ID]      INT IDENTITY (1, 1) NOT NULL,
    [StoreID] INT NOT NULL,
    [Section] INT DEFAULT ((0)) NOT NULL,
    [Rack]    INT DEFAULT ((0)) NOT NULL,
    [Shelf]   INT DEFAULT ((0)) NOT NULL,
    [Bin]     INT DEFAULT ((0)) NOT NULL,
    PRIMARY KEY CLUSTERED ([ID] ASC),
    CONSTRAINT [FK_Storages_Stores] FOREIGN KEY ([StoreID]) REFERENCES [dbo]. 
[Stores] ([ID])
ProductStock:
    [ProductID]         INT      NOT NULL,
    [QuantityOnHand]    INT      DEFAULT ((0)) NOT NULL,
    [QuantityAllocated] INT      DEFAULT ((0)) NOT NULL,
    [QuantityTarget]    INT      DEFAULT ((0)) NOT NULL,
    [LastModified]      DATETIME NOT NULL,
    PRIMARY KEY CLUSTERED ([ProductID] ASC),
    CONSTRAINT [FK_ProductStock_Product] FOREIGN KEY ([ProductID]) REFERENCES [dbo].[Products] ([ID])

这种设计的问题是我无法追踪抽奖。

1 个答案:

答案 0 :(得分:0)

首先,这是一个非常广泛的问题,因此,如果对此提出了警告,请不要感到惊讶。

关于您到目前为止的情况,我看到几个小问题。

Products.DescriptionTEXTTEXT data type has been deprecated已经有一段时间了,因此您应该将其更改为NVARCHAR(MAX)

ProductStock仅允许一个项目的三种状态,我不确定QuantityTarget的含义。如果这是理想的库存编号,那么它和Products一起不属于MinimumLevel表吗?我假设QuantityOnHand表示可售商品,QuantityAllocated表示客户已订购的商品。

但是,如果您对事务数据感兴趣,则至少需要再添加两个字段; QuantityOnOrder(来自供应商)和类似QuantityInactive之类的东西,您将在其中计入诸如收货损坏并正在等待退还给供应商的物品之类的事情。基本上是您拥有的任何单位,但不能出售。

也就是说,如果您想知道某物的来源和去处,您的数据模型仍然缺少很多实体。在传入端,您尚未创建VendorsCommonCarriersPurchaseOrdersPurchaseOrderDetailsReceipts。在传出侧,您尚未创建CustomersInvoicesInvoiceDetailsReturnsReturnDetails。而且,我们甚至都没有涉及付款方式,也没有涉及其他二十种我没有想到的事情。

这种数据建模有大量的在线资源。 ARTS Retail Operational Data Model只是其中一个,但是它非常全面,应该为您提供一些进一步研究的良好指导。