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

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

Дак все таки как нужно хранить Настройки?) На тостере есть один раздел «Настройки уведомлений». Интересно как он реализован. При том, что там есть два варианта: уведомлять на почту, уведомлять на сайте. Как это правильно делается?) 

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

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, ...). Так все будет очень гибко и будет соответсвовать нормальным формам.