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 :

la notion de l'héritage peut t'il marché avec mon cas ?


Sujet :

Schéma

  1. #1
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut la notion de l'héritage peut t'il marché avec mon cas ?
    Bonsoir

    Je voudrais réaliser une application qui permet de faire la gestion de stock, un stock informatique, mais la je suis bloqué sur le mcd, le stock comporte du équipement informatique l'équipement est devisé en deux du "matériel" et du "consommable" la je sais pas quoi faire. Est-ce que je peux faire une entité équipement qui généralise deux entité matériel et consommable c'est à dire je fais entré la notion de l'héritage ou y a t-il une autre idée ?

    Merci pour votre attention

  2. #2
    ego
    ego est déconnecté
    Rédacteur

    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juillet 2004
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte de système d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2004
    Messages : 1 883
    Points : 3 510
    Points
    3 510
    Billets dans le blog
    2
    Par défaut
    yes pour l'héritage

  3. #3
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour Info3licen et Ego,

    Ego.

    Détail :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Produit -1,1---[Être]---0,1- Materiel
       |
       +-----1,1---[Être]---0,1- Consommable
    donnant :
    Produit(IdProduit, Libelle, [informations communes aux matériels et aux consommables]) ;
    Materiel(#IdProduit, [informations propres aux matériels]) ;
    Consommable(#IdProduit, [informations propres aux consommables]).
    contraintes :
    • un produit doit être, obligatoirement, un matériel OU un consommable ;
    • un produit ne doit pas être un matériel ET un consommable.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  4. #4
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonjour.

    Dans le cas échéant, il s'agirait d'utiliser un héritage par partition (totalité et exclusion XT) entre l'entité mère Produit et les entités filles Matériel et Consommable.

    Vous trouverez un exemple détaillé ici ainsi que différentes implémentations possibles au niveau relationnelle. Vous pouvez également consulter la FAQ à ce sujet.

    @Richard_35 : l'implantation au niveau relationnel et les contraintes énoncées correspondent bien à un héritage par partition mais votre modélisation conceptuelle avec une association "être" peut porter à confusion, même si le lien sémantique correspond. Notamment avec la cardinalité 1,1 du côté de l'entité mère

    Pourquoi ne pas représenter l'héritage en Merise II directement (avec le symbole XT qui symbolise les contraintes que vous avez énoncé) ?

    Cordialement,
    Idriss

  5. #5
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Est-ce que je peux faire une entité équipement qui généralise deux entité matériel et consommable c'est à dire je fais entré la notion de l'héritage ou y a t-il une autre idée ?
    C'est vous qui faites la conception, donc vous pouvez faire ce que vous voulez et opter pour:

    - garder ces entités séparées,
    - créer une superclasse "Produit" dont hériteront Matériel et Consommable,
    - décréter que Matériel est une s/classe de Consommable,
    - ne pas différencier Matériel et Consommable: il y a (ou pas) des articles en stock,

    Quel que soit le choix, pas de "problème" pour le réaliser techniquement...

    Quelle sera la moins mauvaise option? Vous donnez trop peu d'information pour "choisir".

    Cordialement,
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    Merci pour vos réponse

    Avec l'héritage je me suis retrouvé encore bloqué
    je donne un exemple si j'ai un produit "Imprimante" dans le stocke j'aurais plusieurs imprimante avec un numéro de série différent, alors lors du passage au modèle relationnel ça me pose un certain problème puisque si je donne par exemple pour le produit "imprimante" n= 01 si je vais faire entrée dans ma table "Matériel' toutes les imprimantes existante dans le stock ça ne marchera pas puisque la clé primaire dans la table matériel est celle de la table produit

    -J'ai essaie de faire une seule classe qui regroupe le matériel et le consommable => ça me pose aussi un problème puisque le matériel possède un et un seul numéro de série donc c'est la clé primaire mais le consommable n'as pas de numéro de série alors ils ne peuvent pas être dans la même classe

    -et j'ai essaie de faire deux classe une pour consommable et l'autre pour matériel mais puisque les deux produit vont être affecté a des service et sont acheté par des fournisseur alors la je me trouve avec des table en double par exemple (écran est affecté a service A et cartouche est affecté a service A) donc la j'aurais deux tables dans ma base est_affecter1 et est_affecter2

    je sais pas quoi faire si vous pouvais me donné une petite orientation je serais très reconnaissante
    Merci

  7. #7
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Re bonsoir.

    De manière générale, il existe différents types d'héritages comme il existe différentes implémentations relationnelles (cf : le lien que je vous ai fournit dans mon précédant message).

    Si vous choisissez l'implémentation précédante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Produit(IdProduit, Libelle, [informations communes aux matériels et aux consommables]) 
    Materiel(IdProduit#, [informations propres aux matériels])Consommable(IdProduit#, [informations propres aux consommables])
    Une occurrence de la relation Materiel devra se trouver dans la relation mère produit. Ce modèle est le plus générique auquel on peux appliquer toutes les contraintes : totalité, exclusion et partition. Avec un héritage par totalité rien n'empêche qu'un produit soit à la fois Materiel et Consommable, le problème de contrainte d'unicité des occurrences ne se pose qu'au sein d'une relation. Rien n'empêche d'avoir l'occurence suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Produit : 1 | imprimante epson 395+
    Materiel : 1 |  ...
    Consommable : 1 | ...
    Après je ne suis pas sûr d'avoir saisi votre problème. Ensuite lorsqu'une donnée est unique et doit faire l'objet d'une contrainte d'unicité au sein d'une relation, il n'est pas obligatoire d'en faire l'identifiant de la relation. Un numéro entier identifiant dans la relation mère, et un numéro de série qui fera l'objet d'une contrainte d'unicité (UNIQUE en SQL) dans la relation fille.

    Enfin, ne raisonnons pas en terme de classe lorsqu'il s'agit de modélisation de base de données relationnelles

    Cordialement,
    Idriss

  8. #8
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour à tous,

    Citation Envoyé par Ok.Idriss
    @Richard_35 : l'implantation au niveau relationnel et les contraintes énoncées correspondent bien à un héritage par partition mais votre modélisation conceptuelle avec une association "être" peut porter à confusion, même si le lien sémantique correspond. Notamment avec la cardinalité 1,1 du côté de l'entité mère
    ==> désolé, Ok.Idriss, je ne comprends pas la remarque en gras.
    Citation Envoyé par Ok.Idriss
    Pourquoi ne pas représenter l'héritage en Merise II directement (avec le symbole XT qui symbolise les contraintes que vous avez énoncé) ?
    ==> oui, c'est exact, mais je n'ai pas l'outil graphique nécessaire.
    Citation Envoyé par Ok.Idriss
    Enfin, ne raisonnons pas en terme de classe lorsqu'il s'agit de modélisation de base de données relationnelles
    ==> tout est là !
    Citation Envoyé par Info3licen
    je donne un exemple si j'ai un produit "Imprimante" dans le stocke j'aurais plusieurs imprimante avec un numéro de série différent
    ==> effectivement... mais, si tu donnes les informations fondamentales au compte-goutte, cela va être difficile de t'aider .

    Info3licen, tous les matériels (Materiel) comporteront-ils des n° de série à gérer ?
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  9. #9
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    Merci encore une fois et désolé de ne pas avoir été trop claire !

    j'essaie d'expliquer :

    1-Le stocke comporte équipement informatique, l'équipement peut être soit matériel soit consommable, le matériel possède un numéro de série (peut être comme clé) par contre le consommable n'as pas de numéro de série

    2-tout L'équipement informatique est acheté à partir d'un fournisseur.

    3-l'équipement informatique est affecter a des service.

    Moi je bloque en (1)...

    je donne un exemple :

    Equipement Info : (n=01, Ecran,...)
    (n=02, imprimante,...)
    (n=03, unité,...)

    Matériel : : (n=01#,ecran_Dell, n_ser...)
    (n=01#, ecran_Hp, n_ser...) ==>et la j'aurais le problème de violence de la clé primaire !!!


    PS: Oui tout le matériel possède un numéro de série que je ne dois pas négliger

  10. #10
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Vite fait, peut-être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Produit -1,1---[Être]---0,1- Materiel
       |                            |
       |                        (XT)/(+)
       |                            |
       +-----1,1---[Être]---0,1- Consommable
    donnant :
    Produit(IdProduit, Libelle, QuantiteStock, [informations communes aux matériels et aux consommables]) ;
    Materiel(#IdProduit, NumeroSerie, [autres informations propres aux matériels]) ==> index unique sur NumeroSerie (non null) ;
    Consommable(#IdProduit, [informations propres aux consommables]).
    Contraintes :
    • un produit doit être, obligatoirement, un matériel OU un consommable (+) ;
    • un produit ne doit pas être un matériel ET un consommable (XT) ;
    • un produit "Materiel" doit avoir une QuantiteStock=0 ou =1.
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  11. #11
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Bonjour.

    Equipement Info : (n=01, Ecran,...)
    (n=02, imprimante,...)
    (n=03, unité,...)

    Matériel : : (n=01#,ecran_Dell, n_ser...)
    (n=01#, ecran_Hp, n_ser...) ==>et la j'aurais le problème de violence de la clé primaire !!!
    Vous confondez le type d'un équipement et l'équipement lui-même qui est la généralisation d'une (et une seule) occurrence d'une des relations filles. L'identifiant du type d'équipement ne doit pas participer dans l'identifiant de la relation Materiel, sinon vous avez bien une violation de contrainte d'intégrité référentielle comme c'est le cas dans votre exemple.

    Votre modélisation est donc trop confuse, il faut reposer les choses à plat. Commençons par le lien sémantique entre un type d'équipement et un matériel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeEquipement (id, libelle) --0,N-- (Correspondre_t_m) -- 1,1 -- Materiel (id, designation, etc)
    Avec ce modèle on peux bien avoir les occurrences que vous avez décrites à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    TypeEquipement :
    id, libelle
    1, UC
    2, Écran
    3, imprimante
    ...
    
    Materiel :
    id, designation, idType#
    1, écran dell 15 pouces, 2 (=> Écran)
    2, HP-DV6, 1 (=> UC)
    3, écran HP 17 pouces, 2
    ...
    Si toutefois un consommable correspond à un type d'équipement mais que ce dernier ne peut correspondre qu'à des matériels ou des consommables, vous pouvez ajouter le lien sémantique suivant dans votre modèle, en veillant à rajouter une contrainte d'exclusion avec l'association précédente.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeEquipement (id, libelle) --0,N-- (Correspondre_t_c) -- 1,1 -- Consommable (id, etc)
    Pour les contraintes inter-associations : ineumann.developpez.com/tutoriels/merise/initiation-merise/#LIV-C (voir la contrainte d'exclusion en particulier).

    Enfin si des propriétés sont communes aux consommables et matériels, vous pouvez faire une généralisation avec un héritage par partition mais en ne confondant pas le type et l'équipement en lui même :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TypeEquipement (idType, libelle)
    Equipement (id, designation, idType#)
    Materiel (id#, num_serie UNIQUE et NOT NULL, etc)
    Consommable (id#, etc)
    Il s'agira au niveau conceptuel d'un héritage par partition entre Equipement Materiel et Consommable (cf : http://ineumann.developpez.com/tutor...-merise/#LIV-C ).

    Les contraintes inter-associations et la contrainte de partition devront être satisfaites à l'aide de traitements (les triggers sont bien adaptés pour ce genre de choses).

    Bien voilà, je ne suis pas sûr que cela réponde à vos attentes mais c'est un modèle un ne peu plus claire déjà

    Si ça ne répond pas à vos attentes, posez d'avantages vos besoins à plats avant même de définir vos règles de gestion, par exemple en nous donnant des exemples de consommables (je ne vois toujours pas ce que c'est avec précision, etc).

    Cordialement,
    Idriss

  12. #12
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    Merci beaucoup idriss, je commence a voir bien les chose maintenant

    j'opte pour votre première réponse, puisque maintenant j'ai remarqué qu'il n'y a pas d'information commune entre le matériel et le consommable alors j'ai pas besoin d'avoir une classe mère, donc j'aurais :

    Type_equi(id, lib)

    Materiel(Num_ser, designation, id_type#)

    Consommable(id_con, designation, id_type#)

    J'espère que je suis sur la bonne voie!

    Merci

  13. #13
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Points : 19 452
    Points
    19 452
    Par défaut
    Re - bonsoir.

    Oui c'est en meilleure voie. Maintenant, rien ne vous empêche en plus de faire un héritage (comme dit dans mon précédant message) :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Type_equi(id_type, lib)
    Equipement (id, designation, id_type#)
    Materiel(id#, Num_ser {UNIQUE, NOT NULL})
    Consommable(id#)
    Encore une fois une donnée qui fait l'objet d'une contrainte d'unicité ne doit pas forcement faire l'objet d'une clef.

    Là vous retrouvez bien votre modèle précédant avec en plus une généralisation.

    Cordialement,
    Idriss

  14. #14
    Membre du Club
    Inscrit en
    Avril 2009
    Messages
    272
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 272
    Points : 59
    Points
    59
    Par défaut
    Mille merci Idriss

    Je vais travailler avec votre solution si j'aurais d'autre problème je reviendrais

    Merci beaucoup vous m'avez vraiment aider

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

Discussions similaires

  1. [UML] Que peut-on vraiment faire avec ces logiciels ?
    Par pugnator dans le forum Outils
    Réponses: 6
    Dernier message: 07/12/2005, 11h31
  2. Peut on utiliser OR avec des jointures de tables??
    Par gins06 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/10/2005, 12h40
  3. comment on peut faire un service avec builder c++
    Par infoactif dans le forum C++Builder
    Réponses: 8
    Dernier message: 11/08/2005, 17h33
  4. Diplome Afpa bac+2, on peut trouver du boulot avec ?
    Par Elbarto dans le forum Etudes
    Réponses: 11
    Dernier message: 24/08/2004, 03h13

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