Схема базы данных — это контракт между кодом и данными. В прототипе его часто нарушают ради скорости, а платят за это при первом же росте нагрузки.
Индексы и ограничения
Каждый внешний ключ, уникальное ограничение и check-constraint — это документированное правило, которое база enforced за вас. Без них бизнес-логика расползается по коду и ломается под race conditions.
Миграции как история
Миграции должны быть обратимыми там, где это возможно, и идемпотентными при деплое. Ручные правки на проде — технический долг, который никто не видит в git blame.
Транзакции на границах
Группируйте связанные изменения в одну транзакцию. Если операция не может быть атомарной — проектируйте компенсирующие действия явно.