PowerDesigner supports three mapping strategies for inheritance persistence:
Table per class hierarchy. All the classes in a hierarchy are mapped to a single table. The table has a column that serves as a "discriminator column". The value of this column identifies the specific subclass to which the instance that is represented by the row belongs.
Joined subclass. The root class of the class hierarchy is represented by a single table. Each subclass is represented by a separate table. This table contains the fields that are specific to the subclass (not inherited from its super class), as well as the column(s) that represent its primary key. The primary key column(s) of the subclass table serves as a foreign key to the primary key of the super class table.
Table per class. Each class is mapped to a separate table. All properties of the class, including inherited properties, are mapped to columns of the table for the class.
Each strategy has its pros and cons. You can select the one to apply according to your own needs. You can also apply mixed strategies. But you should be aware that mixed strategy is not well supported by persistence frameworks.
Given the following inheritance hierarchy:
We will describe in the following sections how to apply these mapping strategies in transformation.