2

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

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

platforms (platformID*, platformName)
titles (titleID*, titleName)

以下是独特产品的连接器表

products (platformID*, titleID*, releaseDate, notes)

以下是我想跟踪我的库存的表

inventory (platformID*, titleID*, quantityAvailable)

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

software(softwareID*, softwareTitle)
inventory(inventoryID*, softwareID*)

我想知道哪种方法更可取?我应该为每个唯一的软件副本创建一个inventoryID 并因此创建一行:

inventory(inventoryID*, platformID*(fk), titleID*(fk))

或者使用存储数量的表,例如:

inventory(platformID*(fk), titleID*(fk), quantityAvailable)
4

3 回答 3

2

为每件库存设置唯一行的好处是,以后如果您想跟踪诸如中途停留的库存、预购的库存、已售出但仍可退回的库存等内容。

我认为这种方法没有任何真正的缺点,只是如果这些东西不是真正需要的话,它可能需要做更多的工作,而这些工作可能不会得到回报。

于 2010-02-19T13:24:48.190 回答
1

我应该为每个唯一的软件副本创建一个inventoryID 并因此创建一行吗?

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

或者使用存储数量的表来代替?

您还可以考虑quantityAvailable在您的产品表中添加一列,除非您认为最终您希望为每个标题拥有许多库存,以便能够分配即将推出的特价商品的库存数量到期等

于 2010-02-19T13:21:48.240 回答
1

我也会从数量可用而不是所有项目的行开始。但是我仍然会选择inventoryId,因为可能会发生这种情况,您必须使用相同的平台/标题组合来剖析条目——使用inventoryId,您将来会更容易增强。

我还建议再添加一列: versionNo --- 软件产品的版本号。有时您可能拥有同一产品的不同版本。当你有这个时,将信息放到标题中不是一个好主意(例如,你想搜索所有“Microsoft Office”产品,无论版本如何......)。

于 2010-02-19T13:31:46.343 回答