Я сделал что-то похожее. Но я бы не стал создавать динамические классы.
У меня был объект под названием Schema, который загружал бы данные каждой нужной мне таблицы.
У меня был объект таблицы, который будет иметь тип схемы. Каждый объект схемы имел бы атрибут столбцов, в то время как объект таблицы имел атрибут со значением и ссылкой на атрибут столбца схемы.
В схеме было все необходимое для вставки, выбора, удаления, обновления данных в базе данных.
И у меня был посредник, который обрабатывал бы соединение между базой данных и объектом Table.
Table t = new Table('Dog');
t.randomValue(); // needed for the purpose of my project
t.save();
Table u = Table.get(t);
u.delete();
Но он может иметь что-то, чтобы легко получить значение для определенного имени столбца.
В любом случае, этот принцип прост, я мог бы загрузить данные, содержащиеся в таблице information_data, и, вероятно, тоже мог бы работать с описанием.
Я смог загрузить любую таблицу динамически, поскольку таблица имела динамические атрибуты, структура не была жестко закодирована. Но нет реальной необходимости создавать новые классы для каждой таблицы.
Было также кое-что, что могло бы быть важно отметить. Каждая схема таблицы была загружена один раз. Таблицы имели ссылку только на схемы, а схемы имели ссылку на столбец. столбец имел ссылки на тип столбца и т.д ...
Было бы интересно найти лучшее применение, чем было. Я сделал это для случая блока на репликации базы данных. У меня не было никакого реального интереса кодировать класс для каждой из 30 таблиц и делать вставку / удаление / обновления и выбор. Это единственная причина, по которой я вижу, что это полезно для создания чего-то динамического в SQL. Если вам не нужно ничего знать о таблицах и вы хотите только вставить / удалить ненужные файлы.
Если бы мне пришлось переделывать свой код, я бы использовал более ассоциативный массив.
В любом случае Гудлак