1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    octobre 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : octobre 2017
    Messages : 1
    Points : 0
    Points
    0

    Par défaut Conception de la base d'un site e-commerce.

    Bonjour,

    J'aimerais créer un site web de e-commerce avec différents produits. En particulier :
    Si j'ajoute un produit X, ce produit aura un attribut variable et le prix de ce produit sera en rapport avec cet attribut.
    Exemple :

    Si le produit X1 a un attribut « poids », je peux mettre ceci en place :
    1/ poids=0.5kg ==> prix=2euro
    2/ poids=1kg ==> prix=3euro

    Si le produit X2 a deux attributs « taille » et « type », je peux mettre en place ceci :
    1/ taille=0.5m & type=t1 ==> prix=10euro
    2/ taille=0.5m & type=t2 ==> prix=13euro
    2/ taille=1.5m & type=t1 ==> prix=11.5euro

    J'espère que je suis suffisamment clair…
    Ma question est : comment puis-je mettre ça en place avec une base MySQL ? Quel sera le modèle ? (les attributs sont dynamiques, l'administrateur choisit les attributs et fixe le prix).

  2. #2
    Expert éminent Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    février 2011
    Messages
    2 983
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 77
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : février 2011
    Messages : 2 983
    Points : 9 087
    Points
    9 087

    Par défaut

    Salut procreagency.

    Le prix dépend d'une part du poids (produit X1) et d'autre part de la taille et du type (produit X2).
    Vous faites deux tables, dont l'une est consacrée au produit X1 et l'autre au produit X2.
    Pour le produit X1, votre clef primaire sera le poids et l'information prix, dépendant de cette clef primaire.
    Pour le produit X2, votre clef primaire sera composé de la taille et du type, et l'information prix, dépendant aussi de cette clef primaire.
    Si l'on s'arrête là, la solution est évidente et facile à mettre en oeuvre.
    Mais je suppose que votre modèle ne s'arrête pas seulement à deux produits.

    Si l'on généralise à plusieurs produits (combien ?), cela dépend aussi de la complexité de votre dépendance fonctionnelle.
    Ce serait alors une seule table ayant un multicritère,composée de :
    --> nom du produit X1, X2, ...
    --> premier critère : "poids".
    --> deuxième critère : "taille".
    --> troisième critère : "type".
    --> information : "prix".

    Le nom du produit + les critères constitueront votre clef primaire.

    Avantage : une seule table !
    Inconvénient : trop de critères à NULL, donc augmentation de la volumétrie de votre table avec des colonnes non renseignées.

    On peut remplacer la clef primaire par un auto incrément, soit une clef technique.
    Mais vous devez utilisez autant d'index que vous avez de groupes de critères.
    Par exemple un index composé seulement de produit + premier critère.
    Un autre index composé de produit + deuxième critère + troisième critère.
    Et ainsi de suite, pour gérer votre sélection par multicritère.
    Dans ce cas là, vos index sont sargable, mais cela ne résout pas le problème des colonnes non renseignées qui sera cause d'une plus grande volumétrie.

    Pour résoudre le problème de la volumétrie, vous devez éclater votre table en autant de produit (1 table = 1 produit), car chaque produit sera un cas particulier.
    On revient au premier cas décrit ci-dessus.
    Mais si vous vous retrouvez avec des milliers de produits tous différents, vous aurez trop de tables à gérer et donc une grande complexité.
    Imaginez une table par produit, avec seulement trois lignes. Quel gaspillage !

    La solution, utiliser les meta-données, sauf que MySql ne sait pas le faire !
    En gros, le principe des meta-données consiste à créer un modèle de données qui va gérer d'autres modèles de données.
    Schématiquement, votre base de données va devoir faire cohabiter dans une même table, plusieurs structures différentes de données.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Modérateur
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    15 191
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : août 2006
    Messages : 15 191
    Points : 29 328
    Points
    29 328
    Billets dans le blog
    4

    Par défaut

    Écrivez vos règles de gestion des données et faites votre modèle conceptuel de données à partir de ces règles.

    Si vous avez des difficultés, rendez-visite au forum Schéma. Il y a déjà eu des cas similaires évoqués.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Avis sur la conception de ma base de données.
    Par perlgirl dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 10/11/2005, 22h47
  2. Besoin d'aide sur la conception d'un base de données
    Par lordgodgiven dans le forum Modélisation
    Réponses: 1
    Dernier message: 01/10/2005, 17h51
  3. [Conception] Export de base locale sur le serveur
    Par Destampy dans le forum PHP & SGBD
    Réponses: 6
    Dernier message: 14/06/2005, 15h24
  4. Conception d'une base de donnees
    Par sara1983 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 29/04/2005, 15h38
  5. Choix base de données site E-Commerce
    Par VincenzoR dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 10/03/2005, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo