Není to úplně běžné, ne. Neexistuje žádný nativní způsob sdílení primárního klíče. Ve vaší situaci mohu udělat toto:
product_table
id
name
category
general_fields...
product_type1_table:
id
product_id
product_type1_fields...
product_type2_table:
id
product_id
product_type2_fields...
product_to_category_table:
product_id
category_id
To znamená, že existuje jedna hlavní produktová tabulka, která obsahuje položky pro všechny produkty a má pole, která zobecňují mezi typy, a typově specifikované tabulky s cizími klíči do hlavní produktové tabulky, které obsahují typově specifická data.