Трудно сказать, сколько это слишком много.Это действительно очень субъективно.Я думаю, что вопрос, который вы должны задать, не «слишком много столбцов?», А скорее «принадлежат ли эти столбцы здесь?»Я имею в виду, что если в вашей таблице User есть столбцы, которые не обязательно являются свойствами пользователя, они могут не принадлежать.Например, если у вас есть несколько столбцов, которые суммируют адрес пользователя, то, возможно, вы извлекаете их в таблицу адресов с FK в User.
Я бы не стал использовать таблицы ключ / значение, есливозможный.Это может показаться простым способом сделать вещи расширяемыми, но на самом деле это просто боль в долгосрочной перспективе.Если вы обнаружите, что ваша схема меняется очень последовательно, вы можете подумать о том, чтобы установить какой-то элемент управления изменениями для проверки изменений только тех, которые необходимы, или перейти на другую технологию, которая лучше поддерживает хранилище без схемы, например NoSQL с MongoDB илиCouchDB.