Как сделать таблицу с произвольным количеством полей?
Похоже, что вы пытаетесь изобрести EAV.1, 2
Если у вас есть чёткое понимание структуры таблиц, то:
1. В таблице есть физический первичный ключ
2. В таблице есть физические поля под внешние ключи
3. В таблице есть физические поля под основные индексы
4. В таблице есть json поле для всех остальных данных.