Ce n'est pas vraiment courant, non. Il n'existe aucun moyen natif de partager une clé primaire. Voici ce que je pourrais faire dans votre situation :
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
C'est-à-dire qu'il existe une table principale de produits contenant des entrées pour tous les produits et contenant les champs qui généralisent entre les types, et des tables spécifiées par type avec des clés étrangères dans la table principale de produits, qui contiennent les données spécifiques au type.