2009-10-02 5 views
0

Je construis un site Web de commerce électronique à partir de rien et je dois créer une page de configuration de produit spéciale.Comment créer ce modèle de base de données e-commerce personnalisé?

Il est seulement 1 type de produit, mais il est configurable sur plusieurs niveaux:

  1. couleur (environ 4 possibilités différentes). La valeur est un VARCHAR.
  2. Matériau (environ 10 options différentes). La valeur est un VARCHAR.
  3. Taille (Environ 30 options différentes). A 2 valeurs, une colonne de largeur et une colonne de hauteur.
  4. Finition (Environ 20 options différentes). La valeur est un VARCHAR.
  5. Autres différentes options VARCHAR etc.

Ma question est ce que cela ressemblerait-il dans une base de données MySQL typique. Est-ce que j'ai une table pour chaque type d'option ou juste une table et lui donne en quelque sorte assez de colonnes pour qu'elle stocke toutes les options? Je devrai stocker des commandes et être capable de stocker les informations pour la commande dans un tableau. Je veux aussi être en mesure d'avoir des produits prêts à l'emploi qui ne sont pas personnalisables, tout comme un magasin normal.

Toute aide est appréciée !!

+0

« Comment devriez-vous faire mon travail pour moi? » – LiraNuna

+0

C'est pour un projet parallèle, pourquoi venez-vous ici si vous voulez être drôle? C'est la ressource d'un programmeur. – Abadaba

+0

Si c'est pour l'école ou votre propre édification, alors cool, vous apprendrez beaucoup en faisant cela. Cependant, si vous construisez un magasin pour un client, s'il vous plaît faites-leur une faveur et choisissez l'une des nombreuses plates-formes de panier robustes et matures là-bas au lieu de réinventer la roue. J'ai vu quelques charrettes fabriquées à partir de zéro et elles étaient criminellement précaires. Je recommande OpenCart car il a une architecture très bien structurée et facile à comprendre. Ne partez pas avec Magento à moins qu'il ne possède des fonctionnalités que le client doit absolument avoir et que vous êtes un masochiste :) –

Répondre

1

Je suggère que vous allez avec une table principale, avec toutes les informations sur le produit, et un tas de tables de recherche, qui se connecte à la table principale.

Il devrait ressembler à ceci:

Product_table: 
    ID primary key, 
    ColorInt int foreign key lkp_Color_table.ID, 
    Material_int foreign key lkp_Material_table.ID, 
    // snip the rest 

Et voici la table de recherche:

lkp_color_table: 
    ID primary key, 
    ColorStr varchar, 
    description varchar 

lkp_Material_table: 
    ID primary key, 
    MaterialStr varchar, 
    description varchar 

Le Product_table peut ressembler à ceci:

ID||ColorInt||Material 
1 ||1  ||1 
2 ||1  ||2 

Alors que le lkp_color_table peut ressembler à ceci:

ID||colorstr||description 
1 ||red  ||red color 
2 ||blue ||blue color 

Notez que lkp_color_table peut contenir color non utilisé, même chose pour d'autres tables de recherche. Donc, si vous avez 30 couleurs possibles, il vous suffit de remplir lkp_color_table avec 30 éléments, et ainsi de suite.

Il n'est pas nécessaire de créer un Product_id distinct pour chaque combinaison couleur-matière, il vous suffit de créer un product_id si vous l'utilisez.

+0

Merci! Question: Si dans la table de produits je veux stocker des produits normaux sans configuration, comment puis-je le distinguer de mon produit configurable ... laissez juste les colorint_int et materialint_int null? – Abadaba

+0

Oui, vous pouvez laisser vide, mais assurez-vous que lorsque vous créez la table, vous ne définissez pas la colonne pour être non nul – Graviton

+0

Merci, très clair. – Abadaba

0

Je dirais que vous aurez besoin:

OrderTable (OrderID, CustomerID, date, prix, expédition, ...)

OrderProductTable (OrderID, ProductID, Quantité)

ProductTable (ProductID, StandardBit, ColorID, Option2ID, ..., OptionNID); StandardBit - pour savoir si le produit est standard ou configurable.

CustomerTable (CustomerID, ...)

ShipmentTable()

OptionTable pour chaque option configurable (OptionID, Description).

1

2 + N tables:

  • Produits (chaque produit dans le catalogue a un record ici
  • SpecialKindOfProduct (Votre type de produit configurable, un product_id, et un tas de clés étrangères pour rechercher des tables (color_id , SIZE_ID, etc.)
  • N tables de consultation (couleurs, tailles, etc.)

Lorsque vous ajoutez un secondes type de configurable produit dans le futur, vous venez de créer AnotherSpecialKindOfProduct.

Espérons que c'est assez clair à suivre.

Le principal avantage est que tous vos produits ont des attributs partagés (les colonnes de "Produits"), mais peuvent également avoir des attributs étendus.

Vous pouvez facilement sélectionner tout ce que vous avez besoin de produits à gauche qui rejoint SpecialKindOfProduct, etc.

+0

c'est super, très facile à comprendre. Merci! – Abadaba

+0

Ensuite, votez-le, et/ou acceptez-le, c'est ce qui fait tourner le monde des SO. – timdev

+0

Je ne peux pas voter parce que j'ai besoin de 15 karma ou quelque chose. Je voulais accepter votre message, mais je voulais d'abord entendre plus de réponses, j'espère que vous comprenez, merci! – Abadaba

Questions connexes