В общем, каждое решение в одтельности не слищком большое и вполне может быть размещено в BLOB'е базы данных. С другой стороны, при разрастании объемов данных возможны проблемы с производительность (временем выборки из таблицы).
Резюме: необходимо протестировать.
Средний размер архива с тестами ~ 3 МБ, максимальный ~ 32 МБ, суммарный объем ~ 4 ГБ.
В общем, при текущих объемах данных (см. «Архивация старый олимпиад») хранить тесты в БД не желательно.
В частности, во время олимпиад пользователи одновременно (!) начинают скачивать условия и даже при текущей структуре хранения условий ощущаются проблемы с производительностью.
Вывод: без разумной (!) системы кеширования хранить условия в БД не рекомендуется.
НЕ использовать ноль в качестве NULL (неопределенного значения). Значение 0 не проходит ограничение по внешним ключам. Например, таблица users => selected_tourid до версии 1.3.0.