我正在创建一个电子商务网站。
目前,我有一个名为“ attribute_titles”的表,如下所示:
ID NAME
1 size
2 colour
然后我有一个名为“ attribute_values”的表,如下所示:
ID ATTRIBUTE_ID VALUE
1 1 small
2 1 medium
3 1 large
4 2 red
5 2 green
6 2 blue
然后,我的产品表将包含适用于相关产品的属性数组,因此尺寸和颜色为['1','2']
。然后,我有一个定价表,其中包含产品每个变体的价格以及该属性的多维数组。因此,红色的小商品将以['1'=>'1','2'=>'4']
作为属性。
我在产品页面上有一个尺寸下拉列表和一个颜色下拉列表,但是可能不是所有组合都存在,因此例如我们只有中等大小和大尺寸的绿色产品。
因此,如果有人选择绿色作为颜色,那么我想更新下拉列表,以便不显示小尺寸。
目前,他们可以选择任何颜色或尺寸,然后检查价格表中是否存在该组合,如果没有,我只是发出警告,但我不希望他们能够选择不存在的选项。
任何有关如何实现这一目标的想法或建议,将不胜感激。
答案 0 :(得分:1)
我以前在电子商务领域工作过。
您的建模不完整。此时,您缺少的是SKU
实体(库存单位)。该实体对您之前概述的概念的存在进行建模。通常,它还会管理每种产品组合的库存可用性(即其名称的来源)。
电子商务网站通常显示“产品”,而不显示SKU(直接)。例如,“ V领Safari T恤”。在后台,您实际上对该单个产品有多个SKU。您可能有:
create table sku (
product_id int foreign key product (id),
color_id int foreign key color (id),
size_id int foreign key size (id),
units_left int
);
select * from sku;
color size units_left
----- ---- ----------
Blue M 10
Blue L 6
Red L 7
Red XL 0 -- no stock of this one today!
Green S 2
您还需要确定是否要显示确实没有库存的SKU(在上面的示例中为Red,XL)。
如果有更多库存,您只需将这些值添加到SKU表中。如果有新的组合到达,您可能需要添加额外的行(例如,绿色,M)。