Why do you want multiple tables for same record type? Wouldn’t it be easier to keep common properties of each type as table columns, and all specific fields to product type in additional field saved in JSON format ?
like for an example id (int), name (varchar), description (varchar), price (dec) , metadata (text | blob | some native json type) would give you :
id => 10, name => product1, description=>product, price : 10,2 , metadata => {color: red, weight: 0,5kg} ,
id => 11, name => product2, description=>product, price : 10,2 , metadata => {water consumption : 20L , energy consumption: 40 KWh}
Actually these are not simple products. These tables will be created dinamically from my application when a new product is added by admin in the system. Columns in these tables will be depending on the choice of admin which fields he wants to add. That is the reason I want a new table for each product type.
Saving data in JSON will create problems in searching, sorting and associations painful as there may be some fields which relate to other table values (Like dynamic form creator)