对不起,我没有答案。由于这个问题,我也很头疼。让我问:您有解决方案吗?您可以分享解决方法吗?
我知道有很多同样令人担忧的问题,但我已经回答了很多问题,但不幸的是我听不懂或可能不满意。
目标我希望我的产品可以具有多个属性,并根据它们的组合可以具有其价格,sku和库存
示例T型粪便产品具有尺寸,颜色和材料属性(选项)
所以我想要这个灵活的结构
颜色:红色,尺寸:M,材料:柔软->价格$ 1,sku XXX,库存3颜色:红色,尺寸:L,材料:柔软->价格$ 2,sku XXX,库存4颜色:黑色,尺寸:XL,材料:硬->价格3美元,sKu XXX,股票4
现在,如果仅提供一个属性(选项),我将具有以下结构。但是它不适合变体(组合)。
产品表
CREATE TABLE `products` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`brand_id` int(11) DEFAULT NULL,
`vendor_id` int(11) NOT NULL,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`slug` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`long_description` longtext COLLATE utf8_unicode_ci NOT NULL,
`short_description` longtext COLLATE utf8_unicode_ci,
`images` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`weight` decimal(8,2) NOT NULL,
`discount` int(11) DEFAULT NULL,
`discount_start` timestamp NULL DEFAULT NULL,
`discount_end` timestamp NULL DEFAULT NULL,
`status` tinyint(4) NOT NULL,
`released_on` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
选项表
CREATE TABLE `options` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Products_Options表
CREATE TABLE `products_options` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`product_id` int(11) NOT NULL,
`sku` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
`option_id` int(11) DEFAULT NULL,
`option_value` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,
`unit_price` decimal(8,2) NOT NULL,
`available_stock` int(11) NOT NULL,
`created_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
`updated_at` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
因此products_options
表可以通过以下方式存储产品
Color: Red -> price $1, sku xxx, stock 3
Size: M -> price $1, sku xxx stock 3
但是它不能反映我是否要存储颜色:红色尺寸:m有一个价格,sku和库存
谢谢
您应该尝试在产品表中输入价格,库存和库存字段。每个唯一产品都具有这些字段中的一个,并且都属于产品表。 Please look at the sample db schema.
您将把产品的主要信息和其他信息(尺寸/颜色)分成2个表。
产品(名称,说明等)-适用于所有规格相同的产品-例如,一定范围的袜子。“其系列”-不存储任何库存,将其视为空壳。.需要注意的是,您要区分产品的女士版和男士版,然后在此处为每个版本创建一个新产品。
ProductsQty
:这将列出产品的ID(上方),然后每个尺寸/颜色列中的每个变化都包含多行-如果您说3(尺寸,颜色,重量),则需要3例如行。(对于非衣服物品,则需要进一步走一步)-这将是产品的主要“规格”-即中型或大型(330毫升,200瓦),基本上决定了设备的基本尺寸,它可以毫升,毫米,英寸,克,瓦,伏特..您可以扩展此范围-请记住,产品类型将决定将两者分开的位置。衣服有颜色和尺寸,但油箱可能以升为主要区别,也可能是颜色-因此,您可以使用varchar列并输入任何单位,加仑,英尺(即使用matrix1,matrix2,matrix3作为更通用。)您需要为每种颜色和
尺寸增加一个新行。中号的蓝袜子与小号的蓝袜子是不同的产品。主要功能差异应该是新产品-即,如果您的扬声器设置与其他型号相似,但又说-附加蓝牙,这将是新的顶级产品。.您必须精明何时拆分尺寸/颜色以及何时创建新产品。您的示例仅在第二张表中存储颜色/尺寸变化。
绑起来:
**示例产品:男士Sierra Dri羽绒服**
产品表
(ID,名称,说明):221,男士Sierra DriDown全天候夹克,优质3季夹克bla bla bla
ProductsQty
(id,产品,大小,颜色,数量)998,221,大,蓝色,22
999,221,大,黑色,4
如果您有多个商店,则可以在新表中使用ProductsQty id,并在其中具有每个子产品的storeid和qty。
您还可以将sku存储在任何一个表中-如果该家族具有相同的sku,将其存储在产品中,否则,将其放置在ProductsQty表中。
现在您可以搜索大小/颜色/ sku-希望这有意义。.
对不起,我没有答案。由于这个问题,我也很头疼。让我问:您有解决方案吗?您可以分享解决方法吗?
对不起,我没有答案。由于这个问题,我也很头疼。让我问:您有解决方案吗?您可以分享解决方法吗?