Схема базы данных — это контракт между кодом и данными. В прототипе его часто нарушают ради скорости, а платят за это при первом же росте нагрузки.

Индексы и ограничения

Каждый внешний ключ, уникальное ограничение и check-constraint — это документированное правило, которое база enforced за вас. Без них бизнес-логика расползается по коду и ломается под race conditions.

Миграции как история

Миграции должны быть обратимыми там, где это возможно, и идемпотентными при деплое. Ручные правки на проде — технический долг, который никто не видит в git blame.

Транзакции на границах

Группируйте связанные изменения в одну транзакцию. Если операция не может быть атомарной — проектируйте компенсирующие действия явно.