begin process at 2012 05 26 17:53:07
  Trouver un code source :
 
dans
 
Accueil > Forum > 

SQL

 > 

Autre

 > 

Divers

 > 

[MCD] Multiples catégories de produits


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[MCD] Multiples catégories de produits

jeudi 3 décembre 2009 à 16:35:18 | [MCD] Multiples catégories de produits

Krasha

Bonjour à tous,

Dans le cadre d'un stage je dois créer une base données pour un traiteur en ligne, malheureusement mon expérience sur les bases de données est plus que réduite :(

J'ai eu des cours assez simples sur le MCD et le MPD, pas de notions d'héritage ni de trucs compliqués, bref le minimum. Alors maintenant je galère un peu...

Donc pour ce MCD j'ai une table 'PRODUITS' qui contient le stock actuel du dit produit et son libellé (juste le nom, la description du produit se fait ailleurs). Mais ce produit peut être de nature différente (et donc traité de façon différente par la suite). Pour renseigner son état j'ai donc sous-divisé ma table 'PRODUITS' vers des tables de catégories qui sont : 'BOISSONS', 'INGREDIENTS', 'PLATS', 'MATERIELS', 'VINS' (je sais que 'vins' devrait être dans 'boissons', mais il y a trop de références, on ne pourrait pas s'y retrouver ensuite).



Même si ça fait beaucoup de tables j'étais plutôt content de moi, malheureusement quand je passe au MPD ça ne fonctionne pas du tout comme je l'aurais souhaité. Je me retrouve avec une FK par sous-catégorie dans ma table 'PRODUITS' ce qui ne peut pas fonctionner correctement.



Je voulais donc savoir si quelqu'un avait une idée (à part bidouiller les cardinalités pour que enlever les FK de ma table 'produits' :mrgreen: ) ? Quitte a remodeler entièrement mon MCD, je préfère le refaire pour qu'il soit conforme par la suite.

Si vous voulez jeter un coup d'oeil au MCD complet pour avoir une vue d'ensemble, voici un lien pour télécharger le zip :
MCD Complet (Line 1 de la partie "Le MCD complet" )

Je pourrais très bien regrouper toutes mes catégories dans ma table 'PRODUITS' grâce au système des 'id_parent' et 'id_fils' (voir explication ci-dessous) mais si c'était possible j'aimerais bien bien garder un table par catégorie.

Le système des 'id_parent' et des 'id_fils' est simple et pratique mais je ne suis pas sur qu'il soit très conforme à l'esprit BDD. Je m'explique:

'id_parent' est une référence à la catégorie supérieure du produit en question, et 'id_fils' est la référence est la sous-catégorie inférieure. Par exemple pour la table 'INGREDIENTS' cela donne:



C'est pratique pour le classement, pour les requêtes c'est assez simple d'avoir l'arborescence pour un produit donné. Seulement avec cette technique dans une table sensée ne contenir que des produits je me retrouve avec de catégories et des sous-catégories, bref des choses immatérielles que mon patron serait bien en peine de servir à la table d'un client.

Est-ce que pour vous cette technique est choquante? Si oui j'ai un soucis, vu que je pensais en cas de non-résolution de mon problème de MPD fusionner toutes les tables de catégories avec la table 'PRODUITS' qui du coup ne poserait plus de problème de cardinalités mais qui contiendrait un nom impressionnant de catégories, de sous-catégories, de sous-sous-catégories, etc...

Bref elle deviendrait illisible pour l'oeil humain.

Quand pensez vous? Quelle solution adopteriez-vous?
jeudi 3 décembre 2009 à 19:06:23 | Re : [MCD] Multiples catégories de produits

Krasha

Donc après modification... je me retrouve avec le même soucis. Je n'ai fait que déplacer le problème en fait, cela n'a servi à rien. Je dois avoir un défaut de conception, une chose que je n'ai pas compris.

Voilà le résultat après modification de mon MCD :


et le résultat identique sur mon MPD:


Si vous voyez ce qui cloche dans la conception de ma modélisation je serais heureux de vous entendre, parce que là je craque. :fou:
mardi 8 décembre 2009 à 18:53:43 | Re : [MCD] Multiples catégories de produits

JeremyLecouvert

Salut,

ça fait un paquet de temps que j'ai pas modélisé, mais je vais essayer d'apporter ma contribution!!

Première remarque: je vois que dans tes héritages, tu références un parent et un enfant => Erreur! Tu dois avoir un parent unique, mais tu ne peux pas référencer d'enfant parce qu'il peut y en avoir plusieurs. Ex: dans ta table Ingrédients (qui à mon avis doit sauter, je vais y venir..), tu as un Id_Ingrédient, un Nom_Ingrédient, et un Id_Parent.

2)Dans la conception, ne t'occupe pas trop de la lisibilité des tables, l'important est que ton modèle soit pérenne. Au fil du temps, les tables vont se remplir et ce sera de toute façon le bordel pour s'y retrouver, d'où l'importance d'avoir un système stable pour éviter qu'il ne s'effondre dans 2 ans! Ta base de données est là pour structurer tes données; pour ce qui est de la présentation, ce seront les requêtes et procédures stockées qui feront le boulot!

