Надо было сразу уточнить, что без вариантов ответа.
Создать таблицу со 40 свойствами.
Это излишне. Вижу такую структуру.
Таблица с вопросами: id, текст вопроса,
Таблица с ответами: id, id вопроса, id юзера, ответ, флаг эталона
Таблица со статистикой: id, id юзера, счет (% эталонных ответов)
1ая таблица будет неизменна (пока не добавятся новые вопросы)
во 2ой будут добавлятся новые ответы, а при новом эталоне будут меняться флаги.
в 3ей будет пересчет после обновления эталона, на основе неё можно сортировать юзеров по счету