intermediate

Schema definitions

Представляйте tables, columns, constraints, indexes и relations в TypeScript рядом с database semantics.

Определения схемы Drizzle описывают таблицы, столбцы, constraints, индексы и relations в TypeScript. Они должны отражать семантику БД — а не становиться отдельной доменной моделью.

					export const orders = pgTable('orders', {
  id: uuid('id').primaryKey().defaultRandom(),
  customerId: uuid('customer_id').notNull().references(() => customers.id),
  status: text('status').notNull().default('pending'),
}, (t) => [index('orders_customer_status').on(t.customerId, t.status)]);
				

На интервью: типы столбцов, `$inferSelect` / `$inferInsert`, relations helper, составные индексы и зачем нужны constraints.

Типовые ошибки: drift между schema-кодом и развёрнутой БД при пропуске или хаотичном редактировании миграций.

Компромисс — схема в TypeScript против дисциплины migration workflow.

Чеклист:

  • Constraints в схеме.
  • Полезные типы insert/select.
  • Согласованность с миграциями.
  • Типы столбцов под провайдера.