Relation table compliquée
tobeybboy
-
sandul Messages postés 4013 Statut Membre -
sandul Messages postés 4013 Statut Membre -
Bonjour,
Je suis nouveau sur ce forum, et déjà une aide serait la bienvenue.
Je suis en train de concevoir une base de données pour un projet informatique. Pour faire simple, il s'agit de gérer un planning avec différentes taches.
J'ai créé mes différentes tables et établit les relations entre elles. Cependant, il y a un os que je n'arrive pas a résoudre:
j'ai une table intervention, qui pour une journée et un utilisateur reçoit une intervention. Cette intervention est de nature variable (j'ai créé une table nature_intervention : pose, SAV, dossier, etc...).
j'ai aussi une table pose, qui référence les indications de pose (id_pose, jour, nom, lieu...); ainsi qu'une table constat, qui référence les indications relatives au constat.
Le problème réside au fait qu'une intervention peut être soit une pose, soit un sav, soit un constat. La relation qui unit la table intervention et la table constat par exemple est de nature 0,1 - 0,n.
Je ne sais pas comment modéliser ça dans la base de données, quelle clé ajouter dans quelle table, etc
Merci de votre aide, j'espère avoir été assez clair.
Je suis nouveau sur ce forum, et déjà une aide serait la bienvenue.
Je suis en train de concevoir une base de données pour un projet informatique. Pour faire simple, il s'agit de gérer un planning avec différentes taches.
J'ai créé mes différentes tables et établit les relations entre elles. Cependant, il y a un os que je n'arrive pas a résoudre:
j'ai une table intervention, qui pour une journée et un utilisateur reçoit une intervention. Cette intervention est de nature variable (j'ai créé une table nature_intervention : pose, SAV, dossier, etc...).
j'ai aussi une table pose, qui référence les indications de pose (id_pose, jour, nom, lieu...); ainsi qu'une table constat, qui référence les indications relatives au constat.
Le problème réside au fait qu'une intervention peut être soit une pose, soit un sav, soit un constat. La relation qui unit la table intervention et la table constat par exemple est de nature 0,1 - 0,n.
Je ne sais pas comment modéliser ça dans la base de données, quelle clé ajouter dans quelle table, etc
Merci de votre aide, j'espère avoir été assez clair.
A voir également:
- Relation table compliquée
- Table ascii - Guide
- Table des matières word - Guide
- Table des caractères - Guide
- Tableau croisé dynamique ou table de pilote - Guide
- 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
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.
++
Vivien