网上商店的表结构

时间:2015-05-14 13:54:49

标签: database-design

请考虑这种情况:

  

网上商店销售IT产品。如果我们看看电脑和打印机,   两种产品都需要一些过滤器:ID,名称,价格,   E.D.某些过滤器仅适用于一种产品:操作系统,墨盒   类型。

存储这些产品的最佳方法是什么?

  1. 我在想这个。
  2.   

    使用所有可能的过滤器创建产品表。如果是产品   没有特定的过滤器,只需保持空白即可。这个方法是   实现起来很简单但是如果有的话会导致很多腰部空间   许多不同的特定过滤器。

    1. 这是WordPress的做法。
    2.   

      创建仅包含常规过滤器的产品表。创建一个单独的表,其中包含以下列的元数据(特定过滤器):filter_id,product_id,filter_name,filter_value。每个特定的过滤器都会获得它自己的行。这种方法不会浪费任何空间,但如果每个产品都有大约10个不同的特定过滤器,那么表格会变得非常大,并且可能比第一种方法产生更多的性能问题。

      有人可以告诉我哪种方法是首选方式,或者可以提供替代方法。

      由于

1 个答案:

答案 0 :(得分:1)

您正在寻找的是m:n关系(即过滤器可能适用于多个产品,产品可能有多个过滤器),我在此处描述:Best way to design a table with m:n relation

您对可能的价值感兴趣。我推荐4张桌子:

  • 表1列出了所有产品(ProductId,ProductName,Price等) 可能的产品
  • 表2包含过滤器(FilterId,FilterName等) 列出所有可能的过滤器(但不是它们可能的值)
  • 表3具有表示该过滤器的关系(ProductId,FilterId) 适合该产品。产品和过滤器的FK
  • 表4有Filter值:(FilterId,FilterValue)FK到Filter列表 给定过滤器的每个可能值。