Re: atomic

From: paul c <>
Date: Thu, 01 Nov 2007 21:28:38 GMT
Message-ID: <ayrWi.166663$1y4.150325_at_pd7urf2no>

Regarding RVA's, suppose I make up a relation that names all the children of various fathers.

I might have

_ _

Joe Jack
Joe Jill

If RVA's are allowed, I could also "say":

F {C}
_ ___

Joe {Jack, Jill}

(here, I've taken the liberty for graphical reasons of calling the RVA "{C}".)

I could add another tuple:

F {C}
_ ___

Joe {Jack, Jill}
Bob {}

This might mean that Bob is the father of the empty set of children. As far as the predicate is concerned, this might be seen as contradictory because if Bob has no children, he can't be a father. (By "contradictory", I don't mean a contradiction within the database, rather that the second tuple and the predicate contradict each other.)

For that matter if F is not a primary key, I could say:

F {C}
_ ___

Joe {Jack, Jill}
Joe {}

which seems to have two such contradictions if such a thing is possible.

If RVA's aren't allowed (and neither are nulls), I think such contradictions aren't possible. But similar relations seem possible without the second contradiction, depending on the predicate, eg., F has lived with a woman who was mother to the children {C}. But I still have the contradiction that the unnamed woman in the second tuple couldn't be a mother (assuming we don't let lawyers into the discussion).

Maybe that second "contradiction" is just psychological and there is always another possible predicate that washes it away, such as "Person P   has the children {C}". But that second tuple still seems superfluous.

For a predicate like "supplier S supplies the set of parts {P}", it doesn't seem very useful to use an RVA to say that a supplier supplies no parts when a relation that avoids RVA's can avoid recording this fact in the first place.

I suppose if a db language offers no way to construct such relations as above without using a form of "group" that takes as an operand only relations that don't contain RVA's, then such relations couldn't arise.

I'm wondering are there applications where RVA values that are "empty" make sense or are such values just a curious by-product of RVA's? If the latter, should they be suppressed or somehow prevented? Received on Thu Nov 01 2007 - 22:28:38 CET

Original text of this message