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

Décisions SGBD Discussion :

Aide pour diagramme de structure des données


Sujet :

Décisions SGBD

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 75
    Points : 62
    Points
    62
    Par défaut Aide pour diagramme de structure des données
    Bonjour
    j'ai besoin d'aide pour modéliser le schéma d'une base.
    Il s'agit de faire une base de données pour stocker des informations produits, mais mon probleme est qu'il y a plusieurs types de produits avec des attributs différents.
    Imaginons que je doive stocker des infos sur des marteaux (no_produit + 3 autres attributs) et des tournevis (no_produit + 5 autres attributs).
    Par la suite, une table detail des commandes utilise le no_produit en clé etrangere.

    Faut-il que je crée une table pour chaque type de produits?
    Dans ce cas, est-ce que ca ne risque pas de poser de probleme quand je voudrais avoir le nom du produit depuis le no_produit stocké dans la table detail commandes? Est-ce que ca m'oblige à faire une jointure sur toutes les tables stockant des produits pour recuperer le nom du produit?

    ou alors faut-il que je cree 1 seule table produit + 1 autre table contenant toutes les caracteristiques possible de tous les produits + 1 autre table qui ferait la liaison entre le no_produit et l'id de la caracteristique du produit?

    je suis un peu perdu... merci de votre aide.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    Salut,

    Quand tu as un nombre variable d'attributs, il est en général plus sage de normaliser cela en faisant une table produits : 1 ligne = 1 produit, et une table attributs : 1 ligne = 1 attribut produit, N lignes par produit.

    ID, LABEL
    1, Marteau
    2, Tournevis

    ID, IDREF, Label
    1, 1, Manche en bois
    2, 1, Poids 500g
    3, 2, Cruciforme
    4, 2, En plastique
    5, 2, Longueur 30 cm

    => SELECT a.label, b.label FROM produits a, attributs b WHERE a.id = b.idref

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 75
    Points : 62
    Points
    62
    Par défaut
    ok, imaginons que plusieurs Marteaux aient la caracteristique "Manche en bois" il serait alors logique de créer une nouvelle table contenant toutes les caracteristiques afin d'eviter les redondances?

    Ce qui donnerait:

    ID, LABEL
    1, Grand Marteau
    2, Tournevis
    3, Petit Marteau

    IDCARAC, NOMCARAC
    101, Manche en bois
    102, Poids 500g

    ID, IDREF, IDCARAC
    1, 1, 101
    2, 2, 102
    3, 3, 101

    Qu'en penses-tu?

    merci

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    Tout à fait Thierry !

    L'idée c'est de dire : "quand j'ai des colonnes variables, je fais une table où mes colonnes deviennent des lignes." Phase 1 de la normalisation.

    "Quand j'ai une table avec des lignes qui veulent dire la même chose, je refais une table où je les référence de manière unique, et une table où je les énumère". Phase 2 de la normalisation.

    Après il faut juste bien gérer les relations : ton marteau de 350g passe à 500g : si tu fais un UPDATE, dix modèles de marteaux passent à 500g, c'est pas bon. Là où tu aurais fait un UPDATE avec une seule table, ça devient un INSERT avec reclacule des références.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 75
    Points : 62
    Points
    62
    Par défaut
    problème résolu grâce à toi, merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 08/09/2010, 22h17
  2. aide en choix de structures des données
    Par siempre dans le forum C
    Réponses: 0
    Dernier message: 13/02/2010, 00h28
  3. Structurer des données dans un tableau
    Par julie75 dans le forum Débuter
    Réponses: 21
    Dernier message: 18/12/2007, 23h20
  4. aide pour exporter une base de donnée
    Par matt55 dans le forum PostgreSQL
    Réponses: 8
    Dernier message: 06/04/2004, 14h28
  5. Structure des données en retour d'un DBExtract ?
    Par mikouts dans le forum XMLRAD
    Réponses: 4
    Dernier message: 24/01/2003, 15h15

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