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

- Entrée
- Options
- Retouches

Réarranger
Inverser
Éditer
Révéler
Masquer
Décomposer

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 (script 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).

Ce site est prévu pour une utilisation basique et occasionnelle, typiquement en salle de classe. Si vous travaillez sur des données confidentielles¹, ou souhaitez avoir accès à toutes les fonctionnalités de Mocodo, vous pouvez, soit l'importer sous Basthon, soit l'installer sur votre ordinateur :

    > pip install mocodo

Sous cette dernière forme, Mocodo est un puissant logiciel en ligne de commande, multiplateforme, open-source, libre et gratuit. Il s'intègre particulièrement bien à l'environnement Jupyter Notebook.

Pour en savoir plus, suivez nos tutoriels interactifs (onglet Entrée), puis plongez-vous dans la documentation.

Aristide Grange, Université de Lorraine, Metz (France)

¹ Ce site stocke dans votre navigateur un cookie non soumis à obligation de consentement préalable qui lui permet de retrouver vos réglages de l'onglet Options. Côté serveur, il stocke le dernier état de votre travail afin de le mettre à votre disposition sous forme d'archive téléchargeable. Ce dossier est détruit au bout de 24 heures. Pour le détruire dès la fin d'une session, effacez le texte d'entrée et pressez le bouton de rafraîchissement. Sous Basthon ou en local, rien ne quitte votre ordinateur.

: : classement_equipe: sont_classes, ON equipe, ON classement_equipe: rang : : est_lie_a, 0N [composée] classement, 0N [composante] classement: quantité classement: idclassement, nom, portee /X\ classement -> classement_equipe, classement_individuel equipe: idequipe, nom est_membre, 11 joueur, 1N equipe : : : classement_individuel: est_classe, ON joueur, ON classement_individuel: rang joueur: idjoueur, nom, prenom, pseudo, annee_nais, email participe, 1N phase, 1N joueur: a_joue, est_qualifie : : : : : phase: niveau, date_p : : : : : a_pour_cadre, 1N tournoi, _11 phase : : : : : tournoi: idtournoi, nom, date_deb, date_fin
:
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
:
:
:
phase: niveau, date_p
:
:
:
:
:
a_pour_cadre, 1N tournoi, _11 phase
:
:
:
:
:
tournoi: idtournoi, nom, date_deb, date_fin
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
Police et proportions
Palette de couleurs
Mode nuit
Ajustement de la largeur des libellés
Détection des chevauchements
Format des images en sortie
SVG PNG PDF
Conversions en sortie

- Lien de partage du MCD
- Diagramme relationnel en Mocodo, clés étrangères
- Schéma relationnel expliqué
- Script SQL de création des tables, libellés en
Autres options de conversions…
- Dictionnaire des données sur deux colonnes
- Dictionnaire des données sur trois colonnes
- Graphe des dépendances pour Graphviz
- Schéma relationnel en texte brut
- Schéma relationnel en LaTeX
- Schéma relationnel en Markdown
- Diagramme de classes UML pour PlantUML
- Définition de la base en DBML

Utilisation avancée
Découvrir…

- Tutoriel (2/2)
- Entité faible (ou identification relative), cardinalités notées
- Agrégation (ou pseudo-entité) / CIF
- Contraintes d'unicité et d'optionalité
- Autoriser les identifiants supplémentaires dans les associations
- Reproductibilité des tirages pseudo-aléatoires
- Masquage et génération aléatoire
- Décomposition d'associations

Bibliothèque de MCD
Coordonnées du centre des boîtes
CLASSEMENT_EQUIPE
SONT_CLASSES
EST_LIE_A
CLASSEMENT
CLASSEMENT_PARENT_#1
EQUIPE
EST_MEMBRE
CLASSEMENT_INDIVIDUEL
EST_CLASSE
JOUEUR
PARTICIPE
PHASE
A_POUR_CADRE
TOURNOI
Décalage des cardinalités
SONT_CLASSES,EQUIPE,0
SONT_CLASSES,CLASSEMENT_EQUIPE,0
EST_LIE_A,CLASSEMENT,-1_0
EST_LIE_A,CLASSEMENT,1_0
EST_MEMBRE,JOUEUR,0
EST_MEMBRE,EQUIPE,0
EST_CLASSE,JOUEUR,0
EST_CLASSE,CLASSEMENT_INDIVIDUEL,0
PARTICIPE,PHASE,0
PARTICIPE,JOUEUR,0
A_POUR_CADRE,TOURNOI,0
A_POUR_CADRE,PHASE,0
Zone de rognage
Position des flèches des associations
CLASSEMENT_PARENT_#1 / CLASSEMENT_EQUIPE
CLASSEMENT_PARENT_#1 / CLASSEMENT_INDIVIDUEL

- Diagramme
- Autres sorties
- Erreurs

Rafraîchir
Télécharger
⧉ Lien de partage du MCD

    https://www.mocodo.net/?mcd=eNplUUlOAzEQvPsV_QAj4OoDTwhXJEBWZ9yBRjO24yV_yjvyMXrsDDiK5uBeqkrVNUYZNc2YMy3ki6Vj5UhG5SBNn2cNrzvoi1bewyGh_xIhoxTlYmcmixqedvA-hSWGfDnT50AbV-jLzc7AscqMy-Wsxim7ke_DoiGGVIjU49vHwIeHl3uDehyxd3xiV2lWm312G06E2wkLLfsk_fMz_IRKNUm5hbCeaW5j-9c0jd5XLa2NfhvcQOjhddhqZSP0GxP1N1N1QQN6T2Q9svwVWpBnFTEVnpp5cRi_MfdqE0S7VoIWWxLtzAem7r9_jWHA84mwanBYyMYRgDaGmuyELnXlIq0PrMFKOo0-wq_b9ZI_YDuhKTvaX6sD-1-9mdsl

