Prisma-schemadesign och migreringar
Utforma ditt databasschema med Prisma Schema Language och hantera databasens migreringar.
Prisma-schemadesign och migreringar är en gratis lektion i Next.js 15: fullstack-webbappar på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Next.js 15: fullstack-webbappar, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Next.js 15: fullstack-webbappar innehåller totalt 4 lektioner.
Prisma-schema: din ritning för databasen
Välkommen tillbaka! I den här lektionen går vi igenom hur du utformar databasschemat med Prisma Schema Language och hanterar ändringar med migreringar.
Filen schema.prisma är kärnan i din Prisma-konfiguration. Den är den enda källan till sanning för databasschemat och för hur programmets modeller samverkar med det.
Databasschemats centrala block
Varje fil med namnet schema.prisma börjar med två huvudblock: datasource och generator.
datasource: Definierar din databasanslutning (till exempel PostgreSQL, MySQL eller SQLite).generator: Anger vilken Prisma Client som ska genereras, så att du kan interagera med databasen på ett typsäkert sätt.
Här är en grundläggande struktur:
datasource db {
provider = "postgresql"
url = env("DATABASE_URL")
}
generator client {
provider = "prisma-client-js"
}Definiera modeller: din datastruktur
Efter de centrala blocken definierar du dina modeller. En Prisma-modell motsvarar direkt en tabell i databasen och representerar strukturen för dina data.
Nyckelordet model används följt av modellens namn (i singular och PascalCase, till exempel User eller Product).
model User {
id String @id @default(uuid())
email String @unique
name String?
}Fält och datatyper
Inuti varje modell definierar du fält som motsvarar kolumner i databastabellen. Varje fält har ett namn och en datatyp.
Prisma stöder vanliga skalära typer som String, Int, Boolean, DateTime, Float, Json med flera. Till exempel är id ofta en String eller Int.
model Product {
id Int @id @default(autoincrement())
name String
description String?
price Float
published Boolean @default(false)
createdAt DateTime @default(now())
}Fältmodifierare och attribut
Fält kan ha modifierare och attribut som lägger till ytterligare betydelse eller begränsningar:
?(valfritt): Gör ett fält nullable.[](lista): Anger en lista med värden (till exempelString[]).@id: Markerar ett fält som primärnyckel.@unique: Säkerställer att alla värden i fältet är unika.@default(): Anger ett standardvärde.@updatedAt: Uppdaterar automatiskt ettDateTime-fält varje gång en post uppdateras.
model Post {
id String @id @default(uuid())
title String
content String?
published Boolean @default(false)
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}Koppla samman data: relationer
Databaser handlar i grunden om relaterade data! Med Prisma blir det enkelt att definiera relationer mellan modeller, till exempel att en användare har många inlägg (en-till-många).
Du definierar en relation genom att koppla samman fält mellan modeller med attributet @relation. Attributet tar argument som fields (främmande nyckel) och references (den primärnyckel som den hänvisar till).
model User {
id String @id @default(uuid())
email String @unique
name String?
posts Post[] // A user can have many posts
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Post {
id String @id @default(uuid())
title String
content String?
published Boolean @default(false)
author User? @relation(fields: [authorId], references: [id]) // Relation to User
authorId String? // Foreign key for the User
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}Utveckla databasen: migreringar
När programmet växer kommer databasschemat att förändras. Migreringar är Prisms sätt att spåra dessa ändringar och tillämpa dem på den faktiska databasen på ett kontrollerat sätt med versionshantering.
Prisma Migrate genererar SQL-filer baserat på skillnaderna mellan schema.prisma och databasens aktuella tillstånd, så att databasen utvecklas på ett förutsägbart sätt.
Skapa din första migrering
För att skapa en ny migrering använder du Prisma CLI-kommandot npx prisma migrate dev. Du bör ge migreringen ett beskrivande namn.
Det här kommandot gör tre saker:
- Jämför
schema.prismamed databasen. - Genererar en ny migreringsfil (SQL) om det finns ändringar.
- Tillämpar den nya migreringen på din utvecklingsdatabas.
Prova det efter att du har gjort en ändring i schemat:
npx prisma migrate dev --name added_user_profileTillämpa migreringar och synkronisera schemat
Förutom prisma migrate dev för utveckling finns det andra kommandon:
npx prisma migrate deploy: Tillämpar alla väntande migreringar på databasen. Detta används vanligtvis i produktionsmiljöer.npx prisma db push: Skickar det aktuella schemat till databasen utan att skapa en migreringsfil. Det är användbart vid snabb prototyputveckling när du inte behöver en migreringshistorik.
Välj rätt kommando för ditt arbetsflöde!
npx prisma migrate deploy
npx prisma db pushSnabbkontroll: uppdatera schemat
Du har precis lagt till ett nytt fält, role, i modellen User i schema.prisma och vill tillämpa ändringen på din utvecklingsdatabas samtidigt som du skapar en migreringsfil för att spåra ändringen. Vilket kommando bör du använda?
Schema och migreringar: viktiga lärdomar
Bra jobbat! Du har lärt dig att utforma databasen med Prisma Schema Language och hantera dess utveckling med migreringar.
- Filen
schema.prismaär den enda källan till sanning för databasens struktur. - Modeller definierar tabeller och fält definierar kolumner med olika typer och attribut.
- Relationer kopplar samman modellerna och återspeglar verkliga samband mellan data.
- Prisma Migrate hjälper dig att spåra och tillämpa schemaändringar på ett tillförlitligt sätt i olika miljöer.
Härnäst lär vi oss att utföra CRUD-operationer (Create, Read, Update, Delete) med Prisma Client.
Lär dig TypeScript med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Prisma-schemadesign och migreringar” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Next.js 15: fullstack-webbappar, inklusive ”Prisma-schemadesign och migreringar”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Next.js 15: fullstack-webbappar innehåller totalt 4 lektioner.
Vad lär jag mig i ”Prisma-schemadesign och migreringar”?
Utforma ditt databasschema med Prisma Schema Language och hantera databasens migreringar. Ni övar på Next.js 15: fullstack-webbappar med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Next.js 15: fullstack-webbappar?
Du behöver inga förkunskaper. Utbildningen i Next.js 15: fullstack-webbappar på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Prisma-schemadesign och migreringar”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Next.js 15: fullstack-webbappar-lektionen?
Ja. Varje Next.js 15: fullstack-webbappar-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Introduktion till Prisma ORM
- Prisma-schemadesign och migreringar
- CRUD-operationer med Prisma Client
- Relationer och avancerade frågor med Prisma