Relation table compliquée
Fermé
tobeybboy
-
5 mai 2009 à 14:17
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 - 5 mai 2009 à 15:01
sandul Messages postés 3924 Date d'inscription jeudi 22 mai 2008 Statut Membre Dernière intervention 8 octobre 2010 - 5 mai 2009 à 15:01
A voir également:
- Relation table compliquée
- Table ascii - Guide
- Table des matières word - Guide
- Dans la table des matières de ce document, le chapitre 6 et ses 2 sections n'apparaissent pas. trouvez l'erreur dans la structure du document et corrigez-la. mettez à jour la table des matières. quel est le mot formé par les lettres en majuscules de la table des matières après sa mise à jour ? - Forum Word
- Table des annexes word ✓ - Forum Word
- La base de données de sécurité du serveur n'a pas de compte d'ordinateur pour la relation ✓ - Forum Réseau
2 réponses
sandul
Messages postés
3924
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
721
5 mai 2009 à 14:39
5 mai 2009 à 14:39
Salut,
1. tu peux créer 3 colonnes dans la table intervention: id_pose, id_constat et id_sav (des foreign keys vers les tables correspondantes). Une seule de ces colonnes sera utile pour une intervention donnée (les deux autres contenant des null)
2. à condition d'avoir le même type d'identifiant dans les tables sav, constat et pose (exemple: alpha sur 10 caractères), créer 2 colonnes: nature (de type smallint ou alpha(1), pour identifier la nature de l'intervention) et une autre colonne identifiant (elle ne sera pas foreign key car tu ne sauras pas vers quelle table parmi les 3). L'application se chargera du maintien de la cohérence de la base.
3. tu peux avoir un 3ème modèle où la table intervention possède une unique colonne id_intervention et les 3 autres tables ont la même colonne en foreign key vers intervention (autrement dit, les 3 autres tables "étendent" la table intervention ou bien "héritent" de celle-ci, en la complétant avec les informations nécessaires).
En fonction des autres contraintes techniques de ton programme tu choisiras la méthode qui te convient.
++
Le problème réside au fait qu'une intervention peut être soit une pose, soit un sav, soit un constat.
1. tu peux créer 3 colonnes dans la table intervention: id_pose, id_constat et id_sav (des foreign keys vers les tables correspondantes). Une seule de ces colonnes sera utile pour une intervention donnée (les deux autres contenant des null)
2. à condition d'avoir le même type d'identifiant dans les tables sav, constat et pose (exemple: alpha sur 10 caractères), créer 2 colonnes: nature (de type smallint ou alpha(1), pour identifier la nature de l'intervention) et une autre colonne identifiant (elle ne sera pas foreign key car tu ne sauras pas vers quelle table parmi les 3). L'application se chargera du maintien de la cohérence de la base.
3. tu peux avoir un 3ème modèle où la table intervention possède une unique colonne id_intervention et les 3 autres tables ont la même colonne en foreign key vers intervention (autrement dit, les 3 autres tables "étendent" la table intervention ou bien "héritent" de celle-ci, en la complétant avec les informations nécessaires).
En fonction des autres contraintes techniques de ton programme tu choisiras la méthode qui te convient.
++
sandul
Messages postés
3924
Date d'inscription
jeudi 22 mai 2008
Statut
Membre
Dernière intervention
8 octobre 2010
721
5 mai 2009 à 15:01
5 mai 2009 à 15:01
Disons que la pose P1 comporte 3 interventions successives, I1, I2 et I3. Avec le premier modèle (celui que tu privilégies), tu auras 3 lignes dans la table intervention:
I1 P1 ...
I2 P1 ...
I3 P1 ...
Donc c'est OK.
I1 P1 ...
I2 P1 ...
I3 P1 ...
Donc c'est OK.
5 mai 2009 à 14:44
Vivien
5 mai 2009 à 14:52