To nie jest powszechne, nie. Nie ma natywnego sposobu udostępniania klucza podstawowego. To, co mogę zrobić w twojej sytuacji, to:
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
Oznacza to, że istnieje jedna główna tabela produktów, która zawiera wpisy dla wszystkich produktów i pola, które uogólniają typy, oraz tabele określonego typu z kluczami obcymi do głównej tabeli produktów, które zawierają dane specyficzne dla typu.