Mysql
具有多個變體/屬性的產品的架構設計?
我正在使用 MySQL。這個想法類似於 shopify 具有不同的概念,因此使用者將添加具有多種類型的變體和屬性的自己的產品。
從我所做的所有研究來看,這對我來說似乎是最有可能的解決方案,我只是想知道以下架構是否有任何問題,以及有哪些優點/缺點?
謝謝
Table: products ------------------------------ | ID | ProductName | |----------------------------| | 1 | Leather Wallet Case | | 2 | Jeans | | 3 | Power Bank | Table: products_variants ------------------------------- | ID | ProductId | ParentId | Variant | VariantName | SKU | StockTotal | WholeSalePrice | BuyPrice | OnSale | OnSalePrice | |---------------------------------------------------------------------------------------------------------------------------| | 1 | 1 | null | model | iPhone5 | SKU | 10 | 3 | 10 | null | null | |---------------------------------------------------------------------------------------------------------------------------| | 2 | 1 | null | model | iPhone4 | null | null | null | null | null | null | | 3 | 1 | 2 | color | Red | SKU | 10 | 3 | 10 | null | null | | 4 | 1 | 2 | color | Blue | SKU | 10 | 3 | 10 | null | null | |---------------------------------------------------------------------------------------------------------------------------| | 5 | 2 | null | size | M | null | null | null | null | null | null | | 8 | 2 | 5 | color | Black | SKU | 10 | 3 | 10 | null | null | | 9 | 2 | null | size | XXL | SKU | 10 | 3 | 10 | null | null | | 10 | 2 | 9 | material | Cotton | null | null | null | null | null | null | | 11 | 2 | 10 | color | Red | SKU | 10 | 3 | 10 | null | null | | 12 | 2 | 10 | color | Blue | SKU | 10 | 3 | 10 | null | null | | 13 | 2 | 9 | material | Casmir | null | null | null | null | null | null | | 14 | 2 | 13 | color | Green | SKU | 10 | 3 | 10 | null | null | | 15 | 2 | 13 | color | Brown | SKU | 10 | 3 | 10 | null | null | |---------------------------------------------------------------------------------------------------------------------------| | 13 | 3 | null | null | null | SKU | 10 | 3 | 10 | null | null |
這只是來自@lesandru 回复的資訊,我真的覺得它非常有用,所以感謝他和@sahalMoidu
對您的問題應用規範化,解決方案如給定。執行並在 Fiddle 上查看
CREATE TABLE products ( product_id int auto_increment primary key, name varchar(20), description varchar(30) ); INSERT INTO products (name, description) VALUES ('Rug', 'A cool rug' ), ('Cup', 'A coffee cup'); create table variants (variant_id int auto_increment primary key, variant varchar(50) ); insert into variants (variant) values ('color'),('material'),('size') ; create table variant_value(value_id int auto_increment primary key, variant_id int , value varchar(50) ); insert into variant_value (variant_id,value) values (1 ,'red'),(1 ,'blue'),(1 ,'green'), (2 ,'wool'),(2 ,'polyester'), (3 ,'small'),(3 ,'medium'),(3 ,'large'); create table product_Variants( product_Variants_id int auto_increment primary key, product_id int, productVariantName varchar(50), sku varchar(50), price float ); create table product_details(product_detail_id int auto_increment primary key, product_Variants_id int, value_id int ); insert into product_Variants(product_id,productVariantName,sku,price) values (1,'red-wool' ,'a121',50); insert into product_details(product_Variants_id , value_id) values( 1,1),(1,4); insert into product_Variants(product_id,productVariantName,sku,price) values (1,'red-polyester' ,'a122',50); insert into product_details(product_Variants_id , value_id) values( 2,1),(2,5);
多種產品的數據庫模式
解決方案在這裡: http: //www.codingblocks.net/programming/database-schema-for-multiple-types-of-products/