我正在开发一个购物车应用程序,我对如何根据以下要求对项目和选项进行建模感到非常困惑:
每个项目可能有零个或多个选项(颜色,大小等)
每个选项可能有几个不同的值(例如绿色,蓝色,红色和橙色)
具有相同选项的两个项目可能具有该选项的不同值(例如,您可以订购绿色或橙色的T恤,并且您可以订购蓝色或红色的球帽)
我确信这是一个有点常见的情况,但它不是我以前遇到过的情况 . 有任何想法吗?
item 表(包含项目)
item
item_id name
options 表(包含所有选项)
options
option_id name type -- color, front_color, back_color, size, shoe_size etc.
option_value table(存储每个选项的所有可用值)
option_value
option_value_id option_id value
item_available_option (存储每个项目的所有可用选项)
item_available_option
item_id option_id
item_available_option_value (每个选项的每个项目存储所有可用选项值)
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 表(存储订单)
orders
order_id customer_id order_date billing_address delivery_address
order_position 表(包含订单位置)
order_position
order_pos_id order_id item_id quantity
order_pos_option 表(包含每个订单位置的选项)
order_pos_option
order_pos_id option_id option_value_id
这是一种非常通用的方法,允许在每个项目的基础上定义未定义数量的选项和选项值 .
如果没有那么多的选择,另一种方法是具体,如下所示:
colors 表(包含所有颜色)
colors
color_id name
item_available_colors (每个item_id可用的颜色)
item_available_colors
item_id color_id
sizes 表(包含所有尺寸)
sizes
size_id name
item_available_sizes (每个item_id的可用尺寸)
item_available_sizes
item_id size_id
order_pos_id order_id item_id quantity color_id size_id
item 和 orders 表保持不变,不再需要所有其他表 .
还有很多其他可能的变化,这是为了给您提供一个起点 .
1 回答
item
表(包含项目)options
表(包含所有选项)option_value
table(存储每个选项的所有可用值)item_available_option
(存储每个项目的所有可用选项)item_available_option_value
(每个选项的每个项目存储所有可用选项值)orders
表(存储订单)order_position
表(包含订单位置)order_pos_option
表(包含每个订单位置的选项)这是一种非常通用的方法,允许在每个项目的基础上定义未定义数量的选项和选项值 .
如果没有那么多的选择,另一种方法是具体,如下所示:
colors
表(包含所有颜色)item_available_colors
(每个item_id可用的颜色)sizes
表(包含所有尺寸)item_available_sizes
(每个item_id的可用尺寸)order_position
表(包含订单位置)item
和orders
表保持不变,不再需要所有其他表 .还有很多其他可能的变化,这是为了给您提供一个起点 .