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

Merise Discussion :

Type association communs


Sujet :

Merise

  1. #1
    Invité
    Invité(e)
    Par défaut Type association communs
    Bonjour,
    Je souhaites vérifier le problème suivante:
    J'ai le schéma suivant:
    PERSONNE--0,n--Posseder1--1,1--TELEPHONE
    STRUCTURE--0,n--Posseder2--1,1--TELEPHONE

    Est-il possible de fusionner les type-associations, sachant qu'il n'y a pas de relation entre structure et personne.

    Merci d'avance.
    Dernière modification par Invité ; 23/03/2010 à 13h44.

  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
    Ton schéma signifie qu'un téléphone appartient à la fois à une structure et à une personne !

    Les cardinalités côté TELEPHONE ne seraient-elles pas plutôt 0,1 ?

    En ajoutant une exclusion entre les deux associations, un téléphone ne peut pas appartenir aux deux à la fois.

    Mais était-ce bien le sens de la question ?
    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
    PERSONNE--0,n--Posseder1--1,1--TELEPHONE_PERSONNE
    STRUCTURE--0,n--Posseder2--1,1--TELEPHONE_STRUCTURE

    Est t-il possible de grouper les deux type-associations Posseder1 et Posseder2, du fait que les type-entités TELEPHONE_PERSONNE et TELEPHONE_STRUCTURE font référence à des données similaires (des n° de téléphone).

    Ou faut-il simplement créer deux association différentes ?

    Merci d'avance.
    Dernière modification par Invité ; 23/03/2010 à 22h38.

  4. #4
    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
    Ce sont les entités TELEPHONE que l'on peut regrouper, pas les associations.
    Regrouper les deux associations reviendrait à faire une association ternaire :
    PERSONNE -0,n----Posséder----1,1- TELEPHONE
    STRUCTURE -0,n--------|

    Ce qui pourrait se traduire par :
    "Un téléphone est possédé par une personne au sein d'une structure."
    Et ceci signifie alors qu'il y a une relation entre la personne et la structure, ce qui est contraire à ce que vous avez dit dans votre premier message.
    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 !

  5. #5
    Invité
    Invité(e)
    Par défaut
    Merci, mais effectivement un relation ternaire n'est une solution uniquement s'il y avait une relation entre structure et personne, ce qui n'est pas le cas.

    Une association pluriel est peut-être une meilleur solution:

    PERSONNE--0,n--PersonnePossederFixe--1,1--TELEPHONE
    STRUCTURE--0,n--StructurePossederFixe--1,1--TELEPHONE

  6. #6
    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
    Tu remets le même schéma que dans ton premier message et je te redis la même chose :
    Ton schéma signifie qu'un téléphone appartient à la fois à une structure et à une personne !

    Les cardinalités côté TELEPHONE ne seraient-elles pas plutôt 0,1 ?

    En ajoutant une exclusion entre les deux associations, un téléphone ne peut pas appartenir aux deux à la fois.
    Autrement dit : 1 seule entité TELEPHONE mais deux associations à cardinalité 0,1 avec une exclusion entre les deux associations.
    PERSONNE--0,n--PersonnePosseder--0,1--TELEPHONE
    STRUCTURE--0,n--StructurePosseder--0,1--------|

    Pour l'exclusion, sur un vrai schéma il faudrait relier les deux associations par un pointillé avec un X au milieu.

    Et pour compléter le schéma, il faudrait typer les numéros de téléphone :
    PERSONNE--0,n--PersonnePosseder--0,1--TELEPHONE -1,1----Typer----0,n- TYPE_TEL
    STRUCTURE--0,n--StructurePosseder--0,1--------|
    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 !

  7. #7
    Invité
    Invité(e)
    Par défaut
    Ce schéma n'est pas correct malgré qu'il y a deux type-associations distincts ?

  8. #8
    Invité
    Invité(e)
    Par défaut
    Comment peut-on ajouter une exclusion sous PowerAmc ?
    Dernière modification par Invité ; 24/03/2010 à 11h07.

  9. #9
    Invité
    Invité(e)
    Par défaut
    Donc si j'ai compris le raisonnement, le modèle suivant est correct (voir pièces jointes).

    Mais pour éviter qu'un même numéro de téléphone soit attribué à la fois à STRUCTURE et PERSONNE, on y ajoute une exclusion de façon à éviter les doublons.

    Comment gérer ceci sous MySQL ?

    Merci.
    Images attachées Images attachées  
    Dernière modification par Invité ; 24/03/2010 à 12h58.

  10. #10
    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
    Donc si j'ai compris le raisonnement, le modèle suivant est correct (voir pièces jointes).

    Mais pour éviter qu'un même numéro de téléphone soit attribué à la fois à STRUCTURE et PERSONNE, on y ajoute une exclusion de façon à éviter les doublons.
    Oui ça correspond au schéma que j'avais fait et décrit. Sauf que l'association n'est peut-être pas "Téléphoner" mais "Posséder" ou "Attribuer" comme dans vos messages précédents ?
    Une association est quand même chargée de sens. On ne tépléphone pas à un téléphone !

    Comment gérer ceci sous MySQL ?
    L'exclusion nécessitera un trigger vérifiant que le numéro de téléphone attribué à une personne n'est pas déjà attribué à une structure et un autre identique pour assurer qu'un téléphone attribué à une structure n'est pas attribué à une personne.

    À noter que ces deux associations génèreront deux tables associatives dont la clé primaire sera l'identifiant du téléphone puisque un téléphone ne peut être attribué qu'une seule fois.
    TELEPHONE_PERSONNE (idTelephone, idPersonne)
    TELEPHONE_STRUCTURE (idTelephone, idStructure)
    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 !

  11. #11
    Invité
    Invité(e)
    Par défaut
    À noter que ces deux associations génèreront deux tables associatives dont la clé primaire sera l'identifiant du téléphone puisque un téléphone ne peut être attribué qu'une seule fois.
    TELEPHONE_PERSONNE (idTelephone, idPersonne)
    TELEPHONE_STRUCTURE (idTelephone, idStructure)

    Oui si les cardinalités sont 0,n pour chacun d'entre eux, mais ce n'est pas le cas.
    Dernière modification par Invité ; 24/03/2010 à 13h53.

  12. #12
    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
    Oui si les cardinalités sont 0,n pour chacun d'entre eux, mais ce n'est pas le cas.
    Non !
    C'est dû au fait que les cardinalités ne sont pas (1,1 - 0,n) mais (0,1 - 0,n) !
    Un téléphone est attribué soit à une personne, soit à une structure. Quelle clé étrangère mettre dans la table téléphone ? En toute rigueur, il faut donc deux tables associatives.
    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 !

  13. #13
    Invité
    Invité(e)
    Par défaut
    Je suis d'accord, on se retouverai avec un nombre important de valeurs NULL.
    Pourtant PowerAmc me génère ce modèle physique.
    Dernière modification par Invité ; 24/03/2010 à 15h09.

  14. #14
    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
    Il doit y avoir une option pour générer des tables associatives dans ce cas.
    Je ne connais pas (encore) PowerAMC mais sous OpenModelsphere il y a une notion d'absorption des cardinalités 0,1 - 0,n.
    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 !

  15. #15
    Invité
    Invité(e)
    Par défaut
    Merci pour ta patience et tes réponses (bien entendu)

    Pour le problème des cardinalités avec PowerAmc, ce dernière considère 0,1 comme 1,1.
    Il faut mettre 0,n au lieu de 0,1 pour générer un modèle physique avec deux tables associatives.
    Dernière modification par Invité ; 24/03/2010 à 18h16.

  16. #16
    Invité
    Invité(e)
    Par défaut
    Une solution est apportée sur un post:
    http://www.developpez.net/forums/d89...table-jointure

  17. #17
    Invité
    Invité(e)
    Par défaut
    Avez-vous réussi à modéliser un héritage avec OpenModelsphere ?

  18. #18
    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
    Avez-vous réussi à modéliser un héritage avec OpenModelsphere ?
    On peut le modéliser en MCD de cette façon :
    Sous_type -1,1----Etre----0,1- Sur_type

    Mais ne pas mettre de clé dans le sous-type génère un avertissement.
    La génération de la clé étrangère se fait bien mais si on veut ajouter la clé primaire, il la crée vide et il semble qu'on ne puisse y affecter la clé étrangère.

    Bref, c'est pas top tout ça !
    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 !

  19. #19
    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 Héritage avec Open ModelSphere
    Bonsoir,

    A propos de l’héritage avec Open ModelSphere.

    Citation Envoyé par CinePhil Voir le message
    On peut le modéliser en MCD de cette façon :

    Sous_type -1,1----Etre----0,1- Sur_type

    Mais ne pas mettre de clé dans le sous-type génère un avertissement.
    La génération de la clé étrangère se fait bien mais si on veut ajouter la clé primaire, il la crée vide et il semble qu'on ne puisse y affecter la clé étrangère.
    Bref, c'est pas top tout ça !
    Prenons le cas de l’entité-type Personne qui a (entre autres) l’entité-type Entreprise comme sous-type.

    L’astuce consiste à souligner la cardinalité 1,1 (en gros ça revient à faire de l’identification relative). Pour cela, faire un drag drop de l’icône de la clé primaire :




    Ensuite :
    « Convertir en modèle relationnel »
    « Générer les clés étrangères »
    Mais l’outil crée un cycle du fait d’une clé étrangère installée dans la table Personne :



    Il faut donc supprimer cette clé étrangère. Dans l’ordre : supprimer la clé étrangère elle-même, puis l’attribut impliqué. Ceci fait, le MLD est OK :



    Ne pas oublier de renommer Personne PersonneId en PersonneId.
    (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.

  20. #20
    Membre régulier Avatar de tavarlindar
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    262
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 262
    Points : 97
    Points
    97
    Par défaut et si on oublie l'astuce ?
    Bonjour,
    En reprenant l'exemple ci-dessus, que se passerait-il si on oublie de "mettre une clé" primaire sur le 1,1 ?

    En partant de ce schéma :

    On génère le MPD et on demande la création des clés étrangères. Ensuite on affecte une clé primaire sur la clé étrangère de la table entreprise.
    Il me semble qu'on arrive au même résultat ?
    Mieux vaut penser avant d'agir que d'agir en rêvant.

Discussions similaires

  1. [Associé] cherche associé communication digitale
    Par keepscool dans le forum Autres
    Réponses: 0
    Dernier message: 26/01/2015, 09h47
  2. Réponses: 7
    Dernier message: 22/12/2008, 23h30
  3. Type associé pour grand chiffre
    Par masseur dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/06/2007, 14h36
  4. Type de lien entre deux associations
    Par thibal dans le forum PowerAMC
    Réponses: 2
    Dernier message: 17/06/2005, 16h53
  5. Associer un type MIME à une extension.
    Par Olivier_ dans le forum Réseau/Web
    Réponses: 6
    Dernier message: 13/03/2005, 14h48

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