Re: Decline of Science: Computer Science and Databases

From: Carl Rosenberger <carl_at_db4o.com>
Date: Sun, 10 Nov 2002 23:14:00 +0100
Message-ID: <aqml8a$585$00$1_at_news.t-online.com>


Alfredo Novoa wrote:
> var Contract real relation {Contract Char, //30 other attributes
> typical to all contracts} key {Contract}
>
> var ContractPositions real relation {Contract Char, Position Char}
> key {Contract, Position}
> foreign key {Contract} references Contract;
>
> var BuildingEngineeringContract real relation {Contract Char, // 30
> building engineering specific attributes}
> key {Contract}
> foreign key {Contract} references Contract;
>
> Your post reflects a deep ignorance about database theory.

Your posting reflects the incapability to understand a real-world problem and to develop a practical solution with existing tools.

Following your approach, one would model all hierarchies into relations. Could you please outline, how a query to print out all contracts with all positions including all data special to all derived classes would look like?

Here is mine:

ObjectSet set = db.get(new Contract());
while(set.hasNext()){
  System.out.println(set.next().toString()); }

With your approach, your queries would have to resolve every single relation by hand. You would either have to set up 30 individual queries or you would need 30 outer joins in one monster query.

Your approach may work in phone-book applications and for theoretical models that "mathematical purists" construct for university textbooks or for "manifestos". In practice it would cause tremendous unnecessary implementation and maintenance work to store and query complex class hierarchies.

Software development mainstream had decided to adopt object-oriented principles and to use inheritance, simply because inheritance is more productive. It's only a matter of time until data management mainstream will widely adopt the same principles.

By the way:
"The Third Manifesto" is very vague in it's recommendation for inheritance.
"OO very strong suggestions":
"Some sort of type inheritance should be supported."
What does the term "type" represent in this context?

- a domain?
- a tuple?
- a relation?
- a scalar?
- a relvar?

"Type" has been used for all of the above earlier in the paper.

Extremely interesting also:
"OO Proscriptions":
"Relvars are not domains"
Sure they can't be. Relations match to object members in OO. ...or does the above sentence in the third manifesto prohibit this use?
Anyhow I think your suggestion violates the principles proposed by Darwen/Date, Alfredo. "Domains" (or "the term object class as it is sometimes used") are scalar types and they miracoulously disappear somewhere in your data machine and have nothing to do with relations.

...gee, I think I need to write an article about this funny manifesto one day.

I pass the word back to the original author and his "one upright small Utah company in danger of saving the world from the decline of computer sciences and databases".

Kind regards,
Carl

--
Carl Rosenberger
db4o - database for objects - http://www.db4o.com
Received on Sun Nov 10 2002 - 23:14:00 CET

Original text of this message