कई वेरिएंट / विशेषताओं वाले उत्पादों के लिए स्कीमा डिज़ाइन?


11

मैं MySQL का उपयोग कर रहा हूं। यह विचार एक अलग अवधारणा के साथ खरीदारी करने के समान है, इसलिए उपयोगकर्ता अपने उत्पादों को कई प्रकार के वेरिएंट और विशेषताओं के साथ जोड़ने जा रहे हैं।

मेरे द्वारा किए गए सभी शोधों से यह मेरे लिए सबसे अधिक संभावना वाला समाधान लगता है और मैं सोच रहा हूं कि क्या निम्न स्कीमा में कुछ भी गड़बड़ है और अपसाइड / डाउनसाइड क्या हैं?

धन्यवाद

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        |

1
'Eav' टैग पर क्लिक करें।
रिक जेम्स 20

मुझे पूर्ण EAV समाधान में कोई दिलचस्पी नहीं है। मैंने जो योजना बनाई है वह ईएवी की कुछ अवधारणा का उपयोग करती है लेकिन पूरी तरह से नहीं।
20

जवाबों:


5

यह सिर्फ @lesandru जवाब से जानकारी है, मैं वास्तव में यह बहुत उपयोगी है, तो उसे और @sahalMoidu को क्रेडिट

आपकी समस्या का सामान्यीकरण लागू करते हुए समाधान दिया गया है। इसे चलाएं और इसे फिडल पर देखें

बेला

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


2

कई प्रकार के उत्पादों के लिए डेटाबेस स्कीमा

समाधान यहाँ है: http://www.codingblocks.net/programming/database-schema-for-multiple-types-of-products/

यहां छवि विवरण दर्ज करें


नमस्कार @ काओ फोंग, जहां एक उत्पाद की मात्रा को संभालना होगा? ऐसे उत्पाद जिनके पास कोई भी वैरिएंट नहीं है, वे शायद इसे उत्पाद तालिका पर संभाल लेंगे, लेकिन उन उत्पादों के बारे में जिनके पास संस्करण हैं?
कोडीनजा

1
नमस्ते, अगर रंग, आकार, या सामग्री या उनमें से किसी भी संयोजन जैसी विशेषता कीमत को प्रभावित करती है और जैसा कि आपने स्टॉक मात्रा के बारे में परवाह नहीं की है तो यह
कहेंगे
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.