title: MySQL: Many joins and relations on the same table (theoretical question)
body: <p>This is a more theoretical question, not a specific scenario:</p>
  
  <p>Let's assume, we have a simplified table scheme like this:</p>
  
  <p><img src="https://i.stack.imgur.com/d2lDj.png" alt="alt text"></p>
  
  <p><code>items</code> contains some basic data, <code>item_data</code> additional properties for each item an <code>rel_items</code> sets a tree relationship between the different items. There are different types of items  (represented by the field <code>items.item_type</code>) which have different fields stored in <code>item_data</code>, for example: dog, cat, mouse.</p>
  
  <p>If we have some bigger queries with some joins and conjunctions (stuff like getting items with their parent items having some conditions with other items and so on), could this become a performance issue compared to splitting all different types of items into separate tables (<code>dog</code>, <code>cat</code>, <code>mouse</code>) and not merging them into a single one? </p>
  
  <p>If we keep it all in one basic item table, does creating views (dog, cat, mouse) impact performance somehow?</p>
  
  <p>edit (as commented below): I thought of "species", "house-pets" and so on as item_types. Each type has different properties. The intention of using a basic item table and the item_data table is to have a basic "object" and attaching as many properties to them as necessary without having to modify the database scheme. For example, I don't know how many animals there will be in the application and what properties they have, so I thought of a database scheme that doesn't need to be alterted each time the user creates a new animal.</p>