首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库中的库存架构

数据库中的库存架构
EN

Stack Overflow用户
提问于 2010-02-19 21:17:08
回答 3查看 1.2K关注 0票数 2

这不是一个与特定语言相关的问题,而是关于处理库存的架构的正确方法的问题。

考虑以下用于存储软件的结构:

代码语言:javascript
复制
platforms (platformID*, platformName)
titles (titleID*, titleName)

下面是独一无二的产品的连接表

代码语言:javascript
复制
products (platformID*, titleID*, releaseDate, notes)

下面是我想要记录我的库存的表格

代码语言:javascript
复制
inventory (platformID*, titleID*, quantityAvailable)

在我看到的示例中,其他人创建了一个表,其中软件的每个唯一副本都存储在单独的一行中:

代码语言:javascript
复制
software(softwareID*, softwareTitle)
inventory(inventoryID*, softwareID*)

我想知道哪种方法更可取?我是否应该为每个唯一的软件拷贝创建一个inventoryID,从而创建一行:

代码语言:javascript
复制
inventory(inventoryID*, platformID*(fk), titleID*(fk))

或者使用存储数量的表,如下所示:

代码语言:javascript
复制
inventory(platformID*(fk), titleID*(fk), quantityAvailable)
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-02-19 21:31:46

我也会从quantityAvailable开始,而不是从所有项目的行开始。但我仍然会选择inventoryId,因为可能会出现这样的情况,您必须使用相同的平台/标题组合来分析条目--使用inventoryId,您将来会更有能力。

我还建议再添加一列: versionNo -软件产品的版本号。有时,您可能会有同一产品的不同版本。有了这些信息后,将信息放入标题中并不是一个好主意(例如,您希望搜索所有"Microsoft Office“产品,而不考虑其版本...)。

票数 1
EN

Stack Overflow用户

发布于 2010-02-19 21:24:48

每个库存都有一个唯一行的好处是,以后如果您想要跟踪一些东西,比如暂挂的库存,预订的库存,已经售出但仍然可以退货的库存,等等。

我看不出这种方法有什么真正的缺点,除了它可能会有更多的工作,如果这些东西不是真的需要的话,这些工作可能得不到回报。

票数 2
EN

Stack Overflow用户

发布于 2010-02-19 21:21:48

我应该为每个唯一的软件拷贝创建一个inventoryID,从而创建一行吗?

没有理由这样做,除非您想要存储有关每个唯一软件副本的某些信息,例如购买每个副本的日期。这在软件清单中很少是实际的。

或使用存储数量的表?

您还可以考虑在products表中添加一个quantityAvailable列,除非您认为最终会希望每个图书都有许多库存,以便能够分配一定数量的特别优惠的库存、即将到期的库存等等。

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

https://stackoverflow.com/questions/2296485

复制
相关文章

相似问题

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