🗄️ Database · Design

@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.

Télécharger MaifadyVoir les 30 agents

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

  1. Tu lui donnes les entités du domaine + leurs relations.
  2. Il normalise à 3NF (sauf raison perf claire).
  3. Choisit les PKs (BIGINT UNSIGNED AUTO_INCREMENT ou ULID/UUIDv7 selon contexte).
  4. Choisit les types optimaux par champ.
  5. Ajoute timestamps (created_at, updated_at) et deleted_at pour soft delete.
  6. Indexe : chaque FK, chaque colonne WHERE-frequent, chaque ORDER BY, chaque UNIQUE.
  7. 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.

Prêt à poser tes fondations ?

Télécharger Maifady