Re: A Normalization Question

From: Neo <neo55592_at_hotmail.com>
Date: 18 Jul 2004 12:03:29 -0700
Message-ID: <4b45d3ad.0407181103.3bbc0f47_at_posting.google.com>


> You continue to confuse the physical and logical. Storing the string "Brown"
> more than one time is physically redundant, not logically.

It is you who continue to confuse the physical and logical. It is you who is having difficulty understanding that strings and symbols can and are be represented at the logical layer in my examples and discussions. In general, RM implemenation only allows user to enter logical data, which includes symbols and strings. Data entered in Sql Server or Oracle is at the logical layer, and that includes symbols and strings. Why do you keep insisting that RM's implementations are allowing users to enter non-logical data? Please explain how to determine which layer user-entered data in a RM db belongs to?

> Storing the string "Brown" more than one time is physically redundant, not
> logically. The word has a different meaning in each context. What you are
> doing is the equivalent of this:

The three string 'brown' are logically redundant. They do name three different things which are not redundant. www.xdb2.com/Example/ThingsNamedBrown.asp shows how multiple things can be named by a single string 'brown'. Changing the string 'brown' has a gobal effect. Changing the name of a thing (ie person), has the effect of unrelating it from 'brown' and re-relating to new string (ie 'browne') without effecting existing relationships.

> Even if you migrate this notion to the world of computers, it is still not
> as efficient as existing means (E.g., an index and table).

XDb1 has no tables or indexes (as in RM) yet its solution for generating common ancestor reports for any hierarchy running on a 233 Mhz Pocket PC is nearly twice as fast as that of a non-normalized, non-generic Sql Server 2000 solution running on a 1,300 MHz desktop. Please post your more efficient solution in prior thread titled "Common Ancestor Report". Below are measurements made thus far using RM solutions that aren't as generic or normalized as XDb1's.

Small Report Generation Summary (provided by Hugo)



Solution Time(ms) Platform Notes
-------------- --------  ----------------- --------------------------
RM#1 SqlSrvr2K  14.3     1.3 Ghz PC        Unnormalized, non-generic
RM#2 SqlSrvr2K  11.0     1.3 Ghz PC        Unnormalized, non-generic
XDb1 4.4.7      16       1.3 Ghz PC        Debug ver, norm and gener


Small Report Generation Summary (provided by Neo)



Solution Time(ms) Platform Notes
-------------  --------  ----------------- --------------------------
RM#1 SqlSrvr7   65.0     500 Mhz Server    Unnormalized, non-generic
RM#2 SqlSrvr7   68.9     500 Mhz Server    Unnormalized, non-generic
XDb1 4.5.7       1.632   500 Mhz Server    Normalized, generic
XDb1 4.5.9       6.561   233 MHz PocketPC  Normalized, generic


Large Report (28,940 rows) Generation Summary (provided by Neo) 200 Goat Hierarchy (5 generations x 40 goats/generation, each goat having two parents, except 1st gen).



Solution Time(sec) Platform Notes
-------------  --------  ----------------- --------------------------
RM#5 SqlSrvr7   40.5     500 Mhz Server    Unnormalized, non-generic
XDb1 4.5.7       2.9     500 Mhz Server    Normalized, generic
XDb1 4.5.9      16.971   233 Mhz PocketPC  Normalized, generic


Larger Report (276,620 rows) Generation Summary (provided by Neo). 400 Goat Hierarchy (10 gen x 40 goats/gen),



Solution Time(ms) Platform Notes
-------------  --------  ----------------- --------------------------
RM#5 SqlSrvr7  105 min   500 Mhz Srvr, NT  Avg of 2 runs, UnNrm,UnGen
XDb1 4.5.10     44 min   500 Mhz Srvr, NT  Avg of 2 runs, Norm, gener
XDb1 4.5.10     57 min   450 Mhz PC, 98    1 run, Normalized, generic
XDb1 4.5.10 195 min 233 Mhz PocketPC 1 run, Normalized, generic

Note: SQL Server scripts are available from website. Received on Sun Jul 18 2004 - 21:03:29 CEST

Original text of this message