myks92
@myks92
Нашёл решение — пометь вопрос ответом!

Как хранить Настройки пользователя?

Всем привет. Необходимо реализовать Настройки профиля, уведомлений, других разделов и так далее. Например, как реализован раздел настроек на Toster у каждого пользователя. Возникает вопрос - как эти данные хранить? Кто-то советует в таблице user, а если данных много, то в json формате одного поля этой таблицы. Кто-то советует вынести в отдельную таблицу настроек и добавлять в ней необходимые роля настроек. Кто-то предлагает хранить в отдельной таблице, но в формате поле, значение.

Дак все таки как нужно хранить Настройки?) На тостере есть один раздел «Настройки уведомлений». Интересно как он реализован. При том, что там есть два варианта: уведомлять на почту, уведомлять на сайте. Как это правильно делается?)
  • Вопрос задан
  • 691 просмотр
Решения вопроса 1
@orbit070
На вопрос невозможно дать однозначный ответ. Все перечисленные способы имеют право на жизнь в тех или иных ситуациях, но:
1) Я бы не советовал захламлять излишне таблицу user, получите огромную кашу.
2) Json я бы рекомендовал только в исключительном случае, все-таки это уход от нормальных форм.
3) Наиболее каноничным является вынесение настроек в отдельную таблицу вида user_settings(user_id, setting1, setting2, ...).

Касательно уведомлений - так как уведомления собой представляют чаще набор, то каждое отдельное уведомление вписывать в таблицу с настройками конечно можно и удобно, но не совсем по феньшую. Если пунктов уведомлений не так много, то можно их вписать прям в таблицу настроек, то есть вроде этого user_settings(user_id, setting1, setting2, ..., notification1, notification2, ...). Но этот вариант не является гибким, потому что к примеру для каждого отдельного уведомления могут в дальнейшем потребовать настройки(например приоритет уведомления). Поэтому наиболее правильным будет завести одну таблицу для настроек профиля как указано выше, а вторую таблицу для уведомлений вида user_notifications(user_id, notification_id, notification_name, priority, ...). Так все будет очень гибко и будет соответсвовать нормальным формам.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы