Next.js 15: fullstack-webbappar · Lektion

Prisma-schemadesign och migreringar

Utforma ditt databasschema med Prisma Schema Language och hantera databasens migreringar.

Lektion 2 av 411 steg

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 exempel String[]).
  • @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 ett DateTime-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:

  1. Jämför schema.prisma med databasen.
  2. Genererar en ny migreringsfil (SQL) om det finns ändringar.
  3. 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_profile

Tillä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 push

Snabbkontroll: 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.

Gratis att börja

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

  1. Introduktion till Prisma ORM
  2. Prisma-schemadesign och migreringar
  3. CRUD-operationer med Prisma Client
  4. Relationer och avancerade frågor med Prisma
← Tillbaka till Next.js 15: fullstack-webbappar