GS
Миграции нужны для того, чтобы засунуть схему БД в систему контроля версий. Чтобы также, как ты можешь ходить вперёд назад по версиям приложения в гите, ты мог ходить по версиям схемы БД.
sync можно делать только тогда, когда БД пустая или изменения супер простые.
В настоящей же БД уже лежат данные. Надо изменить БД так, чтобы данные не пострадали.
При чём в сложном случае миграция будет не просто "добавить колонку, поменять тип", а может значительно менять схему, и придётся написать кучку запросов, чтобы перевести данные из старой схемы в новую.
Сиды
1. Наполнение БД некоторой "базовой информацией". Например, "константные" значения в таблицах, которые по смыслу похожи на enum, если такого не было в миграциях, или прочее подобное изменение.
2. Собственно наполнение БД для разработки и тестирования. Чтобы можно было клонировать репозиторий, выполнить пару команд и всё, у тебя в нужной версии готова БД с нужным набором данных, с которым можно работать и играть с приложением.
