ProductID与数据库中的条形码

时间:2013-08-21 18:53:25

标签: database database-design

我正在为商业商店建立数据库。我正在讨论在DB中使用productID。

我还需要将交易历史存储在数据库中。

使用productID或使用条形码作为我的产品的唯一标识符会更好。

3 个答案:

答案 0 :(得分:4)

你可以用两个都不行吗?没有理由为什么产品不应该有多种类型的标识符。但是,根据具体情况,产品可能有多个条形码。对于零售包装商品,同一产品有多种不同的条形码并不罕见。

答案 1 :(得分:2)

一般情况下,条形码会是一个糟糕的PK。由于存储它们的数据类型,您不希望加入它们。对于任何具有子表的表,Product Id可能是更好的选择。但是,您可能仍然应该在条形码上放置一个唯一索引,没有什么能阻止多个东西拥有唯一索引。

答案 2 :(得分:2)

您基本上有两个选择:

  1. 在PRODUCT表中只有自然键(条形码)。
  2. 在PRODUCT表格中同时拥有自然(条形码代理键( id )。
  3. 在第一种情况下:

    • PRODUCT表将“更加苗条”(因为只有一个索引)。索引维护会更少,缓存效率会更高。
    • 条形码将迁移到所有子表 1 ,因此您无需加入PRODUCT即可获取条形码
    • 但出于同样的原因,子表将“更胖”(因为条形码 id 更胖)。它们将占用更多空间并且缓存效率较低。

    在第二种情况下:

    • PRODUCT表会更胖(因为它上面有额外的字段和索引)。
    • 子表格必须与PRODUCT一起加入以获取条形码。
    • 但儿童桌会更苗条。

    所以它基本上是在更少或更多JOINing之间以及“底部重”或“头重脚轻”存储/缓存之间的权衡。您只需要决定哪种方式更适合您预期的数据访问模式......


    1 I.e。通过FOREIGN KEY引用PRODUCT的表格。 TRANSACTION_HISTORY可能是这样一个表的一个例子。