Re: Canonical DB

From: Bob Badour <>
Date: Fri, 23 Jun 2006 14:21:40 GMT
Message-ID: <UNSmg.1099$>

J M Davitt wrote:

> Robert Martin wrote:

>> On 2006-06-21 18:47:03 -0500, mAsterdam <> said:
>>> Robert Martin wrote:
>>>> mAsterdam said:
>>>>> And I asked "Which (or which types of)
>>>>> computations are easier [with a
>>>>> navigational structure]?"
>>>> Things like tree searches, graph walks, etc.
>>> No, tree searches and graph walks are things
>>> you *need* to do (and specify) when all you have
>>> is navigational structures. They are part of their cost.
>> Uh...  So in RM there just *aren't* graphs or trees?

> Just as there aren't graphs or trees in C++ or python
> or ruby or C#.
> In the RM, there are databases, relations, tuples, and
> scalars. These are used to construct models of thing's
> you're interested in - just like C++ or python or ruby
> or C#.

I suggest you contemplate Date's _Principle of Incoherence_: "It is very difficult to respond coherently to that which is incoherent."

Overly simple replies such as the ones above are counter-productive.

When the ignorant asks "So in RM there just *aren't* graphs or trees?", one has to first provide the coherence the ignorant lacks.

For instance, one must separate the formalism from the data described by the formalism. A logical data model is a formalism specifying a structure to represent data, an integrity mechanism and a manipulation mechanism.

The relational model uses a simple elegant structure for representation so that it can apply the full power of set theory and predicate logic to the problems of integrity and manipulation.

Network models naively use a surfeit of structural elements, and programmers naively assume that if everything is described with the closest matching structural element, integrity and manipulation are facilitated. However, 'closest matching' is at best arbitrary and network models offer nothing anywhere near as high-level or as powerful as either set theory or predicate logic.

Nothing in the relational model prevents data from having value based references such that one can view the data as forming a graph. In fact, referential integrity in the form of foreign key references is an example of exactly that.

The real question, which would sail right over the head of the ignorant in any case, is: Does his favourite flavour of the network model provide anything as clean, elegant and simple for dealing with graphs as provided by the transitive closure in the relational model? Received on Fri Jun 23 2006 - 16:21:40 CEST

Original text of this message