Re: Little design mistakes that can be easily avoided (2): Listenning to CELKO (and CELKO alikes)

From: Brian Selzer <brian_at_selzer-software.com>
Date: Mon, 28 May 2007 00:39:25 GMT
Message-ID: <1xp6i.12192$RX.7419_at_newssvr11.news.prodigy.net>


"Matthias Klaey" <mpky_at_hotmail.com> wrote in message news:5f2k53pq5srphk68s1op58udei9h60stuo_at_4ax.com...
> "Brian Selzer" <brian_at_selzer-software.com> wrote:
>
>>
>>"Matthias Klaey" <mpky_at_hotmail.com> wrote in message
>>news:bipi53pjf51gluul6b3b8uv86kbq7hanse_at_4ax.com...
>>> Cimode <cimode_at_hotmail.com> wrote:
>>>
>>>>
>>>>Matthias Klaey a écrit :
>>>>> Cimode <cimode_at_hotmail.com> wrote:
>>>>>
>>>>> >On 26 mai, 18:18, Matthias Klaey <m..._at_hotmail.com> wrote:
>>>>> >> Cimode <cim..._at_hotmail.com> wrote:
>>>>> >> >Hi,
>>>
>>> [...]
>>>
>>>>> ><<Codd also wrote the following:
>>>>> >There are three difficulties in employing user-controlled keys as
>>>>> >permanent surrogates for entities.>>
>>>>> >Again that Codd ? Who's Codd anyway?
>>>>>
>>>>> Surely you must be joking?
>>>>Never joking. Asking questions and trying t make sense out of CELKO's
>>>>posts.
>>>
>>> Then it's time for a short history lesson. Edgar F. Codd was the
>>> inventor of the relational model (RM). You might start with
>>>
>>> http://en.wikipedia.org/wiki/Edgar_F._Codd
>>>
>>> and take it from there. Most important is
>>>
>>> http://en.wikipedia.org/wiki/Codd%27s_12_rules
>>>
>>> (Unfortunately the two Computerworld articles where Codd first
>>> described his rules do not seem to be available online).
>>>
>>> You can download Codds very first paper on the relational model under
>>>
>>> http://www.klaeycomputing.com/Codd/Codd1.pdf
>>>
>>> and the paper cited by Celko under
>>>
>>> http://www.klaeycomputing.com/Codd/Codd2.pdf
>>>
>>
>>If you've studied it, they you know that Celko's failed to mention the
>>last
>>paragraph of section 4, which is in direct contradiction to his rant.
>>I've
>>pointed this and other things out to him before, but he still dumps the
>>same
>>flawed argument on people all the time. In other words, he *knowingly*
>>mischaracterizes Codd's position to advance his own agenda. (He wants
>>people to buy his books!)
>
> Codds first paper "A relational Model of Data for Large Shared Data
> Banks" (Communications of the ACM Vol 13 No 6, June 1970, 377-387) has
> "chapters"
>
> 1 "Relational Model and Normal Form" and
> 2 "Redundancy and Consistency"
>
> with sections numbered 1.1 to 1.4 and 2.1 to 2.4.
>
> The second paper "Extending the Database Relational Model to Capture
> More Meaning" (ACM Transactions on Database System, Vol 4, No 4,
> December 1979, 397-434) is numbered in "chapters/sections" from 1 to
> 17.
>
> So please which one is your section 4? Do you refer to Paper 1,
> Section 1.4, last paragraph
>
> "If the user's relational model is set up in normal form,
> names of items of data in the data bank can take a simpler
> form than would otherwise be the case. A general name
> would take a form such as
>
> R (g).r.d
>
> where R is a relational name; g is a generation identifier
> (optional); r is a role name (optional); d is a domain name.
> Since g is needed only when several generations of a given
> relation exist, or are anticipated to exist, and r is needed
> only when the relation R has two or more domains named
> d, the simple form R.d will often be adequate."
>
> Or this one? Paper 1, Section 2.4 last paragraph
>
> "Many questions are raised and left unanswered. For
> example, only a few of the more important properties of
> the data sublanguage in Section 1.4 are mentioned. Neither
> the purely linguistic details of such a language nor the
> implementation problems are discussed. Nevertheless, the
> material presented should be adequate for experienced
> systems programmers to visualize several approaches. It
> is also hoped that this paper can contribute to greater precision
> in work on formatted data systems."
>
> Or this one? Paper 2, Section 4 last paragraph
>
> "They will have to remember, however, that it is now the surrogate
> that is the primary key and provides truly permanent identification
> of each entity. The capability of making equi-joins on surrogates
> implies that users see the headings of such columns but not the
> specific values in those columns."
>
> And how, specifically, does any of these paragraphs contradict Celkos
> "rant" (sic!)? Does it contradict the whole of it, or just part of it,
> and if the latter is the case, which part?
>

This is the one. It directly contradicts the following paragraph in Celko's ["rant" is a bit more polite than "spew" It certainly doesn't rise to the level of an argument. The fallacies and deliberate attempt to mislead place it more in the category of propaganda than anything else.]:

<<
This means that a surrogate ought to act like an index; created by the user, managed by the system and NEVER seen by a user. That means never used in queries, DRI or anything else that a user does.
>>

Which sums up his entire argument against surrogates. He then uses the term "authority" as if in the article Codd was arguing against surrogates, when the section he quoted (or deliberately misquoted) is a clear argument in favor of surrogates! Now, while I'm not sure I agree with Codd when it comes to hiding surrogate key values, I certainly wouldn't twist his words completely around in order to support my own agenda!

> Or are you talking about something completely different?
>
> Greetings
> Matthias Kläy
> --
> www.kcc.ch
Received on Mon May 28 2007 - 02:39:25 CEST

Original text of this message