Почему рекомендуется для каждой таблицы делать свой файл миграции?
Посмотрел несколько уроков по миграциям, в частности - phinx, сделал вывод, что для каждой таблицы пилят свой класс миграции. Но насколько это адекватно на первом шаге, когда ты запиливаешь 20 таблиц для проекта на этапе разработки и можешь хоть по 10 раз туда-сюда менять, пока проект не выкачен на боевой сервак?.. В чем подвох, если я запилю один файл с инициализацией 20 таблиц и уже если что-то придется менять, то на каждое изменение уже на боевом сервере делаю файлик миграции?
Делается это для удобства, если ведётся командная разработка, когда миграции активно изменяются, чтоб меньше было конфликтов. Ну и логично же, одна таблица - одна миграция, изменилась таблица, залили миграцию, а не весь дамп
Тут нужно понять сам принцип миграций. Первоначальный сетап базы можете запилить 100 таблиц (если у вас есть готовая структура и вы хотите просто перевести на ее миграции и не таскать все время дамп) в одном файле это дело вкусовщины если файл покажется длинным можете разбить его по функциональности в этом файле миграции все что связано с кастомерами в этом с продуктами и тд если и эти файлы тяжело просматривать тогда каждая таблица один класс миграции.
Но потом класс миграции должен появляться на каждый чих в бд в частности пять человек пилят задачи и если в рамках задачи надо что то поменять в бд делают класс миграции. Чтоб после обновления локальных копий комманд не искать актуальную версию бд а выполнить миграцию.
потому что это удобно.
причина такая же почему классы пишут в отдельных файлах, а не одном: открываешь файл и сразу все видишь, а не скролишь/ищешь.
когда проектируешь/тестируешь, миграции вообще не нужны, пилишь базу напрямую.
когда нашел приемлемый вариант, написал миграции. или вообще сгенерировал их автоматом из существующей базы.