Formal semantics behind inheritance when performing roll down.
Hi, I wonder if there is a way to formally explain roll down performed in, for example, Power Designer?
Let's take an example. There is a parent entity, let's call it Parent, that has M:N relationship with itself. We also have two subtype entities ChildA and ChildB. After a roll down ChildA will have a M:N relationship with itself and the same goes for ChildB, also having M:N relationship with itself. There will not be any M:N relationship between ChildA and ChildB.
So my question is how Power Designer, Erwin or any other tool arrive at that conclusion? Can this be formally proved or is it a rule of thumb?
In other words what I am interested in is if this self M:N relationship can also be created between children? My gut feeling says no. For example if we have Insurance Base(Parent) and then make roll down to Agreement(ChildA) and Agreement Component(ChildB) and continue rolling down and for each step actually create M:N relationship between children, we would finally arrive at situation where Insurance Agreement(Agreement) can have many Coverages(Agreeement Component) and Coverage is relataed to many Agreements, which is nonsense.
More generic example would be if we have parent entity called Black And White Things and two subtypes penguins and old tv shows. It doesn't make sense to relate penguins and old tv shows. Here again, the semantics will tell us that in fact creating M:N between children does not make sense because penguins are not old tv shows.
The closest to formally explain it was the statement that relationship can be seen as an entity("Mastering Data Modeling: A User Driven Aproach")
In that case M:N between penguins and old tv shows would not be possible because that relationship would not be the same entity.
Are there any cases where that would in fact be possible? Would really like to hear you opinions, experiences or simply gut feeling on this.