3)Donc en ce qui concerne les produits, je le verrais plutôt comme ça... Merde, je sais pas comment insérer une image..tant pis, je vais essayer de te l'expliquer:

- 1 table Produit contient tous tes produits (toutes les dérivées sautent). Elle est liée à une table Catégorie par une relation 'Appartient à' de cardinalité 1.* (1 prod appartient à une seule catégorie, 1 catégorie peut concerner n prod) => tu retrouves donc IdCategorie ds la table produits.
- La table Catégorie est liée à elle-même ds une relation 'Est enfant de' (1.*): 1 Cat -> 1 seul parent. Dans cette table tu as donc un IdCat et un IdParent.
- Pour ce qui est du type matériel/immatériel, 2 possibilités: le + propre (ce qu'on apprend en formation!), c'est de créer 1 table typeProd, liée à Produits... mais dans la pratique, cette table ne contiendra que 2 enregistrements (matériel, immatériel), donc (solution n°2): tu intègres directement un champ 'type' (ou même un champ booléen 'matériel') dans la table qui va bien: Catégories si tous les prod d'une catégorie sont de même type, Produits dans le cas contraire.

Voilà, je pense que c'est un bon début... Affaire à suivre!


Si l'envie te prend de travailler, assied-toi et attend qu'elle te passe! (vieux -et faux!- dicton corse)
mardi 8 décembre 2009 à 19:02:50 | Re : [MCD] Multiples catégories de produits

JeremyLecouvert

Pour faire plus général sur les héritages, voici 2 principes (parmi d'autres) qui t'aideront à comprendre certaines erreurs que tu as faites:
1)Un objet (classe) ne peut hériter que d'un seul objet.

2) Tu ne dérives une classe que si l'enfant possède des attributs spécifiques. Exemple: une classe Véhicule possède des attributs (couleur, type de carburant etc...). Si tu veux gérer des camions, tu crée une classe Camion héritée de Véhicule, parce qu'un camion possède par exemple un attribut 'tonnage' qu'un autre véhicule n'a pas.

Si l'envie te prend de travailler, assied-toi et attend qu'elle te passe! (vieux -et faux!- dicton corse)


Cette discussion est classée dans : table, id, catégories, produits, mcd


Répondre à ce message

Sujets en rapport avec ce message

suppression d'un champs et mise a jour des autres [ par djbenji81100 ] Bonjour , je suis actuellement en pleine conception d'un site pour mon stage . j'utilise easy php pour coder creer le site et je dois donc gerer un comment modifier ou supprimer une table ou on a que les cles primaire [ par iliastafom ] Bonjour a tous! j'ai un problème je n'arrive pas à modifier une table intermédiaire( un relation tertiaire) posteservice(idpost,iddir,idser,idp,theDat Calcul de durée par différence entre 2 enregistrements [ par axvier ] Bonjour, Je "débute" sur SQL server et je me retrouver confronter à un besoin assez spécifique. Je dispose d'une table que l'on appelera "matable" c Plusieurs colonnes ou plusieurs tables ? [ par hotmaskim ] Bonjour, J'ai une table qui va servir à remplacer un fichier XML faisant un mapping entre un id source et un id destination. Maintenant, l'id sourc sql:insertion dans 2 tables liées [ par ti7a ] Bonjour, slt tt le monde bon j'ai deux tables : la table voiture (id_voiture,id_marque ,couleur,ville.............); et la table option (id_option, Problème création table en SQL Server [ par anouar2002 ] Salut !!! Je veux faire une création de certains tables en SQL Server 2005, il y a toujours un erreur concernant les clés étrangers je suppose qui me Aide pour sql [ par romdeljesus ] Bonjour, j'ai essaye de crayer une base de donnees contenant 2 tables sur netbeans 7.01. je cree une premiere table contenant l'entier id comme cle p Create table @Name [ par yanis7518 ] Bonjour à tous, je voudrais savoir s'il était possible de créer une table sql avec un nom dynamique? ex [code=autre]Declare @Id as varchar (5) Dec Trigger after delete [ par mictif ] Bonjour ! Je suis confronté a un probleme. je ne connais pas bien les trigger mais ai besoin d'en utiliser un. J'aimerais, lorsque qu'une ligne est requête simple sur 3 tables [ par Krasha ] Bonjour à tous, je m'essaie depuis quelques jours aux requêtes, ça avance doucement mais aujourd'hui j'ai bloqué avec ma première requête sur 3 table


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,404 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales