Salut à tous,
Je suis en train de commencer un projet de cms pour construire un site e-commerce. J'en suis encore à l’étape de la réflexion.
Je commence donc en essayant de réfléchir comment hiérarchisé les produits d'un magasin. Imaginons qu'on le fait pour un supermarcher de type auchan.
Le problème qui ce pose tout de suite c'est que l'on vas avoir des centaines voir des milliers de produits à mettre en place et à ranger correctement dans le magasin, que l'on pourrait comparé à notre bdd.
ex : Dans un magasin on as donc plusieurs rayon qui ont plusieurs catégories et sous catégories qui peuvente eux même avoir plusieurs produit du même type.
Ce qui peut donner pour le rayon alimentation:
Rayon :
(1)Alimentation(18)
Categorie :
(2)Légumes(9)
(10)Conserves(17)
Sous categories :
(3)Tomates(4) (5)Patates(6) (7)Oignon(8)
(11)Choucroute(12) (13)Grattin(14) (15)Sardines à l'huile(16)
Et enfin les produits, car on peut avoir plusieurs type tomates(tomates cerises, tomates à farcir) ou différentes type de choucroutes (william saurin, bonduel).
Avant, mon réflexe était de me dire qu'il fallait que je fasse 4 tables différentes (shop_rayon, shop_catégories, shop_sous_categories, shop_produits).
Et qu'il me suffisait de coller un parent_id à chaque table pour que cela fonctionnes.
Et alors que je commence à comprendre les jointures. Je viens de découvrir sur le site, le tutoriel qui parle de la représentation intervallaire.
Qui au final semble bien plus approprié pour un système hiérarchisé comme celui-ci.
Ce que je n'arrive pas à comprendre c'est que si je fait une seule table avec des bords left et right qui met en place l'arbre des catégories. Je me dis qu'une fois arrivée au produit cela ferait beaucoup trop d'entrée.
Et dans l'optique d'un cms cela risque d'etre compliqué de faire des insert.
Surtout que les champs de la table shop_produits sont plus détaillé que la table shop_categories_intervalles.
ex : TABLE shop_categories_intervalles (id, nom, description, lft, rght, parent_id)
TABLE shop_produits (id, nom, reference, description, prix_ttc, prix_ht, disponibilite, parent_id)
En mettant un parent_id qui reprend l'id de la dernière catégorie on pourrait faire une liaison avec la table shop_categories_intervalle.
Ou alors que la table shop_produits comprennent autant de parent_id qu'il y à de catégorie. Mais encore une fois dans l'optique d'une interface d'administration, je me demande si cela est la bonne solution.
Bref je me demande au final comment modéliser une BDD de ce type. Et vers qu'elle solution me diriger.
J'espère que mon explication n'est pas trop brouillon, vu que je suis encore en phase de réflexion.
Merçi par avance