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 :

MPD d'une relation [0..1] [0..1] [Modèle Relationnel]


Sujet :

Schéma

  1. #1
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Points : 122
    Points
    122
    Par défaut MPD d'une relation [0..1] [0..1]
    Bonjour,

    deux entités Constituant et Emplacement sont liées par une relation 1:1.
    1 constituant peut-être situé à 0 ou 1 emplacement.
    1 emplacement peut contenir 0 ou 1 constituant.

    Chacune de ses 2 entités a sa propre clé primaire.
    Dans le MPD, j'ai traduit chaque entité en une table.

    Comment puis-je traduire dans le MPD la relation liant ces 2 tables ?


    Merci d'avance,
    Etienne

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Points : 5 345
    Points
    5 345
    Par défaut
    Bonjour,

    Si les deux entités ont un cycle de vie indépendant (et ne peuvent être consolidée en une seule entité ..), il ne vous reste que la possibilité de créer une troisième table et de mettre une contrainte d'unicité sur chacune des clef étrangere.


    Une autre façon de procéder serai de pousser une référence de clef étrangère dans une des deux tables .. et de rajouter une contrainte d'unicité sur cette nouvelle colonne.

  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 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
    Bonjour,



    Dans le respect du modèle relationnel de données (ou théorie relationnelle), il faut nécessairement une troisième table, sinon le bonhomme null va se manifester au sein des clés étrangères, et c’est généralement la source de catas :


    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
    CREATE TABLE CONSTITUANT
    (
          NO_CONSTITUANT   INT             NOT NULL
        , NOM              VARCHAR(32)     NOT NULL
      , CONSTRAINT CONSTITUANT_PK PRIMARY KEY (NO_CONSTITUANT)
    ) ;
     
    CREATE TABLE EMPLACEMENT
    (
          NO_EMPLACEMENT      INT             NOT NULL
        , NOM                 VARCHAR(32)     NOT NULL
      , CONSTRAINT EMPLACEMENT_PK PRIMARY KEY (NO_EMPLACEMENT)
    ) ;
     
    CREATE TABLE SITUER
    (
          NO_CONSTITUANT      INT             NOT NULL
        , NO_EMPLACEMENT      INT             NOT NULL
      , CONSTRAINT SITUER_PK PRIMARY KEY (NO_CONSTITUANT)
      , CONSTRAINT SITUER_AK UNIQUE (NO_EMPLACEMENT)
      , CONSTRAINT SITUER_CONSTITUANT_FK FOREIGN KEY (NO_CONSTITUANT)
           REFERENCES CONSTITUANT (NO_CONSTITUANT)
      , CONSTRAINT SITUER_EMPLACEMENT_FK FOREIGN KEY (NO_EMPLACEMENT)
           REFERENCES EMPLACEMENT (NO_EMPLACEMENT)
    ) ;

    Notez que la table SITUER doit avoir deux clés candidates (SITUER_PK et SITUER_AK dans l’exemple).
    (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
    Expert confirmé Avatar de Richard_35
    Homme Profil pro
    Inscrit en
    Juillet 2007
    Messages
    3 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 3 121
    Points : 4 596
    Points
    4 596
    Par défaut
    Bonjour à tous,

    Etiennegaloup, je t'invite à consulter cet excellent billet de CinePhil qui balaye tous les cas possibles de cardinalités entre deux entités (et qui corrobore les solutions proposées).
    Dis-nous et à bientôt,
    Richard.
    ----------------------------------------------------------------------------------------------
    En cas de résolution, et afin de faciliter la tâche des bénévoles, merci de cliquer sur .
    et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !

  5. #5
    Membre régulier
    Inscrit en
    Juillet 2004
    Messages
    306
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 306
    Points : 122
    Points
    122
    Par défaut
    Bonjour,

    merci à tous pour vos réponses.
    Je vais donc partir sur une table associative.

    Merci,
    Etienne

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

Discussions similaires

  1. MPD d'une relation ternaire N/N/1
    Par dimix77 dans le forum Merise
    Réponses: 15
    Dernier message: 09/12/2010, 21h07
  2. comment changer le type d'une relation ?
    Par mitapi dans le forum Access
    Réponses: 5
    Dernier message: 21/05/2007, 10h29
  3. Réponses: 2
    Dernier message: 30/11/2006, 16h53
  4. Exploitation d'une table possédant une relation recursive
    Par VincentR dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/08/2004, 11h07
  5. [Mapping] Structure d'une relation
    Par k4eve dans le forum Hibernate
    Réponses: 6
    Dernier message: 27/04/2004, 11h19

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