首页 文章

购物车的建模项目和选项

提问于
浏览
1

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

  • 每个项目可能有零个或多个选项(颜色,大小等)

  • 每个选项可能有几个不同的值(例如绿色,蓝色,红色和橙色)

  • 具有相同选项的两个项目可能具有该选项的不同值(例如,您可以订购绿色或橙色的T恤,并且您可以订购蓝色或红色的球帽)

我确信这是一个有点常见的情况,但它不是我以前遇到过的情况 . 有任何想法吗?

1 回答

  • 5

    item 表(包含项目)

    item_id
    name
    

    options 表(包含所有选项)

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

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

    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 表保持不变,不再需要所有其他表 .

    还有很多其他可能的变化,这是为了给您提供一个起点 .

相关问题