Schéma de DB d'une boutique en ligne (variantes produits)

Salut les dev !

Alors je développe une boutique en ligne pour ma compagne et j'ai un petit souci dans ma tête au niveau de la base de données.

En fait on a plein de produits différents, et certains comme les bobines de fil, ont des variantes.
Par exemple le même fil on l'a en 288 coloris différents. Et je ne vois pas bien comment j'encode ça ?

Vu que j'ai des stocks différent pour chaque coloris, ça devrait être logiquement 288 produits différents. Ouais sauf qu'au final dans ma boutique je vais afficher une seule page qui va regrouper cette gamme de fil, et j'ai rien qui va lier les 288 entrées de ma DB ensemble =/

Je précise que des cas comme ça j'en ai une dizaine, avec le gros du produit qui est le même, mais des caractéristiques qui changent légèrement (couleur, taille, métrage, prix, etc ...)

Une idée lumineuse ?

Poster un commentaire
Appineos
Appineos
6 ans

Tu fais une table avec les produits "principales" avec toutes les caractéristiques communes et une autre avec les variantes, où chaque ligne aura une jointure avec un produit principal. Ensuite pour afficher la page d'un produit et regarder si y a des entrées liées à lui, si oui tu les met dans un select ou tu les affiche et enjoy

Edit : https://pastebin.com/3tjDWYzz

No_Offense

@Appineos: C'est pas mal mais je vais avoir des caractéristiques qui varient différement d'un produit à l'autre...

Leys
Leys
6 ans

@No_Offense: Je dois être teubé, mais elle te sers à quoi ta table prix_vente_produit ?

No_Offense

@Leys: Elle est pas complète (j'ai viré des trucs du schéma pour que ce soit plus accessible) , mais en gros elle sert à garder un historique des prix pour voir comment ils ont évolués.

Leys
Leys
6 ans

@No_Offense: "qu'au final dans ma boutique je vais afficher une seule page qui va regrouper cette gamme de fil, et j'ai rien qui va lier les 288 entrées de ma DB ensemble =/"

Je comprends pas vraiment cette phrase en fait. Y'a quoi qui t'empêche de les trier via des requêtes ou différent recoupement selon certaines caractéristique (type une table produit qui contient bobine, qui elle même contient un link vers une table fil, qui elle même link une table couleur ? (et donc donner des classifications totalement subjectives selon ce que tu veux trier exactement ?)).

No_Offense

@Leys: Que je veux bien faire du sur mesure, mais pas du cas par cas comme ça ... J'en aurai des dizaines à faire, et pas spécialement pour des fils... T'imagine si je dois faire 3 tables par cas particulier ?

Et je voudrais bien les trier par des requêtes ou les recouper, mais je vois pas trop comment, c'est ça mon souci. Je sais pas comment je peux faire ce regroupement de façon pertinente et souple...

Leys
Leys
6 ans

Quel type de DB déjà ?

No_Offense

@Leys: MySQL sur le coup je pense, enfin relationnelle donc.

Leys
Leys
6 ans

@No_Offense: Dans ce cas RIP. Faire ce genre de truc en relationnelle c'est toujours moche au final.

No_Offense

@Leys: Tu proposerais de le faire en quoi ? Objet ? Big data ? Ce serait pire je pense en big data .......

Leys
Leys
6 ans

@No_Offense: Je pensais en NoSQL orienté document, qui permet une souplesse dans les données, mais ça reste plus compliqué à mettre en place quand on en fait pas souvent.

Pigcell
Pigcell
6 ans

Peut être un truc comme ça :
https://i.imgur.com/AcfuH4D.png

Petit exemple de ce que ça pourrait donner en base :
https://i.imgur.com/n5NiAeH.png


Dans la table produit tu retrouves les attributs communs à tout les produits. Et à chaque produit tu peux associer 1 ou n caractéristiques.
Une caractéristique c'est en gros une clef => valeur
J'ai ajouter également une table CaracteristiqueType qui est un référentiel des "clefs" des caractéristiques

No_Offense

@Pigcell: En gros je pensais faire un truc comme ça : https://imgur.com/BVvu4GN
Mais le souci c'est que je vois pas comment je récupère ma liste de 288 bobines, sans que ce soit un bordel monstre.

Cette page est réservée aux ADULTES

Tu es sur le point d'accéder à un site web qui contient du matériel explicite (pornographie).

Tu ne dois accéder à ce site que si tu as au moins 18 ans ou si tu as l'âge légal pour visionner ce type de matériel dans ta juridiction locale, l’âge le plus élevé étant retenu. En outre, tu déclares et garantis que tu ne permettras aucun mineur à d'accéder à ce site ou à ces services.


En accédant à ce site, tu acceptes nos conditions d'utilisation.