这不是与特定语言相关的问题,而是与处理库存的正确架构方法有关。
考虑以下存储软件的结构:
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)
答案 0 :(得分:2)
为每件库存设置一个独特的行的优势在于,如果您想要跟踪诸如停留的库存,预订的库存,已售出但仍可返回的库存等,< / p>
我认为这种方法并没有任何真正的不利之处,只是如果不是真的需要这些东西可能会带来更多的回报。
答案 1 :(得分:1)
我应该创建一个inventoryID和 因此每个独特软件都有一行 副本?
没有理由这样做,除非您想在每个唯一的软件副本上存储一些信息,例如每个副本的购买日期。这在软件清单中很少具有实际意义。
或使用存储数量的表格 代替?
您还可以考虑在产品表中添加quantityAvailable
列,除非您认为最终您希望每个标题都有多个库存,以便能够分配一定数量的库存。根据特别优惠,即将到期等等。
答案 2 :(得分:1)
我也会从quantityAvailable开始,而不是所有项目的行。 但是我仍然会选择inventoryId,因为可能会出现这种情况,你必须使用相同的平台/标题组合来剖析条目 - 使用inventoryId你将来会更加强化。
我还建议添加另一列:versionNo ---软件产品的版本号。有时您可能会使用同一产品的不同版本。如果你有这个,不要把信息放到标题中(例如你想要搜索所有“Microsoft Office”产品而不管版本......)。