intermediate
Schema
Определяйте models, relations, indexes, referential actions, generated types и provider-specific constraints.
Схема Prisma (`schema.prisma`) задаёт models, поля, relations, индексы, datasource и generator. От неё зависят сгенерированные TypeScript-типы и вход для миграций.
model Order {
id String @id @default(cuid())
customerId String
customer Customer @relation(fields: [customerId], references: [id])
status String @default("pending")
@@index([customerId, status])
}
На интервью: relation fields vs скалярные внешние ключи, referential actions (`onDelete`), индексы, enums, опциональность и отличия провайдеров.
Типовые ошибки: type safety как доказательство правильных индексов или zero-downtime миграций; implicit many-to-many, когда у связи есть атрибуты.
Компромисс — удобство «схема как контракт» против операционной реальности БД.
Чеклист:
- Моделируйте relations явно.
- Индексируйте пути доступа.
- Проверяйте поведение провайдера.
- Относитесь к изменениям схемы как к deploy-событиям.