Множество мелких таблиц под каждого пользователя?
Самый простой (и самый некрасивый) способ - определить необходимый минимум для каждого пользователя, выделить этот минимум в поля таблицы, а остальное хранить в большом текстовом поле с примечаниями (этот способ остался глубоко в 90-х).
Второй способ - сделать отдельную таблицу, в которой данные будут представлены в виде userID, key, value, где key будет кодировать значение некоторого свойства. Этот способ более элегантный, но по скорости выполнения ударит, да.
Еще есть вариант с
сериализацией нужных данных в массив вида key:value - и данные можно хранить вместе с пользователями.
Но это все касается реляционных БД. А вообще, синонимом "плавающей" структуры уже давно стали NoSQL-базы. Конкретные СУБД и общие механизмы описаны во множестве
статей.