|
Publicité ' | ||||||||||||||||||||||||
|
|
#21 | |
|
Candidat au titre de Membre du Club
![]() Gratien Inscription : octobre 2009 Messages : 70 ![]() |
Citation:
Pour les afficheurs : Je modélise une installation de préparation de commandes avec ce que l'on appelle du "pick to light". Si vous ne connaissez pas, en gros on a une armoire avec des cases (les codes géo). Chaque case contient un seul article. Un afficheur est souvent constitué de quelque digits et d'un bouton. Les digits indiquent la quantité que l'opérateur doit prendre dans la case et le bouton sert de validation. Compte tenu du prix des afficheurs et du grand nombre de cases, il est possible de partager un afficheur entre deux cases. Dans ce cas, l'affichage ne peut pas être simultané bien sûr. Il est séquentiel : on indique à l'opérateur de prendre la quantité X dans la case du haut, puis la quantité Y dans la case du bas. Alors pourquoi ce binz sur le reste ? Parce qu'il est possible, en plus des afficheurs sur chaque case, de gérer un afficheur par groupe de cases. Cet afficheur sert pour d'autres informations. Et pour couronner le tout, comme je modélise un logiciel qui s'adapte à tous les cas, je ne veut pas fixer le nombre de niveaux de groupe (je souhaite pouvoir faire des groupes de groupes et ainsi de suite). C'est ce que j'ai appelé ENSEMBLE dans mon modèle. Un ensemble peut aussi avoir un afficheur (mais dans ce cas un seul). Enfin, une installation de préparation de commandes est vaste, et comporte des tas de systèmes différents présent dans mon modèle. Par exemple des sorties de trieur. Les sorties n'ont rien à voir avec les code géo, mais ont ceci en commun : elles peuvent avoir un afficheur et elles peuvent s’agréger en groupes (avec des niveaux aussi). Voila, c'est certainement plus clair avec toutes ces explications... |
|
|
|
00
|
|
|
#22 | |
|
Expert Confirmé
![]() Inscription : septembre 2006 Messages : 2 375 ![]() |
# signifie cardinal : regardez votre premier schéma
que votre afficheur soit lié à 1 seul emplacement ou à N peut être modéliser de la même manière, simplement si vous devez distinguer entre les 2 cas au point de les considérer comme 2 classes différentes, vous pouvez le faire via une business rule : il n'est pas nécessaire d'avoir 2 modèles différents (mais vous pouvez le faire si d'autres raisons y poussent). Citation:
Faire de la table X une sous-classe de Composant reviendra simplement à ajouter des records Composant pour chaque record de X et une FK de la PK de X vers Composant(no_composant) : soit 2 lignes de SQL. Et que la base soit relationnelle n'empêche en aucune manière de modéliser des concepts objets ni de les représenter. |
|
|
|
00
|
|
|
#23 | ||||||
![]() ![]() |
OK. Essayons de modéliser progressivement., mais vous devriez lire mon billet sur les règles de gestion, ça aiderait beaucoup à la modélisation.
Citation:
Un article peut-il ne pas être contenu dans une case ? En attendant, je modélise avec hypothèses ; il faudra éventuellement changer les cardinalités. MCD 1 : code_geo -1,1----contenir----1,n- article Citation:
Une case peut-elle avoir plusieurs afficheurs ? J'ai l'impression que non. MCD 2 : afficheur -1,n----partager----1,1- code_geo Citation:
une case peut-elle être dans plusieurs groupes ? Peut-on considérer qu'il existe des afficheurs de type "case" et des afficheurs de type "groupe" puisque les informations affichées sont différentes ? Un afficheur de groupe peut-il être partagé entre plusieurs groupes ? On pourrait alors avoir cette structure pour les groupes : MCD 3 : code_geo -0,1----constituer----1,n- groupe Et un héritage pour les afficheurs. MCD 4 : aff_case -(1,1)----être----0,1- afficheur aff_groupe -(1,1)----être----0,1---| Du coup, on modifie le MCD 2 de la façon suivante : MCD 2 bis : aff_case -1,n----partager----1,1- code_geo puis on associe aff_groupe à groupe : MCD 5 : aff_groupe -1,n----affecter----1,1- groupe Citation:
MCD 6 : groupe -0,n--(père)--comprendre |------------0,1--(fils)-----------| Citation:
MCD 4 bis : aff_case -(1,1)----être----0,1- afficheur aff_groupe -(1,1)----être----0,1---| aff_sortie -(1,1)----être----0,1-----| Plusieurs sorties peuvent-elles partager le même afficheur ? MCD 7 : sortie -0,1----avoir----1,n- aff_sortie Citation:
Auquel cas il y aurait un nouvel arbre intervallaire et une spécialisation des groupes. En supposant que les deux types de groupes aient des propriétés communes, on fait un nouvel héritage : MCD 8 : groupe_case (1,1)----être----0,1- groupe groupe_sortie -(1,1)----être----0,1---| Ce qui nous amène à modifier le MCD 3, le MCD 5 et le MCD 6. MCD 3 bis : code_geo -0,1----constituer----1,n- groupe_case MCD 5 bis : aff_groupe -1,n----affecter----1,1- groupe_case MCD 6 bis : groupe_case -0,n--(père)--comprendre |------------0,1--(fils)-------------------| On modélise l'arborescence des groupes de sorties comme dans le MCD 6 bis. MCD 9 : groupe_sortie -0,n--(père)--comprendre |------------0,1--(fils)-------------------| Je crois que je suis arrivé au bout de vos explications. J'ai dessiné le MCD complet à la main, ça me semble cohérent. Vous pouvez faire de même avec un logiciel de modélisation et nous proposer le résultat.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
||||||
|
20
|
|
|
#24 | |||||||
|
Candidat au titre de Membre du Club
![]() Gratien Inscription : octobre 2009 Messages : 70 ![]() |
Citation:
Je n'avais pas encore vu celui là. Je vais le lire avec attention.Citation:
et Oui Citation:
A noter que dans le modèle actuel nous utilisons une "astuce". Lorsqu'un afficheur est sur deux code géo, alors on duplique la ligne dans la table afficheur pour obtenir ue liaison 1-1 (1 afficheur=1 code géo) ![]() Citation:
Non. Les groupes de cases font partie de la configuration du logiciel qui n'est pas censée être modifiée. Mais entre deux configurations, tout peut changer. Non. Sauf qu'une case peut être dans un groupe A lui même dans un autre groupe AA. Donc par transitivité, la case est membre de A et AA, mais indirectement. Chaque groupe pouvant avoir un afficheur. Citation:
Nous voulons avoir : tous les code géo du groupe G1 on des afficheurs du type A1. Les codes géo du groupe G2 sont du type A2. Le groupe G1 possède lui aussi un afficheur mais de type A3. Le groupe G2 n'a pas d'afficheur. Non, dans ce cas j'ai prévu de créer un groupe avec les n groupes sur lequel je rattache l'afficheur. Oui pourquoi pas, comme les code géo. Citation:
Citation:
Mais dores et déjà un grand merci pour votre aide précieuse ! |
|||||||
|
|
00
|
|
|
#25 | |||||
![]() ![]() |
Quelques points, rapidement...
1) Case vide et article pas dans case. Les cardinalités sont à changer sur le MCD 1. MCD 1 : code_geo -0,1----contenir----0,n- article 2) Citation:
MCD 2 bis : aff_case -1,2----partager----1,1- code_geo Par contre, en toute rigueur, ça a des conséquences sur le développement de la BDD pour assurer la contrainte maxi 2 codes geo pour une aff_case. Citation:
![]() 3) Citation:
4) Citation:
Si ce n'est pas le cas, il peut être utile de typer les afficheurs au niveau de l'entité type afficheur ou de faire de nouveau un héritage des différents types technologiques d'afficheurs qui se superpose à l'héritage des types conceptuels d'afficheurs. Il faudrait plus de précisions pour développer ce point qui peut, ou pas, être délicat. 5) Citation:
On met alors les propriétés communes dans l'entité type mère et les propriétés spécifiques dans les entités types filles. Elles peuvent aussi se ressembler mais concerner deux choses totalement différentes. Par exemple, plusieurs entités type de référence peuvent avoir une structure similaire du type identifiant + libellé. Mais il ne viendrait à personne l'idée de mélanger dans une seule entité type des catégories et des couleurs par exemple. Bon courage !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|||||
|
00
|
|
|
#26 | |
|
Candidat au titre de Membre du Club
![]() Gratien Inscription : octobre 2009 Messages : 70 ![]() |
J'ai commencé à modéliser cela sur poweramc et j'ai quelques questions concernant les associations :
Citation:
2 - Sur le MCD 5 on affecte un aff_groupe à groupe_case. Mais n'est il pas plus simple de l'affecter à un groupe tout court ? Merci |
|
|
|
00
|
|
|
#27 | |||
![]() ![]() |
Citation:
Fait un essai sur papier avec quelques données concrètes en dessinant l'arbre comme dans l'article de SQLPro. Citation:
Citation:
Un afficheur de groupe est affecté à un à plusieurs groupes de cases et un groupe de cases se voit affecter un seul afficheur de groupe. Si on fait ceci : aff_groupe -1,n----affecter----1,1- groupe Alors l'afficheur de groupe peu aussi être affecté à un groupe de sortie. Est-ce cohérent ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|||
|
00
|
|
|
#28 | ||
|
Candidat au titre de Membre du Club
![]() Gratien Inscription : octobre 2009 Messages : 70 ![]() |
Citation:
Citation:
J'ai la règle suivante : Un groupe de cases ou un groupe de sorties peuvent avoir un afficheur. J'ai fait ce schéma : ![]() Nous ne modélisons jamais avec du mcd, toujours avec du mpd (industries inside). Ne soyez pas trop sévères ! |
||
|
|
00
|
|
|
#29 | ||||
![]() ![]() |
Citation:
Citation:
![]() La présence du "ou" rend la règle ambigüe car la phrase peut être interprétée de deux manières : 1) Un groupe de cases peut avoir un afficheur ; un groupe de sorties peut avoir un afficheur. 2) Un groupe de cases et de sorties peut avoir un afficheur. Donc la question posée suite à la modification du MCD que tu veux opérer n'est pas résolue : Citation:
Dans l'ensemble cela me paraît correct, à un détail prêt : Groupe_Sortie -0,n----contenir----0,n- Sortie Traduction : Un groupe de sorties peut contenir plusieurs sorties et une sortie peut être contenue dans plusieurs groupes de sorties. Est-ce exact ? Un groupe de sortie peut être vide ? Une sortie peut être dans plusieurs groupes ? Citation:
![]() Heureusement qu'Airbus ou Alstom ne font pas comme ça !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
||||
|
00
|
|
|
#30 | ||||
|
Candidat au titre de Membre du Club
![]() Gratien Inscription : octobre 2009 Messages : 70 ![]() |
Citation:
. C'est un projet de RetD où je rédige le cahier des charges selon mon expérience, je fais la conception et comme je suis bien parti, je code aussi. (mais nous ne sommes que 4 dev et 2 cp dans la boite!). Ce que je voulais dire, c'est que si j'ai bien compris, un aff_groupe représente un afficheur attaché à un groupe, quel qu'il soit. Citation:
Citation:
J'ai également modifié la cardinalité aff_groupe affecté à groupe. J'ai la règle suivante : Un afficheur groupe est être affecté à un et un seul groupe Un groupe peut avoir un seul afficheur ....ou pas. Cela donne : ![]() Citation:
Disons que nous sommes 80 dans la boite, que nous faisions principalement que de la mécanique et qu'un base de données chez nous, quand une table dépasse 10000 lignes, c'est déjà le Pérou. Alors non, Airbus et Alstom ne font pas comme nous, mais ils n'ont pas non plus la même force de frappe ! Ajoutez a cela une hiérarchie qui ne comprend pas grand chose à l’intérêt de modéliser correctement, secouez tout cela et on obtient 15 ans de projets fonctionnellement très proches mais sans jamais avoir deux bases de données qui se ressemblent (même de très loin). Pour vous donner un ordre d'idée ,je suis actuellement en train de me battre pour ne plus mettre des dates de nature différente par colonnes dans les tables mais plutôt faire une table de dates avec un type (jusqu'ici à chaque nouvelle date, on ajoute une colonne) ![]() C'est d'ailleurs mon propos ici : apprendre à faire au moins mieux, établir des bonnes pratiques et construire des fondations solides pour notre produit. Et je vous remercie d'y contribuer activement ! [/HS] |
||||
|
|
00
|
|
|
#31 | |||
![]() ![]() |
Le MCD me semble pas mal.
Je me demande juste si le modèle que j'ai donné pour la hiérarchie des groupes es t compatible avec la modélisation en arbre intervallaire. À tester. Citation:
Citation:
Les seuls cas où on a vraiment besoin de créer un calendrier de dates, c'est quand on gère des notions de planning ou de statistiques par jour/semaine/mois/année... car les tables de données ne couvrent pas obligatoirement toutes les dates possibles. Il y a aussi le cas des dates partielles qui s'évère délicat mais c'est un autre sujet auquel je suis confronté pour un projet personnel actuellement en sommeil. Citation:
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
|||
|
00
|
|
|
#32 | ||||
|
Candidat au titre de Membre du Club
![]() Gratien Inscription : octobre 2009 Messages : 70 ![]() |
Citation:
Citation:
J'utilise donc maintenant une table d'évènements datés et typés. Citation:
Citation:
L'entité aff_groupe et aff_sortie sont des afficheurs. Il ne possèdent pas d'attributs eux même. Lors du passage au MPD, la table générée est donc simplement constituée de la clef de la table afficheur. Dans ces conditions, quel est l'intérêt de ces deux tables ?
|
||||
|
|
00
|
|
|
#33 | ||
![]() ![]() |
Citation:
Effectivement, il faut modéliser les événements qui contiennent entre autres une propriété "date de l'évéenement". Citation:
Reprends le cheminement de la réflexion qui a conduit à la création de ces entités types filles et tu comprendras l'utilité de ces tables.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Autoentrepreneur. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise la suite Linux Mageïa ! |
||
|
00
|
|
|
#34 | |
|
Candidat au titre de Membre du Club
![]() Gratien Inscription : octobre 2009 Messages : 70 ![]() |
Citation:
Je crois que j'ai résolu mon problème. Je tiens à remercier tous les participants et particulièrement Cinephil pour leur aide !
|
|
|
|
00
|
Copyright © 2000-2013 - www.developpez.com