Re: Does Codd's view of a relational database differ from that ofDate&Darwin?[M.Gittens]

From: Jon Heggland <heggland_at_idi.ntnu.no>
Date: Sun, 3 Jul 2005 19:40:19 +0200
Message-ID: <MPG.1d32414e2f1bbf959896d3_at_news.ntnu.no>


In article <eHrxe.135259$JD6.7251058_at_phobos.telenet-ops.be>, jan.hidders_at_REMOVETHIS.pandora.be says...
> > What does NOLOT being 'abstract' mean ?
>
> That there is no value representation associated with non-lexical objects.

They have reference schemes, which provide values (or representations thereof) that identify them! What is the difference?

In the ConQuer paper you directed me to (http://www.orm.net/pdf/ConceptQueries.pdf), there is a ORM diagram where Employee is a NOLOT, identified/represented by "nr", while PhoneNr is a LOT. A sample population of the fact type "Employee has mainphonenr  PhoneNr" might look like this:

23 555-12345
24 555-54321

Again, what is the difference between the NOLOT and the LOT here? The NOLOT Employee is involved in ten other fact types, with similar-looking sample populations. If you want to change the "nr" of a certain employee, this change must be propagated to all the sample populations. How is this logically different from a cascade update? And in what sense is the "identity" of the employee the same, as seen from the database? And in what way is this alleged preservation of identity significant?

It seems to me that the difference between LOTs and NOLOTs is that the representation of a NOLO is allowed to change (but really shouldn't, like RM keys), and that the change must be propagated. However, I can't reconcile that with two things. One, your reply to Marshall Spight:

> No, not really. It has to do with the distinction between on the one
> hand houses, people and countries and on the other hand strings, numbers
> and booleans. The latter three can be denoted directly, the first three
> only indirectly by denoting a certain combination of values associated
> with them.

---which seems to refer to a particular programming language's capability to denote literals. Many dialects of SQL cannot denote a boolean value directly---does that mean that boolean is an "abstract" NOLOT? Can I denote a point directly by saying (3,6)? How about a date? Or a phone number? A phone number is not a string, but it can be represented by a string, or perhaps by an integer. Or both. A string is an array of characters. Is an array of integers a LOT or a NOLOT?

(By the way, in what sense are houses, people and countries more "abstract" than strings, numbers and booleans? Seems to me it is the other way around.)

The other thing is Halpin's diagram. He has a fact type "Employee (nr) earns Salary (usd)", where Salary is a NOLOT. Does this mean that if two employees should ever happen to earn the same, they will do so ever after? Or does it mean that the user must be able to say "Employee 23 earns $40, but it is a *different* $40 than Employee 24 earns"? If so, how does the user distinguish between the two $40s?

I believe the decision to model something as a LOT or a NOLOT depends on how you are going to use it, not what it "really" represents. In any case, the RM can handle it. There is no logical difference between ORM and RM. To repeat myself, I quite like ORM. The NOLOT/LOT distinction may even be a useful abstraction for modelling, but to claim that ORM is logically different from the RM, and that the difference is crippling the RM, is counterproductive.

-- 
Jon
Received on Sun Jul 03 2005 - 19:40:19 CEST

Original text of this message