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 :

Conception et héritage


Sujet :

Schéma

  1. #1
    Invité
    Invité(e)
    Par défaut Conception et héritage
    Salut,
    Je réalise en ce moment en mcd, et je me pose la question suivante.
    Dans l'exemple ci dessous, un schéma est-il plus correct que le second.



    Enfin, quelque soit le schéma, je ne suis pas parvenu à créer un requête sql pour connaître le nom des diffuseurs ou des distributeurs qui desservent un département en particulier.

    Merci d'avance pour votre réponse.
    Images attachées Images attachées   

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Puisque les distributeurs et les diffuseurs sont tous deux des structures et que leurs attributs sont identiques, l'héritage est inutile. Il suffit de typer la structure :
    Type_structure -0,n----Typer----1,1- Structure -0,n----Desservir----0,n- Département

    Quelles sont les structures qui desservent le département de Haute-Garonne et quel est leur type ?
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT nom_type_structure, nom_structure
    FROM structure AS s
    INNER JOIN type_structure AS ts ON ts.id_type_structure = s.id_type_structure
    INNER JOIN desservir AS d ON d.id_structure = s.id_structure
      INNER JOIN departement AS dpt ON dpt.id_departement = d.id_departement
    WHERE nom_departement = 'Haute-Garonne'
    ORDER BY nom_type_structure, nom_structure
    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 !

  3. #3
    Invité
    Invité(e)
    Par défaut
    Les distributeurs et les diffuseurs n'ont pas tout a fait des attributs identiques.

  4. #4
    Invité
    Invité(e)
    Par défaut
    En considérant que les diffuseurs et les distributeurs aient des attributs diffèrent, lesquels des schéma est le plus adapté (entre le premier et le second)

    Merci

  5. #5
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Une requête du genre de celle-ci devrait convenir dans le cas de la 1re représentation :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    SELECT   x.NomStructure
    FROM     STRUCTURES AS x 
             JOIN 
             DESSERVIR_1 AS y
                 ON  x.IdStructure = y.IdStructure
             JOIN
             DEPARTEMENTS AS z
                 ON  y.IdDepartement = z.IdDepartement
    WHERE    z.NomDepartement= 'Comptabilité'
    UNION
    SELECT   x.NomStructure
    FROM     STRUCTURES AS x 
             JOIN 
             DESSERVIR_2 AS y
                 ON  x.IdStructure = y.IdStructure
             JOIN
             DEPARTEMENTS AS z
                 ON  y.IdDepartement = z.IdDepartement
    WHERE    z.NomDepartement= 'Comptabilité'
    (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.

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci, pour ces exemples de requêtes, mais est-ce que le second schéma n'est t-il pas mieux adapté ?

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Dans le cas de la 2e représentation :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT   x.NomStructure
    FROM     STRUCTURES AS x 
             JOIN 
             DESSERVIR AS y
                 ON  x.IdStructure = y.IdStructure
             JOIN
             DEPARTEMENTS AS z
                 ON  y.IdDepartement = z.IdDepartement
    WHERE    z.NomDepartement= 'Comptabilité'
    (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.

  8. #8
    Invité
    Invité(e)
    Par défaut
    Ok, merci.
    Donc les deux schéma sont correct (est relativement similaire) ???

  9. #9
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Dans l’esprit de l'héritage, la 2e représentation est préférable, puisque desservir un département vaut quel que soit le type de structure.
    (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.

  10. #10
    Invité
    Invité(e)
    Par défaut
    Oui c'est exact, mais dans mon schéma complet, il y a plusieurs héritages, et uniquement deux entre eux étaient concernées par desservir.

  11. #11
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Oui c'est exact, mais dans mon schéma complet, il y a plusieurs héritages, et uniquement deux entre eux étaient concernées par desservir.
    Où est le problème ? La patte connectant l’entité-type STRUCTURES et l’association-type DESSERVIR est porteuse d’une cardinalité 0,N. Si donc une structure n’est pas concernée par la desserte de départements, parce qu’elle n’est ni un distributeur ni un diffuseur, on ne crée pas d’association pour elle lors des opérations.
    (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.

  12. #12
    Invité
    Invité(e)
    Par défaut
    Il n'y a pas de problème. C'est uniquement pour confirmer a ce que je penser.
    Merci à tous pour vos réponse !

  13. #13
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    C'est uniquement pour confirmer a ce que je penser.
    J'ai des doutes, sinon pourquoi avoir proposé la première représentation ?
    (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.

  14. #14
    Invité
    Invité(e)
    Par défaut
    Au début une partie du schéma correspondait à la première illustration (le mcd comptent d'avantage de type-entités), mais ayant remarqué que les type-associations desservir_1 et desservir_2 représentaient des associations identiques, je souhaitai savoir si la seconde illustration était correct malgré l'héritage.

  15. #15
    Membre chevronné
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Août 2007
    Messages
    797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Août 2007
    Messages : 797
    Points : 2 060
    Points
    2 060
    Par défaut
    Bonjour à tous,

    Même si j'arrive un peu tard sur cette discussion, je dois signaler qu'aucun des deux schémas n'est correct. Le second est meilleur que le premier. Voici les erreurs qu'on y trouve:

    1) Propriétés redondantes
    Dans un MCD, une propriété (une donnée) est UNIQUE. dateDeCréation existe en 2 exemplaires.
    - S'il s'agit de propriétés différentes, il faut renommer le doublon.
    - S'il s'agit de la même propriété, alors celle-ci fait partie de l'entité générale STRUCTURE et non pas des entités spécialisées DISTRIBUTEUR et DIFFUSEUR.
    Idem pour nombreDePointsDeVente.

    2) Spécialisations ("héritage")
    Le symbole en forme de triangle exprime une spécialisation. On se trouve ici dans le cas d'une spécialisation en deux entités : l'entité STRUCTURE est spécialisée en DISTRIBUTEUR et DIFFUSEUR.
    Le schéma représente deux spécialisations différentes de STRUCTURE en une entité spécialisée à chaque fois. Ce n'est pas la même chose, et ces cas sont rarissimes.
    Il y a donc un symbole triangle de trop. La patte d'une des deux entité spécialisées devrait être détachée de son triangle et rattachée à l'autre. Le premier triangle devant disparaitre ensuite.
    N'oubliez pas de consulter les Cours Merise et la F.A.Q. Merise
    _______________________________________________________

    Les Règles du Club Developpez.com
    Vous avez votre réponse ? Merci de cliquer sur

  16. #16
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par dxerty Voir le message
    Les distributeurs et les diffuseurs n'ont pas tout a fait des attributs identiques.
    Certes, on trouve nombreEditeursDiffuses dans l'entité DIFFUSEURS et nombreEditeursDistribues dans l'entité DISTRIBUTEURS.

    Ça se ressemble quand même beaucoup et pourrait être ramené dans l'entité STRUCTURE sous le nom nbStructuresDesservies.

    D'ailleurs j'ai l'impression qu'il s'agit d'un attribut calculé qui ne devrait donc pas figurer dans le MCD. On peut aussi se poser la question pour le nombre de points de vente.

    Tel qu'elles sont présentées sur le schéma, les deux entités DIFFUSEURS et DISTRIBUTEURS sont selon moi identiques et ne devraient pas faire l'objet d'un héritage depuis STRUCTURE.
    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 !

  17. #17
    Invité
    Invité(e)
    Par défaut
    Merci pour vos réponses.

  18. #18
    Invité
    Invité(e)
    Par défaut
    Est-il possible de fusionner des héritages similaires. Si oui, comment dans ce cas faire la différence pour savoir s'il s'agit, par exemple, de diffuseurs ou de distributeurs ?

  19. #19
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par dxerty Voir le message
    Si je fusion diffuseurs et distributeurs en une seule entité, comment faire la différence entre les 2 sous-types diffuseurs et distributeurs sur le principe de l'héritage ?
    J'ai donné la réponse plus haut. En typant la structure.
    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 !

  20. #20
    Invité
    Invité(e)
    Par défaut
    Rapide !
    Désolé, effectivement j'avais la réponse sous les yeux.
    Merci encore.

Discussions similaires

  1. [Composite] [Java] problème de conception, multi héritage, composite ?
    Par phoenix_stealer dans le forum Design Patterns
    Réponses: 2
    Dernier message: 13/11/2013, 17h47
  2. Problème de conception avec héritage
    Par oodini dans le forum C++
    Réponses: 3
    Dernier message: 24/01/2013, 11h43
  3. conception POO (héritage) : une galerie d'image
    Par greg91 dans le forum Langage
    Réponses: 4
    Dernier message: 06/10/2011, 21h16
  4. Pb de conception et héritage ?
    Par elitost dans le forum Langage
    Réponses: 9
    Dernier message: 13/09/2005, 17h34
  5. [heritage][conception]héritage multiple en java!
    Par soulhouf dans le forum Langage
    Réponses: 9
    Dernier message: 25/08/2005, 20h03

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