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