Bonjour,
Je mets en place actuellement un catalogue de produits enregistré dans une base de données MySQL où chaque produit peut appartenir à une ou plusieurs catégories.
Structure de la table "catalogue_produit" (simplifiée) :
id smallint(5)
categorie smallint(3)
nom varchar(40)
Structure de la table "catalogue_categorie" (simplifiée également) :
id smallint(3)
nom varchar(40)
parent smallint(3)
Les champs catalogue_produit.categorie et catalogue_categorie.id sont liés.
Je vais tâcher de vous prendre un exemple parlant…
Dans la table catalogue_produit, j'ai :
id=1, categorie=3, nom=Maquereau blanc
id=2, categorie=4, nom=Tyrannosaure
Dans la table catalogue_categorie, j'ai :
id=1, nom="Poisson", parent=0
id=2, nom="Poisson de mer", parent=1
id=3, nom="Maquereau", parent=2
id=4, nom="Dinosaure", parent=0
Le produit Maquereau blanc appartient directement à une catégorie, qui elle-même appartient à 2 autres catégories, ce qui fait 3 en tout. Le Tyrannosaure n'appartient qu'à une seule catégorie (car n'a pas de parent).
Je voudrais construire une ou plusieurs requêtes, les plus optimisées possibles, qui me permettent d'afficher :
- Le nom du produit
- La ou les catégorie(s) auxquelles il appartient
Est-ce possible ainsi ou dois-je revoir la structure de mes tables ?
Serait-ce plus pratique d'avoir 3 tables comme ceci :
catalogue_produit
id smallint(5)
nom varchar(40)
catalogue_categorie
id smallint(3)
nom varchar(40)
parent smallint(3)
catalogue_correspondance
produit_id smallint(5)
categorie_id smallint(3)
Merci pour votre aide !
Partager