Problème avec le modèle relationnel ( 4 tables)

Résolu/Fermé
missengland Messages postés 5 Date d'inscription vendredi 14 novembre 2014 Statut Membre Dernière intervention 19 novembre 2014 - Modifié par missengland le 15/11/2014 à 00:26
missengland Messages postés 5 Date d'inscription vendredi 14 novembre 2014 Statut Membre Dernière intervention 19 novembre 2014 - 19 nov. 2014 à 22:03
Bonjour,
Je suis en Angleterre en tant qu ERASMUS, et je dois faire un TD sur Access.

Je me permets de recourir a vos connaissances car je bloque sur l'elaboration de mon schema relationnel. Merci à ceux qui pourront m'accorder un peu de leur temps.


Je dois créer une base de données qui permettra à un magasin qui vend du matériel pour vélos de gérer les plaintes de ses clients concernant des problèmes rencontres sur le materiel vendu.
Il y a 4 catégories de problème :
- une remarque du client
- une plainte du client
- une action du client (remettre qlq chose en place)
- un retour de marchandises

Le point que je n'arrive pas a matérialiser est le suivant ;
- un client peut avoir plusieurs problèmes qui se referent sur le meme produit.
- donc par exemple le problème n°1 peut concerner le produit T, lorsque le client appelle en date du 14/08/14 et si le 16/08/14 ce même client rappelle pour le problème 1 et le même produit comment je peux matérialiser tout ça.

Voici ce que j'ai commencer à faire :

Je dois utiliser 4 tables pour organiser les données que vous pouvez voir dans la pièce jointe, mais je ne suis pas sûr de leur disposition et des clés primaires.
Je ne sais pas comment gérer le numéro du problème et l'ID du problème.

J'ai donc :
- les clés primaires soulignées,
- en gras mon souci car dans un formulaire si je rentre une nouvelle plainte je ne sais pas comment faire en sorte d'attribuer automatiquement le bon "problème numero" dans le cas où le client appel pour un même produit qui n'ai toujours pas réparer)


CLIENT (ID_CLIENT + infos classique)
PROBLEME ( ID_PROBLEME, ID_CLIENT, ID, PRODUIT, DATE_DEBUT_PROBLEME, DATE_FIN_PROBLEME)
DETAILPROBLEME (ID_PROBLEME, HEURE_APPEL_PROBLEME, DATE_APPEL_PROBLEME, NUMERO_PROBLEME, CATEGORIE_PROBLEME, DESCRIPTION_PROBLEME, REPARATION_PROBLEME)
PRODUIT (ID_PRODUIT + infos classiques)

A voir également:

3 réponses

Pitié pour tes lecteurs! On n'y voit rien avec ta vue d'écran. Mieux vaut envoyer un extrait de ta base via cjoint.com
0
missengland Messages postés 5 Date d'inscription vendredi 14 novembre 2014 Statut Membre Dernière intervention 19 novembre 2014
15 nov. 2014 à 19:40
Ok, je m'en occupe demain, je n'ai pas Access sur mon ordi personnel.
0
missengland Messages postés 5 Date d'inscription vendredi 14 novembre 2014 Statut Membre Dernière intervention 19 novembre 2014
15 nov. 2014 à 21:27
J'ai pu avoir acces plus tot que prevu voici les impressions ecran ;

base de donnees => https://www.cjoint.com/?DKpvCSMGf1a
table problem => https://www.cjoint.com/?DKpvD11woep
table problem detail => https://www.cjoint.com/?DKpvEZbBZXy
table produit => https://www.cjoint.com/?DKpvFPYkpLV
table client => https://www.cjoint.com/?DKpvGHifNey
0
Bonjour, et merci pour ton envoi,
D'abord avant de se lancer tête baissée, il est recommandé de savoir où on va, aussi je te recommande de lire ce qui se trouve ici à propos de Merise, méthode d'analyse de la problématique de mise en base de données d'une compilation d'informations ("http://www.commentcamarche.net/s/merise"). Cette lecture est indispensable.

2) J'ai cru comprendre que tu n'étais pas l'auteur des tables mais qu'on te demandait juste d'établir les relations. Dans ce cas, tu as bien vu qu'un client pouvait avoir plusieurs problèmes (Customer!CustomerId --> Problem!CustomerId). Par contre ta relation Problem!ProductId -- Product!ProductId est inversée; il faut que l'identifiant-Produit d'un problème ne se réfère qu'à un seul produit.

