【问题标题】:Modeling Items and Options for shopping cart购物车的建模项目和选项
【发布时间】:2011-11-20 10:18:32
【问题描述】:

我正在开发一个购物车应用程序,但对于如何根据以下要求对项目和选项建模非常困惑:

  1. 每个项目可能有零个或多个选项(颜色、尺寸等)
  2. 每个选项可能有几个不同的值(例如,颜色为绿色、蓝色、红色和橙色)
  3. 具有相同选项的两个项目可能对该选项具有不同的值(例如,您可以订购绿色或橙色的 T 恤,您可以订购蓝色或红色的球帽)

我确信这是一种比较常见的情况,但我以前从未遇到过这种情况。有什么想法吗?

【问题讨论】:

    标签: mysql database-design data-modeling


    【解决方案1】:

    item 表(包含项目)

    item_id
    name
    

    options 表(包含所有选项)

    option_id
    name
    type -- color, front_color, back_color, size, shoe_size etc.
    

    option_value 表(存储每个选项的所有可用值)

    option_value_id
    option_id
    value
    

    item_available_option(存储每个项目的所有可用选项)

    item_id
    option_id
    

    item_available_option_value(存储每个选项每个项目的所有可用选项值)

    item_id
    option_id -- not required, but I added since it's easier to figure it out
    option_value_id
    

    orders表(存储订单)

    order_id
    customer_id
    order_date
    billing_address
    delivery_address
    

    order_position表(包含订单仓位)

    order_pos_id
    order_id
    item_id
    quantity
    

    order_pos_option 表格(包含每个订单仓位的选项)

    order_pos_id
    option_id
    option_value_id
    

    这是一种非常通用的方法,允许在每个项目的基础上定义未定义数量的选项和选项值。

    如果没有那么多选项,另一种选择是具体化,如下所示:


    colors 表格(包含所有颜色)

    color_id
    name
    

    item_available_colors(每个 item_id 的可用颜色)

    item_id
    color_id
    

    sizes 表格(包含所有尺寸)

    size_id
    name
    

    item_available_sizes(每个 item_id 的可用尺寸)

    item_id
    size_id
    

    order_position表格(包含订单仓位)

    order_pos_id
    order_id
    item_id
    quantity
    color_id
    size_id
    

    itemorders 表保持不变,不再需要所有其他表。

    还有很多其他可能的变化,这旨在为您提供一个起点。

    【讨论】:

    • 谢谢。我对使用 RDBMS 很陌生,所以我非常感谢您的帮助非常
    • 很高兴我能帮上忙。我看到这是你的第一个问题,欢迎加入,也考虑回答其他人的问题,分享你的知识。
    猜你喜欢
    • 1970-01-01
    • 2013-09-11
    • 1970-01-01
    • 2014-07-30
    • 2016-06-06
    • 1970-01-01
    • 1970-01-01
    • 2020-01-04
    • 2017-04-27
    相关资源
    最近更新 更多