MySQL: где я могу хранить информацию о профиле каждого пользователя на веб-сайте?

0

Извините, если это было покрыто - я искал часы, но я думаю, что мне просто не хватает словарного запаса для эффективного поиска.

Я пытаюсь выяснить, как хранить информацию профиля для каждого пользователя. По информации профиля я не имею в виду информацию, такую ​​как электронная почта и т.п., Но больше их предпочтений относительно сайта, над которым я работаю.

Это сайт изучения языка, и я хочу, чтобы пользователи могли сохранять их "прогресс", предоставляя им возможность отмечать урок, как узнал.

Я также хочу отслеживать, какие упражнения они сделали, чтобы я мог попытаться только дать им упражнения, которые они не сделали (или когда они исчерпали доступные упражнения, начните с самого последнего). Я просто не знаю, где хранить всю эту информацию.

Должен ли я иметь справочную таблицу, связывающую пользователей с уроками? Я боюсь, что это будет огромным, так как число пользователей и таблиц увеличивается. Видя, что это просто логическое значение, я решил дать каждому пользователю int (а позже и больше ints в виде массива), где каждый бит представляет собой урок и выполняет побитовые операторы на этих числах, чтобы получить информацию о том, какие уроки они сохранили. хотя похоже, что в будущем это может быть громоздким.

Как помнить, какие упражнения они сделали, я боюсь, что это приведет к огромному количеству отходов, если я попытаюсь сохранить его в mysql. Могу ли я попытаться сделать это на компьютере пользователя с помощью файлов cookie, и любой, у кого есть отключенные файлы cookie, просто придется иметь дело с повторяющимися вопросами упражнений?

Возможно, мне стоит подумать о других таблицах и даже других базах данных! Я не знаю!

Извините за всю бессвязную чепуху. По крайней мере, я был бы признателен за некоторые указания на то, что мне нужно прочитать...

Теги:
history
profiles

2 ответа

3
Лучший ответ

Таблица поиска между пользователями и упражнениями является самой простой и гибкой, и вам действительно не нужно беспокоиться о ее размере. Он будет иметь идентификатор пользователя, идентификатор упражнения и некоторую переменную прогресса, поэтому (в зависимости от ваших потребностей), которая, вероятно, будет меньше 10 байт пробела в строке. 1 миллион строк не займет даже 10 МБ пространства.

Я бы, вероятно, только записи только создаются в таблице, как только пользователь сделал какой-то прогресс в конкретном упражнении. Поэтому, если вы когда-нибудь попытаетесь найти прогресс пользователя в упражнении, а строка не найдена, это означает, что они ничего не сделали в этом упражнении. Таким образом вам нужно только создать строки для представления прогресса, и он должен держать число довольно низким в целом.

  • 0
    +1 Ударь меня тоже.
  • 0
    Ладно, круто, наверное, я просто не привык к огромному масштабу баз данных mysql. Я доберусь до этого, и спасибо!
Показать ещё 1 комментарий
0

Вам понадобится таблица соединений, чтобы связать каждого пользователя с различными упражнениями (отношения "многие-ко-многим" ):

user_id(int) exercise_id(int) learned(boolean)

Вам не нужно иметь записи для каждой возможной комбинации, вы можете добавить каждую комбинацию, когда урок помечен как извлеченный.

Побитовый метод идет по плохой дороге, вам нужно немного для каждого урока... он не масштабируется.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню