Sparx Systems Forum
Discussion => Uml Process => Topic started by: Paolo F Cantoni on November 14, 2008, 11:36:38 am

One aspect of models in general, but data models in particular, is the ability to determine what the canonical model is. The canonical model is the smallest set of vertexes (shapes, nodes) and edges (lines) that can provide the semantic richness required by the domain (and from which other semantic facts can be derived).
Specifically, in the case of data models, the canonical model represents the smallest set of tables and foreign key constraints; over which can be laid all the necessary views and joins to meet the data requirements.
Consequently, a canonical relationship is not a derived relationship. UML provides the IsDerived property for relationships to handle this.
There are two basic mechanisms by which relationships are derived: Transitive closure and implication via Generalization.
Derivation by transitive closure is by traversal of a set of canonical relationships. Example: “My manager is the manager of the organizational unit to which I am appointed”. “My Manager” is the derived relationship and “manager of the organizational unit to which I am appointed” is the canonical path by which “My Manager” can be derived.
(http://i36.tinypic.com/zt810z.jpg)
Derivation by implication involves some form of Generalization / Specialization. Example: “A dog must have four legs.” “An Alsatian is a dog.” Therefore, by implication, “An Alsatian must have four legs.” Similarly, “A dog is an animal.” Therefore, by implication, “An animal may have four legs.” (Notice the subtle change in cardinality, in the second example).
(http://i33.tinypic.com/9itgs5.jpg)
One feature of implication is that if the canonical relationship is on the same diagram as the implicit relationship, the implicit one should be suppressed. This is not the case with the traversal derived relationship (unless one is specifically rendering only the canonical model).
The primary use of implicit relationships is during analysis. As the diagram above says – when you drag two vertexes with an implied relationship onto the same diagram, it can raise questions. Support for this would include the ability to easily suppress/restore the display of implicit relationships.
This topic is a starting point for possible support by EA for the notion of canonical modelling (in general) and specific support for implication.
Paolo

OK Paolo, I understand what you are defining here and I see the value of the relationship's derivation by transitive closure. However, I'm not sure where you are going with this as a possible area of support. It looks like a begining movement towards supporting of database views. On the other hand, you may be setting up an ability to model either a logical or physical relationships as one might do with a M:M relationship.
Jim