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

Schéma Discussion :

[MCD]Typage ou Héritage ?


Sujet :

Schéma

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Points : 6
    Points
    6
    Par défaut [MCD]Typage ou Héritage ?
    Bonjour,



    Je réalise actuellement une modélisation sous Merise et je bloque un peu sur la gestion de mes produits.

    Grosso modo j’ai crée une table produit (id, nom, marque, etc…) mais le problème c’est que ces dernier possèdent des caractéristiques différentes (ex : la résolution d’un LCD, le nombre de ppm de mon imprimante, la taille en Go de mon disque, etc…).

    J’ai la possibilité dans mon MCD de passer par la notion d’héritage, mon entité père avec les attributs communs et mes entités enfants avec leurs attributs spécifiques. Cependant cette solution ne me satisfait pas entièrement, car il me faudrait autant de tables enfants que j’ai de produits aux propriétés particulières, soit entre 25 et 30 tables enfants.



    Je recherche donc une solution qui serait plus adaptée et donc plus souple.



    Merci

  2. #2
    Membre éclairé Avatar de Le Pharaon
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 880
    Points : 742
    Points
    742
    Par défaut
    Je recherche donc une solution qui serait plus adaptée et donc plus souple.
    Implémenter l'héritage ou Avoir une seule table, composée de l'union des propriétés de tes produits.
    Scuse me while I kiss the sky ! Jimi Hendrix

  3. #3
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonjour Campesinos,

    Il est un fait que l’héritage est intéressant tant que le nombre de sous-types est faible. Avec 25 ou 30 tables enfants, il est préférable de trouver autre chose.

    Par exemple, vous définissez votre table Produit, en relation avec une entité-type TypeProduit ("Disque dur", "LCD", ...).

    Vous pouvez en outre définir une entité-type ProduitCaractéristique, propriété multivaluée de Produit, en relation avec les entités-types TypeCaractéristique ("Vitesse", "Capacité", "Résolution", ...), UnitéMesure ("mégaoctet", "gigaoctet", "pouce", "cm", "pixel", "ppm", ...)

    Ce qui précède n’est évidemment qu’une ébauche de modèle, imaginée selon le mode naïf.

    Au format tabulaire (clés étrangères en italiques) :

    TypeProduit(TypeProduitId, Libellé, ...)

    TypeCaractéristique(TypeCaractéristiqueId, Libellé, ...)

    UnitéMesure(UnitéMesureId, Libellé, ...)

    Produit (ProdId, Nom, Marque, TypeProduitId, ...)

    ProduitCaractéristique (ProdId, Séquenceur, TypeCaractéristiqueId, UnitéMesureId, Valeur, ...)

    Exemples de types de produits : "disque dur", "imprimante", "LCD", ...

    Types de caractéristiques : "vitesse", "capacité", "résolution", "poids", ...

    Unités de mesure : "gigaoctet", "mégaoctet", "pouce", "cm", "tours/min", "seconde", "gramme", ...

    L’attribut Séquenceur de ProduitCaractéristique permet de distinguer les différentes caractéristiques d’un produit (par exemple, la vitesse et la capacité d’un disque). Comme son nom l’indique, Valeur ne contient que des valeurs sémantisées par l’unité de mesure. Exemple :

    Le produit "p1" (séquenceur = 1) a pour type de caractéristique "vitesse", unité de mesure "tours/min" et pour valeur "7200".
    Le produit "p1" (séquenceur = 2) a pour type de caractéristique "capacité", unité de mesure "gigaoctet" et pour valeur "250".
    Etc.

    Maintenant, des spécialistes de la modélisation des produits peuvent peut-être vous proposer des solutions moins naïves.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Merci pour vos réponses.
    Je vais attaquer ça ce WE, et voir ce que ça donne sur mes produits à modéliser.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bonjour,

    J'ai testé l'exemple de modélisation produit dans mon MCD. Globalement cela s'adapte bien et résout ma problèmatique.
    Cependant j'ai des doutes sur les cardinalités. En particulie au niveau de l'association entre ma table "produit caractéristique" et mes tables "type valeur" et "type caractéristique". Je serais tenté de modifier mes liens d'association de valeur "1,1" en "1,n" puisque par exemple j'ai au minimum 1 et au maximum n caractéristique produit qui sont associés à au minimum 1 et au maximum n type de caractéristique. Le problème c'est que cela sous entendrait une double migration des id dans l'association "est associé à" avec création de table à la clé.
    Hors si je veux la migration de la clé primaire de ma table "type caractéristique" dans ma table "produit caractéristique" je dois laisser la cardinalité à 1,1.
    Je ne sais pas si c'est très clair donc je post la partie du MCD en question pour plus de visibilité.
    Là pour le moment j'ai un peu de mal à réfléchir et y voir clair.

  6. #6
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 002
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 002
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir Campesinos,

    Effectivement, les choses demandent à être éclaircies...

    Vous avez défini une relation 1,N-1,N entre Produit et ProduitCaractéristique alors que j’ai précisé que la caractéristique était une propriété multivaluée du produit (un produit peut avoir plusieurs caractéristiques et une caractéristique ne caractérise qu’un produit). Les cardinalités ne sont donc pas 1,N-1,N mais 1,N-1,1. Qui plus est, le lien est identifiant, puisque Caractéristique est propriété de Produit, exactement comme une ligne de facture est la propriété d’une facture est n’est pas partageable entre les différentes factures, même si des lignes de factures différentes font ponctuellement référence aux mêmes articles et pour une même quantité. La nature identifiante du lien est symbolisée au niveau du MCD par des parenthèses entourant 1,1 (en rouge...)

    Ainsi, si deux produits sont deux imprimantes ayant des caractéristiques identiques (disons même caractéristique (vitesse) et même valeur (300)), on aura l’information une fois par imprimante.

    Je joins la partie correspondante du MCD tel que je le vois, ainsi que le bout de MPD correspondant. Vous noterez que le lien identifiant se traduit par une clé primaire composée du couple (IdProduit, Seq). Seq est numéroté relativement à IdProduit, donc repart à 1 avec chaque produit.
    Images attachées Images attachées   
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench
    Je ne réponds pas aux questions techniques par MP. Les forums sont là pour ça.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 16
    Points : 6
    Points
    6
    Par défaut
    Bonsoir fsmrel,

    Tout est plus clair en partant du principe de la propriété multivaluée, j'ai effectué les corrections et cela me semble plutôt pas mal, mon MCD prend forme et grossit à vue d'oeil.

    Bon je vais pouvoir m'attaquer à d'autres problématiques qui se présente à moi.

    Une fois de plus, merci.

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

Discussions similaires

  1. [MCD] du MCD au MPD: héritage
    Par ncheboi dans le forum Schéma
    Réponses: 1
    Dernier message: 21/05/2010, 22h40
  2. [Modèle Relationnel] Typage ou héritage
    Par nath-0-0 dans le forum Schéma
    Réponses: 4
    Dernier message: 27/10/2008, 19h38
  3. [MCD] Gestion CRM - Héritage
    Par soldierofnet dans le forum Schéma
    Réponses: 4
    Dernier message: 30/04/2008, 10h28
  4. [MCD] Héritage de prestations
    Par pigpen dans le forum Schéma
    Réponses: 6
    Dernier message: 04/04/2007, 12h01
  5. Transformation Héritage (MCD-MLD)
    Par ngwiamfr dans le forum Schéma
    Réponses: 4
    Dernier message: 07/03/2007, 00h13

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