在MySQL中构建定价矩阵的最佳方法是什么?

时间:2013-04-05 06:53:11

标签: mysql

我正在使用用户可以访问的网站:

  1. 选择产品(百叶窗)
  2. 选择颜色(有3组颜色 - A,B和C.价格取决于颜色)
  3. 输入百叶窗的尺寸(厘米)。
  4. 当用户输入大小并单击Enter时,将向执行查询的PHP脚本触发ajax调用,查看数据库并查找相应的价格。

    尺寸以10cm为增量。因此,如100,110,120,130等。因此,如果用户写入115,它将自动选择120作为适当的大小/价格(它将始终向上舍入)。

    我已经制作了这个结构,但想知道你是否有任何想法我可以更快/更好地优化它。

    products
    | id | SKU    | name           | category
    | 1  | 010101 | Window Blind 1 | Blinds
    | 2  | 020202 | Window Blind 2 | Blinds
    
    pricing_colors
    | id | group | color
    | 1  | A     | Red
    | 2  | B     | Green
    | 3  | C     | Blue
    | 4  | D     | White
    
    product_colors 
    | id | sku    | color_id
    | 1  | 010101 | 1
    | 2  | 010101 | 2
    | 2  | 020202 | 1
    | 2  | 020202 | 3
    
    pricing_matrix
    | id | sku    | color_group | width | height | price
    | 1  | 010101 | A           | 100   | 100    | 50
    | 2  | 010101 | A           | 110   | 100    | 55
    | 3  | 010101 | A           | 120   | 100    | 60
    | 4  | 010101 | A           | 100   | 110    | 53
    | 5  | 010101 | A           | 100   | 120    | 56
    | 6  | 010101 | B           | 100   | 100    | 60
    | 7  | 010101 | B           | 110   | 100    | 65
    | 8  | 010101 | B           | 120   | 100    | 70
    | 9  | 010101 | B           | 100   | 110    | 63
    | 20 | 010101 | B           | 100   | 120    | 66
    

    如您所见,pricing_matrix表将非常大。因为它将具有所有宽度/高度增量的3个颜色组中的每一个的所有宽度和高度。

    考虑了以下查询以找到合适的价格:

    SELECT price FROM pricing_matrix 
    WHERE height >= ... AND width >= .... AND sku = .... AND color_group = 'A' 
    ORDER BY height,width ASC
    

    请提出如何改进的建议! :)

0 个答案:

没有答案