Bonjour!
Merci pour l’intérêt que vous avez porté à mon problème, une fois résolue je ne suis pas revenu sur le topic..
Effectivement après mûre réflexion, notamment sur la nécessité de mes quartes table enfant et des valeurs qu'elles étaient censé contenir j'ai opté pour un modèle proche de celui-ci :
Proposé par Jphi, à la différence que j'ai fini par regrouper ces 4 tables en une seule "générique" qui va contenir mes valeurs (sans les nommer)..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 [ Appel ]--1,1----( )----0,n->[ Type_Appel ] ^ | +--0,1----(est_un)----1,1--[ Problème ] | +--0,1----(est_un)----1,1--[ Information ] | +--0,1----(est_un)----1,1--[ Installation ] | +--0,1----(est_un)----1,1--[ Enlèvement ]
La raison est que peu importe le type d'appel, la majorité des informations nécessaires sont contenues dans la "Appel" et pour les autres, en fonction du type, elles vont de 1 à 3 valeurs..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 [ Appel ]--1,1----( )----0,n->[ Type_Appel ] ^ | +--0,1----(possède)----1,1--[ Valeur ]
au final : Ma jointure est unique (entre "Appel" et "Valeur" sur id_appel) et l'exploitation du résultat dépend de "type_appel".
Que pensez vous d'un tel type de structure ? niveau développement, je présenterai donc mes données de "Valeur" en fonction du type de l'appel, cela dérange quelque peu, je n'ai jamais essayé le générique sur de la base de donnée, ne sait pas ce que ça vaut non plus, je suis pas loin de le découvrir..
Code : 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
26
27
28
29
30 CREATE TABLE type_appel( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, type_libelle VARCHAR(45), type_description VARCHAR(150))ENGINE=INNODB; CREATE TABLE appel( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, appel_date DATE, appel_heure TIME, appelant VARCHAR(45), cloture_date DATE, cloture_heure TIME, appel_prio INT, appel_mag CHAR(4), appel_type INT, appel_motif INT, appel_operateur INT, FOREIGN KEY(appel_mag) REFERENCES magasin(matricule), FOREIGN KEY(appel_type) REFERENCES type_appel(id), FOREIGN KEY(appel_motif) REFERENCES motif(id), FOREIGN KEY(appel_operateur) REFERENCES operateur(id))ENGINE=INNODB; CREATE TABLE valeur_appel( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, id_appel INT, val1 VARCHAR(150), val2 VARCHAR(100), val3 VARCHAR(50), FOREIGN KEY(id_appel) REFERENCES appel(id))ENGINE=INNODB;
Contrèes dangereuses... ME VOILA !Quoiqu'il en soit, Ben a du avancer dans son développement et tombera, sans doute, devant un "mur de conception", s'il existe. A partir de ce moment là, Ben ne devra surtout pas essayer de contourner ce mur par du code ou des suites de requêtes alambiquées !... Il devra retourner côté "conception" et reformuler ses règles de gestion, sinon Ben s'aventurera dans des contrées dangereuses...
Partager