3) Quant à la 3ème liaison, il suffit d'avoir Problem!ProblemtId --> ProblemDetail!ProblemtId. Le même problème renvoyant à plusieurs DétailsDeProblèmes.
C'est tout. Il n'est pas interdit, au contraire, que les données d'une table renvoient à plusieurs tables. Ici on a :
Problem!ProblemtId --> ProblemDetail!ProblemtId et
Problem!ProductId --> Product!ProductId

Bonne suite, bon courage.
(Nota: Le sens de mes flèches indique Un -- > Plusieurs)
0
missengland Messages postés 5 Date d'inscription vendredi 14 novembre 2014 Statut Membre Dernière intervention 19 novembre 2014
16 nov. 2014 à 16:27
Bonjour,

Merci de ta reponse.

Je ne suis pas l'auteur des donnees mais des tables oui.

1) Je vais regarder

2) Oui un client peut avoir plusiseurs problemes.
Lorsqu il a un probleme avec un produit T par exemple, il appelle a une date et un jour precis et on cree un ID probleme (comme si c etait le num d une facture).
Ce que je n arrive pas a comprendre c est comment on peut retourner sur ce probleme ID et rajouter un nouvel enregistrement en indiquant la nouvelle plainte sur ce meme produit par le meme client ? Comme cela on aurra bien un meme problem ID pour un meilleur suivi du probleme en cours qui se resume en plusieurs enregistrements.
Par contre dans ce cas sur un meme probleme ID on aurait plusieurs fois le meme produit mais avec des plaintes qui evolues.

3) Donc le problemedetail_ID je le mets en autonumber dans la table problemedetail et pour la cle primaire de la table problem je mets les champs problem_ID + customer ID + produitID cest bien ca ?


base de donnes modif 1 : https://www.cjoint.com/?DKqqCAbU0Gc
problem design view : https://www.cjoint.com/?DKqqcFgW61u
problem detail design view : https://www.cjoint.com/?DKqqdvrYAtK

PS : (Desole pour l absence d accentuation)
0
ReBonjour,
C'est vrai que je n'avais pas regardé les 2 dernières lignes de ton précédent envoi tant cela me paraissait évident que les Identifiants dans chacune des tables étaient en AutoNumérique. Donc pour reprendre : Customer!CustomerId, Problem!ProblemId, ProblemDetail!ProblemDetailId, Product!ProductId doivent tous être NumeroAuto. Sinon on ne sera pas de quoi on parle, et cela présente l'avantage d'avoir la certitude qu'ils seront uniques. Il n'est absolument pas nécessaire d'avoir un index composé pour la table Problem puisqu'il y a un N°Auto pour Problem!ProblemId
"Ce que je n arrive pas a comprendre c est comment on peut retourner sur ce probleme ID et rajouter un nouvel enregistrement en indiquant la nouvelle plainte sur ce meme produit par le meme client ?" Tu ne t'occupe pas de ça pour le moment, parce que ce n'est pas la question posée ici. La seule chose importante ici est de comprendre et indiquer en terme de liaisons que le même client peut avoir plusieurs problèmes, que chaque problème ne se rapporte qu'à un seul produit, et enfin que chaque problème peut renvoyer à plusieurs demandes, ou une demande avec plusieurs relances.

2) Pour ce qui est des liaisons, tu n'as pas tenu compte de mes remarques, il faut qu'on ait: (je suis obligé de ne mettre que les tables les unes après les autres parce qu'il n'est pas possible de marquer les liaisons en diagonale)
Customer --> Problem --> DetailProblem
________________ --> Product
Il faut inverser tes 2 liaisons Problem -> ProblemDetail et Product-> Problem

Bonne suite.
0
missengland Messages postés 5 Date d'inscription vendredi 14 novembre 2014 Statut Membre Dernière intervention 19 novembre 2014
19 nov. 2014 à 22:03
Merci pour ces précieux conseils, et pour avoir pris de votre temps pour comprendre ma demande. Je vais enfin pouvoir aller plus loin dans mon TD.

Bonne continuation à vous
0