I'm wondering if anyone is using or thinking of using a what I call table inheritance to create their entities/tables. What I mean by this is using tables that have a one-to-one relationship to create an inheritance chain.
In the system I'm building a small example would be the following abstract classes.
AbstractProduct
AbstractPart
AbstractFrame
I then have the concrete classes inherit the chain above.
RoadFrame
MountainFrame
Does this make sense so far.
Now to store these entities in the database I create a table for each one of the classes above.
AbstractProducts
AbstractParts
AbstractFrames
RoadFrames
MountainFrames
Now the most obvious problem I see with this is that the query to retrieve either Road Frames or Mountain Frames would require four joins. So I worry about performance a bit. A second obvious problem to this is that LLBLGen does not currently support inheritance yet. Though I've been told that table inheritance will be added in the future.
My primary reason for building the system in this way is because I have 30+ entities that are very different from each other in their attributes. So I think storing each entity in its own table is a better way to go.
Does anyone have any comments on this? Is this a good/bad way of thinking about building my system?