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 :

Modélisation : Plusieurs pour toujours (0,n) et un seul en même temps (1,1)


Sujet :

Schéma

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Modélisation : Plusieurs pour toujours (0,n) et un seul en même temps (1,1)
    Bonjour,

    J'ai la tâche de modéliser une base de données pour un centre équestre.
    Pour l'instant tout se passe bien, mais il y a une chose que je ne sais pas modéliser, il est possible que la solution se trouve dans merise2 mais je ne la connais pas. Après plusieurs recherches infructueuses, je me permets donc de solliciter votre aide :

    Voici le problème :
    - Un client peut monter plusieurs chevaux différents mais il ne peut en monter que un par leçon (leçon = table reprise). Voici la partie concernée de mon MCD :



    Comment puis-je traduire qu'un client peut monter plusieurs chevaux mais un seul à la fois (un seul par leçon) ?





    En vous remerciant par avance pour vos réponses,

    Cordialement.

  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 001
    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 001
    Points : 30 905
    Points
    30 905
    Billets dans le blog
    16
    Par défaut
    Bonsoir,


    Selon l’association-type Monte, le cheval Zaza ne peut être monté par le client Albert qu’une seule fois, ce qui paraît un peu trop restrictif.

    Albert peut suivre des leçons qui ne concernent pas Zaza.

    Il y a donc quelques contraintes à prendre en compte lors de la modélisation.

    Je vais me situer au niveau logique, car j’y suis plus à l’aise pour examiner votre problème, et donc je parlerai de tables plutôt que de types d’entités et des relations qu’elles entretiennent.

    On a déjà trois tables correspondant à vos entités-types Leçon, Cheval, Client :
    Leçon {LeçonId, ....}
    Cheval {ChevalId, ....}
    Client {ClientId, ....}
    (Les clés primaires sont soulignées).

    Appelons Horaire le couple formé par la date et l’heure des leçons.

    La paire {Leçon, Horaire} préexiste aux participations des clients aux leçons. En ce sens, il faudrait prévoir une table hébergeant les différentes valeurs de cette paire. Cette table aurait la structure suivante :
    LH {LeçonId, HoraireValeur, Duree}
    L’attribut LeçonId est lié à son homologue de la table Leçon par clé étrangère, au motif de l’intégrité référentielle.

    Une question au passage : une leçon a-t-elle toujours la même durée ? Si oui, l’attribut Duree doit être transféré dans la table Leçon.

    Ensuite, on peut établir une relation entre les tables LH, Cheval et Client, d’où la structure de la table correspondante :
    MONTE {ClientId, ChevalId, LeçonId, HoraireValeur}
    (La table comportant plus d’une clé, les souligner serait cause d’ambiguïté, donc on s’abstiendra.)

    On peut raisonnablement penser qu’à un instant t un cavalier monte un seul cheval et suit une seule leçon. De la même façon, à un moment donné, un cheval est monté par un seul cavalier et ne participe qu’à une seule leçon. Ceci se traduit par les dépendances fonctionnelles :
    {ClientId, HoraireValeur} {ChevalId, LeçonId}

    {ChevalId, HoraireValeur} {ClientId, LeçonId}

    En conséquence, la table MONTE a deux clés candidates :
    CK1 : {ClientId, HoraireValeur}

    CK2 : {ChevalId, HoraireValeur}

    Et trois clés étrangères (exprimant les contraintes d’intégrité référentielle) :
    FK1 : {LeçonId, HoraireValeur}
    FK2 : {ChevalId}
    FK3 : {ClientId}

    Par concession au modèle SQL, on retiendra CK1 comme clé primaire, au hasard, CK2 devenant alors clé alternative.

    Maintenant, pour la rétroconception du MLD en MCD, sans perte de règles, les choses ne pas si simples du fait de la présence des deux clés CK1 et CK2 et des contraintes de préexistence (conduisant à brancher une association avec une association). Je doute que l’on y parvienne de façon naturelle, même avec Merise 2.

    Un MLD :
    (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.

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Salut,

    Merci pour ta réponse. Je ne m'imaginais pas recevoir de réponse aussi complète.

    Elle m'a bien aidée, j'ai réussi à résoudre, en partie, mon problème.

    Merci à toi.

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/12/2012, 08h24
  2. Mettre plusieurs drivers en même temps pour un programme
    Par nicofromChina dans le forum JDBC
    Réponses: 14
    Dernier message: 25/01/2007, 11h17
  3. Quels sont les moyens pour encoder plusieurs éléments en même temps
    Par finalfx dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 12/01/2007, 00h00
  4. Réponses: 8
    Dernier message: 28/09/2006, 09h35
  5. Recv = 0 pour toujours :-/
    Par RepliCarter dans le forum C++
    Réponses: 9
    Dernier message: 29/05/2006, 00h47

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