⧉ Script SQL de création des tables

    -- Generated by Mocodo 4.2.4

    CREATE TABLE classement (
      PRIMARY KEY (idclassement),
      idclassement VARCHAR(42) NOT NULL,
      nom          VARCHAR(42),
      portee       VARCHAR(42)
    );

    CREATE TABLE classement_equipe (
      PRIMARY KEY (idclassement),
      idclassement VARCHAR(42) NOT NULL
    );

    CREATE TABLE classement_individuel (
      PRIMARY KEY (idclassement),
      idclassement VARCHAR(42) NOT NULL
    );

    CREATE TABLE equipe (
      PRIMARY KEY (idequipe),
      idequipe VARCHAR(42) NOT NULL,
      nom      VARCHAR(42)
    );

    CREATE TABLE est_classe (
      PRIMARY KEY (idjoueur, idclassement),
      idjoueur     VARCHAR(42) NOT NULL,
      idclassement VARCHAR(42) NOT NULL,
      rang         VARCHAR(42)
    );

    CREATE TABLE est_lie_a (
      PRIMARY KEY (idclassement_composee, idclassement_composante),
      idclassement_composee   VARCHAR(42) NOT NULL,
      idclassement_composante VARCHAR(42) NOT NULL,
      quantite                VARCHAR(42)
    );

    CREATE TABLE joueur (
      PRIMARY KEY (idjoueur),
      idjoueur   VARCHAR(42) NOT NULL,
      nom        VARCHAR(42),
      prenom     VARCHAR(42),
      pseudo     VARCHAR(42),
      annee_nais VARCHAR(42),
      email      VARCHAR(42),
      idequipe   VARCHAR(42) NOT NULL
    );

    CREATE TABLE participe (
      PRIMARY KEY (idtournoi, niveau, idjoueur),
      idtournoi    VARCHAR(42) NOT NULL,
      niveau       VARCHAR(42) NOT NULL,
      idjoueur     VARCHAR(42) NOT NULL,
      a_joue       VARCHAR(42),
      est_qualifie VARCHAR(42)
    );

    CREATE TABLE phase (
      PRIMARY KEY (idtournoi, niveau),
      idtournoi VARCHAR(42) NOT NULL,
      niveau    VARCHAR(42) NOT NULL,
      date_p    VARCHAR(42)
    );

    CREATE TABLE sont_classes (
      PRIMARY KEY (idequipe, idclassement),
      idequipe     VARCHAR(42) NOT NULL,
      idclassement VARCHAR(42) NOT NULL,
      rang         VARCHAR(42)
    );

    CREATE TABLE tournoi (
      PRIMARY KEY (idtournoi),
      idtournoi VARCHAR(42) NOT NULL,
      nom       VARCHAR(42),
      date_deb  VARCHAR(42),
      date_fin  VARCHAR(42)
    );

    ALTER TABLE classement_equipe ADD FOREIGN KEY (idclassement) REFERENCES classement (idclassement);

    ALTER TABLE classement_individuel ADD FOREIGN KEY (idclassement) REFERENCES classement (idclassement);

    ALTER TABLE est_classe ADD FOREIGN KEY (idclassement) REFERENCES classement_individuel (idclassement);
    ALTER TABLE est_classe ADD FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur);

    ALTER TABLE est_lie_a ADD FOREIGN KEY (idclassement_composante) REFERENCES classement (idclassement);
    ALTER TABLE est_lie_a ADD FOREIGN KEY (idclassement_composee) REFERENCES classement (idclassement);

    ALTER TABLE joueur ADD FOREIGN KEY (idequipe) REFERENCES equipe (idequipe);

    ALTER TABLE participe ADD FOREIGN KEY (idjoueur) REFERENCES joueur (idjoueur);
    ALTER TABLE participe ADD FOREIGN KEY (idtournoi, niveau) REFERENCES phase (idtournoi, niveau);

    ALTER TABLE phase ADD FOREIGN KEY (idtournoi) REFERENCES tournoi (idtournoi);

    ALTER TABLE sont_classes ADD FOREIGN KEY (idclassement) REFERENCES classement_equipe (idclassement);
    ALTER TABLE sont_classes ADD FOREIGN KEY (idequipe) REFERENCES equipe (idequipe);

    Mocodo Err.29 - Mauvaise disposition des boîtes :
      - La patte « EST_MEMBRE — JOUEUR » chevauche « PARTICIPE ».
      - La patte « PARTICIPE — PHASE » chevauche « CLASSEMENT_EQUIPE ».
      - Les pattes  « PARTICIPE — JOUEUR » et « EST_MEMBRE — JOUEUR » se chevauchent.
    Pour corriger cela, réordonnez et/ou sautez des lignes dans le texte-source, soit à la
    main, soit à l'aide de l'option -t arrange (tablette de chocolat sous Mocodo online).

1
2
niveau local
nom local
1N local
classement_equipe local
annee_nais local
ON local
sont_classes local
prenom local
rang local
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה