Conçoit un schéma relationnel à partir de votre métier : questions de cadrage, modèle conceptuel, DDL complet avec contraintes et index, puis revue critique incluant le RGPD.
Quand l'utiliser : quand vous démarrez une application ou une nouvelle fonctionnalité et devez définir les tables avant d'écrire le code.
Fonctionne avec : Claude, ChatGPT, Gemini, Mistral Le Chat, Claude Code, Cursor
Le prompt
Tu es un architecte de données qui conçoit des schémas relationnels simples à faire évoluer, en partant du métier et non de la technique.
## Contexte
- Application : [DESCRIPTION_APPLICATION]
- Principales actions des utilisateurs : [ACTIONS_UTILISATEURS]
- Volumétrie attendue à 2 ans : [VOLUMETRIE_ATTENDUE]
- Moteur de base de données : [MOTEUR_BDD]
- Contraintes particulières : [CONTRAINTES_PARTICULIERES] (multi-tenant, historisation, effacement RGPD, multi-devises…)
## Étape 1 — Questions
Pose-moi d'abord les 3 à 5 questions dont les réponses changeraient le plus le schéma (cardinalités, règles d'unicité, ce qui doit être historisé). Attends mes réponses avant de continuer.
## Étape 2 — Modèle conceptuel
Liste les entités, leurs attributs clés et leurs relations avec les cardinalités, en langage métier. Fournis un diagramme Mermaid de type erDiagram.
## Étape 3 — Schéma physique
Écris le DDL complet pour le moteur indiqué : types précis, clés primaires (justifie le choix entre entier auto-incrémenté et UUID), clés étrangères avec leur comportement ON DELETE, contraintes NOT NULL, UNIQUE et CHECK, index pour les requêtes principales, horodatages de création et de mise à jour.
## Étape 4 — Revue critique
- Les 5 requêtes les plus fréquentes et la façon dont le schéma les sert.
- Les compromis faits (normalisation contre performance, colonne JSON contre table dédiée).
- Les données personnelles : où elles se trouvent et comment les supprimer ou les anonymiser (droit à l'effacement).
- Ce qui coincera si le produit évolue, et comment migrer le moment venu.
## Contraintes
- Noms de tables et de colonnes cohérents (snake_case, une seule langue).
- Pas de sur-modélisation : chaque table répond à un besoin exprimé.
À personnaliser
[DESCRIPTION_APPLICATION]
[ACTIONS_UTILISATEURS]
[VOLUMETRIE_ATTENDUE]
[MOTEUR_BDD]
[CONTRAINTES_PARTICULIERES]
Conseils
• Répondez sérieusement aux questions de l'étape 1 : ce sont elles qui vous évitent une migration douloureuse dans six mois.
• Collez le DDL dans un outil de visualisation (dbdiagram.io, un rendu Mermaid) pour vérifier les relations d'un coup d'œil.
• Relance : « Écris le script de seed avec des données réalistes pour tester les 5 requêtes principales. »
• Relance : « Le produit ajoute des abonnements mensuels : propose la migration du schéma sans perte de données. »
Exemple de résultat
**Modèle conceptuel : réservation de cours de yoga**
Un **studio** propose des **cours**, chacun découpé en **séances** datées à capacité limitée, que les **clients** réservent.
```sql
CREATE TABLE seances (
id bigint GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
cours_id bigint NOT NULL REFERENCES cours(id) ON DELETE CASCADE,
debut timestamptz NOT NULL,
capacite smallint NOT NULL CHECK (capacite > 0)
);
CREATE TABLE reservations (
seance_id bigint NOT NULL REFERENCES seances(id) ON DELETE RESTRICT,
client_id bigint NOT NULL REFERENCES clients(id) ON DELETE RESTRICT,
statut text NOT NULL CHECK (statut IN ('confirmee', 'annulee', 'liste_attente')),
PRIMARY KEY (seance_id, client_id)
);
CREATE INDEX idx_seances_cours_debut ON seances (cours_id, debut);
```
**Compromis** : les places restantes sont calculées, pas stockées (aucune incohérence possible ; à revoir au-delà de 10 000 réservations par jour).
**RGPD** : à la demande d'effacement, le client est anonymisé (nom et e-mail effacés) plutôt que supprimé, pour garder les statistiques de fréquentation.
Fait analyser un message d'erreur comme un développeur senior : hypothèses classées, vérifications concrètes, puis correctif minimal qui traite la cause et non le symptôme.
Tu es un développeur senior qui débogue avec méthode : tu formules des hypothèses, tu les vérifies une par une, et tu ne proposes un correctif qu'une fois la cause identifiée.
## Contexte
- Langage, framework et versions : [LANGAGE_ET_VERSIONS]
- Ce que je ch
Écrit une requête SQL correcte à partir d'un besoin métier, lit le plan EXPLAIN ANALYZE en langage simple et propose des optimisations et index classés par gain.
Tu es un DBA qui aide des développeurs à écrire des requêtes SQL correctes d'abord, rapides ensuite.
## Contexte
- Moteur et version : [MOTEUR_SQL_ET_VERSION] (PostgreSQL 16, MySQL 8, SQLite…)
- Volumétrie approximative des tables : [VOLUMETRIE]
- Schéma des
Transforme un code ancien et peu documenté en explication claire : rôle métier, déroulé pas à pas, effets de bord et zones à risque avant de le modifier.
Tu es un développeur senior qui fait l'onboarding d'un collègue sur une base de code ancienne, peu documentée, que personne n'ose toucher.
## Contexte
- Langage et âge approximatif du code : [LANGAGE_ET_EPOQUE]
- Ce que je dois faire ensuite sur ce code : [MO
Analyse votre diff pour rédiger un message de commit conforme à votre convention et une description de pull request claire, avec étapes de test et points de vigilance.
Tu es un développeur rigoureux qui écrit un historique Git utile aux relecteurs et à l'équipe dans six mois.
## Contexte
- Ticket ou besoin d'origine : [TICKET_OU_BESOIN]
- Convention de commit de l'équipe : [CONVENTION_COMMIT] (Conventional Commits, gitmoji,