Schema · postgresql
Blog
Gebruikers, posts, categorieën, tags en comments — een klassiek contentmodel.
content
ERD
Samenvatting
6 modellen 27 velden 6 relaties
Een klassiek blog-datamodel: auteurs schrijven posts, ordenen ze in categorieën, koppelen tags via een join-tabel, en lezers laten comments achter.
- User is de auteur (en commenter).
- Post hoort bij één User en optioneel één Category.
- Tag is many-to-many met Post via PostTag.
- Comment verwijst naar zowel Post als User.
Broncode
datasource db {
provider = "postgresql"
}
generator client {
provider = "prisma-client-js"
}
model User {
id String @id @default(cuid())
email String @unique
name String?
posts Post[]
comments Comment[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Post {
id String @id @default(cuid())
title String
slug String @unique
content String
published Boolean @default(false)
authorId String
author User @relation(fields: [authorId], references: [id])
categoryId String?
category Category? @relation(fields: [categoryId], references: [id])
tags PostTag[]
comments Comment[]
createdAt DateTime @default(now())
updatedAt DateTime @updatedAt
}
model Category {
id String @id @default(cuid())
name String @unique
slug String @unique
posts Post[]
}
model Tag {
id String @id @default(cuid())
name String @unique
slug String @unique
posts PostTag[]
}
model PostTag {
postId String
tagId String
post Post @relation(fields: [postId], references: [id])
tag Tag @relation(fields: [tagId], references: [id])
@@id([postId, tagId])
}
model Comment {
id String @id @default(cuid())
body String
postId String
post Post @relation(fields: [postId], references: [id])
authorId String
author User @relation(fields: [authorId], references: [id])
createdAt DateTime @default(now())
}