Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1526 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème MCD

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème MCD

n°1803902
moustik74
Posté le 24-10-2008 à 09:57:22  profilanswer
 

Bonjour,
 
je suis en en 2ème année de mon DUT Informatique, et nous avons un projet à faire pour une entreprise (un site internet de vente en ligne, pour notre groupe).
Nous sommes en train de concevoir le MCD, mais nous avons un problème pour relier certaines de nos tables.
 
Le problème:
 
J'ai une table "PRODUITS" que nous voulons la relier aux 3 tables suivantes : "VETEMENTS", "MOTOS", "PROTECTIONS" !
Le problème c'est que nous n'avons pas trouvé de solution pour les relier entre elles.
 
Voir le MCD :
 
http://img404.imageshack.us/img404/2628/mcdprofilmotosxz6.th.pnghttp://img404.imageshack.us/images/thpix.gif
 
En fait, les 3 tables "VETEMENTS", "MOTOS" et "PROTECTIONS" sont des produits. Et la table produit doit regrouper tous les produits du site (chaque produit doit donc avoir un n° unique).
 
-On ne peut pas relier les 3 tables directement à la table "PRODUITS", car sinon chaque objet produit contiendra un vêtement, une moto et une protection (en gros, il y aura un numéro pour les 3 produits)
 
-On a esseyé de creer une table itermédiaire entre les 3 tables et la table "PRODUITS", mais on a ensuite un problème de cardinalitée : en effet, on souhaite se retrouver avec les clé étrangères des 3 tables dans la table intermédiaire (et non l'inverse).
 
Voir MCD:
 
http://img72.imageshack.us/img72/2401/mcdprofilmotos2qa9.th.pnghttp://img72.imageshack.us/images/thpix.gif
 
Donc voilà concretement notre problème ^^ !
Si quelqu'un est balèze en MCD et qu'il peut nous donnez un p'tit "coup d'pouce" ;-) !
Merci d'avance à tous.

mood
Publicité
Posté le 24-10-2008 à 09:57:22  profilanswer
 

n°1803904
flo850
moi je
Posté le 24-10-2008 à 10:05:07  profilanswer
 

qu'est ce qui va se passer le jour ou ta boutique vendra un nouvel accessoire ( par exemple un pare buffle ou des scie sauteuses) ? tu vas créer une nouvelle table ?  
 
est ce que ça ne vaudrait pas le coup de regrouper les produits dans  la table produits ?

n°1803907
moustik74
Posté le 24-10-2008 à 10:13:00  profilanswer
 

Tout d'abord merci de ta réponse flo850 !
En fait, l'administrateur n'ajoutera pas de nouvelle catégorie, donc il n'y aura pas de création de nouvelle table.
Et pour répondre à ta question, on ne peut pas regrouper les catégorie de produit dans la table "PRODUITS" car les catégorie n'ont pas toutes les mêmes attributs (c'est d'ailleurs pour cela que l'ont a creer 3 tables à part).
On pourrait éventuellement tout regrouper dans la table "PRODUITS" mais il y aurait des attributs "null".

n°1803908
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-10-2008 à 10:14:36  profilanswer
 

Votre solution n'est pas conceptuellement correcte. Les 3 tables vetements, motos et protections n'ont pas lieu d'être.
 
Le plus propre est de faire 2 tables :
- une table "produits" qui contiendra les infos sur le produit
- une table "catégorie" qui contiendra la catégorie du produit (vetements, motos ou protections)
 
La table "produits" contiendra une clé étrangère vers la table "catégorie", indiquant ainsi la catégorie du produit.


---------------
J'ai un string dans l'array (Paris Hilton)
n°1803911
moustik74
Posté le 24-10-2008 à 10:22:49  profilanswer
 

Oui, mais comme je l'est dit juste au dessus, on aura après des attributs qui seront null dans la table "PRODUITS", car tous les produits n'ont pas tous les même attributs.

n°1803914
did-54
Posté le 24-10-2008 à 10:30:13  profilanswer
 

Tu fais une table en plus :  
- Produit_id
- Category_id
- Produit_detail_id
 
avec produit_detail_id la FK vers ta table VETEMENTS, MOTO ou whatever.
 
?

n°1803936
moustik74
Posté le 24-10-2008 à 11:05:28  profilanswer
 

