Пока разрабатываешь - используй синк, удобно до тех пор, пока не пойдешь, что править в ближайшее время не будешь бд
Как только дня 3-4 не исправлял - создаёшь пустую бд и делаешь для нее миграцию (в тайп орм их можно автоматически генерить)
После чего удаляешь начальную бд, создаешь её заново и прогоняешь миграцию
Убеждаешься что все отлично и теперь перестаешь юзать синк
лучше сразу писать миграции, проектировать базу и таблицы все которые потребуются и делать на это миграции, потом описывать тайп орм сущности чтобы замапить на таблицы которые создал через миграции
так быстрее все получается, так как при автосинке мало проектируешь и просто клепаешь сущности и разбираешся с декораторами тайп орм, чаще то что в этот момент на проектировал криво получится, так как внимание концентрировал на сущностях в коде, а там всяких мани ту мани третьих таблиц нет, и не видишь всей картины
в итоге 1/3 более или менее сделано, но остальное можно выкидывать и по новой проектировать и как итог и в коде везде переделки идут кучу рефакторинга по всему проекту
ну мое мнение, лучше потратить время на проектирование структур данных и написание миграций на sql, чем птом разгребать все время и рефакторить по сто раз и базу и код