Bonjour,
Ici l'auteur de Mocodo (https://www.mocodo.net/).
Merci de vos critiques concernant l'exemple d'utilisation du logiciel donné dans le Readme de son dépôt GitHub (https://github.com/laowantong/mocodo).
Il est vrai que j'y donnais quelque peu des verges pour me faire battre
Ce MCD est tiré de l'exposé « survol » que je fais dans la première demi-heure de mon tout premier cours d'intro aux bases de données pour donner aux étudiants une idée de ce qui les attend (modélisation conceptuelle, passage au relationnel, algèbre relationnelle, SQL en 30 heures). La diapo précédente présente une demi-douzaine de règles de gestion (dont, comme l'a deviné Escartefigue, celle stipulant qu'un prof peut faire subir des examens oraux à des étudiants qui ne sont pas les siens). Les suivantes reprennent ces règles en les faisant apparaître une à une à proximité de leur « traduction » dans le MCD. À ce stade du cours, il est clair que mon but n'est pas de produire un MCD réaliste, juste de montrer à quoi ressemble un MCD. En particulier, modéliser par une association quadruple un examen a des avantages dans le contexte (avoir autre chose que des associations binaires, ne pas encombrer la diapo), mais des conséquences embarrassantes hors contexte.
Quand je me suis décidé à publier mon petit logiciel, il y a plus de dix ans, je n'ai pas réfléchi davantage : j'ai repris tel quel cet exemple, sans tout ce qu'il y avait autour (un prof, un public, un énoncé, des objectifs et contraintes), alors que mon but était tout autre : illustrer le fonctionnement de Mocodo sur un cas présentant une certaine variété, sans pour autant divulguer la solution d'un exercice que je serais susceptible de proposer en TD ou en examen
Ceci dit, Mocodo ayant pas mal évolué entre-temps, ça faisait plusieurs années que je me disais vaguement que je devais trouver un meilleur exemple (comportant notamment une association réflexive et une entité faible). En tombant sur votre discussion ce matin, mon sang n'a fait qu'un tour, et j'ai vu que le moment était arrivé de signifier son congé à ce vieux MCD bizarre (que les professionnels des BD détestent !). Et curieusement, c'est une très ancienne intervention de ce même fsmrel sur ce même forum qui m'a fourni la solution : le diagramme ER de l'article fondateur de Chen (1976), que j'avais oublié depuis presque aussi longtemps. Outre sa compacité et sa richesse (entité faible, association multiple, association réflexive, plusieurs associations entre deux mêmes entités), il n'a pas besoin d'explications (ou sinon, on les trouve dans l'article).
Je n'arrive pas à joindre d'image (peut-être parce que je viens de m'inscrire sur ce forum), mais le Readme est à jour sur GitHub. Si vous y voyez d'autres erreurs, merci de me les signaler.
Je me pose tout de même des questions à propos de l'une de vos remarques : en quoi identifier Catégorie par « code catégorie » est-il une anomalie ? Est-ce le mot « code » qui a des connotations que j'ignore ? En quoi est-ce différent d'identifier Intervention par « code intervention » dans l'exemple de Looping (https://www.looping-mcd.fr/#) ?
Enfin, concernant vos interrogations sur les fonctionnalités de Mocodo :
- quels contrôles sont faits : si vous parlez des contrôles de la validité du MCD, voici une liste des messages d'erreur (https://gist.github.com/laowantong/7...2a747fb6ae2395) qui vous permettra de vous faire une idée ;
- quelles contraintes sont implémentées : aucune, je pense, en tout cas pas les CIF en tant que telles ;
- quels SGBD sont compatibles : si vous voulez parler des dialectes SQL pris en charge en sortie, actuellement c'est MySQL, Oracle, Postgres et SQLite. Ça se fait normalement sans programmation, par le biais de fichiers de configuration. Mais j'avoue que c'est un coin de Mocodo que je ne fréquente guère, et qui aurait sans doute besoin d'un bon coup de balai ;
- peut on mettre en œuvre l'identification relative : oui, je pense, mais je l'appelle « entité faible » et la représente par défaut de façon non standard ;
- peut on paramétrer la codification des objets : je ne sais pas ce que c'est, donc sans doute pas ;
- versionner les modèles : je délègue ça à Git, étant donné que Mocodo ne prend que du texte en entrée.
Désolé en tout cas que l'approche que j'ai adoptée soit déroutante. Mes connaissances et, je l'avoue, ma passion pour les bases de données sont très limitées. À l'origine, je voulais juste pouvoir générer des schémas esthétiquement plaisants (vectoriel) pour illustrer mon cours, et le faire de façon purement textuelle (l'éditeur de texte est mon outil de prédilection). De fil en aiguille, j'ai ajouté des fonctionnalités plus intéressantes (comme le passage au relationnel ou le réarrangement automatique), et à un moment où j'avais trop de temps libre j'ai fini par publier tout ça, m'exposant ainsi aux quolibets, mais me donnant aussi l'occasion de me dégrossir. Comme mon but initial était de répondre à mes problématiques d'enseignant, il y a sans doute quelques collègues à qui ça a parlé, et qui se sont mis à l'utiliser. Ça m'a valu plusieurs demandes de fonctionnalités qui dépassaient largement le cadre de mon cours d'intro. Après avoir fait la sourde oreille pendant des années, j'en ai ajouté quelques-unes l'été dernier : en gros, l'agrégation et l'héritage. Mais clairement, Mocodo n'a pas d'ambitions professionnelles, et ne sortira jamais d'un cadre pédagogique élémentaire (une dizaine d'entités).
Merci de votre compréhension, et bonne journée.
Partager