mocodo
mocodo copied to clipboard
[suggestion] ajouter l'héritage
Bonjour, une des principales avancées de Merise 2 est la possibilité pour plusieurs entités d'hériter des attribut d'une entité mère. Il serait intéressant d'ajouter cette fonctionnalité au logiciel. edit: en l'absence des triangles pour joindre plusieurs héritages d'une même trace, je n'ai pas de suite percuté comme quoi l'héritage y était déjà '^
Je rouvre l'issue. Mocodo ne gère pas l'héritage pour le moment, mais ça fait partie des développements souhaitables. Il faudrait déjà étendre la syntaxe de façon sympathique, puis gérer le passage au relationnel.
mais alors pourquoi mettre des flèches s'il n'y a pas d'héritage?
Par exemple pour préciser la sémantique d'une association réflexive non symétrique.
mais la symétrie n'influe pas sur la génération du MLD, si?
non
Salut tout le monde ! Comme cette issue est référencée sur le web, je vous propose d'ajouter l'héritage dans Mocodo, cela avec quelque petit modif toute simple, voir mon fork. ChristopherSonntag/mocodo
@ChristopherSonntag Super! bravo pour cet ajout qui tire brillamment parti de la syntaxe existante. Pour référence, je copie ici votre exemple de MCD, ainsi que son texte-source:
AnnéeCulturale : id, annéeDébut, annéeFin
AnnéeCulturaleIlot, 0n AnnéeCulturale, _11 Ilot
Ilot : num, emplacement
IlotContient, 0n Ilot, _11 Parcelle
ParcelleExploitation : code
TypeSemance : code, libellé
DF, 0n TypeSemance, 11 Parcelle
:
Parcelle : num, surface, emplacement, qteObjectif, qteRéalisé
T1, XX> Parcelle, XX ParcelleTiers, XX ParcelleExploitation
TypeApport : code, libellé, nature
CIF, 0n TypeApport, _11 Apport
Apport : num, _date, qteProduitEpanduParHa, qteTotaleEpandu
ApportDeLaParcelle, 0n Parcelle, _11 Apport
ParcelleTiers : nom, prenom
:
:
XT2, XX> Apport, XX ApportMinéral, XX ApportOrganique
:
ApportMinéral : num
:
ApportOrganique : num
Si j'ai bien compris, pour l'instant, vous traitez seulement l'aspect graphique, n'est-ce pas? Vos calculs me donneront en tout cas un bon point de départ lorsque j'attaquerai le problème dans son ensemble, avec les contraintes de spécialisation/généralisation, mais aussi celles sur les associations, et bien sûr le passage au relationnel, qui est loin d'être évident avec ces extensions. D'ici là, votre travail évitera certainement aux utilisateurs les plus avancés de devoir retoucher manuellement le SVG sous Inkscape.
Merci en tout cas pour votre partage.
Je précise qu'en pratique le passage de l'héritage du MCD au MLD se traduit par la reprise dans l'entité "fille" de la clé de la "mère" comme clé primaire. En revanche, l'attribut n'est pas dupliqué dans le MCD ( d'après Merise Guide pratique, 2ieme édition de Jean-Luc Baptiste).
Les entités filles n'ont donc pas de clé primaire dans le MCD, celles-ci sont générées dans le MLD .
Bien vu @JulienAMOURIQ Je n’ai fait qu'une rapide modification. Je crois qu'en effet il faudrait revoir d'avantage le code de Mocodo pour ajouter le concept d’héritage. Il y a aussi l’héritage simple (sans X, XT ou T) à ajouter, que je n'ai pas ajouté... Dès que j’aurais du temps, je verrai ce que je peux faire en contrepartie… mais je pense que l’équipe de Mocodo est plus qualifiée ! Python-ment !
L'équipe est réduite à une personne, et qui plus est ignorante de Merise 2 ;) J'ai développé Mocodo pour générer des figures propres dans mon cours d'introduction aux BD, où je ne vais pas plus loin que Merise 1.
Merci à Julien pour la référence bibliographique. Je mettrai un mot ici quand je commencerai à travailler sur ces extensions. Votre expertise à tous deux sera certainement la bienvenue.
Ok, à dans un avenir proche j'espère, dès que vous commencez les extensions ;-).
Il y a peut-être quelques améliorations à faire dans le "texte-source". Dire qu’une table hérite d’une autre pourrait avoir sa propre balise ?
Aussi, mais je pense qu’il existe un autre thread à ce sujet, la convention de nommage des associations est un peu restreinte. Je trouve ça gênant de devoir rajouter un suffixe (1,2, 3, …) pour en ajouter plusieurs de même nom. Il va de soi que lors de la génération des tables cela peut avoir son intérêt surtout pour les association multiple (N, N) car sinon il y aurait des conflits lors de la création de table.
A vrai dire, c'est une contrainte de Merise qui interdit d'avoir plusieurs entités/attributs/associations ayant le même nom. Les noms d'entités devant être en majuscules, et les noms d'association en minuscules.
Sans doute faudrait-il prévoir une syntaxe pour les héritages.
Préférez l'usage de "+" pour la partition au lieu d' "XT" (même si cette écriture n'est pas incorrecte - autant utiliser les symboles prévus ^^ ), tjrs d'après mon bouquin p131-132.
Bonjour, 3 ans ce sont écooulés depuis le dernier le post. Quand est il aujourd'hui de l'héritage avec mocodo ?
Bonjour,
L'héritage ne semble pas fonctionner
est-ce normal ?
Dans la branche principale, c'est normal, l'héritage n'est pas pris en charge. J'ai fait une PR qui ajoute l'héritage ici : https://github.com/laowantong/mocodo/pull/52. J'espère trouver le temps de finaliser ça début 2022.
Finalement je suis parti sur d'autres idées pour la syntaxe. La version 3.0 prend en charge l'héritage. Documentation ici.