title: single fixed table with multiple columns vs flexible abstract tables
body: <p>I was wondering if you have a website with a dozen different types of listings (Shops, Restaurants, Clubs, Hotels, Events) that require different fields, is there a benefit of creating a table with columns defined like so<br>
  Example Shop:</p>
  
  <pre><code>shop_id | name | X | Y | city | district | area | metro | station | address | phone | email | website | opening_hours
  </code></pre>
  
  <p>Or a more abstract approach similar to this:</p>
  
  <pre><code>object_id | name        
  ---------------
  1         | Messy Joe's  
  2         | Bate's Motel 
  
  type_id | name
  ---------------
  1       | hotel
  2       | restaurant
  
  
  object_id | type_id
  ---------------
  1         | 2
  2         | 1
  
  field_id | name           | field_type
  ---------------
  1        | address        | text
  2        | opening_hours  | date 
  3        | speciality     | text
  
  type_id | field_id
  ---------------
  1       | 1
  1       | 2
  2       | 1
  2       | 3
  
  object_id | field_id | value
  1         | 1        | 1st street....
  1         | 3        | English Cuisine
  </code></pre>
  
  <p>Of course it can be more abstract if value's are predefined (Example: specialties could have their own list)</p>
  
  <p>If I take the abstract approach it can be very flexible, but queries will be more complex with a lot of joins.
  But I don't know if this affects the performance, executing these 'more complex' queries. </p>
  
  <p>I would be interested to know what are the up and downsides of both methods. I can just imagine for myself, but I don't have the experience to confirm this.</p>