首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计(库存数据库)

数据库设计(库存数据库)
EN

Stack Overflow用户
提问于 2011-07-08 05:48:02
回答 2查看 5.1K关注 0票数 4

我希望设计一个库存数据库,跟踪快餐店。由于这将是一个人/计算机访问,并且需要很容易地移动到另一个系统,所以我计划使用SQLite作为DB引擎。基本概念是跟踪从Sams Club等批发仓库购买的库存,然后跟踪库存。

我试图克服的主要障碍是如何在products数据库中跟踪批量项目与单个项目。例如,如果购买了一个散装物品,假设购买了24包焦炭,我如何在产品数据库中维护散装物品,并且它包含24个单独的物品。如果所有的散装物品只包含1个物品的倍数,那么解决方案将相当容易,但在各种包装中,例如包含5个不同的单独物品的薯片纸箱,都具有独立的UPC,解决方案就会变得有点困难。

到目前为止,我已经提出了多次扫描数据库以获取所有信息的多遍方法。

代码语言:javascript
复制
Product_Table
SKU: INT
Name: TEXT
Brand: TEXT
PurchasePrice: REAL
UPC: BIGINT
DESC: TEXT
BULK: BOOLEAN
BulkList: TEXT // comma separated list of SKUs for each individual item
BulkQty: TEXT // comma separated list corresponding to each SKU above representing the quantity

Transaction_Table
SKU: INT
Qty: INT
// Other stuff but that is the essential

当我向库存中添加一个批量项目(一个正数量事务)时,它应该添加它的所有单个项目,因为我想不出什么时候我会有库存来销售批量项目。但是,我希望将批量项目保留在数据库中,以帮助接收它们并将其添加到库存中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-08 05:56:15

一种方法是在批量对象及其内容之间创建1:N映射:

代码语言:javascript
复制
create table bulk_item (
  bulk_product_id integer not null,
  item_product_id integer not null,
  qty integer not null,
  primary key(bulk_product_id, item_product_id),
  foreign key(bulk_product_id) references product(sku),
  foreign key(item_product_id) references product(sku)
);

以逗号分隔的列表当然可以(这可能会使执行某些查询变得更加困难,例如查找包含此SKU的所有批量对象等)。

票数 3
EN

Stack Overflow用户

发布于 2011-07-08 07:41:51

我不得不同意和不同意jspcal。我同意"bulk_item“表,但我不会说使用逗号分隔的列表是”好“的。我怀疑他们只是出于礼貌,不会支持一个不是第一范式的设计。

jspcal建议的设计通常被称为"Bill of Materials“,这是解决像复合产品这样的问题的唯一明智的方法。

为了在您的交易表中有效地使用它,您应该包括交易类型代码以及SKU和数量。您在任何给定SKU中的库存可能上升或下降有不同的原因。最常见的是收到新的股票和客户购买股票。然而,还有其他事情,如手动库存调整,以考虑文书错误和收缩。还有一些库存转换,比如当你决定将一个品种包装成单独的产品出售时。不要认为你可以指望数量是正数还是负数,就能给你足够的信息来理解你的库存水平,以及它们是如何(以及为什么)变化的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6617543

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档