1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : septembre 2012
    Messages : 6
    Points : 4
    Points
    4

    Par défaut MCD Problème de modélisation

    Bonjour à tous et à toutes,

    Dans le cadre d'un projet personnel, je tente de modéliser la base de donnée d'un jeu. N'étant que peu expérimenté en MERISE, je me heurte à un problème pour lequel j'ai le plus grand mal à trouver une solution. Je me demandais si les plus expérimentés d'entre vous pourraient m'aider à le résoudre ?

    Soit données les 3 entités suivantes :
    1. CATÉGORIES DE CERCLES D'INFLUENCES: Proche, Éloigné, Opposé, Ennemi -> Nombre de valeurs fini que sont les quatre citées
    2. CERCLES D'INFLUENCES : Culturel, Gotha, Business, Globe-Trotters, Fonctionnaires, Forces de l'ordre, Pègre, Notables, etc. -> Nombre de valeurs infinie
    3. PERSONNAGE -> entité en relation avec les cercles d'infuences.


    Je voudrais associer chaque personnage à un couple (catégorie / cercle) pour chaque catégorie existante.

    Par exemple un personnage serait :
    • 'proche' du cercle 'culturel'
    • 'éloigné' du cercle 'forces de l'ordre'
    • 'opposé' du cercle 'notables'
    • 'ennemi' du cercle 'pègre'



    Cependant certaines règles d'exclusion viennent compliquer la chose : par exemple ce personnage, après qu'il ait été déclaré 'proche' du cercle 'culturel' ne pouvait plus ni être 'proche' d'un autre cercle, ni même associer le cercle 'culturel' à une autre catégorie de cercles d'influence telle que 'éloigné'.

    Aucune des modélisations que j'ai envisagé jusqu'ici ne m'est apparu comme satisfaisante. Comment modéliseriez vous cela en merise ?

    Merci par avance pour vos éventuelles réponses !

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    septembre 2006
    Messages
    6 126
    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 : 6 126
    Points : 20 324
    Points
    20 324
    Billets dans le blog
    16

    Par défaut

    Bonsoir Ian,

    Dans un 1er temps, votre MCD ressemble à celui-ci, dans lequel les 3 entités-types sont en relation au moyen d’une association ternaire R, correspondant au prédicat suivant :

    Le personnage PersonnageId est associé au cercle CercleId pour la catégorie CategorieId



    Mais s’il existe la contrainte selon laquelle « Dans une catégorie donnée, un personnage ne peut appartenir qu’à un seul cercle », alors il faut mettre en oeuvre une CIF (contrainte d’intégrité fonctionnelle), à la manière de la FAQ Merise.

    La représentation peut être ainsi simplifiée :



    S’il existe la contrainte selon laquelle « Pour une cercle donné, un personnage ne peut appartenir qu’à une seule catégorie », de la même façon :




    Et si les deux contraintes sont à assurer :




    Le problème est que souvent les AGL ne répercutent pas les contraintes lors du passage au MLD, où le triplet {PersonnageId, CategorieId, CercleId} est alors clé candidate de R, c'est-à-dire que pour une catégorie donnée, un personnage peut se retrouver associé à plusieurs cercles, et que pour un cercle donné, ce personnage peut être associé à plusieurs catégories. Avec DB-MAIN (gratuit) on sait assurer les contraintes, car cet AGL permet de déclarer les identifiants de l’association R dès le MCD : {PERSONNAGE, CATEGORIE} et {PERSONNAGE, CERCLE} :


    Et l’on observe dans le MLD les deux contraintes sous forme des clés candidates {PersonnageId, CategorieId} et {PersonnageId, CercleId} :



    On retrouve le problème qui se pose par exemple avec les courses de chevaux : lors d’une course, un jockey ne peut monter qu’un seul cheval, un cheval ne peut être monté que par un seul jockey et être porteur d’un seul numéro. Ces 3 contraintes peuvent être prises en compte ainsi avec DB-MAIN, voyez ici et .

    Maintenant, votre récit est ambigu. Par exemple, vous écrivez :

    Citation Envoyé par Ian
    Je voudrais associer chaque personnage à un couple (catégorie / cercle) pour chaque catégorie existante.

    Est-ce à dire que les paires {CATEGORIE, CERCLE} sont prédéfinies, et que vous voulez associer chaque personnage à une et une seule de ces paires ? Si oui, la modélisation se simplifie.
    Faites simple, mais pas plus simple ! (A. Einstein)
    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 »)

    Je ne réponds pas aux questions techniques par MP. Les forums sont là pout ça.
    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    septembre 2012
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : septembre 2012
    Messages : 6
    Points : 4
    Points
    4

    Par défaut

    Bonjour fsmrel,

    tout d'abord je voulais vous remercier pour votre réponse qui dépasse de très loin tous mes espoirs et dont les nombreux détails vont m'aider à progresser dans ma compréhension future des problèmes !

    pour évacuer l’ambiguïté de ma formulation, je précise que le personnage sera systématiquement associé à 4 couples :

    'proche' + CERCLE
    'éloigné' + CERCLE
    'opposé' + CERCLE
    'ennemi' + CERCLE

    c'est à dire que toutes les valeurs de CATÉGORIE (qui sont les 4 citées dessus, 'proche', etc.) seront systématiquement utilisées (une fois et une seule fois) et associées à un cercle qui lui peut varier mais ne se retrouver qu'une fois dans l'un de ces 4 couples.

    j'espère avoir mieux formulé mes contraintes cette fois !

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    septembre 2006
    Messages
    6 126
    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 : 6 126
    Points : 20 324
    Points
    20 324
    Billets dans le blog
    16

    Par défaut

    Bonsoir Ian,

    Si je comprends bien, les contraintes sont donc les suivantes :

    (R1) Pour un personnage et une catégorie, il y a au moins et au plus un cercle ;

    (R2) Pour un personnage et un cercle, il y a au moins et au plus une catégorie ;

    (R3) Pour un personnage, il y au moins et au plus 4 catégories.

    Si c’est bien cela, R1 et R2 sont l’objet des CIF que j’avais proposées :



    Ou dans le style DB-MAIN :

    MCD


    MLD :



    Quant à R3, il faudra vérifier au niveau SQL qu’il n’existe pas de personnage n’étant pas présent exactement 4 fois dan la table R.

    Sommes-nous en phase ?
    Faites simple, mais pas plus simple ! (A. Einstein)
    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 »)

    Je ne réponds pas aux questions techniques par MP. Les forums sont là pout ça.
    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench

Discussions similaires

  1. Problème de modélisation MCD
    Par willytito dans le forum Schéma
    Réponses: 4
    Dernier message: 19/11/2008, 03h34
  2. [MCD] Problème de modélisation d'un QCM
    Par Dam)rpgheaven dans le forum Schéma
    Réponses: 1
    Dernier message: 14/01/2008, 23h57
  3. [CONCEPTION MCD] Problème avec les clés composées
    Par fabriceMerc dans le forum Schéma
    Réponses: 3
    Dernier message: 14/02/2005, 09h43
  4. [Class/PHP/Postgres] Problème de modélisation...
    Par k-reen dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 27/02/2003, 08h49

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