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

Diagrammes de Classes Discussion :

Cardinalités


Sujet :

Diagrammes de Classes

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 1
    Points : 2
    Points
    2
    Par défaut Cardinalités
    Bonjour

    J'ai une petite question au niveau de la cardinalité (schéma UML) pour la phrase suivante:
    "On considère une entité nommée "Enseignant" et une autre nommée "Unité de l'Université". on dit qu'un enseignant appartient a exactement une unité de l'université et que réciproquement, à toute unité appartiennent au moins 10 enseignants, et l'unité est dirigée par exactement l'un d'entre eux."

    Pour l'instant j'ai représenté une relation de "Enseignant" vers "Unité" nommée dirige> de cardinalité 1 et 1. ensuite mon problème se pose: comment fait pour modéliser la réciprocité? J'ai pensé à une relation de "Enseignant" vers "Unité" nommée travaille pour> de cardinalité 1 et 1 et sur le même trait mais dans le sens "Unité" vers "Enseignant" une relation employe> de cardinalité 1 et 10..*. N'y a t'il pas un moyen de synthétiser celles-ci en ne perdant aucune information ou alors c'est possible seulemtn si l'on précise dans les contraintes du shéma les informations manquantes?

    Je sais que ma requête est longue mais j'espère que vous pourrez m'éclairer.
    Cordialement

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 123
    Points : 130
    Points
    130
    Par défaut Re: Cardinalités
    Citation Envoyé par Pingwin
    comment fait pour modéliser la réciprocité?
    comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                                         travaille_pour>
    Enseignant (1,10...*) "appartient" -------------------- (1) UniteUniv
                                             dirige>
    "appartient" est un rôle qui signale:
    Citation Envoyé par Pingwin
    à toute unité appartiennent au moins 10 enseignants
    Citation Envoyé par Pingwin
    N'y a t'il pas un moyen de synthétiser celles-ci en ne perdant aucune information ou alors c'est possible seulemnt si l'on précise dans les contraintes du shéma les informations manquantes?
    L'effet de la relation "dirige" impliquera que tout enseignant dirige une unité d'université. Or, d'après la cardinalité, cela implique qu'il y aura autant d'enseignants que d'unités. Si il n"y a que 10 enseignants, ils devront appartenir à toutes les unités et il faudra aussi 10 unités d'université.

    Il vaut donc mieux ajouter des contraintes sur le schéma:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                                         travaille_pour>
    Enseignant (10...*) "appartient" -------------------- (1) UniteUniv
                        {dirige: booléen}
    On peut aussi imposer que le premier enseignant dans la cardinalité est forcément son dirigeant, ce qui au demeurant est plus astucieux. Néammoins une telle représentation sur un SGBDR impose 2 tables, l'une avec les dirigeants qui sont aussi des enseignants et l'autre avec les "simples" enseignants.

    Les bases de données OO sauront mieux le faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
                                                               travaille_pour>
    EnseignantDirigeant ------D Enseignant (10..*) "appartient" ---------------(1) UniteUniv
    under construction...

  3. #3
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 113
    Points : 493
    Points
    493
    Par défaut Cardinalités
    En fait, en Merise (et pour cette question c'est pareil en UML..), il ya 2 relations (associations) de sémantiques différentes !

    Notation Merise

    [Enseignant]--1,1---(Appartient)---10,n--[Unité]
    [Enseignant]--0,1---(Dirige)---1,1--[Unité]
    On pourrait en plus mettre une contrainte d'inclusion
    Dirige (Enseignant x Unité) inclus dans Appartient (Enseignant x Unité)
    qui exprimerait que l'enseignant dirigeant l'unité est un enseignant appartenant à cette unité.

    Notation UML

    [Enseignant]--10,*---(Appartient)---1--[Unité]
    [Enseignant]--1---(Dirige)---0,1--[Unité]

    La traduction en modèle logique relationnel serait la suivante:
    ENSEIGNANT(no_enseignant, code_unit_appart, code_unit_dir)
    UNITE(code_unit, no_enseignant_dir)

    La prise en compte de la contrainte d'inclusion se traduirait par une modification de la table Enseignant où (code_unité_dir) serait remplacé par un booléen (dirigeant) indiquant que l'enseignant est dirigeant de l'Unité à laquelle il appartient.

    A mon avis, pour les problèmes de modélisation des données en vue de concevoir une base de données, Merise est plus puissant et éprouvé que le modèle de classes d'UML, sutout si la base cible est relationnelle.
    UML est génial pour la conception de logiciel objet (en Java par ex)

    Ce n'est pas parce que l'on ne sait se servir que d'un marteau que tous les problèmes doivent être considérés comme des clous !
    Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément.
    L'Art poétique - Nicolas Boileau (1636-1711)

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 123
    Points : 130
    Points
    130
    Par défaut Re: Cardinalités
    Citation Envoyé par NANCI
    La prise en compte de la contrainte d'inclusion se traduirait par une modification de la table Enseignant où (code_unité_dir) serait remplacé par un booléen (dirigeant) indiquant que l'enseignant est dirigeant de l'Unité à laquelle il appartient.
    oui aux 2 schémas...

    mmm...le booléen n'a qu'un très faible intérêt. pour 100 enseignants et 3 unités, il n'y a que 3 booléens à vrai et tous les autres sont faux.
    avoir plutôt 2 tables différentes l'une enseignant et l'autre enseignant dirigeant remplace astucieusement ce booléen.
    under construction...

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 123
    Points : 130
    Points
    130
    Par défaut base
    je propose la solution d'écriture pour une base:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE Enseignant(PRIMARY KEY idens,....);
    CREATE TABLE Unite(PRIMARY KEY idunite,...);
    CREATE TABLE Association(PRIMARY KEY idassoc,
                             ridens UNIQUE REFERENCES Enseignant,
                             ridunite REFERENCES Unite,
                             riddirige REFERENCES Enseignant);
    en 1 requête:
    1)pour un enseignant donné, on connait immédiatement le dirigeant de l'unité où il travaille
    2)pour une unité donnée, on connait tous les enseignants et son dirigeant
    3)pour un enseignant dirigeant, on connait l'unité qu'il dirige
    under construction...

  6. #6
    Membre confirmé

    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 113
    Points : 493
    Points
    493
    Par défaut
    Commentaires pour olivieram
    1/ avoir plutôt 2 tables différentes l'une enseignant et l'autre enseignant dirigeant remplace astucieusement ce booléen
    Pas fameux. Un enseignant dirigeant n'est pas un enseignant ?! Bonjour les évolutions (changement de téléphone, changement de dirigeant d'unité, etc...)

    2/ La proposition de base
    Cette solution ne respecte pas la modélisation conceptuelle.
    la structure de la base autorise de fait
    - qu'une unité ait plusieurs dirigeants
    - qu'un enseignant dirige plusieurs unités

    Rien ne vaut un bon MCD avant de se lancer dans une solution technique
    Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément.
    L'Art poétique - Nicolas Boileau (1636-1711)

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 123
    Points : 130
    Points
    130
    Par défaut
    Citation Envoyé par NANCI
    2/ La proposition de base
    Cette solution ne respecte pas la modélisation conceptuelle.
    la structure de la base autorise de fait
    - qu'une unité ait plusieurs dirigeants
    - qu'un enseignant dirige plusieurs unités
    et y a pas une astuce sql à ajouter ?
    under construction...

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

Discussions similaires

  1. Cardinalité dans PHPMyAdmin
    Par xmag dans le forum Requêtes
    Réponses: 1
    Dernier message: 19/08/2005, 09h31
  2. Récupérer les cardinalités
    Par Invité dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 11/08/2005, 09h12
  3. [Together] Gestion des cardinalités
    Par cladsam dans le forum Autres
    Réponses: 3
    Dernier message: 03/08/2005, 21h33
  4. cardinalité
    Par star_light dans le forum Décisions SGBD
    Réponses: 8
    Dernier message: 30/12/2004, 17h59
  5. Réponses: 2
    Dernier message: 05/10/2004, 22h43

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