Да, вы определенно можете сохранить промежуточные данные в базе данных, а затем переверните некоторый бит, чтобы указать, что запись закончена, когда пользователь отправляет на конечный результат. В зависимости от того, как вы разделяете сбор данных, каждая страница может создавать строку в другой таблице (с некоторым ключом, связывающим их вместе).
Вы также можете рассмотреть возможность сохранения данных в форме более свободной формы, например XML в одном столбце. Это позволит вам поддерживать сложные структуры данных в простой схеме данных, но это затруднит запрос данных (если ваша база данных не поддерживает типы столбцов xml, которые делают большинство современных баз данных предприятия).
Еще одно преимущество хранения промежуточных данных в базе данных заключается в том, что пользователь может вернуться к нему позже, если захочет. Просто отправьте пользователю электронное письмо, когда он начнет, со ссылкой на свой рабочий элемент. Конечно, вам может потребоваться добавить все уровни безопасности поверх этого, чтобы убедиться, что кто-то еще не вернется к своему рабочему элементу.
Сохранение промежуточных данных в БД также позволяет пользователю переходить с одной страницы на другую и повторно просматривать предыдущие страницы.
Скрытые поля также являются хорошим подходом, но они не позволят пользователю вернуться позже.
Я бы не хотел хранить большие структуры данных в сеансе, так как если пользователь не делает недействительным сеанс явно, и если у вас нет хорошего механизма для очистки старых сеансов, эти истекшие сеансы могут много времени.
В конце концов, это действительно зависит от ваших конкретных потребностей бизнеса, но, надеюсь, это дает вам о чем подумать.
Но, как я уже сказал, вам, возможно, придется очищать таблицы от «незавершенных» данных. Это не недостаток, я просто хочу отметить. –
Правда, но вы также должны быть осторожны с устаревшими, истекшими данными сеанса, которые торчат на сервере (часто в папке/tmp) – pkaeding