One table per class hierarchy
  • The SQL table must have a field for each property declared by the inheritance tree’s persistent classes.

  • The SQL table must have an extra field for the discriminator.

  • The fields of the SQL table cannot have the Not Null constraint.

One table per child class
  • Child class tables have a primary key associated with the parent class’ table (the relational model is a one-to-one association).

The SQL Designer module supports a variant of this strategy (one table per child class using a discriminator), which leads to the following constraints:

  • The Discriminator Column, Discriminator Column Type and Discriminator Value properties must be defined at parent class level.

  • The SQL table corresponding to the parent persistent class must have a column for the discriminator.

One table per concrete class
  • Each SQL table defines columns for all the properties of the class, including inherited properties.

  • The name of the column corresponding to Property must be the same for all the child classes.

One table per concrete class using implicit polymorphism
  • Each SQL table defines columns for all the properties of the class, including inherited properties.

  • The name of the column corresponding to Property must be the same for all the child classes.