Aller au contenu principal

Schema vs Model First

L’approche schema first (ou « database first ») et l’approche model first (ou « code first » selon les contextes) sont 2 méthodes de conception d’applications impliquant une base de données.

Voici leur comparaison et leurs principales différences :

AspectSchema First (Database First/Schema Design First)Model First (Code First/Model Driven)
Point de départConception du schéma de la base de données en premier, avant le développement du code métierDéfinition du modèle métier (classes et relations) en premier, le schéma de base de données en découle
ProcessusLe schéma (tables) est défini manuellement, puis on génère le code du modèle ou des objets à partir de cette structureLes entités sont modélisées dans le code, puis le schéma correspondant (BDD) est créé par génération automatique
Outils typiquesSQL, designers visuels de BDD tel que Looping-SQLORM (Entity Framework, Sequelize, etc.), migrations automatiques, frameworks générant le schéma depuis des classes
Adapté aux situationsProjets où la structure de données est critique, gros héritage de données, intégration forte avec BDD, besoin d’un schéma stableDéveloppement itératif, Domain Driven Design, besoin de flexibilité, prototypes, évolutions rapides
Avantages- Contrôle précis du schéma- Adapté aux environnements existants- Facilite la conformité et l’audit- Productivité - Modèle métier central - Évolution simple avec le code
Inconvénients- Génération de modèles parfois rigide- Risque de mismatch avec les besoins du métier- Schémas générés parfois sous-optimaux- Potentiel d’indépendance BDD limité
Flux de modificationD’abord la base/ de données, puis le codeD’abord le code, puis la base de données

Exemples :

  • En « schema first » avec Entity Framework, vous partez du schéma SQL, puis l’outil génère les classes à mapper en TypeScript, C#, Java, PHP, etc.
  • En « model first », vous concevez les classes dans le code (TypeScript, C#, Java, PHP, etc.), l’ORM génère ensuite la base de données à partir de ce modèle.

Choix de l’approche :

  • « Schema first » est privilégiée pour les projets nécessitant une forte stabilité, une intégration avec une base existante ou où la base sert de source de vérité.
  • « Model first » favorise l’innovation, s’adapte mieux aux petits projets ou aux architectures centrées sur le code.