Aller au contenu

UGA - MIASHS - S7 - BDD - Pierre Blarre

MLD : SQL DDL

Icône Présentation
1 / 1

Il est possible de générer du code SQL DDL (Data Definition Language) à partir de fichiers DBML.

Les développeurs de DBML proposent un outil en ligne de commande pour :

  • générer du code SQL DDL à partir de fichiers DBML.
  • générer des fichiers DBML à partir de bases de données existantes.

https://dbml.dbdiagram.io/cli

Installation

  1. Ouvrez un terminal à la racine de votre projet.
  2. Assurez-vous que Node.js et npm sont installés sur votre machine :
Fenêtre de terminal
node -v
# v22.8.0
npm -v
# 10.8.2

Si Node.js n’est pas installé, téléchargez et installez-le depuis https://nodejs.org/ (npm est généralement installé avec Node.js).

  1. Si ce n’est pas déjà fait, toujours à la racine de votre projet, initialisez un projet Node.js :
Fenêtre de terminal
npm init -y
  1. Installez l’outil CLI de DBML :
Fenêtre de terminal
npm install @dbml/cli

Utilisation

Pour générer le code SQL DDL à partir d’un fichier DBML, utilisez la commande dbml2sql suivie du nom du fichier DBML, puis d’un nom de fichier de sortie précédé de l’option -o :

Fenêtre de terminal
npx dbml2sql boutique-schema.dbml -o boutique-schema.sql

Si on souhaite cibler MySQL plutôt que Postgres, on peut ajouter l’option --mysql :

Fenêtre de terminal
npx dbml2sql boutique-schema.dbml -o boutique-schema.sql --mysql

Résultat :

boutique-schema.sql
-- SQL dump generated using DBML (dbml.dbdiagram.io)
-- Database: MySQL
-- Generated at: 2025-02-13T08:41:01.102Z
CREATE TABLE `Client` (
`id` int PRIMARY KEY AUTO_INCREMENT COMMENT 'Identifiant unique du client',
`nom` varchar(255) UNIQUE NOT NULL COMMENT 'Nom du client',
`adresse` text COMMENT 'Adresse du client'
);
CREATE TABLE `Commande` (
`id` int PRIMARY KEY AUTO_INCREMENT COMMENT 'Identifiant unique de la commande',
`date` date DEFAULT (now()) COMMENT 'Date de la commande au format YYYY-MM-DD HH:MM:SS',
`client_id` int COMMENT 'Identifiant du client'
);
CREATE TABLE `CommandeDetail` (
`commande_id` int COMMENT 'Identifiant de la commande',
`produit_id` int COMMENT 'Identifiant du produit',
`quantite` int DEFAULT 1 COMMENT 'Quantité de produit',
PRIMARY KEY (`commande_id`, `produit_id`)
);
CREATE TABLE `Produit` (
`id` int PRIMARY KEY AUTO_INCREMENT COMMENT 'Identifiant unique du produit',
`label` varchar(255) UNIQUE NOT NULL COMMENT 'Nom du produit',
`description` text NOT NULL COMMENT 'Description du produit',
`prix` decimal DEFAULT 1 COMMENT 'Prix unitaire du produit, en euros, avec 2 chiffres après la virgule, ex: 12.34, doit être >= 0'
);
ALTER TABLE `Commande` ADD FOREIGN KEY (`client_id`) REFERENCES `Client` (`id`);
ALTER TABLE `CommandeDetail` ADD FOREIGN KEY (`commande_id`) REFERENCES `Commande` (`id`);
ALTER TABLE `CommandeDetail` ADD FOREIGN KEY (`produit_id`) REFERENCES `Produit` (`id`);

Importation dans un SGBD

MySQL

Dans un terminal, connectez-vous à votre SGBD MySQL (Pensez à remplacer root par votre nom d’utilisateur si besoin) :

Fenêtre de terminal
mysql -u root -p
Suppression et création de la base de données

Supprimez la base de données si elle existe déjà :

DROP DATABASE IF EXISTS boutique;

Créez une base de données :

CREATE DATABASE boutique;

Sélectionnez la base de données :

USE boutique;

Quitter le client MySQL :

exit;
Importation du fichier SQL
Commandes générales

Pour importer des fichiers SQL directement dans une base de données MySQL, on pourra utiliser les commandes suivantes :

Pour Linux et MacOS :

mysql -u[username] -h[localhost] -p [database-name] < my-database.sql

Pour Windows, dans un terminal PowerShell :

type my-database.sql | mysql -u[username] -h[localhost] -p [database-name]
Commandes pour la base de données boutique

Importez le fichier SQL (encore une fois, pensez à remplacer root par votre nom d’utilisateur si besoin) :

Sur Linux et MacOS :

Fenêtre de terminal
mysql -u root -p boutique < boutique-schema.sql

Sur Windows, dans un terminal PowerShell :

Fenêtre de terminal
type boutique-schema.sql | mysql -u root -p boutique

Conclusion

Vous avez maintenant généré du code SQL DDL à partir d’un fichier DBML et importé ce code dans votre SGBD.

Dans la prochaine section, nous allons nous connecter à la base de données et explorer son contenu.