Introduction à Prisma

Prisma peut être utilisé avec des bases de données relationnelles ou no-SQL ; on ne parlera ici que de bases relationnalles.

Créer un projet

Créer le schéma de la base de données

Il est entièrement décrit dans un seul fichier qui est situé par défaut dans ./prisma/schema.prisma :

Créer la base de données

À exécuter à nouveau en cas de changement du schéma

Interface d’admin

Créer un script NodeJS de test

essai.js

Créer une application Express de test

app.js

Mise à jour du la fonction d’interface

La commande suivante génère la librairie cliente importée lors de import { PrismaClient } from "@prisma/client"

À exécuter si on constate que PrismaClient ne semble pas synchronisée avec le schéma de la base de données.

Reverse-engineering

Un des killer-feature de Prisma : il permet de reconstruire le schéma d’une base existante. Il faut fournir au préalable un fichier prisma/schema.prisma contenant uniquement le type et l’url de la base. Après exécution, le fichier prisma/schema.prisma est complété avec le nouveau schéma.

Modelisation des relations

Référence : https://www.prisma.io/docs/orm/prisma-schema/data-model/relations

Relation one-to-many

prisma/schema.prisma

script1.js

script2.js

Relation one-to-one

prisma/schema.prisma

  • User a une relation one-to-one optionnelle avec Profile
  • Dans le modèle Profile, le champ userId a l’attribut @unique, qui garantit que chaque Profile appartient à exactement un User
  • La directive @relation dans le modèle Profile indique que userId est la clé étrangère utilisée pour la relation avec le modèle User

Ce schéma garantit que chaque User a au plus un Profile, et que chaque Profile est associé à exactement un User.

script.js

Relation many-to-many

Une relation many-to-many peut être modélisée explicitement, en définissant une table intermédiaire pour la relation.

Elle peut aussi être modélisée implicitement, c’est à dire qu’aucune table intermédiaire n’est visible dans le schéma Prisma, même si elle existe dans la base de données, avec des noms de table et d’attributs gérés automatiquement par Prisma. C’est la méthode la plus simple pour des relations directes d’id à id.

Relation implicite

prisma/schema.prisma

script.js