Designing a SQL schema for a combination of many-to-many relationship (variations of products)

后端 未结 6 847
野趣味
野趣味 2020-12-04 07:46

I hope the title is somewhat helpful. I\'m using MySQL as my database

I am building a database of products and am not sure how to handle storing prices/SKU of variat

6条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-04 08:09

    Applying normalization to your problem the solution is as given. Run and see it on Fiddle

    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);
    

提交回复
热议问题