This is actually the standard way to “force” OO design into classic RDBMS.
All “common” attributes fall into the main table (for example, the price, if it is maintained at the level of the product table, can easily be part of the main table), while the specifics go to the subtable.
In theory, if you have sub-subtypes (for example, magazines can be subtypes in daily newspapers and periodicals in 4 colors, possibly with periodicals having a date range for the shelf life), you can add one or more sublevels ...
This is a fairly common (and proven) design. The only concern is that the main table will always be joined, at least with a subtable for most operations. If you have cylinders of items, this can have performance implications.
On the other hand, a normal operation, such as deleting an element (I would suggest logical deletion by setting the flag to "true" in the main table) will be performed once for each type of subtype.
In any case, go for it. And maybe google for the "RDBMS mapping oriented object" or somesuch for a full discussion .
source share