MLD → MPD (SQL)
Le MPD traduit le MLD en ordres CREATE TABLE pour un SGBD précis, avec les types de colonnes, les contraintes et les index. C'est à ce niveau que le modèle devient une base qui fonctionne.
- MPD
- CREATE TABLE
- types
- index
- DDL
Syntaxe
CREATE TABLE nom_table ( colonne TYPE [NOT NULL] [UNIQUE] [CHECK (condition)], …, PRIMARY KEY (colonnes), FOREIGN KEY (colonne) REFERENCES autre_table (colonne));CREATE INDEX nom_index ON nom_table (colonne);Exemple
-- MLD : client(num_client PK, nom, email)-- commande(num_commande PK, date_commande, num_client FK → client)CREATE TABLE client ( num_client INTEGER PRIMARY KEY, nom TEXT NOT NULL, email TEXT UNIQUE);CREATE TABLE commande ( num_commande INTEGER PRIMARY KEY, date_commande TEXT NOT NULL, -- date ISO 'AAAA-MM-JJ' en SQLite num_client INTEGER NOT NULL REFERENCES client (num_client));CREATE INDEX idx_commande_client ON commande (num_client);-- Résultat : 2 tables et 1 index. Retrouver les commandes d'un client,-- seul ou par jointure, passe par l'index (EXPLAIN QUERY PLAN affiche-- SEARCH commande USING INDEX idx_commande_client) au lieu de-- parcourir toute la table commande.À retenir
- Les types dépendent du SGBD : SQLite, le moteur du playground, a des types souples (INTEGER, TEXT, REAL) ; PostgreSQL distingue VARCHAR, NUMERIC, DATE, TIMESTAMPTZ…
- Créez les tables parentes avant celles qui les référencent, et supprimez-les dans l'ordre inverse.
- Indexez les clés étrangères : la clé primaire est indexée automatiquement, la clé étrangère non, alors qu'elle sert à chaque jointure.
- Piège : stocker des montants en virgule flottante (REAL). 0.1 + 0.2 ne vaut pas exactement 0.3 ; utilisez NUMERIC(10,2) en PostgreSQL, ou des centimes entiers en SQLite.
Voir aussi
- Notation MLDLe MLD s'écrit en notation textuelle : table, puis colonnes entre parenthèses, clé primaire soulignée et clé étrangère précédée de #. Le studio MLD remplace ces signes par des badges PK et FK.
- Contraintes d'intégritéNOT NULL, UNIQUE, CHECK et les clés étrangères traduisent les règles de gestion dans le SGBD, qui refuse alors les données incohérentes quelle que soit l'application qui les écrit.
- Clé étrangère (FK)Une clé étrangère est une colonne qui reprend la clé primaire d'une autre table pour matérialiser un lien du MCD. Le SGBD vérifie alors que la ligne référencée existe bien.
- Vérifier son MLDAvant d'écrire le SQL, on relit le MLD avec une grille : entités et associations toutes traduites, clés étrangères du bon côté, formes normales respectées et données d'essai réalistes.