Je ne comprend pas très bien l'utilité de la table Produit_detail_id.
 
On vient d'essayer avec des liens d'héritage (en supposant que les 3 tables soient des "filles" de la classe "PRODUIT", et en mettant les attributs communs aux 3 tables dans "PRODUIT", puis en rajoutant les attributs propres à chaque tables dans celle qui lui correspond) mais on n'y arrive toujours pas.

n°1803950
did-54
Posté le 24-10-2008 à 11:32:29  profilanswer
 

moustik74 a écrit :

Je ne comprend pas très bien l'utilité de la table Produit_detail_id.
 
On vient d'essayer avec des liens d'héritage (en supposant que les 3 tables soient des "filles" de la classe "PRODUIT", et en mettant les attributs communs aux 3 tables dans "PRODUIT", puis en rajoutant les attributs propres à chaque tables dans celle qui lui correspond) mais on n'y arrive toujours pas.


Ce n'est pas une table mais un attribut. il te permet de retrouver la ligne correspondant au produit dans ta table "fille".  
Exemple, tu as  
- Produit_id = 10
- Category_id = 1
- Produit_detail_id = 4
 
Tu sais que le 10e produit de ton catalogue est de type 1 et que tu pourras trouver ses détails dans la table correspondante, à l'id 4.

n°1803961
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-10-2008 à 11:42:55  profilanswer
 

Je maintiens, et je pense savoir de quoi je parle, que les 3 tables doivent être supprimées au profit d'une table "Catégorie" et d'une table "Produit" qui contiendra une clé étrangère.
Maintenant, au sujet des attributs, le mieux est de créer une table "Attributs" qui contiendra un id et le libellé de tous les attributs, et enfin créer une 4eme table "AttributCategorie" qui contiendra 2 champs : l'id de la catégorie, et l'id de l'attribut correspondant.
Tu rajoutes une clé étrangère sur la table "Attributs" vers le champ "id attributs" de cette table, une clé étrangère sur la table "Catégorie" vers le champ "id catégorie", et le problème est réglé de façon propre et extensible. Comme il y a une relation "plusieurs à plusieurs" entre les catégories et les attributs, une table de liaison ("AttributCategorie" donc) est nécessaire.


---------------
J'ai un string dans l'array (Paris Hilton)
n°1804044
flo850
moi je
Posté le 24-10-2008 à 13:50:56  profilanswer
 

pas mieux que harko  
 
en plus, au pire, des attributs null, ca m'empeche pas de dormir la nuit
 

mood
Publicité
Posté le 24-10-2008 à 13:50:56  profilanswer
 

n°1804051
did-54
Posté le 24-10-2008 à 14:00:59  profilanswer
 

C'est quoi le problème avec ma solution ?

n°1804055
flo850
moi je
Posté le 24-10-2008 à 14:02:01  profilanswer
 

devior créer une nouvelle table a chaque nouveau produit ?  
ajouter une jointure en plus  à chaque requete ?  
 

n°1804062
did-54
Posté le 24-10-2008 à 14:06:41  profilanswer
 

Une nouvelle table par type de produits... et je vois pas trop où est le problème. Et en terme de jointures, ca doit etre a peu près équivalent à la solution d'harko.

n°1804067
flo850
moi je
Posté le 24-10-2008 à 14:09:13  profilanswer
 

tu vois aps ou est le problème ?
 
ca te derange aps de revoir la structure de la table a chaque changement ? et donc de revoir toutes les pages du site pour afficher les nouveaux produits ?  
 
faut aussi penser a la maintenance de ce genre de solutions

n°1804112
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-10-2008 à 14:30:05  profilanswer
 

did-54 a écrit :

C'est quoi le problème avec ma solution ?


ta solution n'est pas correcte, la preuve, c'est que tu as créé ce topic. si ton modèle était correct, la solution t'aurait sauté aux yeux direct :spamafote:
le souci, c'est que tu créés des tables pour ce qui devrait normalement être des enregistrements. ceci t'obligera à rajouter des tables à chaque fois que tu voudras créer une catégorie comme te l'a dit flo. c'est bien joli de dire que tu n'en rajouteras pas, mais il ne faut jamais raisonner comme ça, et toujours envisager les futurs ajouts

 

voici ce que pourrait être un MPD correct :

 

