Tutoriel mocodo

 Dans ce tutoriel, nous allons voir comment utiliser mocodo pour générer le modèle conceptuel de la base de données relationnelle répondant à un cahier de charge. Pour cela nous allons commencer par l’énoncé du problème.

Énoncé :

Une entreprise voudrait lancer un site de mise en vente de voitures sur Internet. Les clients, avant de créer l'annonce doivent s'inscrire d'abord sur le site en donnant leur nom, prénom, un mot de passe, leur numéro de téléphone et leur email. Un code unique est attribué automatiquement au client inscrit. Les voitures mises en vente sont caractérisées par un numéro de matricule, la marque (Mercedes, Renault..), le modèle (Uno, Accent, R19..), l'année de production, le type de carburant (Diesel, Essence) et les options qu'elle a (CD, Clim, Toit ouvrant etc.). Une annonce concerne un client pour une voiture donnée. Un même client peut faire plusieurs annonces concernant plusieurs voitures. On doit noter la date de mise en vente et la date de la vente effective déclarée par le client lui-même. L'entreprise ne s'intéresse pas au client qui a acheté la voiture.

Mocodo peut être utilisé de deux façons : soit utiliser la version online disponible à l’adresse suivante : http://www.mocodo.net/ ou bien télécharger la version installable sur Anaconda, l’URL est https://github.com/laowantong/mocodo.

Procédure :

D’après l’énoncé on peut dégager les entités suivantes :

CLIENT qui a les attributs suivants : ClientID (l’identifiant), NomClient, PrenomClient, MotPasse, Telephone et eMail,

ANNONCE : AnnonceId (l’identifiant)

VOITURE : Immatriculation (l’identifiant), Marque, Modele, AnneeProduction et Carburant,

OPTIONS : OptionId (l’identifiant), DesignationOption.

On identifie aussi les trois associations suivantes :

Fait entre les entités CLIENT et ANNONCE et qui comporte les deux attributs DateAnnonce et DateVente,

Concerne entre les entités ANNONCE et VOITURE,

Comporte entre VOITURE et OPTIONS.

Les cardinalités sont obtenues en remarquant qu’un client peux passer plusieurs annonces, une annonce correspond à un seul client et à une seule voiture. Une voiture ne peut pas apparaître dans plusieurs annonces et peut avoir plusieurs options.

Sur la page web, dans l’onglet Entrée, saisir le texte suivant

 CLIENT: ClientID, NomClient, PrenomClient, MotPasse, Telephone, eMail

Fait, ON CLIENT, 11 ANNONCE: DateAnnonce, DateVente

ANNONCE: AnnonceId

Concerne, 11 ANNONCE, 11 VOITURE:

VOITURE: Immatriculation, Marque, Modele, AnneeProduction, Carburant

Comporte, ON VOITURE, ON OPTIONS

OPTIONS : OptionId, DesignationOption


Cliquer sur le bouton Générer le MCD et les relations à partir du texte d’entrée.




Nous allons maintenant changer le texte déjà tapé pour changer la forme de la sortie
CLIENT: ClientID, NomClient, PrenomClient, MotPasse, Telephone, eMail
:
VOITURE: Immatriculation, Marque, Modele, AnneeProduction, Carburant
Comporte, ON VOITURE, ON OPTIONS

Fait, ON CLIENT, 11 ANNONCE: DateAnnonce, DateVente
ANNONCE: AnnonceId
Concerne, 11 ANNONCE, 11 VOITURE:
OPTIONS : OptionId, DesignationOption

Le « : » créé un espace entre CLIENT et VOITURE. La ligne vide entre la ligne « Comporte, ON VOITURE, ON OPTIONS » et la ligne  « Fait, ON CLIENT, 11 ANNONCE: DateAnnonce, DateVente »

Le nouveau « look » du modèle obtenu est :

Dans l’onglet Options, on peut choisir le SGBD (MySQL, Oracle, PostgreSQL ou SQLite). L’objectif étant de récupérer les requêtes DDL pour créer le schéma sur le SGBD


