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

Décisions SGBD Discussion :

Problème de conception de tables suivant les intégrités réferentielles.


Sujet :

Décisions SGBD

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut Problème de conception de tables suivant les intégrités réferentielles.
    Hello,

    je me permets de vous soumettre mon souçi de conception...

    J'ai 4 entités : Département (Id-Dep, Nom-Dep), Bassin (Id-Bas, Nom-Bas), Piste (Id-Piste, Nom-Piste), Segment (Id-Sed, Nom-Seg)

    Un Département contient plusieurs Bassin (1-n)
    Un Bassin contient plusieurs Piste (1-n)

    Jusque là, pas de souçi : je me retrouve déjà avec 2 tables :
    Département (Id-Dep, Nom-Dep)
    Bassin (Id-Bas, Nom-Bas, Id-Dep)

    Une Piste contient plusieurs Segment ou n'en contient aucun ! Dans ce dernier cas, ce sera le Bassin qui contiendra directement plusieurs Segment....Que faire pour ces 2 tables et leurs intégrités référentielles ?

    Merci beaucoup

    Anne

  2. #2
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Héritage : une entité générale avec deux spécialisations : Piste et Segment.

    cf. http://www.developpez.net/forums/sho...d.php?p=994717

    Dans ton cas, je conseillerais le point 4).
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut
    Merci, je vais regarder ça

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut
    Euh, en fait je ne vois pas trop comment faire et je me suis mal exprimée...

    Dans la plupart des cas une Piste contient plusieurs Segment....comment les transformer en options possibles dans ces cas là....

    En fait, un Bassin contient directement des Segments...
    ...ou bien...
    un Bassin contient des Pistes qui contiennent des Segments...

  5. #5
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    C'est bien ce que je disais, voici trois modèles (il faudrait trouver un nom plus intelligent pour l'entite "PisteOuSegment" et Pour BassinPiste)
    Ce qui donne les tables suivantes (PK souligné, FK en italique) :
    V1 :
    table DEPARTEMENT (IDDEPARTEMENT);
    table BASSIN (IDBASSIN, IDDEPARTEMENT);
    table PISTEOUSEGMENT ( IDPISTEOUSEGMENT, IDBASSIN);
    table PISTE (IDPISTEOUSEGMENT, DESCRIPTIONPISTE);
    table SEGMENT (IDPISTEOUSEGMENT, IDPISTE, DESCRIPTIONSEGMENT );


    V2 :
    table DEPARTEMENT (IDDEPARTEMENT);
    table BASSIN (IDBASSIN, IDDEPARTEMENT);
    table PISTE (IDPISTE, IDBASSIN);
    table SEGMENT (IDSEGMENT, IDBASSIN, IDPISTE);

    V3 :
    table DEPARTEMENT (IDDEPARTEMENT);
    table BASSINPISTE (IDBASSINPISTE);
    table BASSIN (IDBASSINPISTE, IDDEPARTEMENT, DESCRIPTIONBASSIN);
    table PISTE (IDBASSINPISTE, IDBASSIN, DESCRIPTIONPISTE);
    table SEGMENT (IDSEGMENT, IDBASSINPISTE);

    La V3 est la solution qui permet de gérer au mieux l'intégrité : toutes les FK sont NOT NULL, ce qui n'est pas le cas de la V1 ni de la V2 (du coup ce sont d'assez mauvaises solutions...)
    A toi d'ajouter les autres attributs...
    Images attachées Images attachées    
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut
    Ouaouh Merci beaucoup

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut
    Pardon, juste un truc :

    table DEPARTEMENT (IDDEPARTEMENT);
    table BASSINPISTE (IDBASSINPISTE);
    table BASSIN (IDBASSINPISTE, IDDEPARTEMENT, DESCRIPTIONBASSIN);
    table PISTE (IDBASSINPISTE, IDBASSIN, DESCRIPTIONPISTE);
    table SEGMENT (IDSEGMENT, IDBASSINPISTE);
    Il y a IDBASSIN dans la table PISTE en FK mais elle n'est pas dans BASSIN...
    je pige pas trop.. ...en fait IDBASSINPISTE serait, selon le cas, soit IDBASSIN dans le cas où on zappe PISTE pour aller à SEGMENT, soit IDPISTE pour passer par le chemin "normal" ??

  8. #8
    Inactif   Avatar de Médiat
    Inscrit en
    Décembre 2003
    Messages
    1 946
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 946
    Points : 2 227
    Points
    2 227
    Par défaut
    Pour être plus clair (mais c'est dans le schéma ;-)

    SEGMENT.IDBASSINPISTE = BASSINPISTE.IDBASSINPISTE (puisqu'un SEGMENT est rattaché soit à un BASSIN soit à une PISTE)
    BASSIN.IDBASSINPISTE = BASSINPISTE.IDBASSINPISTE (pour exprimer l'héritage)
    PISTE.IDBASSINPISTE = BASSINPISTE.IDBASSINPISTE (pour exprimer l'héritage)
    PISTE.IDBASSIN = BASSIN.IDBASSINPISTE (puisque qu'une PISTE est toujours rattaché à un BASSIN)
    J'affirme péremptoirement que toute affirmation péremptoire est fausse
    5ième élément : barde-prince des figures de style, duc de la synecdoque
    Je ne réponds jamais aux questions techniques par MP

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 145
    Points : 87
    Points
    87
    Par défaut
    Merci Mediat

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

Discussions similaires

  1. [AC-2007] Problème de conception de tables
    Par Ajrarn dans le forum Modélisation
    Réponses: 1
    Dernier message: 10/05/2011, 21h50
  2. Gérer l'acces direct aux tables suivant les utilisateurs
    Par kristof33 dans le forum Sécurité
    Réponses: 2
    Dernier message: 02/03/2007, 08h11
  3. Réponses: 5
    Dernier message: 06/06/2006, 14h12
  4. [Word] Problème de copier/couper/coller suivant les versions
    Par SkYsO dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 07/12/2005, 21h11
  5. Problème de conceptions de tables
    Par dtavan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 23/05/2004, 23h13

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