|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||||||||
|
Futur Membre du Club
![]() Thomas M Inscription : février 2011 Messages : 38 ![]() |
Bonjour,
Je me heurte à un petit problème de structuration de mes tables sous Access, et j’aimerais avoir votre avis pour savoir si les solutions que j’ai envisagées sont assez fiables ou s’il y a une meilleure manière de faire ? (en privilégiant la robustesse et la rigueur). Pour simplifier, imaginons que je vende des légumes, et que selon le type de légume, chaque mois, mes légumes sont produits dans un champ différent (et parfois plusieurs) en fonction du marché où ils sont vendus. J’ai donc une table Code :
Champ(s) souligné(s) = clé primaire. (*)= clé étrangère. J’ai une bonne quantité de type de légumes qui sont toujours produits dans le même champ (90%). La notion de Marché et de Mois n’intervient donc pas. J’ai ainsi une table de Répartition MonoChamp qui ressemble à ça : Code :
Code :
Table ProductionLégume Code :
Répartition Mono Et Répartition Multi Code :
Code :
Code :
De plus la table de répartition doit être mise à jour mensuellement par l'import d'un fichier Excel, et les types de produits, marchés, etc sont ammenés à évoluer, du coup pour éviter des problèmes d'intégrité, je pense qu'il est nécessaire d'avoir une structure bien construite. J'espère que vous m'avez suivi jusque là Merci beaucoup d'avance de me consacrer un peu de votre temps. PS : je travaille avec Access 2003 |
||||||||||||||
|
|
00
|
|
|
#2 | |||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
bonjour,
pour bien structurer ses tables il faut commencer par modéliser les données à partir des règles de gestion. Et là… Citation:
Code :
…Ce que j’ai compris : Un type de légume est produit chaque mois : ProductionTypeLegume(Type, Mois, quantité) La production est répartie dans un ou plusieurs champs : Repartition(#Type, #Mois, champ, pourcentage) reliée à ProductionTypeLegume Le reste est flou : Peut-être qu’une répartition est destinée à un marché particulier, dans ce cas : Repartition(#Type, #Mois, champ, pourcentage, Marché) Mais sinon…
|
|||
|
00
|
|
|
#3 | |
|
Futur Membre du Club
![]() Thomas M Inscription : février 2011 Messages : 38 ![]() |
Citation:
Merci tout d'abord d'avoir pris la peine de me lire. Alors en fait je me suis peut être mal exprimé (il faut dire que ce n'est pas tout simple :/) Un type de légume est produit chaque mois pour un marché préci (ou client est peut être plus clair): ProductionTypeLegume(Type, Mois, Marché, quantité) Par exemple, je veux 5000 carottes pour le marché1 (client1) en Février, 2000 carottes pour le marché2 (client2) en Février etc.. La production est répartie dans des champs (j'aurais peut être dû utiliser le mot "usine" car champ est ambigû dans ce cas là). Disons la production nécessaire pour chaque Client pour chaque mois de chaque Type de Produit est répartie dans des Usines selon différents critères. Il y a deux répartitions en quelque sorte: Repartition_Mono(#Type, Usine) Pour certains Types, on attribue la production à une Usine sans se soucier du client(ou marché) ni même du mois. On fait donc la jointure sur Type uniquement Repartition_Multi(#Type, #Marché, #Mois, Usine, Pourcentage) Dans ce cas là, pour certains Types, on répartie la quantité dans plusieurs Volumes, et celà dépend du Marché(Client). On fait donc la jointure sur Type, Marché et Mois. En fait on produit des modèles différents dans des usines, et souvent on n'a pas le choix, des modèles sont forcément attribués à une usine car on ne peut pas les fabriquer ailleurs, et pour certains modèles, on peut les fabriquer dans plusieurs Usines, du coup on les fabriques en fonction du Client à qui on veut les livrer (autant produire près de là où on va les vendre), et ces taux de répartion changent d'un mois à l'autre. J'espère avoir été assez clair, n'hésitez pas à me demander des précisions! Merci beaucoup encore pour le temps consacré, Bonne soirée |
|
|
|
00
|
|
|
#4 | |||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
bon, on va faire autrement…
Citation:
Citation:
![]() Citation:
![]() T’en penses quoi ? |
|||
|
00
|
|
|
#5 |
|
Futur Membre du Club
![]() Thomas M Inscription : février 2011 Messages : 38 ![]() |
Bonjour,
Tout d'abord merci beaucoup pour ta réponse, Je trouve ça vraiment pas mal, mais je ne comprends pas très bien l'utilité de AttribuerProd vu que Repartir pourrait suffir dans ce cas là? (on pourrait le schinter?) En fait, je reçois tous les mois un fichier avec les Usines et taux de répartition en fonction de Client et idTypeModele et Mois. 90% des modèles sont toujours fait dans la même usine. Du coup, il y a redondance d'énormément d'informations si pour ces 90% de Type de Modèles on doit tous les mois rajouter des entrées pour chaque Client, Mois .. alors que la répartition ne change pas. Actuellement, les tables sont comme ça: J'aimerais donc trouver une façon élégante de gérer cette double jointure externe, un peu comme tu as fait, mais d'avoir les champs Client et Mois remplis uniquement pour les idTypeModele qui se font dans plusieurs Usines. Merci ! |
|
|
00
|
|
|
#6 |
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
bonjour,
certains modèles ont leurs productions réparties dans plusieurs usines selon le client et le mois: ![]() d'autres modèles sont produits dans une seule usine avec une qtté mensuelle identique chaque mois quelque soit le client: ![]() Il faudra veiller à ce qu'un modèle ne puisse se retrouver à la fois dans ProductionMono et ProductionMulti. c'est mieux comme ça ? [EDIT] manque une table Client pour bien faire ...[/EDIT] |
|
00
|
|
|
#7 | |
|
Futur Membre du Club
![]() Thomas M Inscription : février 2011 Messages : 38 ![]() |
Citation:
Client Mois TypeModele Quantité (PS: mon Client est un Pays en fait) Voilà en exemple concret les deux différents types de répartition que j'ai: Multisites: et Monosite: Peut être si c'est plus clair, voilà comment je gère ça actuellement: Après il y a peut être pas de meilleure solution... Merci encore pour ton temps. |
|
|
|
00
|
|
|
#8 | ||
|
Expert Confirmé Sénior
![]() ![]() Fabien Enseignant Inscription : janvier 2009 Messages : 2 410 ![]() |
Bonjour thomas.m,
je persévère quand même… ![]() Une production concerne un pays, un mois et un modèle (table Production) Certains modèles sont produits dans une seule et même usine (table RepartitionMono) quels que soient le pays et le mois (cas du "type 2" par exemple). ![]() La table Repartir (dont le contenu apparait en sous-feuille de données de la table Production) ne comprend que les répartitions des modèles fabriqués par plusieurs usines. Il n’y a donc aucune redondance, les 500 "type 2" de Février et les 700 du mois de Mars seront toujours fabriquées dans l’ "usine 38" d’après la table RepartitionMono. Pour avoir la répartition globale, il faut passer par plusieurs requêtes à construire avec les assistants. La première pour les productions multi-sites avec les jointures nécessaire sur les tables Production et Repartir : La deuxième pour les productions mono-sites faisant participer la table RepartitionMono : Et la dernière avec UNION sur les deux précédentes : Code sql :
![]() Sommes-nous d’accord cette fois ? |
||
|
20
|
|
|
#9 |
|
Futur Membre du Club
![]() Thomas M Inscription : février 2011 Messages : 38 ![]() |
Merci beaucoup Fabien, c'est exactement ce que je cherchais.
Je testerai ça lundi et je te tiendrai au courant, mais ça devrait surement aller. Merci encore, et bon weekend. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com