Skip to main content

Modélisation Conceptuelle de Données. Nickel. Ni souris.

Project description

Octobre 2023. Mocodo 4 introduit la gestion manuelle et automatique des contraintes d'optionalité et d'unicité, améliore les interfaces graphique et en ligne de commande, et ajoute un grand nombre de fonctionnalités : coloration syntaxique, liens de partage, exportation en UML, en notation de Chen et crow's foot, génération de MCD aléatoires, décomposition des associations et autres opérations de réécriture.

Septembre 2022. Mocodo 3 introduit l'héritage, l'agrégation, les calques, les sorties PDF et PNG, etc. : 3.0, 3.1, 3.2.


Documentation sur une seule page, incluant la sortie de mocodo --help et l'aide-mémoire des transformations.


Mocodo est un logiciel d'aide à l'enseignement et à l'apprentissage des bases de données relationnelles.

  • En entrée, il prend un MCD (modèle conceptuel de données) décrit dans un langage dédié minimaliste.
  • En sortie, il produit un diagramme entité-association et, à la demande, un MLD (schéma relationnel, sous forme graphique ou textuelle), un DDL (requêtes SQL de création de la base), un diagramme de classes UML, etc.
  • En bonus, il est capable de réarranger automatiquement votre MCD de façon esthétique, et de lui appliquer des opérations de réécriture qui vont du mondain (typographie) à l'académique (décomposition d'associations), en passant par le merveilleux (inférence de types, génération d'exercices et d'exemples).

Vous pouvez utiliser Mocodo :

Tracé du modèle conceptuel

Ci-dessous, un exemple d'utilisation sous Jupyter Notebook. L'appel du programme est en première ligne ; le texte-source proprement dit, lignes suivantes. En sortie, le diagramme conceptuel, égayé au passage par l'option --colors :

png

svg

Opérations de conversion

On peut récupérer ce texte-source avec --input pour lui appliquer diverses opérations. Ainsi, l'appel suivant génère et affiche son MLD, son diagramme relationnel et son DDL :

%mocodo --input ccp --transform mld diagram ddl --colors desert

  • CLIENT (Réf. client, Nom, Prénom, Adresse)
  • COMMANDE (Num. commande, Date, Montant, #Réf. client)
  • INCLURE (#Num. commande, #Réf. produit, Quantité)
  • PRODUIT (Réf. produit, Libellé, Prix unitaire)

svg


CREATE TABLE CLIENT (
  PRIMARY KEY (ref_client),
  ref_client VARCHAR(8) NOT NULL,
  nom VARCHAR(255),
  prenom VARCHAR(255),
  adresse VARCHAR(255)
);

CREATE TABLE COMMANDE (
  PRIMARY KEY (num_commande),
  num_commande VARCHAR(8) NOT NULL,
  date DATE,
  montant DECIMAL(10,2),
  ref_client VARCHAR(8) NOT NULL
);

CREATE TABLE INCLURE (
  PRIMARY KEY (num_commande, ref_produit),
  num_commande VARCHAR(8) NOT NULL,
  ref_produit VARCHAR(8) NOT NULL,
  quantite INTEGER
);

CREATE TABLE PRODUIT (
  PRIMARY KEY (ref_produit),
  ref_produit VARCHAR(8) NOT NULL,
  libelle VARCHAR(50),
  prix_unitaire DECIMAL(10,2)
);

ALTER TABLE COMMANDE ADD FOREIGN KEY (ref_client) REFERENCES CLIENT (ref_client);

ALTER TABLE INCLURE ADD FOREIGN KEY (ref_produit) REFERENCES PRODUIT (ref_produit);
ALTER TABLE INCLURE ADD FOREIGN KEY (num_commande) REFERENCES COMMANDE (num_commande);

Dans la suite, pour épargner la frappe, les options --input et --transform seront respectivement abrégées en -i et -t.

Les opérations de conversion ne se limitent pas forcément au schéma relationnel. En voici une qui extrait un dictionnaire des données, par défaut sous la forme d'un tableau Markdown à trois colonnes :

%mocodo -i ccp -t data_dict

Entité ou association Libellé de l'attribut Type
CLIENT Adresse VARCHAR(255)
" Nom VARCHAR(255)
" Prénom VARCHAR(255)
" Réf. client VARCHAR(8)
COMMANDE Date DATE
" Montant DECIMAL(10,2)
" Num. commande VARCHAR(8)
INCLURE Quantité INTEGER
PRODUIT Libellé VARCHAR(50)
" Prix unitaire DECIMAL(10,2)
" Réf. produit VARCHAR(8)

Une autre qui transcrit le MCD dans la notation crow's foot (crow) pour Mermaid (mmd) :

%mocodo -i ccp -t crow:mmd

erDiagram
  CLIENT {
    VARCHAR(8) ref_client PK
    VARCHAR(255) nom
    VARCHAR(255) prenom
    VARCHAR(255) adresse
  }
  COMMANDE {
    VARCHAR(8) num_commande PK
    DATE date
    DECIMAL(10-2) montant
  }
  INCLURE {
    INTEGER quantite PK
  }
  PRODUIT {
    VARCHAR(8) ref_produit PK
    VARCHAR(50) libelle
    DECIMAL(10-2) prix_unitaire
  }
  CLIENT ||--o{ COMMANDE: PASSER
  INCLURE }|..|| COMMANDE: DF
  INCLURE }o..|| PRODUIT: DF

Le rendu des diagrammes décrits dans des langages-tiers (comme Mermaid) n'est pas directement pris en charge, mais peut être délégué (--defer) de façon transparente au service web approprié. Dans ce cas, c'est la sortie graphique qui est affichée :

%mocodo -i ccp -t crow:mmd --defer

svg

Opérations de réécriture

Une réécriture transforme un MCD Mocodo en un autre MCD Mocodo (au contraire d'une conversion, qui produit un animal d'une espèce différente).

Heureusement, l'utilisateur n'a pas à réfléchir si la transformation qu'il souhaite appliquer est une réécriture ou une conversion : dans les deux cas, il invoque -t (c'est-à-dire --transform), et Mocodo se débrouille.

