IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 MySQL Discussion :

Modele De Conception


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Je me pose des questions
    Inscrit en
    Septembre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Je me pose des questions

    Informations forums :
    Inscription : Septembre 2016
    Messages : 9
    Points : 14
    Points
    14
    Par défaut Modele De Conception
    Bonjour à vous tous,

    Je me posais une question au sujet de la conception d'une base de données : Une grosse table ou plusieurs petites ?

    J'ai pu lire qu'il fallait privilégier "plusieurs petites"...

    Pour une table "produits" il peut y avoir ces champs :

    nom_produit, référence, slug, titre, ...etc et aussi un nombre "X" de critères (Critère N°1, Critère N° 2, ... etc.)
    Et un nombre "X" d'autres choses...

    Alors comment "voir" la chose :

    Un nouvelle table (critères) avec des champs :
    id, id produit, critère 1, critère 2, critère 3, etc... (Autant de champ qu'il y a de critère !?)

    Puis une autre table "Autres choses" ... (Avec autant de champ qu'il y a "d'Autres choses" !?)

    Ou :

    id, id produit, "cle", "valeur"
    Et ainsi :
    1 | 1 | critère 1 | Rouge
    2 | 1 | critère 2 | Plastique
    3 | 1 | critère 3 | 100g
    4 | 2 | critère 1 | Vert
    5 | 2 | critère 2 | Bois
    6 | 2 | critère 3 | 500g
    ...

    Et pourquoi pas mettre aussi dans cette même table : les "Autres choses" au lieu de créer une nouvelle table : "Autres choses" ?

    id, id produit, "cle", "valeur"
    100 | 1 | prix 1 | 5.75
    101 | 1 | prix 2 | 5.00
    102 | 1 | prix 3 | 4.75

    Dans l'absolu si ce modèle de conception est ok, je pourrais créer dans une nouvelle table "Specs" (spécificités) le libellé de toutes les spécificités d'un produit.

    Ainsi dans ma table specs

    id , parent, nom , ...
    1 | 0 | Produits
    2 | 1 | couleur
    3 | 1 | matière
    4 | 1 | poids
    5 | 1 | prix 1
    6 | 1 | prix 2
    7 | 1 | prix 3

    Et ainsi si je dois en ajouter par la suite (imaginons qu'un nouveau prix arrive ou critères), je pourrais le faire simplement :

    id , parent, nom , ...
    3251 | 1 | prix 4

    Qu'en pensez vous ?
    Est ce envisageable ?
    Ai-je été clair ?

    Merci de votre aide et temps.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    C'est une manière particulièrement stupide de modéliser une base. En effet il suffit d'imagine les requêtes du style, trouvez tous les zigzornifle rouge d'un poids inférieur à 2 tonnes, d'un prix de moins de 500 € en métal avec une poignée....
    Votre requête finale devra lire 5 fois successivement la table
    Je vous convie à suivre un cours de modélisation de données et revoir vos cours sur le sujet !
    A défaut, lire au moins le livre que nous avons écrit Christian et moi :
    Nom : Soutou Brouard Modélisation bases de données.jpg
Affichages : 94
Taille : 40,3 Ko

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  3. #3
    Membre à l'essai
    Homme Profil pro
    Je me pose des questions
    Inscrit en
    Septembre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Je me pose des questions

    Informations forums :
    Inscription : Septembre 2016
    Messages : 9
    Points : 14
    Points
    14
    Par défaut
    Merci de votre réponse SQLpro,

    C'était une question (C'est charmant ici !)

    Que se passe t'il si un nouveau critère devait être ajouté. (Un quatrième "prix" par ex.) ?

    Il faudrait donc ajouter un nouveau champ dans la table ?

    Merci

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 910
    Points
    38 910
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Puisque vous avez des critères de nature différente, vous devez modéliser une entité-type "type de critère" (id, code type, libellé du type, date de début de validité...)
    Puis vous établirez un modèle comme suit :

    PRODUIT 1,n --- posseder --- 0,n CRITERE 1,1 --- typer --- 0,n TYPE DE CRITERE

  5. #5
    Membre à l'essai
    Homme Profil pro
    Je me pose des questions
    Inscrit en
    Septembre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Je me pose des questions

    Informations forums :
    Inscription : Septembre 2016
    Messages : 9
    Points : 14
    Points
    14
    Par défaut
    Bonjour et merci escartefigue de votre réponse.

    Je ne suis pas sur d'avoir compris...

    Ce que j'ai cru comprendre : en gros créer une table : "Type de critères" (Avec : "Critere1", "Critere2", .... , "Prix1", "Prix2", ... etc.)
    Qui détaillerait tous les critères des produits.

    La table "Produits",...

    Et une nouvelle table de liaison : "Critères" qui elle aura les "relations" entre le deux tables.

    Alors si je comprend bien (déjà Si j'ai bien compris !), la problématique que décrivait "SQLpro" :
    "Votre requête finale devra lire 5 fois successivement la table..."
    se retrouvera ici ?

    Parce qu'il me semble (Encore une fois , si j'ai bien compris), que c'est ce que je décrivais dans mon premier poste :

    Ainsi dans ma table specs

    id , parent, nom , ...
    1 | 0 | Produits
    2 | 1 | couleur
    3 | 1 | matière
    4 | 1 | poids
    5 | 1 | prix 1
    6 | 1 | prix 2
    7 | 1 | prix 3
    Ou ma table "specs" liste les types de critères qu'un produit peu avoir. (Avec la relation "parent")

    Et la table "CRITERE" que je décrivais (ma table de liaison) :

    id, id produit, "cle", "valeur"
    Et ainsi :
    1 | 1 | critère 1 | Rouge
    2 | 1 | critère 2 | Plastique
    3 | 1 | critère 3 | 100g
    4 | 2 | critère 1 | Vert
    5 | 2 | critère 2 | Bois
    6 | 2 | critère 3 | 500g
    ...

    Voilà ! Reste à savoir si j'ai bien compris votre message.

    En tout cas merci de votre temps.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Les critères devraient être connus à l'avance. Dans les cas complexes on utilise la modélisation par héritage. Toute autre solution ne supportera pas une charge importante des requêtes des utilisateurs.

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre à l'essai
    Homme Profil pro
    Je me pose des questions
    Inscrit en
    Septembre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Je me pose des questions

    Informations forums :
    Inscription : Septembre 2016
    Messages : 9
    Points : 14
    Points
    14
    Par défaut
    SQLpro,

    Merci de votre réponse.

    Je ne connais pas "la modélisation par héritage" mais je vais essayer de glaner des informations sur Internet.

    Merci à vous deux de votre temps et aide.

  8. #8
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 772
    Points : 52 737
    Points
    52 737
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par Acquatella Voir le message
    SQLpro,

    Merci de votre réponse.

    Je ne connais pas "la modélisation par héritage" mais je vais essayer de glaner des informations sur Internet.

    Merci à vous deux de votre temps et aide.
    Il suffit de lire les articles que j'ai écrit à ce sujet :
    http://sqlpro.developpez.com/cours/m...tion/heritage/

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

Discussions similaires

  1. modele de conception des applications réparties
    Par done_sleh dans le forum Design Patterns
    Réponses: 0
    Dernier message: 09/04/2012, 23h13
  2. [SP-2010] modele de conception
    Par tortuegenie dans le forum SharePoint
    Réponses: 5
    Dernier message: 29/08/2011, 14h09
  3. Base de donnée --> model de conception
    Par kowabunga dans le forum Outils
    Réponses: 2
    Dernier message: 07/06/2007, 11h27
  4. Réponses: 2
    Dernier message: 27/05/2007, 20h09
  5. [Décorateur] [Java] Quel modele de conception choisir au lieu de l'heritage ?
    Par Xiao-An dans le forum Design Patterns
    Réponses: 18
    Dernier message: 17/02/2007, 23h31

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