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

UML Discussion :

Transformation un diagramme de classe en modèle relationnel


Sujet :

UML

  1. #1
    Membre du Club
    Inscrit en
    Mars 2011
    Messages
    54
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 54
    Points : 48
    Points
    48
    Par défaut Transformation un diagramme de classe en modèle relationnel
    Bonjour, ci joint le diagramme de classe qui je veux le transformer en modèle relationnel, j'ai essayé et j'ai trouvé une difficulté pour les associations réflexives, y a-t-il une autre proposition ?
    Nom : diag classe.jpg
Affichages : 25172
Taille : 40,6 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    client(cin,nom,prenom,aresse,email,tel)
    projet(code_prj,date_debut,date_fin,description,nom_projet,etat_projet,#cin)
    cahier_charge(code,detail,#cin,#code_projet)
    personnel(cin,nom,prenom,role,telephone,email)
    notification(#cin,titre,commentaire)
    devis(code,libelle,montant,code_prj)
    Merci d'avance.

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


    Vos pourriez procéder à la généralisation des classes CLIENT et PERSONNEL, en une classe INDIVIDU (ou tout autre nom qui convient), auquel cas le diagramme de classes deviendrait :





    MLD correspondant

    Vous remarquerez que les clés naturelles : CIN, CodeProjet, CodeMateriel, etc. sont systématiquement doublées par des clés artificielles : IdIndividu (avec des synonymes, mais ça n’est pas une obligation : IdClient, IdPersonnel), IdProjet, idMateriel, etc. En effet, une clé primaire ne doit en aucun cas pouvoir être modifiée, sous peine de voir la base de données se mettre à patiner et partir à vau l’eau...

    Les clés naturelles font l’objet de clés alternatives (mickey <ak>, donnant lieu à une contrainte UNIQUE en SQL).





    Exemple de script de création des tables :

    
    CREATE TABLE INDIVIDU
    (
       IdIndividu           INT                  NOT NULL,
       CIN                  VARCHAR(15)          NOT NULL,
       Nom                  VARCHAR(64)          NOT NULL,
       Prenom               VARCHAR(64)          NOT NULL,
       AdrCourriel          VARCHAR(64)          NOT NULL,
       Tel                  VARCHAR(24)          NOT NULL,
       CONSTRAINT INDIVIDU_PK PRIMARY KEY (IdIndividu),
       CONSTRAINT INDIVIDU_AK UNIQUE (CIN)
    ) ;
    
    CREATE TABLE CLIENT
    (
       IdClient             INT                  NOT NULL,
       AdresseClient        VARCHAR(64)          NOT NULL,
       CONSTRAINT CLIENT_PK PRIMARY KEY (IdClient),
       CONSTRAINT CLIENT_INDIVIDU_FK FOREIGN KEY (IdClient)
          REFERENCES INDIVIDU (IdIndividu) ON DELETE CASCADE
    ) ;
    
    CREATE TABLE PROJET
    (
       IdProjet             INT                  NOT NULL,
       ClientId             INT                  NOT NULL,
       CodeProjet           CHAR(5)              NOT NULL,
       NomProjet            VARCHAR(64)          NOT NULL,
       DescriptionProjet    VARCHAR(64)          NOT NULL,
       DateDebut            DATE                 NOT NULL,
       DateFin              DATE                 NOT NULL,
       EtatProjet           CHAR(5)              NOT NULL,
       IdProjetParent       INT                          ,
       CONSTRAINT PROJET_PK PRIMARY KEY (IdProjet),
       CONSTRAINT PROJET_AK UNIQUE (CodeProjet),
       CONSTRAINT PROJET_CLIENT_FK FOREIGN KEY (ClientId)
          REFERENCES CLIENT (IdClient),
       CONSTRAINT PROJET_PROJET_FK FOREIGN KEY (IdProjetParent)
          REFERENCES PROJET (IdProjet)
    ) ;
    
    CREATE TABLE CAHIER_CHARGES
    (
       IdProjet             INT                  NOT NULL,
       CodeCahier           VARCHAR(48)          NOT NULL,
       DetailCahier         VARCHAR(48)          NOT NULL,
       CONSTRAINT CAHIER_CHARGES_PK PRIMARY KEY (IdProjet),
       CONSTRAINT CAHIER_CHARGES_AK UNIQUE (CodeCahier),
       CONSTRAINT CAHIER_CHARGES_PROJET_FK FOREIGN KEY (IdProjet)
          REFERENCES PROJET (IdProjet) ON DELETE CASCADE
    ) ;
    
    CREATE TABLE DEVIS
    (
       IdProjet             INT                  NOT NULL,
       CodeDevis            CHAR(5)              NOT NULL,
       LibelleDevis         VARCHAR(64)          NOT NULL,
       MontantDevis         DECIMAL(7,2)         NOT NULL,
       CONSTRAINT DEVIS_PK PRIMARY KEY (IdProjet),
       CONSTRAINT DEVIS_PROJET_FK FOREIGN KEY (IdProjet)
          REFERENCES PROJET (IdProjet) ON DELETE CASCADE
    ) ;
    
    CREATE TABLE PERSONNEL
    (
       IdPersonnel          INT                  NOT NULL,
       Role                 VARCHAR(64)          NOT NULL,
       CONSTRAINT PERSONNEL_PK PRIMARY KEY (IdPersonnel),
       CONSTRAINT PERSONNEL_INDIVIDU_FK FOREIGN KEY (IdPersonnel)
          REFERENCES INDIVIDU (IdIndividu) ON DELETE CASCADE
    ) ;
    
    CREATE TABLE NOTIFICATION
    (
       IdExpediteur         INT                  NOT NULL,
       IdDestinataire       INT                  NOT NULL,
       Titre                VARCHAR(64)          NOT NULL,
       Commentaires         VARCHAR(64)          NOT NULL,
       CONSTRAINT NOTIFICATION_PK PRIMARY KEY (IdExpediteur, IdDestinataire),
       CONSTRAINT PERSONNEL_NOTIF_DEST_FK FOREIGN KEY (IdDestinataire)
          REFERENCES PERSONNEL (IdPersonnel),
       CONSTRAINT PERSONNEL_NOTIF_EXP_FK FOREIGN KEY (IdExpediteur)
          REFERENCES PERSONNEL (IdPersonnel)
    ) ;
    
    CREATE TABLE MATERIEL
    (
       IdMateriel           INT                  NOT NULL,
       CodeMateriel         CHAR(5)              NOT NULL,
       LibelleMateriel      VARCHAR(64)          NOT NULL,
       IdTypeMateriel       INT                  NOT NULL,
       CONSTRAINT MATERIEL_PK PRIMARY KEY (IdMateriel),
       CONSTRAINT MATERIEL_AK UNIQUE (CodeMateriel)
    ) ;
    
    CREATE TABLE PROJET_MATERIEL
    (
       IdProjet             INT                  NOT NULL,
       IdMateriel           INT                  NOT NULL,
       CONSTRAINT PROJET_MATERIEL_PK PRIMARY KEY (IdProjet, IdMateriel),
       CONSTRAINT PROJET_MATERIEL_PROJET_FK FOREIGN KEY (IdProjet)
          REFERENCES PROJET (IdProjet) ON DELETE CASCADE,
       CONSTRAINT PROJET_MATERIEL_MATERIEL_FK FOREIGN KEY (IdMateriel)
          REFERENCES MATERIEL (IdMateriel)
    ) ;
    
    
    (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.

Discussions similaires

  1. passage diagramme de classe en modèle relationnel
    Par dibax100 dans le forum Sybase
    Réponses: 1
    Dernier message: 05/04/2013, 11h42
  2. Réponses: 2
    Dernier message: 31/03/2013, 23h18
  3. passage diagramme de classes au modèle relationel
    Par maraly dans le forum Diagrammes de Classes
    Réponses: 5
    Dernier message: 02/10/2010, 10h19
  4. Passage d'un diagramme de classe à un modéle de base de données relationelle
    Par thaundeadboss dans le forum Diagrammes de Classes
    Réponses: 7
    Dernier message: 25/06/2009, 21h39

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