title: Database user table design, for specific scenario
body: <p>I know this question has been asked and answered many times, and I've spent a decent amount of time reading through the following questions:</p>
  
  <ul>
  <li><a href="https://stackoverflow.com/questions/2974321/database-table-structure-for-user-settings">Database table structure for user settings</a></li>
  <li><a href="https://stackoverflow.com/questions/1251924/how-to-handle-a-few-dozen-flags-in-a-database">How to handle a few dozen flags in a database</a></li>
  <li><a href="https://stackoverflow.com/questions/4706379/storing-flags-in-a-db">Storing flags in a DB</a></li>
  <li><a href="https://stackoverflow.com/questions/4464639/how-many-database-table-columns-are-too-many">How many database table columns are too many?</a></li>
  <li><a href="https://stackoverflow.com/questions/3184478/how-many-columns-is-too-many-columns">How many columns is too many columns?</a></li>
  </ul>
  
  <p>The problem is that there seem to be a somewhat even distribution of supporters for a few classes of solutions:</p>
  
  <ul>
  <li>Stick user settings in a single table as long as it's normalized</li>
  <li>Split it into two tables that are 1 to 1, for example "users" and "user_settings"</li>
  <li>Generalize it with some sort of key-value system</li>
  <li>Stick setting flags in bitfield or other serialized form</li>
  </ul>
  
  <p>So at the risk of asking a duplicate question, I'd like to describe my specific scenario, and hopefully get a more specific answer.</p>
  
  <ul>
  <li><p>Currently my site has a single user table in mysql, with around 10-15 columns(id, name, email, password...)</p></li>
  <li><p>I'd like to add a set of per-user settings for whether to send email alerts for different types of events (notify_if_user_follows_me, notify_if_user_messages_me, notify_when_friend_posts_new_stuff...)</p></li>
  <li><p>I anticipate that in the future I'd be infrequently adding one off per-user settings which are mostly 1 to 1 with users.</p></li>
  </ul>
  
  <p>I'm leaning towards creating a second user_settings table and stick "non-essential" information such as email notification settings there, for the sake of keeping the main user table more readable, but is very curious to hear what expects have to say. </p>