The usual DWH practice is to code the ETL procedure to guarantee referential and primary key integrity. In such cases you define the PK and FK constraints but make them ...

* novalidate
* disable
* rely

The last setting will tell the optimizer to assume integrity even though the constraint is neither enforced nor validated by the db.

You also save space on defining a pk index, which is often as large as the table itself.

Is there a direct relationship between product category and category type, like type is the parent of category?