Quote:
Note that the challenge did not include the words
"Neo's definition of normalization", |
Nor did it include the words RM's definition. Apparently you had not
been reading Neo's posts for the past several years. Neo's definition
of normalization is more correct, RM is incomplete. That is why Neo
recognizes entering the string 'brown' twice in a db is redundant while
you cannot. See C.J. Date's "An Intro to Database Systems", 6th Ed,
Chapter 10, Further Normalization I: 1NF, 2NF, 3NF, where he states on
pg 291 "By now the reader might well be wondering whether there is any
end to this progression and whether there might be a 6NF, a 7NF, and so
on ad infintum...We content ourselves with the rather equivocal
statement that there are indeed additional normal forms ..."
Normalizing 'brown', 'brown', 'brown' is higher than 5NF.
Quote:
... but please stop repeating the same message over and over again! |
This is ironical, since it nearly always either you or one of your
supporters (ie Alan, Gene Wirchenko, etc) that first posts the same
message over and over again during past half a year thus invoking Neo's
standard response indicating the results and the deficiencies of your
solutions. If you feel irritated by seeing the same response over and
over again, you have only to look to yourself for evoking it over and
over again.
For instance, in this thread alone, the first response to Neo's
original post, Alan wrote:
"INSERT INTO neo VALUES 'common sense', 'integrity', 'honesty'; UPDATE
neo SET pocketbook = pocketbook - 1000;
And later Hugo wrote: "as of yet still unpaid debt of $1,000. (Yeah, I
now "please show Neo ..." blah blah)."
You even know what Neo's response will be in advance, yet you continue
to invoke it.
Once again, your solution doesn't qualify because its too slow, doesn't
generate from normalized NULL-less data, isn't as generic, and it
doesn't allow the user to create any hierarchy. Among other
deficiencies your last RM Solution #2 has redundancy in its schema
(schema is data also). It stores the class hierarchy in one table and
the remaining hierarchies in a separate table. Because your code only
runs against the second table, it cannot generate a report for the
class hierarchy.
Also your solutions cannot represent the following cases without NULLs
or redundant data (XDb1's solution is normalized down to symbols):
Case1: God is the parent of an unnamed person. God is also the parent
of second person with three names (string 'john', integer 100, decimal
3.14).
Case2: john isa person. john's color is brown. mary isa person. mary's
color is brown. brown is a person.
As shown by the measurements made below, even when executed on a 5.6
times slower 233 Mhz Pocket PC, XDb1 generated the small common
ancestor report nearly twice as fast as your non-normalized,
non-generic SQL Server 2000 Solution running on a 1,300 MHz desktop.
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
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