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

PowerAMC Discussion :

choix de type de transformation des relation de type 1.1


Sujet :

PowerAMC

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 119
    Points : 70
    Points
    70
    Par défaut choix de type de transformation des relation de type 1.1
    salut tout le monde.
    je travaille sur power amc 11 et j'ai un souci.
    j'ai deux entités A et B qui sont reliées par une association de type 1,1
    A--(0,1)----------ASSOCIATION------------(1,1)B
    lorsque je génère le modèle power amc transforme l'association a une entité qui contient les deux ids des tables A et B ?
    svp comment je peux configurer power amc pour que je puisse avoir l'id de la table A comme cle étranger dans l'entite B.(sans passer par la nouvelle entité )
    merci de votre aide

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    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 112
    Points : 31 586
    Points
    31 586
    Billets dans le blog
    16
    Par défaut
    Normalement, Power AMC crée un cycle, en définissant pour la table B une clé étrangère référençant la table A et pour la table A une clé étrangère référençant la table B.

    Cela dit, au niveau MCD, utilisez-vous la notation Merise ou la notation Entité-Relation ?

    Dans ce dernier cas, l'entité-type B peut-elle être identifiée relativement à A ?

  3. #3
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 119
    Points : 70
    Points
    70
    Par défaut
    au début ça était merise+e/s mais malgré je choisis merise comme notation pour toute relation 1,1 il me crée une nouvelle entité
    merci de votre aide .

  4. #4
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 119
    Points : 70
    Points
    70
    Par défaut
    normalement l'entité B va recevoir l'id de l'entité A et c'est tt
    svp si y'a une façon de configurer ces réglés de passage sous power amc si nn si y'a d'autre logiciels
    merci de votre aide

  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 112
    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 112
    Points : 31 586
    Points
    31 586
    Billets dans le blog
    16
    Par défaut Cycle
    Bonjour,

    Il faudrait que vous joigniez une image du MCD et du MLD.

    Je rappelle qu'en toute logique, Power AMC (ou autre AGL) doit produire un MLD avec cycle (symétrie des cardinalités maximales à 1 oblige). On intervient alors manuellement au niveau du MLD pour rompre le lien selon lequel B est parent de A.

  6. #6
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 119
    Points : 70
    Points
    70
    Par défaut
    merci de votre aide
    ci joint un petit exemple de mcd et le mpd équivalent.
    l'entité usr est liée avec une entité candidat et une autre recruteur avec une relation de type 1.1
    comme vous vous voyez pour chaque relation power amc crée une entité .
    normalement ce que je veux c'est que l'entité candidat reçoit l'id de l'entité usr comme FK et l'attribut date_inscriptionCand .
    merci de votre aide.
    Images attachées Images attachées   

  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 112
    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 112
    Points : 31 586
    Points
    31 586
    Billets dans le blog
    16
    Par défaut
    Vos associations-types est_inscrit et est_inscrit2 sont porteuses de données et Power AMC décide en conséquence d'en faire des tables, ce qui n'est pas faux. En effet, pour ne pas procéder ainsi, il faudrait qu'il sache dans quelle table migrer les attributs dateInscriptionRec et dateInscriptionCand. Vous avez certainement une idée à ce sujet, mais pas lui. En conséquence, à vous de procéder à cette migration dès le MCD.

    Là où Power AMC s'emmêle les pinceaux, c'est quand il décide que la clé primaire des tables est_inscrit et est_inscrit2 est composée du couple {emailUsr, idRec}. Ceci est un bug. Il aurait dû créer deux clés, une primaire et l'autre alternative {emailUsr} et {idRec}.

  8. #8
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 119
    Points : 70
    Points
    70
    Par défaut
    merci

  9. #9
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 119
    Points : 70
    Points
    70
    Par défaut
    merci de votre aide .
    Si dans le mcd j'introduis l'attribut DateINscriptionCand dans la table Candidat il va en fait insérer l'id de la table USR vers la table candidat(comme clef étrangère not null puisque un candidat doit avoir au moins une occurrence de l'entité USER) et vise versa mais cette fois la clef étrangère peut être nulle(puisque un user peut ne pas avoir une occurrence de l'entité Candidat).
    c'est bien mais !
    lorsque je vais insérer des données dans ces deux tables ?je dois insérer une ligne dans la table USR ((FK)idcandidat =nulle),après je vais insérer une ligne dans la table candidat dont l'attribut FK idUser = l'user que je viens d'insérer.et finalement mettre a jour la ligne USER que j'ai déjà insérer !!! c'est un peu lourd
    normalement avec une relation
    A:0,1-----ASSOCIATION--------B 1,1
    l'id de la table A migre vers l'entité B comme FK et si l'association est porteuse des données,elles vont aussi migrer vers l'entité B comme des attributs simple .
    alors je pense que la seule solution pour obtenir ceux ci c'est de changer les cardinalites de la relation comme suit :
    User (0,n) -----------est_inscrit----------(1,1)Candidat
    svp qui ce que vous pensez de cela ?
    je crois que dans une relation de type 1,1 il ne faut pas traduire l'association comme entité même si elle est est porteuse de data .parce que si non dans notre cas par exemple(USR CANDIDAT) je peux avoir un candidat avec plusieurs user en relation ==>erreur parce que j'ai déclaré que un candidat est lie avec une et une seule occurrence de l'entité USER .
    aussi dans une relation 1,1 A(0,1)---------ASSOCIATION-----(1,1)B
    même si l'association n'est pas porteuse POWER AMC met l'id de chaque entité dans l'autre !!!a mon avis il suffit que l'id d'une table soit insérer dans l'autre et surtout l'id de l'entité A migre vers l'entité B comme FK(comme ça je peux insérer des données facilement )

    je vous remercie beaucoup

  10. #10
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    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 112
    Points : 31 586
    Points
    31 586
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par switch1 Voir le message
    Si dans le mcd j'introduis l'attribut DateINscriptionCand dans la table Candidat il va en fait insérer l'id de la table USR vers la table candidat(comme clef étrangère not null puisque un candidat doit avoir au moins une occurrence de l'entité USER) et vise versa mais cette fois la clef étrangère peut être nulle(puisque un user peut ne pas avoir une occurrence de l'entité Candidat).
    c'est bien mais !
    Souvenez-vous que je vous ai dit : en toute logique, Power AMC (ou autre AGL) doit produire un MLD avec cycle (symétrie des cardinalités maximales à 1 oblige). et qu’on peut intervenir manuellement au niveau du MLD pour rompre le lien gênant. Ceci fait, il faut garantir la règle selon laquelle pour un Usr il y a au plus un candidat (même principe pour un recruteur). Pour cela, il faut définir UsrId comme clé alternative (<ak>) de la table Candidat :


    Pour cela, vous accédez à la fenêtre "Propriétés de la table" de la table Candidat :

    Cliquer sur l’onglet « Clés »

    Icône "Insérer une ligne" => apparition d'une ligne Cle_2.

    Sur cette ligne, choisir "Sélectionner tout" (ou clic droit sur la ligne entière).
    => Message "Vous ne pouvez pas modifier...", on s'en fiche : cliquer sur "Oui".

    Apparition d'une nouvelle fenêtre "Propriétés de la clé Cle_2".

    Onglet Colonnes, cliquer sur "Ajouter des colonnes" :
    Cocher la case UsrId, et faire OK à volonté.

    UsrId apparaît dans le MLD en tant qu'alternate key <ak> (et évidemment aussi en tant que clé étrangère (<fk>)).

  11. #11
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 119
    Points : 70
    Points
    70
    Par défaut
    d'accord je vous remercie beaucoup de votre aide .
    je vois pas a quoi sert de définir la clef étrangère idUsr comme clef alternative ??
    si c'est pour assurer que chaque valeur de idUSR apparait au plus une fois dans la table candidat bein j'ai déjà lit votre conversation ici
    http://www.developpez.net/forums/d47...t/#post4336889
    j'ai teste mais cela ne marche pas (j'ai pu insérer deux ligne dans la table candidat avec même valeur de la clef étrangère qui est en meme temps une clef alternative, sous mysql 5) et je sais même pas pour quoi normalement une clef alternative est un ou plusieurs attributs qui peuvent identifier chaque ligne de l'entité et qui est pas une clef primaire !!!
    si non j'ai déjà essaye le même exemple (candidat user avec une association porteuse) sous win'design 5 et il a introduit idUser(comme FK) et l'attribut date d'inscription dans l'entité candidat .mais j'ai pas du temps pour recommencer a 0 la conception puisque je manipule plus de 30 entité dans le cadre d'un projet de fin d'étude licence 3.
    je crois que je vais continuer avec power amc.je vais changer les cardinalites entre usr et candidat de 1.1 a 1.n pour obtenir l'id de l'entité usr et les attribut de la relation est_inscrit dans l'entité candidat
    je vous remercie infiniment de votre soutien

  12. #12
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 112
    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 112
    Points : 31 586
    Points
    31 586
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Citation Envoyé par switch1 Voir le message
    je vois pas a quoi sert de définir la clef étrangère idUsr comme clef alternative ??
    Ça permet de garantir que pour un candidat il n’y a qu’un seul Usr. Sinon, pour un Usr on peut avoir autant de candidats qu’on en veut et ceci est contraire à vos règles de gestion.

    Citation Envoyé par switch1 Voir le message
    si c'est pour assurer que chaque valeur de idUSR apparait au plus une fois dans la table candidat bein j'ai déjà lit votre conversation ici
    http://www.developpez.net/forums/d47...t/#post4336889
    j'ai teste mais cela ne marche pas (j'ai pu insérer deux ligne dans la table candidat avec même valeur de la clef étrangère qui est en même temps une clef alternative, sous mysql 5)
    Forcément, dans la discussion à laquelle vous faites référence, on peut résoudre le problème au niveau conceptuel, alors qu'ici, c’est au niveau logique qu’il faut agir.

    Si vous suivez mon conseil, à partir du MLD :

    Power AMC produit alors le code suivant :
    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
    /*==============================================================*/
    /* Nom de SGBD :  MySQL 4.0                                     */
    /*==============================================================*/
    create table Usr
    (  Usrid                          int           not null,
       Usrlibelle                     varchar(48)   not null,
       primary key (Usrid)
    );
    create table Candidat
    (  CandidatId                     int            not null,
       Usrid                          int            not null,
       CandidatNom                    varchar(48)    not null,
       DateInscr                      datetime       not null,
       primary key (CandidatId),
       key AK_Cle_2 (Usrid)
    );
    alter table Candidat add constraint FK_AB foreign key (Usrid)
          references Usr (Usrid) on delete restrict on update restrict;
    la clé alternative définie par l’AGL pour la table Candidat est bien {Usrid}.


    Citation Envoyé par switch1 Voir le message
    je sais même pas pour quoi normalement une clef alternative est un ou plusieurs attributs qui peuvent identifier chaque ligne de l'entité et qui est pas une clef primaire !!!
    Considérez une hypothétique table des membres de developpez.com :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE Membre
    (    MbrId            INTEGER        NOT NULL
       , Pseudonyme       VARCHAR(16)    NOT NULL
       , DateInscription  DATE           NOT NULL
       , Localisation     VARCHAR(48)    NOT NULL
       , AdrCourriel      VARCHAR(128)   NOT NULL
     , CONSTRAINT MbrPk PRIMARY KEY (MbrId)
     , CONSTRAINT CK2 UNIQUE (Pseudonyme)
     , CONSTRAINT CK3 UNIQUE (AdrCourriel)) ;
    La clé primaire est ici {MbrId}. Mais comme le pseudonyme d’un membre et son adresse de courriel lui appartiennent en exclusivité, on définit deux clés alternatives {Pseudonyme} et {AdrCourriel} pour garantir cette contrainte d’unicité (clause UNIQUE, renommée en KEY avec MySQL}.


    Citation Envoyé par switch1 Voir le message
    je vais changer les cardinalites entre usr et candidat de 1.1 a 1.n
    Dommage. Bonne chance pour la suite.

  13. #13
    Membre régulier
    Inscrit en
    Juillet 2008
    Messages
    119
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 119
    Points : 70
    Points
    70
    Par défaut
    Dommage. Bonne chance pour la suite.
    bon je vous remercie de votre aide.
    puisque l'idée de changer les cardinalies vous plait pas alors je vais laisser les cardinalites entre candidat et user 1.1 .comme ça je serais content par la suite.
    merci encore fsmrel .

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

Discussions similaires

  1. [SP-2013] Type de document basé sur un type existant, supprimer des colonnes ?
    Par SpaceFrog dans le forum SharePoint
    Réponses: 9
    Dernier message: 18/12/2014, 14h05
  2. [MySQL] Insérer des éléments de type FILE dans des sessions pour un panier
    Par akrogames dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 21/01/2009, 11h30
  3. Réponses: 5
    Dernier message: 27/06/2007, 17h08
  4. Réponses: 2
    Dernier message: 17/11/2006, 17h38
  5. [Choix] Que pensez vous des CMS de type Mambo ?
    Par Nikeleos dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 02/09/2005, 12h45

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