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

Modélisation Discussion :

Problème de relations


Sujet :

Modélisation

  1. #1
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 339
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 339
    Points : 1 955
    Points
    1 955
    Par défaut Problème de relations
    Bonjour,

    Je me fait une base de données afin de suivre ma progression sur Final Fantasy 6.

    Pour vous expliquer simplement le contexte:
    Le joueur rencontre des monstres formations de monstre.
    Une formation regroupe entre 1 et 6 monstres.
    Chaque monstre à, outre ses caractéristiques, une compétence particulière appelée Frénésie.
    Le joueur peut acquérir ces frénésies, à condition qu'elle soit issue d'un monstre déjà rencontré (ou plutôt un monstre présent dans une formation déjà rencontrée).

    J'ai donc fait la modélisation suivante:
    Nom : FF6 - MCD.png
Affichages : 160
Taille : 8,6 Ko
    Mais je n'en suit pas très satisfait. En effet, ce modèle autorise l'acquisition de n'importe quelle frénésie, qu'elle soit issue d'un monstre déjà rencontré ou non.

    J'ai très envie de mettre un lien entre les relations Acquiert et Rencontre, mais Merise ne l'autorise pas.
    Quelle solution est envisageable?

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 753
    Points : 57 592
    Points
    57 592
    Billets dans le blog
    42
    Par défaut
    Bonjour,

    Je suppose que tes règles de gestion sous-entendent une contrainte inter-associations d'inclusion.

    Je pense que ton logiciel de modélisation ne permet pas de les prendre en compte, mais on sort un peu du cadre Access, tu devrais poser ta question dans le forum schéma et passer à Looping qui permet de créer les scripts SQL de création de tables avec Access comme cible.

    Note : tu es sûr de tes cardinalités ? Notamment avec les cardinalités 1,1 de chaque côté de l'association Posséder :
    Monstre----1,1----posseder----1,1----Frenesie

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 339
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 339
    Points : 1 955
    Points
    1 955
    Par défaut
    Je pense que je voit l'idée, bien que je ne suis pas sûre d'avoir tout compris.
    En pratique, cela se traduit par un trigger (data macro) ?

    Citation Envoyé par f-leb Voir le message
    Je pense que ton logiciel de modélisation ne permet pas de les prendre en compte,
    J'utilise AnalyseSI.

    Citation Envoyé par f-leb Voir le message
    Note : tu es sûr de tes cardinalités ? Notamment avec les cardinalités 1,1 de chaque côté de l'association Posséder :
    Monstre----1,1----posseder----1,1----Frenesie
    L'idée est de décoréléer les frénésies des monstres (chaque monstre possède une seule frénésie).
    En théorie, c'est une relation 1:1 / 1:1, en pratique une relation 0:1 / 1:1 sera plus adaptée (à ma connaissance, on ne peut mettre à jour 2 tables simultanément).

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 753
    Points : 57 592
    Points
    57 592
    Billets dans le blog
    42
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Je pense que je voit l'idée, bien que je ne suis pas sûre d'avoir tout compris.
    Moi non plus, c'est bien pour ça que j'ai proposé de poser ta question sur le forum Schéma où sont présents les cadors de la modélisation.


    Citation Envoyé par deedolith Voir le message
    En pratique, cela se traduit par un trigger (data macro) ?
    Ou du VBA dans tes formulaires, du genre une liste déroulante qui ne présentent que les frénésies déjà rencontrées par l'utilisateur.


    Citation Envoyé par deedolith Voir le message
    J'utilise AnalyseSI.
    Il fait ce qu'il peut, mais peut peu... Looping est bien plus complet, et tout aussi simple d'utilisation et gratuit.


    Citation Envoyé par deedolith Voir le message
    En théorie, c'est une relation 1:1 / 1:1, en pratique une relation 0:1 / 1:1 sera plus adaptée ...
    Il ne peut pas y avoir de MCD "en théorie" et un autre "en pratique". Il faut modéliser l'intention d'abord sur un MCD. La mise en oeuvre pratique viendra après le MCD avec les tables, les clés, les data macros, le SQL et le VBA sur Access.
    Si c'est vraiment 1,1 des deux côtés, je ne vois pas pourquoi tu ne mettrais pas un attribut nomFrenesie (avec une contrainte d'unicité) dans l'entité Monstre (je vois que Looping n'autorise pas la création de ces cardinalités 1,1 de chaque côté de l'association).

  5. #5
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 753
    Points : 57 592
    Points
    57 592
    Billets dans le blog
    42
    Par défaut
    Bonsoir,

    Alors si je reprends le schéma suivant :

    Nom : frenesie-relations.png
Affichages : 78
Taille : 19,9 Ko

    Et qu'on a la règle de gestion :
    "Un utilisateur ne peut acquérir une frénésie que si celle-ci appartient à un monstre d’une formation rencontrée par l’utilisateur."
    J'ai réglé ça avec une macro de données (data macro), des triggers en quelque sorte, à la façon d'Access...

    On commence par une requête enregistrée R_frenesies_rencontres qui donne les monstres rencontrés pour chaque utilisateur :
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT DISTINCT Rencontrer.UtilisateurId, Agreger.MonstreId
    FROM Agreger INNER JOIN Rencontrer 
    ON Agreger.FormationId = Rencontrer.FormationId;

    Et on prépare la macro suivante sur l'évènement Avant Modification de la table Acquerir :

    Nom : frenesie-macro-avant-modif.png
Affichages : 78
Taille : 31,5 Ko

    Si Rechercher un enregistrement... donne un résultat pour la saisie en cours, c'est que l'utilisateur a bien rencontré le monstre et la saisie est valide. On quitte alors la macro, et l'enregistrement est validé.
    Si Rechercher un enregistrement... ne renvoie rien, l'utilisateur n'a jamais rencontré le monstre, on quitte immédiatement le bloc, et on déclenche une erreur.

    Franchement, c'est pas très intuitif cette façon de programmer, je trouve ça même très moche Mais ça fait le boulot...
    Quand on force un enregistrement délinquant (sur insertion ou mise à jour d'un enregistrement), la validation devient impossible :

    Nom : frenesie-acquisition-impossible.png
Affichages : 78
Taille : 20,3 Ko

Discussions similaires

  1. Mettre en relation les contrôles DBLookUpComboBox et DBGrid
    Par Gendarmette dans le forum Bases de données
    Réponses: 7
    Dernier message: 19/01/2004, 13h16
  2. [Relations] afficher les relations entre 2 tables
    Par dzincou dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 14/01/2004, 17h07
  3. [EJB2.1 Entity] [CMR] Relation One to Many
    Par hamed dans le forum Java EE
    Réponses: 2
    Dernier message: 31/12/2003, 14h26
  4. Réponses: 2
    Dernier message: 26/09/2003, 15h54
  5. Problème avec mes tables de relation...
    Par mmike dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 02/06/2003, 15h16

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