Почему бы не сохранить детали точек в одной таблице? Строки в таблице могут быть чем-то вроде UserId, Item и Points - таким образом, у данного пользователя может быть несколько строк с различными точками по элементам, и вы можете легко суммировать итоговые значения для целей отчетности.
Что касается вашей заботы об обеспечении согласованности номеров, вы можете просто внести коррективы в транзакцию. Это было бы легко управлять с помощью набора хранимых процедур, которые управляют вашим доступом к данным. Например, вы упомянули 5 баллов за наличие определенных данных в их профиле - поэтому, когда эти данные добавляются в их профиль, в той же транзакции вы ВСТАВЛЯЕТЕ новую строку в таблицу Баллов.
В противном случае, если вы попытаетесь управлять этим видом с помощью нескольких объединений, и если вам нужно будет сообщать о числах очень часто, это может произойти очень медленно, очень быстро.