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 :

UML à schéma navigationnel


Sujet :

UML

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 7
    Points : 7
    Points
    7
    Par défaut UML à schéma navigationnel
    salut tout le monde, je travaille actuellement sur un projet en base de données, j'ai commencé par mettre en place mon UML, or que je veux passer au schéma navigationnel je rencontre un problème au niveau de ma relation (Voiture, Pilote,Circuit, Course). Je n'ai pas su la modéliser en schéma navigationnel
    Nom : Capture d'écran 2014-04-19 08.05.32.png
Affichages : 1999
Taille : 115,3 Ko

    Pouvez-vous m'aider s'il vous plait

  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 903
    Points
    30 903
    Billets dans le blog
    16
    Par défaut
    Bonsoir ps6c0tic



    Citation Envoyé par ps6c0tic
    Je n'ai pas su la modéliser en schéma navigationnel.
    Qu’entendez-vous par schéma navigationnel ? Pour sa part, le modèle navigationnel (ou modèle réseau, dû à Charles Bachman) fut très en vogue dans les années 1970-1980 et n’est plus guère utilisé aujourd’hui.

    Quoi qu’il en soit, votre diagramme de classes comporte une association quaternaire selon laquelle, à l’instant T, le pilote P1 peut non seulement conduire la voiture V1 à l’occasion de la course C1 sur le circuit K1, mais aussi au même instant T conduire V1 à l’occasion de C1 sur le circuit K2, ou encore, toujours à l’instant T, conduire V1 à l’occasion de la course C2 sur les circuits C1et C3, etc.

    Bref, on est dans la bilocation des pilotes et des voitures : en ce bas monde c’est proprement impossible...

    Pour s’en sortir, il faut faire intervenir le temps :



    Où PiloteDate et VoitureDate sont synonymes de Date (mot réservé en SQL).


    MLD issu du diagramme de classes, à son tour propre à la génération des tables SQL :

    (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
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    Bonjour fsmrel, je te remercie infinement pour ta réponse, et désolé de ne pas pu te répondre lus tôt.
    J'ai bien compris ce que tu m'as expliqué, et puis quand j'ai parlé de schéma navigationnel, je voulais dire que je travaille en objet relationnel et c'est là ou je n'ai pas su comment m'y prendre !
    et là avec ce que tu viens de me dire, ça me rend la chose un peu plus compliqué a géré

  4. #4
    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 903
    Points
    30 903
    Billets dans le blog
    16
    Par défaut
    Bonjour Younes,


    Vu votre peu d’enthousiasme, fort compréhensible du reste, on va simplifier...

    Ainsi, on va ramener le MLD à ceci :



    Mais à condition que la table COURSE_DATE soit dotée de deux clés pour éviter la bilocation :


    {PiloteId, CourseDate} et {VoitureId, CourseDate}


    D’où le code SQL :

    TABLE PILOTE
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE PILOTE 
    (
      PiloteId INT NOT NULL,
      PiloteNom VARCHAR(45) NOT NULL,
      CONSTRAINT PILOTE_PK PRIMARY KEY (PiloteId)
    ) ;
     
    INSERT INTO PILOTE (PiloteId, PiloteNom) VALUES (1, 'P1') ;
    INSERT INTO PILOTE (PiloteId, PiloteNom) VALUES (2, 'P2') ;
    INSERT INTO PILOTE (PiloteId, PiloteNom) VALUES (3, 'P3') ;

    TABLE VOITURE
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE VOITURE 
    (
      VoitureId INT NOT NULL,
      VoitureSurnom VARCHAR(45) NOT NULL,
      CONSTRAINT VOITURE_PK PRIMARY KEY (VoitureId)
    ) ;
     
    INSERT INTO VOITURE (VoitureId, VoitureSurnom) VALUES (1, 'V1') ;
    INSERT INTO VOITURE (VoitureId, VoitureSurnom) VALUES (2, 'V2') ;
    INSERT INTO VOITURE (VoitureId, VoitureSurnom) VALUES (3, 'V3') ;

    TABLE COURSE
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE COURSE 
    (
      CourseId INT NOT NULL,
      CourseNom VARCHAR(45) NOT NULL,
      CONSTRAINT COURSE_PK PRIMARY KEY (CourseId)
    ) ;
     
    INSERT INTO COURSE (CourseId, CourseNom) VALUES (1, 'C1') ;
    INSERT INTO COURSE (CourseId, CourseNom) VALUES (2, 'C2') ;
    INSERT INTO COURSE (CourseId, CourseNom) VALUES (3, 'C3') ;

    TABLE CIRCUIT
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     CREATE TABLE CIRCUIT 
    (
      CircuitId INT NOT NULL,
      CircuitNom VARCHAR(45) NOT NULL,
      CONSTRAINT CIRCUIT_PK PRIMARY KEY (CircuitId)
    ) ;
     
    INSERT INTO CIRCUIT (CircuitId, CircuitNom) VALUES (1, 'K1') ;
    INSERT INTO CIRCUIT (CircuitId, CircuitNom) VALUES (2, 'K2') ;
    INSERT INTO CIRCUIT (CircuitId, CircuitNom) VALUES (3, 'K3') ;

    La table qui nous intéresse au 1er chef, avec ses deux clés :

    TABLE COURSE_DATE
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    CREATE TABLE COURSE_DATE 
    (
      PiloteId INT NOT NULL,
      CourseDate DATE NOT NULL,
      VoitureId INT NOT NULL,
      CourseId INT NOT NULL,
      CircuitId INT NOT NULL,
      CONSTRAINT COURSE_DATE_PK PRIMARY KEY (PiloteId, CourseDate),
      CONSTRAINT COURSE_DATE_AK UNIQUE (VoitureId, CourseDate),
      CONSTRAINT PILOTE_DATE_PILOTE_FK FOREIGN KEY (PiloteId) REFERENCES PILOTE,
      CONSTRAINT PILOTE_DATE_VOITURE_FK FOREIGN KEY (VoitureId) REFERENCES VOITURE,
      CONSTRAINT PILOTE_DATE_COURSE_FK FOREIGN KEY (CourseId) REFERENCES COURSE,
      CONSTRAINT PILOTE_DATE_CIRCUIT_FK FOREIGN KEY (CircuitId) REFERENCES CIRCUIT
    ) ; 
     
    INSERT INTO COURSE_DATE (CourseDate,CircuitId, CourseId, PiloteId, VoitureId) 
        VALUES ('2014-01-01', 1, 1, 1, 1) ;
    INSERT INTO COURSE_DATE (CourseDate,CircuitId, CourseId, PiloteId, VoitureId) 
        VALUES ('2014-01-01', 1, 1, 2, 2) ;
    INSERT INTO COURSE_DATE (CourseDate,CircuitId, CourseId, PiloteId, VoitureId) 
        VALUES ('2014-01-01', 1, 1, 3, 3) ;
     
    INSERT INTO COURSE_DATE (CourseDate,CircuitId, CourseId, PiloteId, VoitureId) 
        VALUES ('2014-01-02', 1, 1, 1, 1) ;
     
    INSERT INTO COURSE_DATE (CourseDate,CircuitId, CourseId, PiloteId, VoitureId) 
        VALUES ('2014-02-02', 1, 1, 2, 2) ;

    Pour simplifier la vie de l’utilisateur qui ne connaît que les données « naturelles » :

    VUE PVCC
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE VIEW PVCC (PiloteNom, VoitureSurnom, CourseNom, CourseDate, CircuitNom) AS
        SELECT PiloteNom, VoitureSurnom, CourseNom, CourseDate, CircuitNom 
        FROM   COURSE_DATE AS x 
               JOIN PILOTE AS y ON x.PiloteId = y.PiloteId 
               JOIN VOITURE AS z ON x.VoitureId = z.VoitureId
               JOIN COURSE AS t ON x.CourseId = t.CourseId
               JOIN CIRCUIT AS u ON x.CircuitId = u.CircuitId ;

    Accès aux données de la vue :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * from PVCC ;
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    PiloteNom    VoitureSurnom    CourseNom    CourseDate    CircuitNom
    P1           V1               C1           2014-01-01    K1
    P1           V1               C1           2014-01-02    K1
    P2           V2               C1           2014-01-01    K1
    P2           V2               C1           2014-02-02    K1
    P3           V3               C1           2014-01-01    K1

    Est-ce mieux ainsi ?
    (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.

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2014
    Messages : 7
    Points : 7
    Points
    7
    Par défaut
    WOW, je vous en suis très reconnaissant, la simplification que vous m'avez proposé est simplement ce qu'il me fallait pour mener à bien mon projet. Je vous remercie infiniment.

  6. #6
    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 903
    Points
    30 903
    Billets dans le blog
    16
    Par défaut
    Si j'ai pu vous aider, alors n'hésitez pas à jouer des !

    Bonne route pour la suite de votre projet !
    (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. [Together] Obtenir un "beau" schéma UML
    Par pugnator dans le forum Autres
    Réponses: 1
    Dernier message: 04/03/2007, 19h19
  2. génerateur schéma navigationnel
    Par abda1000 dans le forum Oracle
    Réponses: 1
    Dernier message: 29/01/2007, 22h33
  3. générateur de schéma navigationnel
    Par abda1000 dans le forum UML
    Réponses: 4
    Dernier message: 29/01/2007, 22h28
  4. Réponses: 4
    Dernier message: 24/04/2006, 14h07
  5. [UML]schéma uml sous eclipse
    Par gilles641 dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 26/03/2004, 13h37

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