Het is niet echt gebruikelijk, nee. Er is geen native manier om een primaire sleutel te delen. Wat ik in jouw situatie zou kunnen doen is dit:
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
Dat wil zeggen, er is één hoofdproducttabel met vermeldingen voor alle producten en de velden die generaliseren tussen de typen, en typegespecificeerde tabellen met externe sleutels in de hoofdproducttabel, die de typespecifieke gegevens hebben.