我知道有很多問題都有同樣的問題,但我經歷了很多答案,但不幸的是,我不明白或不滿意。產品數據庫的多個變體
目標 我希望我的產品可以有多個屬性,並根據他們的組合,他們可以有自己的價格,SKU和股票
例 T-狗屎產品的尺寸,顏色和材質屬性(選項)
,所以我想這個靈活strucute是
顏色:紅色,尺碼:M,材質:所以價格$ 2,sku XXX,現貨4 顏色:黑色,尺碼:加大碼,材質:硬 - >售價$ 3,sku XXX,現貨3 顏色:紅色,尺碼:L, 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和股票
感謝
搜索我添加的EAV標籤。 –
@Raheel我希望你有解決辦法。你能提供答案嗎? –
@SankalpTambe我放棄了使用SQL –