title: Database design - "Separate Tables Vs One table" for Select Queries
body: <p>I have a MySQL table like following</p>
  
  <h3>Books Table</h3>
  
  <pre><code>book-id      category    author     author_place       book_name   book_price --------other 50 columns directly related to  book-id              
  1           adventure    tom          USA               skydiving     300
  2           spiritual    rom         Germany           what you are   500
  3           adventure    som         India              woo woo       700
  4           education    kom         Italy               boring       900
  5           adventure    lom         Pak                 yo yo         90
  .
  .
  4000        spiritual    tom          USA                you are          10
  </code></pre>
  
  <p>As you can see there are around 4000 rows and around 55 columns, I am using this table mostly for select query, Maybe add or update new book after2-3 weeks</p>
  
  <p>I have doubt about the category and author columns</p>
  
  <p>now if I need to select the table by category and author, I can simply do</p>
  
  <pre><code>SELECT * from books Where author = 'tom'
  
  Select * FROM books WHERE category='education'
  </code></pre>
  
  <p>It works fine, But according to standard database design I think I should separate the category and authors  columns into separate tables (especially authors) and use their primary key as foreign key in the books <code>table</code>
  Something like this</p>
  
  <h3>Books Table</h3>
  
  <pre><code>book-id      categ_id    author_id          book_name   book_price --------other 50 columns directly related to  book-id              
  1                   1          1             skydiving     300
  2                   2          2             what you are   500
  3                   1          3             woo woo       700
  4                   3          4             boring       900
  5                   1          5              yo yo         90
  .
  .
  4000                3          1              you are          10
  </code></pre>
  
  <h3>Category Table</h3>
  
  <pre><code>categ_id      category_name                
  1              advernture         
  2              spiritual         
  3              education                
  .              .
  .              .
  30             something
  </code></pre>
  
  <h3>Authors Table</h3>
  
  <pre><code>author_id  author      country
   1         tom          USA               
   2         rom         Germany           
   3         som         India             
   4         kom         Italy              
   5         lom         Pak         
  </code></pre>
  
  <p>But then I have to use join the tables each time I make a select query by authors or category, Which I think will be inefficient, Something like this</p>
  
  <pre><code>SELECT * FROM Books LEFT JOIN authors on authors.author_id = books.author_id WHERE books.author_id =1
  SELECT * FROM Books LEFT JOIN categories on categories.categ_id = books.categ_id_id WHERE books.categ_id =1
  </code></pre>
  
  <p>So should I separate the first table into separate tables or first table design is better in this case?</p>