# Towards a definition of atomic

From: David BL <davidbl_at_iinet.net.au>
Date: Fri, 1 Feb 2008 05:30:25 -0800 (PST)

AFAIK the conventional wisdom is that no absolute definition of atomic exists for domain types. 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.

The examples are a little contrived, but are only meant to be illustrative.

Example 1:

"Einstein discovered the formula E = mc^2"
"Newton discovered the formula F = ma"

Example 2:

"Bill is a parent of { Mary, John }"
"Mary is a parent of { Don, Alex, Sue }"

In example 1, in Prolog we can define a predicate 'discovered' to represent the two facts as follows

discovered(einstein, eq(var("E"), prod(var("m"), pow(var("c"),num(2))))).

discovered(newton, eq(var("F),prod(var("m"),var("a")))).

In previous threads I have discussed how it is not possible to decompose the information in nested expressions into a set of propositions about the nodes without the introduction of node identifiers.

By contrast, in example 2 it is straightforward to map the two facts into five (by decomposing the sets of children) as follows

```    parent(bill,mary).
parent(bill,john).
parent(mary,don).
parent(mary,alex).
parent(mary,sue).

```

A decomposition of an attribute involves translation from an original DB schema to a new DB schema with alternative relations. Of course the original attribute (and therefore its containing relation) isn't present in the new DB schema.

Firstly ISTM that a valid attribute decomposition must be *nontrivial *, and perhaps this could be formalised somehow using entropy (by saying that the new attribute(s) have less states available than the original attribute). Although I'm not sure exactly how to state this mathematically, I expect one would find general agreement on what a non-trivial decomposition means in practice.

Unfortunately, it seems that one could be tricky and come up with a bijection that makes the node identifiers functionally dependent on the underlying DB state; by defining some unique ordering on the identifiers (one could then use integers according to ordinal position). I say this is unfortunate because it upsets the proposal for a simple meaning of atomic. However, I wonder whether things can be salvaged at the expense of a complicated definition of atomic, by introducing a constraint on the bijection that it not be pathological, in the sense that addition of information shouldn't be able to cause widespread reassignment of identifiers. The very fact that this can happen points to their arbitrary or meaningless nature, and more specifically to the fact that they identify a sub-value rather than an entity in the UoD.

Original text of this message