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 :

sur la modélisation d'une contrainte


Sujet :

Diagrammes de Classes

  1. #1
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 212
    Points : 184
    Points
    184
    Par défaut sur la modélisation d'une contrainte
    soit le diagramme de classe:
    Nom : class diagram.jpg
Affichages : 232
Taille : 15,4 Ko
    j'aimerais modéliser la contrainte suivante:
    à une date donnée, un membre participe à une seule soutenance.

  2. #2
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 212
    Points : 184
    Points
    184
    Par défaut
    salut,
    j'ai modélisé la contrainte en utilisant une association qualifié. voici le diagramme après modification:
    Nom : class diagram3.jpg
Affichages : 158
Taille : 14,1 Ko
    la question qui se pose est la suivante:
    comment transformer ce diagramme en un modèle relationnel.

  3. #3
    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
    Bonjour win_ubuntu,


    Si on se situe au niveau relationnel (ou SQL), la situation doit être la suivante : une table, appelons-la PARTICIPATION, permet de brancher les tables MEMBRE et SOUTENANCE, tout en respectant la contrainte selon laquelle à une date donnée, un membre donné ne peut se trouver qu’à un seul endroit : c’est cette contrainte qui fait l'objet de la clé primaire de la table PARTICIPATION.
    Code SQL :

    
    CREATE TABLE MEMBRE 
    (
            MembreId              INT            NOT NULL
          , MembreNom             VARCHAR(32)    NOT NULL
        , CONSTRAINT MEMBRE_PK PRIMARY KEY (MembreId)
    ) ;
    
    CREATE TABLE SOUTENANCE 
    (
            SoutenanceId          INT            NOT NULL
          , SoutenanceDate        DATE           NOT NULL
          , SoutenanceLieu        VARCHAR(32)    NOT NULL
        , CONSTRAINT MEMBRE_PK PRIMARY KEY (SoutenanceId)
        , CONSTRAINT MEMBRE_AK UNIQUE (SoutenanceDate, SoutenanceLieu)
    ) ;
    
    CREATE TABLE PARTICIPATION 
    (
            MembreId              INT            NOT NULL
          , SoutenanceDate        DATE           NOT NULL
          , SoutenanceLieu        VARCHAR(32)    NOT NULL
        , CONSTRAINT PARTICIPATION_PK PRIMARY KEY (MembreId, SoutenanceDate)
        , CONSTRAINT PARTICIPATION_MEMBRE_FK FOREIGN KEY (MembreId) 
              REFERENCES MEMBRE (MembreId)
        , CONSTRAINT PARTICIPATION_SOUTENANCE_FK FOREIGN KEY (SoutenanceDate, SoutenanceLieu) 
              REFERENCES SOUTENANCE (SoutenanceDate, SoutenanceLieu)
    ) ;
    
    
    Diagramme relationnel correspondant :




    Observez que la paire {SoutenanceDate, SoutenanceLieu} est la clé de référence de SOUTENANCE, le singleton {SoutenanceId} étant alors (malgré les apparences), ravalé au rang de clé de rechange (je dirais même que l’attribut SoutenanceId devient parasite...)

    Le diagramme relationnel pertinent devient alors le suivant :



    On fait le ménage en conséquence dans le code SQL :

    
    CREATE TABLE MEMBRE 
    (
            MembreId              INT            NOT NULL
          , MembreNom             VARCHAR(32)    NOT NULL
        , CONSTRAINT MEMBRE_PK PRIMARY KEY (MembreId)
    ) ;
    
    CREATE TABLE SOUTENANCE 
    (
            SoutenanceDate        DATE           NOT null
          , SoutenanceLieu        VARCHAR(32)    NOT NULL
        , CONSTRAINT SOUTENANCE_PK PRIMARY KEY (SoutenanceDate, SoutenanceLieu)
    ) ;
    
    CREATE TABLE PARTICIPATION 
    (
            MembreId              INT            NOT NULL
          , SoutenanceDate        DATE           NOT null
          , SoutenanceLieu        VARCHAR(32)    NOT NULL
        , CONSTRAINT PARTICIPATION_PK PRIMARY KEY (MembreId, SoutenanceDate)
        , CONSTRAINT PARTICIPATION_MEMBRE_FK FOREIGN KEY (MembreId) REFERENCES MEMBRE (MembreId)
        , CONSTRAINT PARTICIPATION_SOUTENANCE_FK FOREIGN KEY (SoutenanceDate, SoutenanceLieu) REFERENCES SOUTENANCE (SoutenanceDate, SoutenanceLieu)
    ) ;
    
    
    (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.

  4. #4
    Membre habitué
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2010
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2010
    Messages : 212
    Points : 184
    Points
    184
    Par défaut
    merci infiniment fsmrel. bonne soirée

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

Discussions similaires

  1. [11gR2] Sur quelle table porte une contrainte de clé étrangère ?
    Par CinePhil dans le forum SQL
    Réponses: 2
    Dernier message: 27/02/2015, 11h09
  2. Réponses: 3
    Dernier message: 27/02/2013, 05h46
  3. [MCD] Modélisation d'une contrainte
    Par atsig dans le forum Schéma
    Réponses: 2
    Dernier message: 27/06/2011, 11h57
  4. Réponses: 1
    Dernier message: 19/10/2010, 16h11
  5. Réponses: 5
    Dernier message: 08/04/2009, 17h39

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