Re: Ternary Relationship cardinality

From: <miklesw_at_gmail.com>
Date: 19 Sep 2006 02:42:24 -0700
Message-ID: <1158658944.270237.222370_at_h48g2000cwc.googlegroups.com>


Hi Jan,

> The general rule is as follows: If you have a relationship R(a,b,c)
> then you have to ask for each role, say 'a', how its cardinality
> depends on the combination of the other two, in this case 'b' and 'c'.
> If the upperbound is 1 then you put 1 on the corresponding edge in the
> diagram, if there is no upperbound you put N or M there.

Thanks for the insight...

> Minor detail: if *every* child has two parents your database will
> either be infinite or some will be their own descendants.

Care to expand on this? Note that parents can come into existence by purchase, however since Children are a specialization of 'parent', they can also breed.

Thanks,

Mike

Jan Hidders wrote:
> miklesw_at_gmail.com wrote:
> > I know what cardinality is... and I know how to implement it
> >
> > My problem is with the notation for a particular Ternary relationship.
> >
> > (Supertype) [Parent]------[0..*]----- <Breeding>
> > ----[1..1]--------[Child](subtype)
> > |-------------[0..*]------------|
>
> Your ASCII art is a bit unclear so let me tell you how I interpret
> this:
> - You have a relationship Breeding(Parent1, Parent2, Child)
> Your depicted cardinality constraints are as follows:
> - Each Child participates in exactly one instance of that relationship.
>
> - Each Parent participates in zero or more instances of that
> relationship.
>
> Minor detail: if *every* child has two parents your database will
> either be infinite or some will be their own descendants.
>
> > The prob is when I use the N:1 notation..my first reaction would be to
> > do something like this:
> >
> > (Supertype) [Parent]------1-----
> > <Breeding>-----M-------[Child](subtype)
> > |-------------1------------|
>
> The general rule is as follows: If you have a relationship R(a,b,c)
> then you have to ask for each role, say 'a', how its cardinality
> depends on the combination of the other two, in this case 'b' and 'c'.
> If the upperbound is 1 then you put 1 on the corresponding edge in the
> diagram, if there is no upperbound you put N or M there.
>
> So let's look at Child. Given two particular parents what is the upper
> bound on the number of children. There is no upperbound so the edge
> Breeding--Child is annotated with N. Let's look at Parent1. Given
> Parent2 and a child is there un upper bound on the number of associted
> Parent1's? Yes, there can be at most one, (in fact, this is already the
> case just for Child) so we annotate the edge Breeding--Parent(1) with
> 1.
>
> Clear?
>
> -- Jan Hidders
Received on Tue Sep 19 2006 - 11:42:24 CEST

Original text of this message