Re: General semantics

From: Clifford Heath <>
Date: Sat, 22 May 2010 20:44:34 +1000
Message-ID: <4bf7b594$0$3516$>

Nilone wrote:

> On May 21, 7:42 pm, Bob Badour <> wrote:

>>> Sorry, Bob, I think that came out the wrong way. I meant a direct
>>> description of OOP in a RM would require a domain called OID over
>>> which we can define relations. In current SQL systems, I could use an
>>> integer of the same width as the address bus. I certainly don't want
>>> to change the RM in any way.
>> Sorry, Nilone, it's still sounds like a lousy idea to me. > Would you mind telling me why?

I'd like to try. Codd's main insight in the RM is that anything of which we can speak must be distinct, that is, it must be identifiable from other things, especially other things of the same kind. If we can't distinguish a thing, then we can't safely indicate it (make reference to it), so we can never be clear of what we speak. Consequently we must require that the identity of a thing be intrinsic - it cannot be extrinsic.

The fundamental error in OOP is the believe that an OID is a sufficient identifier for an object. If the OID is just a memory address, and there is no intrinsic identifier contained within the data stored at that location, then what happens when the object gets copied? It's a new object, and nothing intrinsic to the copy can firmly and forever associate it with the object from which it was copied. Consequently you are likely to be constantly falling into errors where you have the "wrong" object - meaning the wrong copy.

Codd saw that a tuple must contain *within itself* a key. The keyspace defines a set, and then all the wonderful mathematics of sets comes into play, and that's the RM.

This idea of intrinsic identity actually comes from formal logic, so is at least hundreds of years older than Codd's application of the idea. Yet I believe that it was this connection between data and intrinsic identity that forms the core of Codd's insight and the main value of the RM - not the relational arithmetic or algebra that follows from it.

Perhaps that goes some way to explaining why RM and OOP people are always going to be at odds? Sure, it's possible to model any OO system using relations, and likewise any RM system using objects, but that's not the point.

The point is that *only* when you adopt the policy of requiring intrinsic identification do you get formal semantics, which in turn gives you the ability to define, detect and avoid errors.

That's why it's unfortunate that Object Role Modeling uses the term object. Since Halpin's formalisation (and not prior, in NIAM - and still not even now in Nijssen's CogNIAM!!!), Object Role Modelling has always required intrinsic identification. As such, it's firmly in Codd's camp, not OOP's.

Bob - if you're interested in more detail on why Nijssen's current system is inherently unsound, you'll have to take it offline with me. I won't discuss the flaws in his approach publicly, other than what I've already said. Suffice to say it's still causing problems, much to certain others' frustration.

Clifford Heath. Received on Sat May 22 2010 - 12:44:34 CEST

Original text of this message