Re: Towards a definition of atomic

From: Jan Hidders <>
Date: Fri, 1 Feb 2008 10:42:45 -0800 (PST)
Message-ID: <>

On 1 feb, 14:30, David BL <> wrote:
> AFAIK the conventional wisdom is that no absolute definition of atomic
> exists for domain types.

On the contrary, we have too many of them. :-) But I don't think it is wise to go looking for a definition if it is not clear to you want you want to do with that definition. If you don't know where you are going, any road will take you there.

>  Throwing caution to the wind, in this post I
> wish to conjecture a definition of atomic that, perhaps with some more
> effort at its formalisation, can provide some absolute meaning for a
> given attribute within a given RDB schema.

In view of such blatant carelessness I can only respond by not heeding my own warning. :-)

The usual intuition is that something is not atomic if it is decomposable into smaller parts. In this case that would mean parts with less information. For the case of decomposition into two components this leads to something like:

DEFINITION: A domain D is said to be decomposable if there are domains D1 and D2 and functions f1 : D -> D1 and f2 : D -> D2 such that (1) f1 and f2 are not injective and (2) <f1,f2> is injective where <f1,f2> : D -> (D1 x D2) is defined such that <f1,f2>(x) = (f1(x), f2(x)).

Note that (1) says that each individual decomposition function loses information and (2) says that together they don't. However, we can then make the following observation:

THEOREM: A domain is decomposable iff it contains more than 2 values.

As you more or less already observed, if you have a relational schema that uses an infinite domain (i.e. with infinitely many values) then you cannot map it losslessly it to a relational schema that uses only non-decomposable domains. But, if you allow the exception of abstract identifiers, then you can.

> Continuing with example 2, note that no further decomposition allowing
> information equivalence is possible.  For example, a person's name is
> represented as a string domain type, and this is atomic because any
> attempt at decomposing the string into its individual characters
> forces the introduction of additional identifiers.

That's not completely correct. You can decompose it, but at least one of the components will always be an infinite domain again. You could for example split it into the first character and the rest.

  • Jan Hidders
Received on Fri Feb 01 2008 - 19:42:45 CET

Original text of this message