Re: circular relationships ok?

From: Volker Hetzer <>
Date: Thu, 02 Mar 2006 19:03:23 +0100
Message-ID: <du7c1b$gje$>

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

Original text of this message