Нормальная форма? Не, не слышал.
по хорошему это делается связью
многие ко многим. Таблица со списком юзеров, таблица со списком ачивок и таблица типа "user_has_acievement", например.
id | user_id | achievement_id
Если уж загоняться, то по крутому - можно в биты упаковать!
Если в поле 0 - значит ачивок вообще нет.
Если в поле 5 (00000101) значит есть первая и третья.
Если там 345 (101011001) значит первая, четвертая, пятая, седьмая и восьмая. Ну и так далее, до 64 бит. Ну или другой тип данных какой-то использовать.