http://pix.nofrag.com/0/e/4/ee78c618029745d19043273f4f21d.png

 

de cette façon, tu gères autant d'attributs que tu le souhaites, et les relations sont correctes. aucun besoin de rajouter une table si tu rajoutes une catégorie

Message cité 1 fois
Message édité par Harkonnen le 24-10-2008 à 14:30:57

---------------
J'ai un string dans l'array (Paris Hilton)
n°1804194
moustik74
Posté le 24-10-2008 à 15:25:17  profilanswer
 

Merci à tous de nous aidez ^^ !
 
Harkonnen, j'ai essayé de transformer ton texte en MCD ^^ !Dit moi ce que tu en pense stp .
 
http://img225.imageshack.us/img225/2976/mcduz4.th.pnghttp://img225.imageshack.us/images/thpix.gif
 
Si je n'est pas fait ce que tu voulais, fait le moi savoir ;-)

n°1804232
did-54
Posté le 24-10-2008 à 15:46:08  profilanswer
 

Harkonnen a écrit :


ta solution n'est pas correcte, la preuve, c'est que tu as créé ce topic. si ton modèle était correct, la solution t'aurait sauté aux yeux direct :spamafote:
le souci, c'est que tu créés des tables pour ce qui devrait normalement être des enregistrements. ceci t'obligera à rajouter des tables à chaque fois que tu voudras créer une catégorie comme te l'a dit flo. c'est bien joli de dire que tu n'en rajouteras pas, mais il ne faut jamais raisonner comme ça, et toujours envisager les futurs ajouts
 
voici ce que pourrait être un MPD correct :
 
http://pix.nofrag.com/0/e/4/ee78c6 [...] f4f21d.png
 
de cette façon, tu gères autant d'attributs que tu le souhaites, et les relations sont correctes. aucun besoin de rajouter une table si tu rajoutes une catégorie


Je n'ai pas créé le topic, mais ok.

n°1804239
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 24-10-2008 à 15:59:49  profilanswer
 

moustik74 a écrit :

Merci à tous de nous aidez ^^ !
 
Harkonnen, j'ai essayé de transformer ton texte en MCD ^^ !Dit moi ce que tu en pense stp .
 
http://img225.imageshack.us/img225/2976/mcduz4.th.pnghttp://img225.imageshack.us/images/thpix.gif
 
Si je n'est pas fait ce que tu voulais, fait le moi savoir ;-)


dans la table Attribut_Categorie, il faut mettre 2 champs : l'id de l'attribut et l'id de la catégorie. toi tu n'en a mis qu'un
 

did-54 a écrit :


Je n'ai pas créé le topic, mais ok.


Ah pardon, je t'ai confondu avec l'auteur du topic :jap:


---------------
J'ai un string dans l'array (Paris Hilton)
n°1804670
moustik74
Posté le 26-10-2008 à 11:28:41  profilanswer
 

OK je met les 2 attributs id_categorie et id_attribut à la place de id_categorie_attribut, mais ils seront en clé primaire ou étrangère ?parce que c'est un MCD donc les clé étrangère n'apparaissent pas dessus. Et il faut bien au minimum une clé primaire dans une table non ?
 
PS: Pourrais tu me donner un exemple de requête qui servirait à afficher un attribut d'une catégorie en particulier stp ?Car je ne comprend tjrs pas très bien l'utilité de la table intermédiaire "Attribut_categorie" : si il n'y a que 2 clé étrangère dedans, à quoi bon la creer ?Pourquoi ne pas relier directement categorie à attribut ?
 
Merci encore pour ton aide Harkonnen

n°1804775
galenica
Posté le 26-10-2008 à 20:16:36  profilanswer
 

bsr j'ai un exposé sur la relation entre SGBD , MCD et UML aidez moi svpppp


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Problème MCD

 

Sujets relatifs
javascript : problème de "replace"Problème Boost & STLPort sous Mingw (sous wxDev-C++)
[Java] probleme reaffichage contentPaneProblème MCD vers MPD sur PowerAMC
Problème de MCD pour produits à mulitples options[merise] Probleme d'heritage, MCD et sgbd mysql..
MCD/Concept] Quelle solution pour mon probleme ?[résolu][MCD]Petit problème de conception
Probleme de MCD[MCD] Problème de modélisation
Plus de sujets relatifs à : Problème MCD


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR