【问题标题】:How to create multiple related tables in mysql database如何在mysql数据库中创建多个相关表
【发布时间】:2016-08-02 06:08:03
【问题描述】:

我的标题可能无法真正传达我想要实现的目标,我有一些相关的表,但我不知道如何创建这种关系以使存储和检索数据变得更加容易。以下是我能想到的。

color table
colorId(PK)
productId(FK)
colorName 

size table
sizeId(PK)
productId(FK)
size


product table
productId(PK)
priceId(FK)
Qty
Name
Title

price table
priceId(PK)
productId(FK)

现在我的问题是我有不同种类的产品,例如 Men's blue addidas glide running shoes productId 1,此产品有不同的尺寸和不同的颜色,价格因尺寸和颜色而异。例如,如果这双 BLUE 11 码的鞋售价为 50 美元,则同一双尺码较大且颜色不同的鞋(如 12 码红色)可能售价 55 美元,同样这双蓝色鞋可能只有 11 码可用这对有库存和颜色为蓝色的 12 号尺码可能不可用,我如何创建我的桌子以保存颜色和尺码之间的所有差异以及价格。对此有任何帮助,谢谢

【问题讨论】:

    标签: mysql


    【解决方案1】:

    您可能不应该在它自己的表中包含每个属性,一个可能更好的方法是拥有一个产品表和一个变体表。这样您就可以在同一张表中查看价格、尺寸、颜色、可用数量等,然后加入产品,即Men's blue adidas glide running shoes。 您的变体表看起来像这样:

    | variant_id | product_id | price | colour_id | size_id | quantity_available | in_stock |
    |          1 |          1 | 50.00 |         1 |     11  |                 20 |        1 |
    |          2 |          1 | 55.00 |         2 |     12  |                  0 |        1 |
    

    然后您可以单独加载每个变体,并在您进行销售时更新quantity_available。我还包含了一个in_stock 布尔值,因此您可以覆盖库存是否出现在您的网站上,而无需调整quantity_available。 然后,您将在purchase 表上拥有variant_id,以便您稍后加入这些。另外,我喜欢在他们自己的表格上显示尺寸和颜色,这样您就可以进行分类来汇总他们所说的所有蓝色,或所有 XS、S、M、L、XL。

    类似:

    | colour_id | name          | base_colour_id |
    |         1 | Royal Blue    |              3 |
    |         2 | Spanish Blue  |              3 |
    |         3 | Blue          |              3 |
    |         4 | Ultramarine   |              3 |
    |         5 | Green         |              5 |
    |         6 | Mint Green    |              5 |
    

    通过这种方式,您可以添加更多独特的颜色变体,并且仍然可以报告基色或全色名称。在这里你会使用:SELECT * FROM variant_colour a JOIN variant_colour b ON b.colour_id = a.base_colour_id 你会得到:

    | colour_id | name          | base_colour_id | colour_id | name          | base_colour_id |
    |         1 | Royal Blue    |              3 |         3 | Blue          |              3 |
    |         2 | Spanish Blue  |              3 |         3 | Blue          |              3 |
    |         3 | Blue          |              3 |         3 | Blue          |              3 |
    |         4 | Ultramarine   |              3 |         3 | Blue          |              3 |
    |         5 | Green         |              5 |         5 | Green         |              5 |
    |         6 | Mint Green    |              5 |         5 | Green         |              5 |
    

    同样的想法可用于尺寸等,因此您最终不会得到数百个独特的属性变体,从而使您的信息无法报告。

    【讨论】:

    • 好主意,谢谢,这对我有帮助,所以我会接受你的回答
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 2012-10-18
    相关资源
    最近更新 更多