Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/05/2006, 16h09   #1
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 97
Points : 37
Points : 37
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
Anne1969 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2006, 16h28   #2
Inactif
 
Avatar de Médiat
 
Inscription : décembre 2003
Messages : 1 946
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 1 946
Points : 1 932
Points : 1 932
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).
Médiat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2006, 19h09   #3
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 97
Points : 37
Points : 37
Merci, je vais regarder ça
Anne1969 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2006, 20h26   #4
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 97
Points : 37
Points : 37
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...
Anne1969 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/05/2006, 22h05   #5
Inactif
 
Avatar de Médiat
 
Inscription : décembre 2003
Messages : 1 946
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 1 946
Points : 1 932
Points : 1 932
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
Type de fichier : jpg Anne1969_v1.jpg (21,6 Ko, 4 affichages)
Type de fichier : jpg Anne1969_v2.jpg (13,6 Ko, 2 affichages)
Type de fichier : jpg Anne1969_v3.jpg (19,9 Ko, 7 affichages)
Médiat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2006, 08h18   #6
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 97
Points : 37
Points : 37
Ouaouh Merci beaucoup
Anne1969 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2006, 17h14   #7
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 97
Points : 37
Points : 37
Pardon, juste un truc :

Citation:
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" ??
Anne1969 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/05/2006, 17h32   #8
Inactif
 
Avatar de Médiat
 
Inscription : décembre 2003
Messages : 1 946
Détails du profil
Informations forums :
Inscription : décembre 2003
Messages : 1 946
Points : 1 932
Points : 1 932
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)
Médiat est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 31/05/2006, 14h21   #9
Nouveau Membre du Club
 
Inscription : septembre 2004
Messages : 97
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 97
Points : 37
Points : 37
Merci Mediat
Anne1969 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h46.


 
 
 
 
Partenaires

Hébergement Web