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-событиям.