En guise de premier exemple de réécriture, mettons les noms des entités et associations (boxes) en majuscules, et les libellés (labels) en ASCII et snake case :

%mocodo -i ccp -t upper:boxes ascii:labels snake:labels --colors brewer+3

svg


%%mocodo --colors brewer+3
CLIENT: ref_client [VARCHAR(8)], nom [VARCHAR(255)], prenom [VARCHAR(255)], adresse [VARCHAR(255)]
PASSER, 0N CLIENT, 11 COMMANDE
COMMANDE: num_commande [VARCHAR(8)], date [DATE], montant [DECIMAL(10,2)]
INCLURE, 1N COMMANDE, 0N PRODUIT: quantite [INTEGER]
PRODUIT: ref_produit [VARCHAR(8)], libelle [VARCHAR(50)], prix_unitaire [DECIMAL(10,2)]

Remarquez que l'exécution d'une réécriture affiche, au-dessous du diagramme, le code-source résultant. Celui-ci est précédé de la commande magique originale, privée de l'option -i et de toute opération de réécriture. Ces dispositions permettent de continuer à travailler directement dessus si on le copie-colle dans une autre cellule.

Plusieurs opérations de réécriture de nature sémantique sont également offertes. Par exemple, on peut décomposer un MCD quelconque en un MCD équivalent, mais n'employant que des dépendances fonctionnelles et des entités faibles :

%mocodo -i ccp --select mcd -t explode:weak,arity=2 arrange:wide --seed=3 --colors brewer+3

svg

Notez la sous-option arrange:wide. Elle a procédé à une réorganisation aléatoire des boîtes, ce que l'insertion de deux nouvelles associations de dépendance fonctionnelles avait rendu nécessaire. Quant à l'option --seed=3, elle garantit que le résultat sera le même à chaque exécution.

Pour vous familiariser avec Mocodo, le plus simple est d'utiliser sa version en ligne. Vous pourrez ensuite vous plonger dans la documentation.

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mocodo-4.0.11.tar.gz (274.2 kB view details)

Uploaded Source

Built Distribution

mocodo-4.0.11-py3-none-any.whl (339.1 kB view details)

Uploaded Python 3

File details

Details for the file mocodo-4.0.11.tar.gz.

File metadata

  • Download URL: mocodo-4.0.11.tar.gz
  • Upload date:
  • Size: 274.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.9.13 Darwin/21.6.0

File hashes

Hashes for mocodo-4.0.11.tar.gz
Algorithm Hash digest
SHA256 2305ae6e2b5657b123fa6d89ddcfd86d80b4fe77f19989b492232f9f2f8f7aac
MD5 ece0026eae520299da7d5419ad4c8b3a
BLAKE2b-256 609366c393b11194cffc82981eb90a089a6fa76a50ee21a7c8980ca030e3ec8c

See more details on using hashes here.

Provenance

File details

Details for the file mocodo-4.0.11-py3-none-any.whl.

File metadata

  • Download URL: mocodo-4.0.11-py3-none-any.whl
  • Upload date:
  • Size: 339.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.3.2 CPython/3.9.13 Darwin/21.6.0

File hashes

Hashes for mocodo-4.0.11-py3-none-any.whl
Algorithm Hash digest
SHA256 bfc77d4b248793f3d49f497acc0d1f75eb220eea22c0d58dce9ad9dbafcceca4
MD5 fd8a13afa0b14980eaa0c55f94053fc7
BLAKE2b-256 4c20540d6bf325131f7f6c82f5ba513e0c1f61e447e30a642ba1b63c4e885d04

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page