Si on clique sur l’onglet Relations, on obtient le MDL sous forme de texte et les requêtes SQL


On peut aussi télécharger le résultat sous forme d’un fichier zippé contenant tous les fichiers générés. 


Le nom attribué est celui d’une entité (dans mon cas le fichier s’appelle Voitures.zip



 Voitures.svg est un fichier graphique vectoriel que l’on peut éditer en utilisant Inkscape par exemple



Le fichier Voitures.mcd contient le texte entré

Le fichier Voitures.mld comporte le modèle logique de données

%%mocodo
:
CLIENT: ClientID, NomClient, PrenomClient, MotPasse, Telephone, eMail
:::
VOITURE: Immatriculation, Marque, Modele, AnneeProduction, Carburant
:
Comporte: #Immatriculation->VOITURE->Immatriculation, _#OptionId->OPTIONS->OptionId
:


:::
ANNONCE: AnnonceId, #ClientID->CLIENT->ClientID, DateAnnonce, DateVente, #Immatriculation->VOITURE->Immatriculation
:::
OPTIONS: OptionId, DesignationOption
:
 
Le fichier Voitures_mysql.mql contient les requêtes pour créer les différentes tables ainsi que les contraintes d’intégrités

CREATE DATABASE IF NOT EXISTS `VOITURES` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
USE `VOITURES`;

CREATE TABLE `CLIENT` (
  `clientid` VARCHAR(42),
  `nomclient` VARCHAR(42),
  `prenomclient` VARCHAR(42),
  `motpasse` VARCHAR(42),
  `telephone` VARCHAR(42),
  `email` VARCHAR(42),
  PRIMARY KEY (`clientid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `VOITURE` (
  `immatriculation` VARCHAR(42),
  `marque` VARCHAR(42),
  `modele` VARCHAR(42),
  `anneeproduction` VARCHAR(42),
  `carburant` VARCHAR(42),
  PRIMARY KEY (`immatriculation`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `COMPORTE` (
  `immatriculation` VARCHAR(42),
  `optionid` VARCHAR(42),
  PRIMARY KEY (`immatriculation`, `optionid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `ANNONCE` (
  `annonceid` VARCHAR(42),
  `clientid` VARCHAR(42),
  `dateannonce` VARCHAR(42),
  `datevente` VARCHAR(42),
  `immatriculation` VARCHAR(42),
  PRIMARY KEY (`annonceid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `OPTIONS` (
  `optionid` VARCHAR(42),
  `designationoption` VARCHAR(42),
  PRIMARY KEY (`optionid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

ALTER TABLE `COMPORTE` ADD FOREIGN KEY (`optionid`) REFERENCES `OPTIONS` (`optionid`);
ALTER TABLE `COMPORTE` ADD FOREIGN KEY (`immatriculation`) REFERENCES `VOITURE` (`immatriculation`);
ALTER TABLE `ANNONCE` ADD FOREIGN KEY (`immatriculation`) REFERENCES `VOITURE` (`immatriculation`);
ALTER TABLE `ANNONCE` ADD FOREIGN KEY (`clientid`) REFERENCES `CLIENT` (`clientid`);

Pour générer le diagramme relationnel, on recopie le résultat du modèle logique de donnée dans la zone de texte 


Le diagramme généré est le schéma relationnel. On remarque que les associations Fait et Concerne ont disparu et ont été remplacées par l’ajout de deux clés étrangères #ClientID et #Immatriculation à la table ANNONCE. A cause des cardinalités ON, l’association Comporte est remplacée par une table qui contient les deux clés primaires des deux tables VOITURE et OPTIONS comme clés étrangères.



Commentaires

Posts les plus consultés de ce blog

Calcul des valeurs propres et vecteurs propres sur Excel

How to determine eigenvalues and eignevectors of a matrix in Excel

Analyse de Fourrier sur Excel