Re: Demo: Modelling Cost of Travel Paths Between Towns

From: Neo <neo55592_at_hotmail.com>
Date: 23 Nov 2004 09:57:20 -0800
Message-ID: <4b45d3ad.0411230957.4168aef2_at_posting.google.com>


Neo: With XDb2, no initial "schema" is required and  "SELECT %.age & %.name=john;"
works regardless of what things have to be represented later.

Ed: Using ORACLE,
SPOOL age.sql
select 'select ''', ta.table_name, ''', AGE from ', ta.table_name,

    ' where name = ''JOHN'' ;'
  from user_tab_columns ta,

     user_tab_columns tb
 where ta.table_name=tb.table_name
  and ta.column_name = 'AGE'
  and ta.column_name <> tb.column_name
  and tb.column_name = 'NAME'
 /

SPOOL OFF
START age.sql

> It finds every table (THING in neo-speak) accessable to the user
> account that has columns named 'NAME' and 'AGE' and then produces a
> report of the table name and the value of the age column for all rows
> having a name of JOHN. AND the ORACLE query could easily be extended
> to increment those ages. Since XDb2 cannot do even integer arithmetic,
> I'd say RDBMS comes out ahead again. XDb2 treats everything as a "THING".
> and RDBMS treats everything as a "TABLE". Meta queries are possible in both.
> The XDb2 query is shorter, but not logically less complex. So I'm still
> looking to see the big advantage in Xdb2. I haven't seen it yet.

You are right, I don't see any advantages either. What does "logically less complex" mean? Does your solution handle the following cases without NULLs or redundancies:

  1. Things with no name and multiple names.
  2. Things with no age and multiple ages.
  3. Things with no name or age.
  4. Things with same name(s) and age(s).
  5. Things with variable number of classifications (ie martian and plutonian).

If the name "john" appears multiple times in one table and/or in other tables, would you consider the additional strings "john" to be duplicate/redundant/un-normalized? If not, how would RMDM add properties to a name (ie name's meaning, derivation, history) and which string "john" would you add it to and in which table? If the name of some aliens is an integer or a float, how will your system handle this? How would your system know that a name of an alien is also and integer, float, etc?

If an alien's age is not specified in terms of integers but require words (and uses a math not built into ORACLE) how will your system handle this? (With XDb2 both integer and alien math have to be handled in code). And what if each age has a different property?

If you prefer to allow NULLs, what values for name, age and classification will you use instead? And how will you handle the situation where a future alien has a name, age or classification designated for NULLs at design-time?

Would your initial schema and query continue to work under above cases? If not, what changes would be required? Received on Tue Nov 23 2004 - 18:57:20 CET

Original text of this message