Re: Demo: Modelling Cost of Travel Paths Between Towns

From: Hugo Kornelis <hugo_at_pe_NO_rFact.in_SPAM_fo>
Date: Tue, 16 Nov 2004 09:56:46 +0100
Message-ID: <qndjp0pp2m3935uvk356fb8qale42tggeb_at_4ax.com>


On 15 Nov 2004 22:11:49 -0800, Neo wrote:

(snip)
> It is easy to verify
>redundant strings are redundant. Modifying one will corrupt your data.

Hi Neo,

Okay, so to prove that storing the same string twice is not redundant, I only have to prove I can change one without corrupting my data? Here goes!

Let's take a simple example, using two simple facts:

  Mary likes John
  Paula likes John

This evening, John will forget about his date with Mary, Paul finds her sobbing and comforts her. Tomorrow, I will have two change one facts; the total collection now reads:

  Mary likes Paul
  Paula likes John

I modified one. My data is not corrupt. QED

>(You many want to reread the example dealing with Islamics taking over
>the world and wanting to reverse the spelling of all words in OT "A
>Normalization Question").

Once again - why should we bother with this probablility (or rather: improbability) and not think about the possibility that the Jews take over the world and want to reverse the order of bits in each byte? I'd say that both scenarios have about the same likelihood of ever occurring.

>It is not as easy to see that a typical RM db has duplicate symbols.
>For example, in a TM/XDb2, there is only one symbol X in a db. One can
>add a property the symbol X. One can relate symbol X in any manner (ie
>"John.likes = 'X'" or find all things that like X via "%.like='X';").
>In RM, how does one represent the symbol X following the RM
>methodology?

The RM doesn't believe in "one model fits all". The model is tailored towards the customer's needs. If a customer's business requires operations on a symbol (or rather: character) level, the RM is quite capable of handling it. However, I have not yet encountered any such business.

If the business is not interested in operations on individual characters, then the 'J', 'o', 'h' and 'n' in the character string that represents John are exactly as significant as the 1's and 0's in the bit string that represents John.

> How does one a add property to the symbol X? How does one
>make any arbitrarty relation involving symbol X. And which one of the
>many duplicate symbols X's does one add that property to if he could?

If a customer's business requires adding properties or relationships to characters, this is handled exactly the same as for any other entity that has properties or participates in relationships.

>Why can't one represent the symbol X the same way as representing the
>person john in RM? Because RM is a limited data model.

One can: CREATE TABLE Symbols (symbol char(1) NOT NULL PRIMARY KEY)

>You can't see the obvious that representing john the person twice is
>redundant in the same manner as representing the string 'john' twice
>is redundant in the same manner as represting the symbol X twice is
>redundant. John, 'john' and X are all things. Representing any one of
>them twice in the logical layer is redundant.

John is a thing (or rather: a person). 'John', 'X', '-> John', 1FB54A and 110010100111010011001 are all references to that thing (using different referencing schemes), not the thing itself.

You still have trouble understanding the basic fact that redundancy in the relational model is not about storing _references_ to a "thing" twice, but about storing FACTS about "things" twice. Until you understand that basic fact, you'll never understand basic normalization.

Best, Hugo

-- 

(Remove _NO_ and _SPAM_ to get my e-mail address)
Received on Tue Nov 16 2004 - 09:56:46 CET

Original text of this message