title: Normalizing MySQL data
body: <p>I'm new to MySQL, and just learned about the importance of data normalization. My database has a simple structure:</p>
  
  <p>I have 1 table called <code>users</code> with fields:</p>
  
  <pre><code>userName (string)
  userEmail (string)
  password (string)
  requests (an array of dictionaries in JSON string format)
  data (another array of dictionaries in JSON string format)
  deviceID (string)
  </code></pre>
  
  <p>Right now, this is my structure. Being very new to MySQL, I'm really not seeing why my above structure is a bad idea? Why would I need to normalize this and make separate tables? That's the first question-why? (Some have also said not to put JSON in my table. Why or why not?)</p>
  
  <p>The second question is how? With the above structure, how many tables should I have, and what would be in each table? </p>
  
  <p><strong>Edit:</strong>
  So maybe normalization is not absolutely necessary here, but maybe there's a better way to implement my data field? The <code>data</code> field is an array of dictionaries: each dictionary is just a note item with a few keys (title, author, date, body). So what I do now is, which I think might be inefficient, every time a user composes a new note, I send that note from my app to PHP to handle. I get the JSON array of dictionaries already part of that user's data, I convert it to a PHP array, I then add to the end of this array the new note, convert the whole thing back to JSON, and put it back in the table as an array of dictionaries. And this process is repeated every time a new note is composed. Is there a better way to do this? Maybe a user's data should be a table, with each row being a note-but I'm not really sure how this would work?</p>