@schema-designerL'architecte DB — schéma normalisé en 5 minutes
Maifady est un plugin Claude Code 100% gratuit avec 30 agents IA — @schema-designer dessine ton schéma DB en 5 minutes : tables normalisées 3NF, types adaptés (VARCHAR(320) pour email, BIGINT pour IDs), FK, indexes sur les WHERE-frequent, soft delete, CHECK constraints. Tu reçois des CREATE TABLE prêts à coller dans phpMyAdmin.
Le problème qu'il résout
Tu démarres une app. Tu sais que ton schéma DB c'est la fondation — un mauvais design maintenant = des refactor douloureux dans 6 mois. Mais tu ne veux pas passer 3 jours à décider entre VARCHAR(255) et VARCHAR(320), entre BIGINT et UUID, entre ENUM et CHECK constraint.
@schema-designer te livre un schéma complet, conventionnellement correct, en 5 minutes — avec rationale sur chaque choix non-évident.
Comment il bosse
- Tu lui donnes les entités du domaine + leurs relations.
- Il normalise à 3NF (sauf raison perf claire).
- Choisit les PKs (BIGINT UNSIGNED AUTO_INCREMENT ou ULID/UUIDv7 selon contexte).
- Choisit les types optimaux par champ.
- Ajoute timestamps (
created_at,updated_at) etdeleted_atpour soft delete. - Indexe : chaque FK, chaque colonne WHERE-frequent, chaque ORDER BY, chaque UNIQUE.
- Plan partitioning si > 10M rows attendues (et flag l'incompatibilité FK).
Exemple concret
Tu tapes
›@schema-designer schéma pour app de tâches : - Users, Projets, Tâches (titre, due, statut, priorité) - Tags M-N sur tâches, Commentaires, Historique de statut Cible : MariaDB 11. Multi-tenant.
Tu obtiens (extrait)
CREATE TABLE users (
id BIGINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
email VARCHAR(320) NOT NULL,
full_name VARCHAR(255) NOT NULL,
is_active TINYINT(1) NOT NULL DEFAULT 1,
created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
ON UPDATE CURRENT_TIMESTAMP,
deleted_at TIMESTAMP NULL,
UNIQUE KEY uk_users_email (email),
KEY idx_users_created_at (created_at)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
# Rationale : VARCHAR(320) = max RFC email. BIGINT car prévoit
# la croissance. utf8mb4 pour vrais Unicode + emojis.
Pourquoi tu vas l'aimer
Fondations solides
3NF, types corrects, conventions cohérentes. Ce que tu aurais fait toi-même avec 3h de temps.
Rationale par choix
Pas "voilà un schéma". Mais "j'utilise BIGINT parce que X, INDEX sur Y parce que Z".
Ordre de migration
Te donne l'ordre exact dans lequel CREATE les tables (respecte les FK dependencies).
Pensé pour la perf
Indexes sur ce qui sera filtré, partitioning si volume attendu, types optimaux.
Quand l'utiliser
✅ Idéal pour
- Nouveau projet : schéma initial
- Nouvelle feature majeure qui ajoute 3-5 tables
- Review d'un schéma existant ("est-ce qu'il est cohérent ?")
- Multi-tenant : modélisation tenant_id partout
⚠️ Pas adapté quand
- Tu veux modifier une table existante en prod → @migration-writer
- Tu cherches à optimiser une requête lente → @sql-optimizer
- Stockage NoSQL pur (MongoDB, DynamoDB) — pas son domaine
Combine avec ces agents
Questions fréquentes
Normalise-t-il à 3NF par défaut ?
Oui, sauf raison perf claire de dénormaliser. Et il te dit explicitement pourquoi il dénormalise quand il le fait (cache de comptage, prevent join sur hot path, etc.).
Ajoute-t-il created_at, updated_at automatiquement ?
Oui, sur toute table mutable. Plus deleted_at (TIMESTAMP NULL) pour le soft delete par défaut.
Gère-t-il les tables partitionnées ?
Oui pour les tables > 10M rows attendues. Il flag explicitement que MariaDB ne supporte pas les FK sur tables partitionnées et propose la cohérence applicative.