Re: O'Reilly interview with Date

From: David Cressey <david.cressey_at_earthlink.net>
Date: Thu, 11 Aug 2005 22:55:46 GMT
Message-ID: <SHQKe.4378$Je.2227_at_newsread2.news.atl.earthlink.net>


"Kenneth Downs" <knode.wants.this_at_see.sigblock> wrote in message news:lkjps2-76f.ln1_at_pluto.downsfam.net...
> David Cressey wrote:
>
> >
> > In this connection, I want to express a contrarian view about "natural
> > joins".
> > I think making joins "natural" based on common column names is a
mistake.
> > It's overloading the column name.
> > Natural joins sohlud be based on common domain names. Better yet, they
> > should be based on declared REFERENCES constraints (perhaps unenforced).
>
> In my own system I never manually code a join, I just specify the two
tables
> and it builds it out of the foreign key definitions.
>
> The foreign key definition has a little more going for it than a REFERENCE
> constraint, because it actually defines the columns in the child table
> instead of just referencing existing columns.

Excellent!

It reminds me a little of Data Architect (DA), where you build a conceptual data model (CDM)
interactively, with a graphic interface. The CDM identifies entities, relationships among entities, attributes of entities, domains of attributes, and maybe a little more. The CDM does NOT include foreign keys.

Once you are satisfied with a CDM, you can ask DA to build a physical data model |(PDM). A PDM is DBMS specific.
You have to choose a product, like Oracle or Ingres. The PDM contains tables and columns, among other things. The foreign keys are included. Once you have a suitable PDM, you can use DA to generate a create script, but that's another discussion.

Here's why I like what you wrote better than DA. DA allows me to delegate the busy work of tracing references at database creation time, but it didn't, as of 5 years ago, let me delegate the same busy work at query generation time. (DA may have progressed considerably since I last used it).

Your system appears to link a rich model for database definition with the same rich model for query generation. That's what I think is excellent. Of course, I haven't played with your system. But at least I like the description! Received on Fri Aug 12 2005 - 00:55:46 CEST

Original text of this message