Автоматическое создание таблиц может причинить вам головную боль, если количество таблиц станет огромным. Списки каталогов в ext3 для каталогов с более чем 5000 элементов начинают казаться дорогими и, безусловно, довольно трудоемкими, когда вы получаете более 100 000 файлов. (MySQL CLI будет пытаться кэшировать все имена таблиц при подключении, и чтобы пропустить это, вам нужно подключиться с ключом -A.)
Вы можете рассмотреть возможность использования временных таблиц для создания отчета, а затем, возможно, уплотнить результаты в строку отчета для последующего извлечения. Или, как упоминает JP, структура таблицы, которая помечает значения и отчеты в одной таблице:
create table stddev (
report_id int(11),
field_name int(11), -- fk to field
field_value double
);
create table reports (
report_id int(11);
report_name varchar(255);
);
И чтобы получить данные только для одного отчета, вы должны выполнить выборку, указав идентификатор_отчета:
select * from stddev where report_id = 123;
Я бы создал таблицы для имен отчетов, имен полей, и вы, вероятно, захотите отделить входные значения от производных / вычисленных значений, сохраненных для ваших отчетов.
В зависимости от того, как часто вы вводите новые данные, я бы не стал преждевременно оптимизировать от нескольких больших таблиц до множества маленьких таблиц. Правильно проиндексированная, большая таблица может работать хорошо.
Однако, какова величина данных, обрабатываемых этим приложением? Были ли причины использовать так много маленьких таблиц для начала?
Я использую PHP для обработки большого количества данных. Если ваша схема имеет смысл, это делает код PHP более понятным. Если бы это был я, я бы не переключился на другой язык программирования, я бы придерживался того, что начал, пока не наткнулся на реальное структурное ограничение языка; для меня переход на Rails был бы пустой тратой времени.