Re: circular relationships ok?
Date: Thu, 02 Mar 2006 19:03:23 +0100
Alexandr Savinov schrieb:
> Volker Hetzer schrieb:
>> Alexandr Savinov schrieb: >>> A model with cycles is not a concept-oriented model (theoretically). >>> It is a strong constraint but it is part of the definition. Then the >>> question is if it is useful or not. For any model there are examples >>> which are non-trivial and very difficult to implement. Loops and >>> cycles can be always avoided by introducing a common subconcept. If A >>> and B mutual reference each other then we introduce a common >>> subconcept C: >>> >>> A B >>> \ / >>> C >> >> Ok, here goes: >> >> Net<-------\ >> | | >> V | >> Constraint*| >> | | >> V | >> Token* | >> / \ | >> | -----/ >> V >> Constant >> >> (* denotes "zero or more") >> ("Token" refers to either a constant or a Net, not both.) >> >> How would you do it? >> Maybe I'm blind but I simply don't see it. >> My problem is that the relations are directed. A Nrt doesn't >> refer to constraints and tokens, a net refers to constraints >> and the token optionally refers to another net. >> Even if I add a Token/Net table, I still have the circle.
> Try the following approach in order to find directions for arrows and
> establish an order without cycles. Assume that you do not have any
> entities and your model is empty. Then take, say, Net, and ask a question:
> - Does net know what is a Constant? Can it exist without Constants? Is
> it created before Constants? Is it more general thing than Constant?
A net can exist alone, without any constraints. A constraint always needs a net, it doesn't need tokens. A token needs a constraint, and it needs either a net or a constant.
The tricky bit is deleting a net. If that net is referenced by other tokens, the delete ought to fail.
I need to think that over.
> I thing yes, but you should decide yourself. If so then Net is
> positioned above Constant and any constant object can reference one object.
> The same question should be asked about other pairs of concepts. As far
> as understand your problem domain, Net is the primary object which is
> able to exist without any constraints. However, constraints are not able
> to exist without a net. So a net object should not reference any other
> object in your model and has to be positioned at the top. (No outgoing
> arrows from Nets.)
> Constraint is probably the most specific concept. It has to know
> (reference) a net (for which it is created), a constant and other
> elements it involves. So position it at the bottom and all arrows will
> originate in it. However, if we need to reference several elements, say,
> a constraint can be used in many nets then we need a common
> subconcept,say, NetConstraint which references both. The same is applied
> to other relationships.
Thanks a lot!
Volker Received on Thu Mar 02 2006 - 19:03:23 CET