Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion Groups
Database Servers
DB2InformixIngresMS SQLOraclePervasive.SQLPostgreSQLProgressSybase
Desktop Databases
FileMakerFoxProMS AccessParadox
General
General DB TopicsDatabase Theory
Related Topics
Java Development.NET DevelopmentVB DevelopmentMore Topics ...

Database Forum / General DB Topics / DB Theory / April 2004

Tip: Looking for answers? Try searching our database.

Date's First Great Blunder

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Dawn M. Wolthuis - 14 Apr 2004 04:11 GMT
C. J. Date has written about what he calls "The First Great Blunder" related
to this question:  What concept is it in the relational world that is the
counterpart to the concept of object class in the object world?

He suggests that there are two answers given: domain = object class or
relvar = object class.  He then says that the first equation is obviously
right and the second wrong.  Classes are types and domains are types, but
relvars are variables and, therefore, not types, so QED.

The idea, it seems, is to rid Java programmers of the notion of using
classes to define "relations" or records.  I'm guessing I'm not the only one
who doesn't buy Mr. Date's argument.

I'll toss out one of the way-too-many-thoughts buzzing in my head on this
topic.  How about this equation:

Class = Metadata

A class is a spec/template -- not a variable nor an object.  There can be
metadata for a type and metadata for a relation/record and classes
corresponding to either.

Do many folks agree with Date on this point or is this one of his
lone-ranger attempts to push against the OO folks?  --dawn
Timothy J. Bruce - 14 Apr 2004 04:22 GMT
et al:

Do people respond to Dawn because they don't know any better?

Maybe they think they will get laid,
Timothy J. Bruce
uniblab@hotmail.com
</RANT>
Tony - 14 Apr 2004 12:59 GMT
> et al:
>
[quoted text clipped - 4 lines]
> uniblab@hotmail.com
> </RANT>

Ah, so THAT'S why you responded is it?
Eric Kaun - 14 Apr 2004 13:53 GMT
> et al:
>
[quoted text clipped - 4 lines]
> uniblab@hotmail.com
> </RANT>

Nice. With a great deal of luck on our part, that will have been your final
post.
Timothy J. Bruce - 14 Apr 2004 21:20 GMT
> Nice. With a great deal of luck on our part, that will have been your final
> post.
She napped the line while I was reeling her in, so I'm done with her for good.  

She just entered Ye Olde Kill File,
Timothy J. Bruce
uniblab@hotmail.com
</RANT>
mAsterdam - 14 Apr 2004 10:09 GMT
Being the champion at topic-raising comes with a responsability.

I don't like the title. While I don't like object bashing,
person-bashing is no improvement. So for the next thread:
Your content deserves better subject lines. Please.

> C. J. Date has written about what he calls "The First Great Blunder" related
> to this question:  What concept is it in the relational world that is the
> counterpart to the concept of object class in the object world?

The complementing question would be: What concept is it in the object
world that is the counterpart to the concept of relation in the
relational world?

That is, *if* these two worlds are separable. Are they?
If they are, are they the only ones or are there more worlds?

Hm... the subject line bothers me more than I thought. But I won't
      s/te/wn/

So only 2 Eurocents for now.
Later.  :-/
mAsterdam - 14 Apr 2004 10:20 GMT
Being the champion at topic-raising comes with a responsability.

I don't like the title. While I don't like object bashing,
person-bashing is no improvement. So for the next thread:
Your content deserves better subject lines. Please?

> C. J. Date has written about what he calls "The First Great Blunder" related
> to this question:  What concept is it in the relational world that is the
> counterpart to the concept of object class in the object world?

The complementing question would be: What concept is it in the object
world that is the counterpart to the concept of relation in the
relational world?

That is, *if* these two worlds are separable. Are they?
If they are, are they the only ones or are there more worlds?

Hm... the subject line bothers me more than I thought. But I won't
      s/te/wn/

So only 2 Eurocents for now.
Later.  :-/
Dawn M. Wolthuis - 14 Apr 2004 12:51 GMT
If I put Date's terminology of "First Great Blunder" in quotes is that
better?  I've read his treatment and name of this opinion of his in multiple
places, so I thought it might be recognizable.  Keeping the quotes off just
made me smile, so I thought it might make others smile too.  Cheers!  --dawn

> Being the champion at topic-raising comes with a responsability.
>
[quoted text clipped - 18 lines]
> So only 2 Eurocents for now.
> Later.  :-/
mAsterdam - 14 Apr 2004 15:19 GMT
> If I put Date's terminology of "First Great Blunder" in quotes is that
> better?  I've read his treatment and name of this opinion of his in multiple
> places, so I thought it might be recognizable.  Keeping the quotes off just
> made me smile, so I thought it might make others smile too.  Cheers!  --dawn

I must have been really grumpy this morning. Sorry :-)
Alfredo Novoa - 14 Apr 2004 14:47 GMT
> I don't like the title.

IMO it is only a little joke.

> While I don't like object bashing,

But there are many things to fix in the OO world.

> The complementing question would be: What concept is it in the object
> world that is the counterpart to the concept of relation in the
> relational world?

Good question. The counterpart of both relation and relvar is
"collection object", but they are not directly supported by the
languages and they don't have an algebra or calculus.

> That is, *if* these two worlds are separable. Are they?

The problem is that the OO world is extremely fuzzy. There are
literally millions of OO worlds.

Regards
 Alfredo
Tony - 14 Apr 2004 12:57 GMT
> C. J. Date has written about what he calls "The First Great Blunder" related
> to this question:  What concept is it in the relational world that is the
[quoted text clipped - 8 lines]
> classes to define "relations" or records.  I'm guessing I'm not the only one
> who doesn't buy Mr. Date's argument.

You'd be right, it goes against the grain for many OO folks.

> I'll toss out one of the way-too-many-thoughts buzzing in my head on this
> topic.  How about this equation:
[quoted text clipped - 7 lines]
> Do many folks agree with Date on this point or is this one of his
> lone-ranger attempts to push against the OO folks?  --dawn

I agree with Date - when I first saw him present this at a seminar
back in 1997 it struck me as a obviously true, once pointed out.  But
it isn't really an attack on the OO folks, rather it is a defence of
the relational model AGAINST attacks by the OO (or OR) folks, who have
said that the relational model is at fault and should be fixed by the
"relvar = object class" approach.  However, it is true that in the
process of doing that, Date has pointed out flaws in the thinking
behind OO - flaws which he very much wants to keep out of the
relational model!
Eric Kaun - 14 Apr 2004 14:21 GMT
> C. J. Date has written about what he calls "The First Great Blunder" related
> to this question:  What concept is it in the relational world that is the
[quoted text clipped - 20 lines]
> Do many folks agree with Date on this point or is this one of his
> lone-ranger attempts to push against the OO folks?  --dawn

I do agree with him, although his use of the term "counterpart" isn't
exactly right. Part of his agenda is pointing out the overloading in the use
of some OO terms, and the vagueness in others (not necessarily a disjoint
set).

Using terms like "spec", "metadata", and "template" requires some definition
as well.

What is metadata for a type, other than the type itself? Relations have
types, as do tuples (simply and not very precisely, the relation has a
heading which has the same type as its allowable tuples).

In any event, the crux of his argument is that types are to relations what
nouns are to sentences, separating the values we can talk about from what
we're saying about them. OO allows excessive and unnecessary leniency, in
that an object is a variable, or rather a record with both variables and
functions, and the values of its variables can be other variables, etc. etc.
This is confused in ways that force the use of patterns and conventions such
as immutability / "value classes", enumerations, factories and factory
methods, and many other techniques enforcable not via automation, but purely
via human obedience and review.  Aliasing is a major problem in OO
applications, and has spawned research which, interestingly enough, has many
different solutions. This suggests, although the field is young,
intractability.

So if you suggest that classes can correspond both to types and to
relations/records, in what way do we prevent the varying needs of each from
overlapping in destructive ways? In the OO community there are patterns
galore to govern how you build your classes, some corresponding more to
types and some more to relations/records (and then more to helpers,
utilities, managers, DAOs, ad nauseum). Unfortunately, there's also the
opportunity to spawn bastard hybrids - more invitation than opportunity,
really. In what way does the concept of class then help, if we have to take
measures to coral our classes back into the appropriate camp? And if we work
best with classes classified as either collection variable or as type, then
why fuse the two together?

So far we've spoken only of types, both "basic" (domains) and tuple types
(records). A relation (specifically a relvar) has not only a type but a
value. Does a class correspond to the "type of the relvar" (e.g. the
"metadata"), or to its current value, the tuples currently stored in it?

I'll close with one of my favorite quotes. Oh, I can't pick just one, so
here are a bunch of related ones from Dijkstra:

"... all unmastered complexity is of our own making; there is no one else to
blame and so we had better learn how not to introduce the complexity in the
first place."

"The sore truth is that complexity sells better. (It is not only the
computer industry that has discovered that.) And it is even more diabolical
in that we even use the complexity of our own constructs to impress
ourselves."

"It is a genuine sacrifice to part from one's ingenuities, no matter how
contorted. Also, many a programmer derives a major part of his professional
excitement from not quite understanding what he is doing, from the daring
risks he takes and from the struggle to find the bugs he should not have
introduced in the first place."

"... pay the greatest possible care to the choice of concepts in terms of
which we have built up our theories: we know we have to keep it crisp,
disentangled, and simple if we refuse to be crushed by the complexities of
our own making."

"The moral is clear: prevention is better than cure, in particular if the
illness is unmastered complexity, for which no cure exists."

- erk

P.S. I'll add, to avoid the stamp of anti-object bigot, that I've been
programming nearly exclusively in Java/J2EE for the past 4 years, so while I
will never claim to be an expert, I am at least well-versed in the practice
and the literature.
Alfredo Novoa - 14 Apr 2004 16:59 GMT
>What is metadata for a type, other than the type itself?

I disagree. A type is a set of values and a set of operators but the
metadata of a type are things like the name of the type, the name of
the possreps, the name of the possrep's components and their types,
etc.

Regards
 Alfredo
Eric Kaun - 14 Apr 2004 20:50 GMT
> >What is metadata for a type, other than the type itself?
>
> I disagree. A type is a set of values and a set of operators but the
> metadata of a type are things like the name of the type, the name of
> the possreps, the name of the possrep's components and their types,
> etc.

OK, I can buy that. I think for purposes of this discussion that we can
ignore those other things - though come to think of it, POSSREP will
probably creep into the discussion. I was trying to start simply.
Alfredo Novoa - 15 Apr 2004 12:50 GMT
>> >What is metadata for a type, other than the type itself?
>>
[quoted text clipped - 6 lines]
>ignore those other things - though come to think of it, POSSREP will
>probably creep into the discussion. I was trying to start simply.

Now I understand you.

The metadata of a type can be extracted from the type definition.

Regards
 Alfredo
Alfredo Novoa - 14 Apr 2004 14:27 GMT
> He suggests that there are two answers given: domain = object class or
> relvar = object class.  He then says that the first equation is obviously
> right and the second wrong.  Classes are types and domains are types, but
> relvars are variables and, therefore, not types, so QED.

It's all very obvious.

> The idea, it seems, is to rid Java programmers of the notion of using
> classes to define "relations" or records.

The idea is to rid programmers of making great blunders.

> I'm guessing I'm not the only one
> who doesn't buy Mr. Date's argument.

The vast majority of the OO coders reject the evident when it is
against the dogma.

> I'll toss out one of the way-too-many-thoughts buzzing in my head on this
> topic.  How about this equation:
[quoted text clipped - 4 lines]
> metadata for a type and metadata for a relation/record and classes
> corresponding to either.

A class is a type and "object" is the mix and confusion of the
"variable" and "value" concepts.

Metadata is data like any other data, and it should be represented in
the form of relations.

> Do many folks agree with Date on this point or is this one of his
> lone-ranger attempts to push against the OO folks?

This is an attempt to educate the misleaded and misinformed
practicioners.

Regards
 Alfredo
Dawn M. Wolthuis - 14 Apr 2004 15:48 GMT
> > He suggests that there are two answers given: domain = object class or
> > relvar = object class.  He then says that the first equation is obviously
[quoted text clipped - 13 lines]
> The vast majority of the OO coders reject the evident when it is
> against the dogma.

OO, like relational database theory, does have religious followers, but I'm
guessing that most practitioners of each are more pragmatic than dogmatic,
working to develop and maintain information systems.  It "works" to specify
a "record" by way of an OO class and include persistence methods in the
class -- and that is what's "evident" to "the vast majority of the OO
coders", I suspect.

> > I'll toss out one of the way-too-many-thoughts buzzing in my head on this
> > topic.  How about this equation:
[quoted text clipped - 7 lines]
> A class is a type and "object" is the mix and confusion of the
> "variable" and "value" concepts.

Is a class a type or a definition of a type?  A type, being a domain, is a
set.  A class is a specification where the set of all objects that can be
instantiated using that specification constitute the domain (or the set that
actually ARE instantiated, depending on your definition of domain).

> Metadata is data like any other data, and it should be represented in
> the form of relations.

Or in the same for as other data, agreed.  Code is metadata..

> > Do many folks agree with Date on this point or is this one of his
> > lone-ranger attempts to push against the OO folks?
>
> This is an attempt to educate the misleaded and misinformed
> practicioners.

Your post is?  Date's opinion is?  What is?  smiles.  --dawn
Alfredo Novoa - 14 Apr 2004 16:53 GMT
>> The vast majority of the OO coders reject the evident when it is
>> against the dogma.
>
>OO, like relational database theory, does have religious followers

I disagree. Relational database theory is a branch of maths and OO is
a set of fuzzy and contradictory guidelines that lacks any consensus.
It is clear that the second is a lot more religious followers prone.

>, but I'm
>guessing that most practitioners of each are more pragmatic than dogmatic,

Many practicioners does not have knowledge enough to be pragmatic and
they are forced to be dogmatic.

>working to develop and maintain information systems.  It "works" to specify
>a "record" by way of an OO class and include persistence methods in the
>class -- and that is what's "evident" to "the vast majority of the OO
>coders", I suspect.

What is evident is that the equation: type = variable does not work.

>> A class is a type and "object" is the mix and confusion of the
>> "variable" and "value" concepts.
>
>Is a class a type or a definition of a type?

A class is a type and a class definition is a type definition.

Many people confuse a class with its definition.

> A type, being a domain, is a
>set.  A class is a specification where the set of all objects that can be
>instantiated using that specification constitute the domain (or the set that
>actually ARE instantiated, depending on your definition of domain).

A class being a type is a set (among other things).

>> Metadata is data like any other data, and it should be represented in
>> the form of relations.
>
>Or in the same for as other data, agreed.  Code is metadata..

No, code does not have any relationship with metadata. The metadata of
a type is the name of the type, the number of the possible
representations and their names, the name of the representation's
components, their types, etc.

>Your post is?  Date's opinion is?  What is?  smiles.  --dawn

My post is my post :)

Regards
 Alfredo
Dawn M. Wolthuis - 14 Apr 2004 17:27 GMT
> >> The vast majority of the OO coders reject the evident when it is
> >> against the dogma.
[quoted text clipped - 4 lines]
> a set of fuzzy and contradictory guidelines that lacks any consensus.
> It is clear that the second is a lot more religious followers prone.

Not to me, it isn't.  Mathematical models are simply models/metaphores.  The
discipline of "doing" relational theory could be seen as mathematics, but
the application of this mathematics to the discipline of application
software development has to do with a belief that this mathematical model
has something to do with the engineering effort underway.

> >, but I'm
> >guessing that most practitioners of each are more pragmatic than dogmatic,
>
> Many practicioners does not have knowledge enough to be pragmatic and
> they are forced to be dogmatic.

Yes, it is a shame that those fresh out of higher ed do seem dogmatic about
both relational databases as being the best databases and OO as the best
programming languages, based not on practice, but the sermons they have
heard in the classroom and read in their text books.  The advocates in both
of these areas have a pitch that resonates with professors and/or text book
writers & publishers.  I think both OO and relational theory ought to be
taught side by side with alternatives and pros & cons of each.  There is not
one correct mathematical model for data, metadata, nor functions (by
whatever names).

> >working to develop and maintain information systems.  It "works" to specify
> >a "record" by way of an OO class and include persistence methods in the
> >class -- and that is what's "evident" to "the vast majority of the OO
> >coders", I suspect.
>
> What is evident is that the equation: type = variable does not work.

I agree.

> >> A class is a type and "object" is the mix and confusion of the
> >> "variable" and "value" concepts.
[quoted text clipped - 4 lines]
>
> Many people confuse a class with its definition.

Me, for exampe.  The term is used both ways.  I prefer to think of a class
as a specification for (that is, metadata regarding) a domain/type.  What we
can "see" of the class is a specification "in writing" (e.g. MyType.java)
and a compiled version of that spec (e.g. MyType.class).  The set of objects
that could be instantiated by way of this specification of the type is more
abstract.  So, I prefer using the term "class" as a definition/spec of a
type and the term "type" as the more abstract (invisible) set.  I think this
helps avoid some of the confusion in terms, perhaps, maybe, a little bit.

> > A type, being a domain, is a
> >set.  A class is a specification where the set of all objects that can be
> >instantiated using that specification constitute the domain (or the set that
> >actually ARE instantiated, depending on your definition of domain).
>
> A class being a type is a set (among other things).

See how confusing that terminology is?

> >> Metadata is data like any other data, and it should be represented in
> >> the form of relations.
> >
> >Or in the same for as other data, agreed.  Code is metadata..
>
> No, code does not have any relationship with metadata.

really?  What about the declarative code that specifies constraints on the
data -- is that metadata?  If the same information is in a procedural
language, does it cease to be metadata at that point?

> The metadata of
> a type is the name of the type, the number of the possible
> representations and their names, the name of the representation's
> components, their types, etc.

maybe that's the meta-metadata?

--dawn
Eric Kaun - 14 Apr 2004 21:15 GMT
> There is not
> one correct mathematical model for data, metadata, nor functions (by
> whatever names).

"Correct"? Is that even possible?

> > Many people confuse a class with its definition.
>
[quoted text clipped - 6 lines]
> type and the term "type" as the more abstract (invisible) set.  I think this
> helps avoid some of the confusion in terms, perhaps, maybe, a little bit.

So a class is simply an implementation of a type? That seems to be what
you're getting at.

> > No, code does not have any relationship with metadata.
>
> really?  What about the declarative code that specifies constraints on the
> data -- is that metadata?  If the same information is in a procedural
> language, does it cease to be metadata at that point?

Yes, I'd say so. The line between "procedural" and "declarative" may be
somewhat hard to define (at least I haven't seen a formal definition),
though most of us would know either to see it.

- erk
Dawn M. Wolthuis - 14 Apr 2004 21:59 GMT
> > There is not
> > one correct mathematical model for data, metadata, nor functions (by
> > whatever names).
>
> "Correct"? Is that even possible?

Nope, unless you think it is possible to have a correct metaphor.

> > > Many people confuse a class with its definition.
> >
[quoted text clipped - 13 lines]
> So a class is simply an implementation of a type? That seems to be what
> you're getting at.

"Type" is not my favorite word, but if, indeed, it is the very same word as
"domain" then it seems to me that a class is the specification of a domain.
The class itself is not the domain "set" but, rather, an object of software
that specifies the domain.  I suppose that one could equate a specification
with a set and surely there is a mapping (a function) from the spec to the
domain.

> > > No, code does not have any relationship with metadata.
> >
[quoted text clipped - 5 lines]
> somewhat hard to define (at least I haven't seen a formal definition),
> though most of us would know either to see it.

What gives "declarative" a description of metadata that OO or functional or
procedural or whatever other languages would not be able to claim?  --dawn
Alfredo Novoa - 15 Apr 2004 13:34 GMT
>"Type" is not my favorite word, but if, indeed, it is the very same word as
>"domain" then it seems to me that a class is the specification of a domain.

Type is a word with a long pedigree and a lot more precise than class.
By the way, strictly speaking, domain is not exactly the same as type.
A domain is a type minus the operators.

Regards
 Alfredo
Lauri Pietarinen - 15 Apr 2004 21:44 GMT
> Type is a word with a long pedigree and a lot more precise than class.
> By the way, strictly speaking, domain is not exactly the same as type.
> A domain is a type minus the operators.

I would suggest that operators are not necessarily part of the type
definition.  At least there are operators that could belong to many
types, such as
speed(distance, time).  

regards,
Lauri Pietarinen
Alfredo Novoa - 17 Apr 2004 14:11 GMT
>> Type is a word with a long pedigree and a lot more precise than class.
>> By the way, strictly speaking, domain is not exactly the same as type.
>> A domain is a type minus the operators.
>
>I would suggest that operators are not necessarily part of the type
>definition.

Then they are part of what?

> At least there are operators that could belong to many
>types, such as
>speed(distance, time).

Agreed, but what is the problem?

An operator could be part of several type definitions.

IMHO Tutorial D type definitions are actually domain definitions
because they don't include the operators (and it is a good thing).
 

Regards
 Alfredo
Eric Kaun - 15 Apr 2004 17:09 GMT
> > > There is not
> > > one correct mathematical model for data, metadata, nor functions (by
[quoted text clipped - 3 lines]
>
> Nope, unless you think it is possible to have a correct metaphor.

Nope, not me.

> > > > Many people confuse a class with its definition.
> > >
[quoted text clipped - 20 lines]
> "Type" is not my favorite word, but if, indeed, it is the very same word as
> "domain" then it seems to me that a class is the specification of a domain.

I think Alfredo suggested that domain was type without the operators. Could
well be the case, but I'll just stick with type and only mention the
operators when they're important.

I'd say a class CAN BE an implementation of a domain. But classes must also
be other things, because not every bit of functionality and data in a system
is a domain. Specifically, relations, which speak of values (of their
attribute types), but are not in and of themselves types. (strong caveat
here - it strikes me that I don't have the precise language to differentiate
attribute types from relation heading types, since Date does agree, of
course, that relations have types. I'll have to think about this more.
Tuples are values of a type, and so are relations, so there are TUPLE and
RELATION type generators, and they have operators as well - the operators on
relations are the algebra. Or am I oversimplifying? Sorry, just mumbling to
myself...)

> The class itself is not the domain "set" but, rather, an object of software
> that specifies the domain.  I suppose that one could equate a specification
> with a set and surely there is a mapping (a function) from the spec to the
> domain.

Yes, although most developers use them strictly as variables, and abuse them
horribly. I like the line that relational theory draws between types and
relations.

> What gives "declarative" a description of metadata that OO or functional or
> procedural or whatever other languages would not be able to claim?  --dawn

With OO and procedural, the metadata must be separately maintained or
laboriously derived from the code - not an easy process. Functional is a
different matter I lack the expertise to discuss much, but it's also
declarative in that lazy vs. strict implementations can decide on the order
of evaluation of expressions (unlike procedural). With "declarative"
(correctly placed in quotes), what you declare is the "metadata" (although
we're not really talking about data here). It's just executable (e.g. a
higher level of abstraction).

Keep in mind that OO is simply procedural with some packaging (although I
don't know about the inclusion of objects in Lisp and other non-procedural
languages).

And, as a final caveat, you can induce "proceduralism" to some degree in
many functional and logic languages. They just don't mandate it, and make it
awkward.

Anyone proficient in those languages, feel free to correct me...

- erk
Dawn M. Wolthuis - 15 Apr 2004 17:43 GMT
<snip>
> > What gives "declarative" a description of metadata that OO or functional
> or
> > procedural or whatever other languages would not be able to
laim?  --dawn

> With OO and procedural, the metadata must be separately maintained or
> laboriously derived from the code - not an easy process. Functional is a
[quoted text clipped - 8 lines]
> don't know about the inclusion of objects in Lisp and other non-procedural
> languages).

And isn't declarative just specifying the parms for some proprietary
database's procedural code to apply?  I do think that different languages
have different advantages and disadvantages, so I'm not language-agnostic,
but I don't see anything decidedly different whether I spec constraints in
one language or another.  If one is metadata, so is the other.

And for software developers who are writing database-independent code, the
constraints often need to be pushed to the underlying databases from some
other repository with some other language (often proprietary to the software
developer).  So a rules database for all constraints makes sense.  Then if a
"service" is able to maintain the data and apply these rules, then using the
DBMS for storing and managing such constraints seems like unnecessary double
work  (sorry for going off on this tangent)  cheers!  --dawn
Eric Kaun - 15 Apr 2004 20:19 GMT
> <snip>
> And isn't declarative just specifying the parms for some proprietary
> database's procedural code to apply?

Assuming that statement is right, that's still a big difference. The runtime
executes one machine-code processor-specific instruction at a time
(basically), which is what CPUs do. But that looks nothing like the source
code (though today they tend to have more in common than they should), and
the source code looks nothing like the specification, which looks nothing
like the user manual.

Think about it this way: the user manual, if accurate and detailed, "looks
like" the external appearance of the system at runtime. But the machine code
being executed looks nothing like that.

A true specification describes, abstractly but accurately and precisely, the
effects of the system. "Declarative code" describes the result, not how to
get there. The procedural part is in the engine that processes the
declarations, not in the declarations themselves. Among other things, this
allows the engine to optimize (much as compilers these days can apply more
optimizations better than most assembly programmers), and even to optimize
based on runtime characteristics (e.g. how the system is being used), like
Oracle can optimize its access paths based on stats generated from the
actual queries run. Little of that is possible with procedural code, where
the programmer has to specify not only what to do but how to do it.

> I do think that different languages
> have different advantages and disadvantages, so I'm not language-agnostic,
> but I don't see anything decidedly different whether I spec constraints in
> one language or another.

I'd be surprised if you spec constraints at all - you code, like most of us,
but where is the spec? The code is not the spec. The spec is probably in
your head as you're coding, but not making it explicit means it's easy to
forget about it and violate it in your code.

> If one is metadata, so is the other.

Not true. Think of a SQL query vs. a COBOL program accessing ISAM data.

> And for software developers who are writing database-independent code, the
> constraints often need to be pushed to the underlying databases from some
[quoted text clipped - 3 lines]
> DBMS for storing and managing such constraints seems like unnecessary double
> work  (sorry for going off on this tangent)

I think it's a useful and related one. Yes, I agree, a "rules database" is
what's needed. Why you've separated that from the DBMS I don't know... I
wish I could use the relations defined in my DBMS directly in my code! Or
rather, specify the constraints somewhere and have them published everywhere
they're relevant. I think the problem is that languages aren't relational
enough - I can imagine a lot of cloying for/while/if tests that are
basically to select objects matching some criteria, and that an in-memory
SELECT would accomplish it much more simply.

- erk
Eric Kaun - 15 Apr 2004 20:45 GMT
Quotes from my screensaver, relevant to this discussion:

"Progress is possible only if we train ourselves to think about programs
without thinking of them as pieces of executable code." - Edsger W. Dijkstra

and

"We have to let the symbols do the work, for that is the only known
technique that scales up." - Edsger W. Dijkstra
Alfredo Novoa - 15 Apr 2004 13:28 GMT
>Not to me, it isn't.  Mathematical models are simply models/metaphores.

They are formal representations.

>  The
>discipline of "doing" relational theory could be seen as mathematics, but
>the application of this mathematics to the discipline of application
>software development has to do with a belief that this mathematical model
>has something to do with the engineering effort underway.

It should not have relationship with beliefs. It is proven that it is
simpler than the known alternatives.

>Yes, it is a shame that those fresh out of higher ed do seem dogmatic about
>both relational databases as being the best databases and OO as the best
>programming languages, based not on practice, but the sermons they have
>heard in the classroom and read in their text books.

Most if not all of the advocates of the network and hierarchical
approaches never tried The Relational Model, thus their experience has
little value. It is hard to practice with something never implemented.

> The advocates in both
>of these areas have a pitch that resonates with professors and/or text book
>writers & publishers.  I think both OO and relational theory ought to be
>taught side by side with alternatives and pros & cons of each.

I agree, although they are independent. Relational theory is for data
management and OO is for coding.

>  There is not
>one correct mathematical model for data, metadata, nor functions (by
>whatever names).

But there is one best approach for data management.

>> What is evident is that the equation: type = variable does not work.
>
>I agree.

Then it is obvious that you disagree with class = type

>> A class is a type and a class definition is a type definition.
>>
>> Many people confuse a class with its definition.
>
>Me, for exampe.  The term is used both ways.

Indeed, it is the typical fuzzyness of OO. OO terms have many meanings
and communication and precise thinking is very difficult.

>  I prefer to think of a class
>as a specification for (that is, metadata regarding) a domain/type.

It does not change the things a lot. The equation: type specification
= relvar is as blunderous as type = relvar.

>> A class being a type is a set (among other things).
>
>See how confusing that terminology is?

Yes, that's why I tend to avoid the "class" term and to use "type",
"type definition" and "type implementation" instead.

Bad terminology leads to bad thinking.

>> No, code does not have any relationship with metadata.
>
>really?  What about the declarative code that specifies constraints on the
>data -- is that metadata?

No, it is a way to represent metadata. You should not confuse the
"thing" with one possible representation of the "thing".


Regards
 Alfredo
Dawn M. Wolthuis - 15 Apr 2004 18:18 GMT
> >Not to me, it isn't.  Mathematical models are simply models/metaphores.
>
> They are formal representations.

Yes, formal representations of a metaphore for whatever in the "real world"
they are applied to

> >  The
> >discipline of "doing" relational theory could be seen as mathematics, but
[quoted text clipped - 4 lines]
> It should not have relationship with beliefs. It is proven that it is
> simpler than the known alternatives.

Simpler to human beings?  Simpler to computers?  Simpler to work with
mathematically?  This is a RELIGIOUS BELIEF that if you take the simplest
mathematical model (aka metaphor) for something, then that is the best.  I
could use a point as a mathematical model for God or use a more complicated
model of a triangle.  I prefer the triangle metaphor because it is helpful
for describing a trinitarian view of God.  A point is surely simpler than a
triangle, however.  That doesn't mean it is the best metaphor to choose.

> >Yes, it is a shame that those fresh out of higher ed do seem dogmatic about
> >both relational databases as being the best databases and OO as the best
[quoted text clipped - 4 lines]
> approaches never tried The Relational Model, thus their experience has
> little value. It is hard to practice with something never implemented.

The terms "Network" and "Hierarchical" were coined by relational theorists
to disparage other approaches -- in other words, they are marketing terms.
There are many people who persist data in trees (see your average file
system, LDAP, DNS and many other repositories) or di-graphs (see the www).

I am an example of someone who has used Oracle, SQL Server, My SQL, and
PostgreSQL and much prefer the data model of the U2 databases (UniVerse and
UniData).  Why?  Because I care about the cost of ownership for the overall
software solutions over time.  I am not alone in knowing and using
relational databases and prefering not to.

> > The advocates in both
> >of these areas have a pitch that resonates with professors and/or text book
[quoted text clipped - 3 lines]
> I agree, although they are independent. Relational theory is for data
> management and OO is for coding.

Yes, but both are for developing software applications that meet the needs
of people and organizations.

> >  There is not
> >one correct mathematical model for data, metadata, nor functions (by
> >whatever names).
>
> But there is one best approach for data management.

Ah, there is that religion again -- I suppose the one best approach is to
use the relational model?  Yes that is king of the hill still in 2004, but
it might be wise to keep your eye on the rear view mirror (to mix
metaphors).

> >> What is evident is that the equation: type = variable does not work.
> >
> >I agree.
>
> Then it is obvious that you disagree with class = type

That's really a matter of defining terms.  I do think that "the code is the
spec" for software and by my definitions, the software class is a spec for a
type.  I think Eric had some more industry-standard terms for a difference
between a specification for a set and the enumeration of the set.  If I were
to specify in a class that a set

S = {all women over 60}

then that class would have the specification for the type S but would not BE
the type if, indeed, type and domain are the same set.  My mother would be
IN that set, but would not be part of the class, nor perhaps even within a
100 miles of the set.

The objects that can be instantiated by a class are NOT "in" the class,
while they are in the domain specified by the class.  But again, this is a
definition of terms.  I someone wants to define class=type then I can play
that game but I'd rather say that a class is a type definition or
specification.

> >> A class is a type and a class definition is a type definition.
> >>
[quoted text clipped - 4 lines]
> Indeed, it is the typical fuzzyness of OO. OO terms have many meanings
> and communication and precise thinking is very difficult.

But if all those OO folks have that same problem, then perhaps there is more
precision than we think?

> >  I prefer to think of a class
> >as a specification for (that is, metadata regarding) a domain/type.
>
> It does not change the things a lot. The equation: type specification
> = relvar is as blunderous as type = relvar.

Is there such a thing as a relation as a type of attribute (as in
"relational-valued attribute")?  If so, then why couldn't a class be a type
of relation?

> >> A class being a type is a set (among other things).
> >
> >See how confusing that terminology is?
>
> Yes, that's why I tend to avoid the "class" term and to use "type",
> "type definition" and "type implementation" instead.

OK, I can work with that.

> Bad terminology leads to bad thinking.

Agreed.  "Bad terminology" is not just imprecise terminology but terminology
that does not properly communicate.  It seems to me that when I talk about
classes with OO folks there is better understanding about what we are
talking about than if I talk about types with relational database folks,
however, the relational theorists have done a better job of making the
definitions precise (each variation on them).

> >> No, code does not have any relationship with metadata.
> >
[quoted text clipped - 3 lines]
> No, it is a way to represent metadata. You should not confuse the
> "thing" with one possible representation of the "thing".

then we are back to a class not actually BEING a type, but being a possible
representation of a type.  Even though we have had a similar discussion on
these terms many times in this forum, I'm not getting any wiser about them
and I really want to.  It is not just that there are so many possible
definitions, but there seems to be different term-tuples that are being
described.  The question of "for what concepts do we need a term" are
different in different worlds, so we have overloaded and contradictory
terms.  Some of that is understandable, but as soon as someone says that
"OOclass=RELATIONALtype" it seems like things get muddier (in my head) and
not clearer.  I'll keep studying.  --dawn
mAsterdam - 15 Apr 2004 20:17 GMT
> Alfredo Novoa wrote:
>>
[quoted text clipped - 19 lines]
> for describing a trinitarian view of God.  A point is surely simpler than a
> triangle, however.  That doesn't mean it is the best metaphor to choose.

Yup. Unfortunately some of these religions are so secretive that even
the believers don't all know that they are. I am sure I have some (a lot
- who knows?) of those beliefs. One of my unfounded beliefs I *am* aware
of is that if people try to understand and respect eachother, they will.

[snipalot]

> That's really a matter of defining terms.  ...

How about a c.d.theory glossary ?
Alfredo Novoa - 16 Apr 2004 12:34 GMT
>> >Not to me, it isn't.  Mathematical models are simply models/metaphores.
>>
>> They are formal representations.
>
>Yes, formal representations of a metaphore for whatever in the "real world"
>they are applied to

Mathematical models are not limited to the real world.

>> It should not have relationship with beliefs. It is proven that it is
>> simpler than the known alternatives.
>
>Simpler to human beings?  Simpler to computers?

Simpler to humans of course.

>  Simpler to work with
>mathematically?  This is a RELIGIOUS BELIEF that if you take the simplest
>mathematical model (aka metaphor) for something, then that is the best.

Simplest leads to cheapest and money has nothing to do with religion
(although the contrary is false :).

>> Most if not all of the advocates of the network and hierarchical
>> approaches never tried The Relational Model, thus their experience has
[quoted text clipped - 4 lines]
>There are many people who persist data in trees (see your average file
>system, LDAP, DNS and many other repositories) or di-graphs (see the www).

If you don't like the terms I could say that it was proven that the
logic based approach is superior to the graph based approaches.

>I am an example of someone who has used Oracle, SQL Server, My SQL, and
>PostgreSQL and much prefer the data model of the U2 databases (UniVerse and
>UniData).  Why?  Because I care about the cost of ownership for the overall
>software solutions over time.  I am not alone in knowing and using
>relational databases and prefering not to.

None of the above is a RDBMS and My SQL is not a DBMS at all.

To use Oracle does not mean that you know how to take andvantage on
The Relational Model.

I used navigational procedural approaches and the relational approach,
and the differences in code size are in orders of magnitude. The
differences in productivity between assembler and Java is very little
compared to this.

>> I agree, although they are independent. Relational theory is for data
>> management and OO is for coding.
>
>Yes, but both are for developing software applications that meet the needs
>of people and organizations.

You can use The Relational Model to manage data and to use OO when you
code the applications.

>> But there is one best approach for data management.
>
>Ah, there is that religion again

No, it is well stablished science teached at any university.

> -- I suppose the one best approach is to
>use the relational model?  Yes that is king of the hill still in 2004, but
>it might be wise to keep your eye on the rear view mirror (to mix
>metaphors).

I would be delighted to find something even better, but there is not
any sign in the horizon.

>The objects that can be instantiated by a class are NOT "in" the class,

If class is definition this is evident.

If class is type then it is evident that objects (values)  of a class
are part of the class.

>while they are in the domain specified by the class.  But again, this is a
>definition of terms.  I someone wants to define class=type then I can play
>that game but I'd rather say that a class is a type definition or
>specification.

That's the magic of OO. Everything might be anything.

The best definition of object is: an object is something.

Everything is something, thus everything is an object.

>> >  I prefer to think of a class
>> >as a specification for (that is, metadata regarding) a domain/type.
[quoted text clipped - 5 lines]
>"relational-valued attribute")?  If so, then why couldn't a class be a type
>of relation?

Relations have type, you could call class to the type of a relation,
but OO languages (still) don't support anything similar. OO types are
scalar and relation types are not.

BTW you can not declare relation types in Tutorial D or table types in
SQL.

Regards
 Alfredo
Dawn M. Wolthuis - 16 Apr 2004 13:19 GMT
> >> >Not to me, it isn't.  Mathematical models are simply models/metaphores.
> >>
[quoted text clipped - 18 lines]
> Simplest leads to cheapest and money has nothing to do with religion
> (although the contrary is false :).

Bingo!  So, we ought to be able to get some emperical data.  If such a study
is done fairly, what will it show about the cost of ownership of an RDBMS
compared to a PICK implementation?

> >> Most if not all of the advocates of the network and hierarchical
> >> approaches never tried The Relational Model, thus their experience has
[quoted text clipped - 7 lines]
> If you don't like the terms I could say that it was proven that the
> logic based approach is superior to the graph based approaches.

Now we are getting somewhere -- I have heard relational theorists make this
claim often -- is there emperical data to "prove" this claim or is this one
of those "I made the rules of the game and then I won the game" statements?
I have honestly searched for such proof and cannot find it.

> >I am an example of someone who has used Oracle, SQL Server, My SQL, and
> >PostgreSQL and much prefer the data model of the U2 databases (UniVerse and
[quoted text clipped - 3 lines]
>
> None of the above is a RDBMS and My SQL is not a DBMS at all.

So, we have a theory and no implementations so it is impossible for us to
know whether the theory is useful or not?  I won't hold my breath for an
actual consumer product that is deemed good enough for us to test the
theory.  And, by the way, since Codd's first relational theory paper was
published by ACM in 1970, what is keeping us from having an implementation
these many years later?  I'll admit there are no perfect PICK
implementations by a long stretch, but the first implementation of it was,
indeed, an implementation.

> To use Oracle does not mean that you know how to take andvantage on
> The Relational Model.

I will completely agree that I am no expert on the relational model, but I
am here as a student.

> I used navigational procedural approaches and the relational approach,
> and the differences in code size are in orders of magnitude. The
> differences in productivity between assembler and Java is very little
> compared to this.

I care naught for code size.  In the 80's when I had COBOL programmers
working for me (and was one myself), the anecdotal evidence I saw that the
really excellent programmers often produced many fewer lines of code than
their average-programmer counterparts was overwhelming.  Additionally, I
find "lines of code per function point" comparisons of computer languages to
tell us nothing about productivity in the language.  It is good to see our
profession attempt to get some solid metrics, but what a silly metric that
one is!

> >> I agree, although they are independent. Relational theory is for data
> >> management and OO is for coding.
[quoted text clipped - 4 lines]
> You can use The Relational Model to manage data and to use OO when you
> code the applications.

But I only work with applications whose purpose is to manage data ;-)
[don't respond to that one IYKWGFY]

> >> But there is one best approach for data management.
> >
> >Ah, there is that religion again
>
> No, it is well stablished science teached at any university.

I have yet to find proof that the relational model is better for a company
to use than any other data model.  My anecdotal evidence tells me otherwise.
Where is the emperical data?

> > -- I suppose the one best approach is to
> >use the relational model?  Yes that is king of the hill still in 2004, but
[quoted text clipped - 3 lines]
> I would be delighted to find something even better, but there is not
> any sign in the horizon.

I suspect this has to do with what we are trying to do with the model.  I'm
after the best total cost of ownership for software applications.

> >The objects that can be instantiated by a class are NOT "in" the class,
>
> If class is definition this is evident.
>
> If class is type then it is evident that objects (values)  of a class
> are part of the class.

Yup, agreeds.

> >while they are in the domain specified by the class.  But again, this is a
> >definition of terms.  I someone wants to define class=type then I can play
[quoted text clipped - 20 lines]
> but OO languages (still) don't support anything similar. OO types are
> scalar and relation types are not.

In what way are they scalar?  I suspect this is a def thing too.  It seems
to me that one could have an array as an object (loose terminology), right?

> BTW you can not declare relation types in Tutorial D or table types in
> SQL.

I know -- what a shame, eh?  smiles.  --dawn
Alfredo Novoa - 16 Apr 2004 15:36 GMT
>> Simplest leads to cheapest and money has nothing to do with religion
>> (although the contrary is false :).
>
>Bingo!  So, we ought to be able to get some emperical data.  If such a study
>is done fairly, what will it show about the cost of ownership of an RDBMS
>compared to a PICK implementation?

I am sure about it will show that an RDBMS is a lot cheaper.

The problem is that we don't have RDBMSs to do the study.

>> If you don't like the terms I could say that it was proven that the
>> logic based approach is superior to the graph based approaches.
>
>Now we are getting somewhere -- I have heard relational theorists make this
>claim often -- is there emperical data to "prove" this claim or is this one
>of those "I made the rules of the game and then I won the game" statements?

Anecdotal evidence is not necessary and it does not prove anything in
maths.

>I have honestly searched for such proof and cannot find it.

See the Relational Database Writings series.

And also this for instance:

http://www.intelligententerprise.com/db_area/archives/1999/991105/online2.jhtml

>> None of the above is a RDBMS and My SQL is not a DBMS at all.
>
>So, we have a theory and no implementations so it is impossible for us to
>know whether the theory is useful or not?

Even the bastardized implementations are very useful at practice and
they replaced the alternatives in most scenaries.

> I won't hold my breath for an
>actual consumer product that is deemed good enough for us to test the
>theory.  And, by the way, since Codd's first relational theory paper was
>published by ACM in 1970, what is keeping us from having an implementation
>these many years later?

IMO the major component is ignorance.

The model was never understood by the masses.

The first dirty, flawed and incomplete prototypes were so successful
that a correct implementation was forgotten.

When the flaws and limitations arised they were attributed to the
model instead of the flaws of the implementations and some people
returned to the primitive approaches. Sad, but true.

>> I used navigational procedural approaches and the relational approach,
>> and the differences in code size are in orders of magnitude. The
[quoted text clipped - 5 lines]
>really excellent programmers often produced many fewer lines of code than
>their average-programmer counterparts was overwhelming.

I am talking about the same programmer and differences of more than a
90%

>  Additionally, I
>find "lines of code per function point" comparisons of computer languages to
>tell us nothing about productivity in the language.  It is good to see our
>profession attempt to get some solid metrics, but what a silly metric that
>one is!

It is silly to apply it blindly but it might says many things.

I am sure about I prefer to mantain 2000 lines of high level code
instead of 50000 lines of assembler code.

>> Relations have type, you could call class to the type of a relation,
>> but OO languages (still) don't support anything similar. OO types are
>> scalar and relation types are not.
>
>In what way are they scalar?

They have visible components.

>  I suspect this is a def thing too.  It seems
>to me that one could have an array as an object (loose terminology), right?

Yes, an array type is a good example of non scalar type. IMO all OO
languages should implement relational variables besides array
variables. It would be the end of the called "impedance mismatch".

>> BTW you can not declare relation types in Tutorial D or table types in
>> SQL.
>
>I know -- what a shame, eh?  

No, I don't think they are very useful and it would be very easy to
implement that.

Regards
 Alfredo
Laconic2 - 16 Apr 2004 18:00 GMT
> The problem is that we don't have RDBMSs to do the study.

So let's work with what we have, namely Oracle, DB2, SQL Server, etc.  until
we get the first "genuine"  RDBMS.

Regardless of whether these products correctly implement the relational
concept or not,  they can still be evaluated for usefulness.
Leandro Guimarães Faria Corsetti Dutra - 19 Apr 2004 19:53 GMT
> we don't have RDBMSs to do the study.

    We do.  Alphora Dataphor.

Signature

Leandro Guimarães Faria Corsetti Dutra           +55 (11) 5685 2219
Av Sgto Geraldo Santana, 1100 6/71               +55 (11) 5686 9607
04.674-000  São Paulo, SP                                    BRASIL
http://br.geocities.com./lgcdutra/

Dawn M. Wolthuis - 19 Apr 2004 20:01 GMT
"Leandro Guimar?es Faria Corsetti Dutra" <leandro@dutra.fastmail.fm> wrote

> > we don't have RDBMSs to do the study.
>
> We do.  Alphora Dataphor.

Great -- so what advantages can you see in a real relational database
management system that are not present in the not-exacxtly-relational
implementations that are out there?  In other words, in what way is a pure
relational implementation more useful than one that is not-so-pure?  Thanks
in advance.  --dawn
Leandro Guimarães Faria Corsetti Dutra - 20 Apr 2004 23:11 GMT
>> Alphora Dataphor.
>
> Great -- so what advantages can you see in a real relational database
> management system that are not present in the not-exacxtly-relational
> implementations that are out there?  In other words, in what way is a pure
> relational implementation more useful than one that is not-so-pure?

    User defined types as first class citizens, including special
values to get us rid of NULLs.

    Updateable derived relations (updateable views).

    All the system defined on the database, including UI.

    And so on... get it for yourself on http://alphora.com./ --
unfortunately it needs MS .Net.

Signature

Leandro Guimarães Faria Corsetti Dutra           +55 (11) 5685 2219
Av Sgto Geraldo Santana, 1100 6/71               +55 (11) 5686 9607
04.674-000  São Paulo, SP                                    BRASIL
http://br.geocities.com./lgcdutra/

Dawn M. Wolthuis - 20 Apr 2004 23:49 GMT
"Leandro Guimar?es Faria Corsetti Dutra" <leandro@dutra.fastmail.fm> wrote

> >> Alphora Dataphor.
> >
[quoted text clipped - 5 lines]
> User defined types as first class citizens, including special
> values to get us rid of NULLs.

Good deal.

> Updateable derived relations (updateable views).

Wonderful!

> All the system defined on the database, including UI.

I'll withhold judgment until I take a look

> And so on... get it for yourself on http://alphora.com./ --

OK

> unfortunately it needs MS .Net.

nevermind ;-(

smiles.  --dawn
Anthony W. Youngman - 22 Apr 2004 22:27 GMT
>>> Alphora Dataphor.
>>
[quoted text clipped - 5 lines]
>       User defined types as first class citizens, including special
>values to get us rid of NULLs.

Amen to that ...

>       Updateable derived relations (updateable views).
>
>       All the system defined on the database, including UI.

I think we might have trouble here ... I'm beginning to get inconvenient
ideas about data/metadata ... :-)

>       And so on... get it for yourself on http://alphora.com./ --
>unfortunately it needs MS .Net.

Cheers,
Wol
Signature

Anthony W. Youngman - wol at thewolery dot demon dot co dot uk
HEX wondered how much he should tell the Wizards. He felt it would not be a
good idea to burden them with too much input. Hex always thought of his reports
as Lies-to-People.
The Science of Discworld : (c) Terry Pratchett 1999

Leandro Guimarães Faria Corsetti Dutra - 23 Apr 2004 15:19 GMT
>>       All the system defined on the database, including UI.
>
> I think we might have trouble here ... I'm beginning to get inconvenient
> ideas about data/metadata ... :-)

    What's wrong about metadata being data?

Signature

Leandro Guimarães Faria Corsetti Dutra           +55 (11) 5685 2219
Av Sgto Geraldo Santana, 1100 6/71               +55 (11) 5686 9607
04.674-000  São Paulo, SP                                    BRASIL
http://br.geocities.com./lgcdutra/

Anthony W. Youngman - 23 Apr 2004 18:23 GMT
>>> Alphora Dataphor.
>>
[quoted text clipped - 5 lines]
>       User defined types as first class citizens, including special
>values to get us rid of NULLs.

As I said in another post - great! But I've been thinking ...

Does relational draw a distinction between data and metadata? Does it
also require a separation between the database (that acts on metadata)
and applications (that act on data)?

Because if the answer to both questions is yes, then we are trying to
square a circle. "Nature opposes any change". Apply a voltage across a
wire, current starts to flow, which causes a voltage in the opposite
direction, which resists the flow of the current ... - the normal
behaviour of the physical world ...

Analysis of a real-world object to obtain data to put into a database
involves considerable transformation. In particular, it involves the
destruction of a large amount of metadata. As others have noted,
analysis is not a closed system and the metadata can be replaced by the
equivalent data (the metadata that two "order details" are physically on
the same piece of paper called an invoice is replaced by the data that
both order detail rows in the database share the same invoice-no as a
foreign key).

The only way to make this information available to the DBMS again is to
put application logic INSIDE the DBMS - indeed - to make user-defined
types "equal citizens" with pre-defined types we need to be able to
allow the user to modify the DBMS, and not just the database.

To me this flies in the face of all the claims by the current
"relational" databases to be able to protect the data from the
programmer - how can it if the programmer has the ability to write code
to convert data into metadata?

This seems to me to be even more evidence in favour of the Pick
approach, which is to separate data integrity from data storage, and to
store metadata as "just more data". In other words, data integrity
should be enforced by a mechanism similar to the current relational
trigger, and not by metadata in the datastore itself.

The application layer sits on top of a data integrity layer which sits
on top of a datastore layer. Current "relational" databases muddle the
integrity layer into both the datastore and the application layer. Pick
just shoves the whole lot into the application layer ... (although it's
added a trigger layer which could do it.)

Cheers,
Wol
Signature

Anthony W. Youngman - wol at thewolery dot demon dot co dot uk
HEX wondered how much he should tell the Wizards. He felt it would not be a
good idea to burden them with too much input. Hex always thought of his reports
as Lies-to-People.
The Science of Discworld : (c) Terry Pratchett 1999

Jan Hidders - 19 Apr 2004 23:25 GMT
>>we don't have RDBMSs to do the study.
>
>     We do.  Alphora Dataphor.

Does it already have its own storage engine?

-- Jan Hidders
Leandro Guimarães Faria Corsetti Dutra - 20 Apr 2004 23:06 GMT
>> Alphora Dataphor.
>
> Does it already have its own storage engine?

    Only the beginnings of it, and probably it will be redone.

    For now it is still best to use IBM DB2 (or some lesser SQL
DBMS) as its storage engine.

Signature

Leandro Guimarães Faria Corsetti Dutra           +55 (11) 5685 2219
Av Sgto Geraldo Santana, 1100 6/71               +55 (11) 5686 9607
04.674-000  São Paulo, SP                                    BRASIL
http://br.geocities.com./lgcdutra/

Laconic2 - 19 Apr 2004 14:36 GMT
> I care naught for code size.  In the 80's when I had COBOL programmers
> working for me (and was one myself),

Dawn,

If you managed COBOL programmers in the 1980s,  but never heard of the
hierarchical or network data models, except as "marketing for the relational
model",  then you have led a sheltered existence, indeed.

Ever hear of IMS?  It was built on the hierarchical model of data.  Ever
hear of IDMS (not IDMS/R)?  It was built on the network model of data.
These are just two examples.  Any COBOL shop that had some exposure to the
prerelational COBOL/DBMS world had some exposure to one of these models of
data.

As far as comparisons between data models go,  Codd's work in the early
1970's was proposing a new data model.  To propose a new data model, without
comparing it to existing data models, would have been irresponsible.  Codd
made the comparison.  If you want to dismiss Codd's work as "marketing
hype",  well, who am I to argue?

As far as "an RDBMS has never been built", I agree with you.  That's not a
useful position to take.   No one has ever built a triangle either.  But my
kindergarten teacher had an approximate triangle that she held up in class,
and said "This is a triangle".  Close enough.
Dawn M. Wolthuis - 19 Apr 2004 15:42 GMT
> > I care naught for code size.  In the 80's when I had COBOL programmers
> > working for me (and was one myself),
[quoted text clipped - 10 lines]
> prerelational COBOL/DBMS world had some exposure to one of these models of
> data.

Perhaps you misunderstood me.  I have worked with IMS extensively and have
touched IDMS.  I don't think that there was anyone in the building of IMS
that called IMS a "hierarchical" database, but I could be wrong.  It is my
impression that the terms "network database" and "hierarchical database"
were prepared by relational database theorists in describing how their
database implementations differed from those that were out there already.
If the IDMS folks, for example, set out to create something they called a
"network database" then I'm interested in any historical information on
that.  I read a bunch of database history a few months ago and it was my
impression that these terms were coined by the relational database
"industry" somewhere along the line.

> As far as comparisons between data models go,  Codd's work in the early
> 1970's was proposing a new data model.  To propose a new data model, without
> comparing it to existing data models, would have been irresponsible.  Codd
> made the comparison.  If you want to dismiss Codd's work as "marketing
> hype",  well, who am I to argue?

I most certain do not do that!  However, when I read in textbook after
textbook something that could be summarized as "there are three
possibilities -- network, hierarchical, and relational and relational is
obviously better" then I know there is some thread of marketing going on.
Of course now they add that there are also OO databases, perhaps XML dbs and
they might mention a few others ("semantic web" etc).  But the entire wealth
of knowledge related to persisting data in 1950-1990 outside of RDBMS's is
typically narrowed down to IMS as hierarchical and IDMS as network
databases, prior to being dismissed entirely by the text book.

> As far as "an RDBMS has never been built", I agree with you.  That's not a
> useful position to take.   No one has ever built a triangle either.  But my
> kindergarten teacher had an approximate triangle that she held up in class,
> and said "This is a triangle".  Close enough.

Great analogy!  --dawn
Laconic2 - 19 Apr 2004 18:32 GMT
Dawn,

I'd like to suggest that you go back to two original sources.

The first is Codd's original work, proposing the relational model.  A Google
search on "Codd Data Model"  brings up a reprint of the classic paper, among
lots of others.

The second is James Martin,  "Computer Database Organization".  I haven't
looked at Martin in almost twenty years, so I don't know what you'll find
there.  But I would expect that you would find his treatment more convincing
than I find most of the stuff I associate with the word "marketing."

Was Galileo's comparison of the Copernican and the Ptolemaic systems,
"marketing"?
Dawn M. Wolthuis - 19 Apr 2004 18:54 GMT
> Dawn,
>
[quoted text clipped - 3 lines]
> search on "Codd Data Model"  brings up a reprint of the classic paper, among
> lots of others.

Within the past year I have read it, re-read it, made sure I understood it
and filed I've got it right here.  What do you think it says that I'm
missing?

> The second is James Martin,  "Computer Database Organization".  I haven't
> looked at Martin in almost twenty years, so I don't know what you'll find
> there.  But I would expect that you would find his treatment more convincing
> than I find most of the stuff I associate with the word "marketing."

I last read Martin about 20 years ago too (common grade school text?)
Again, what do you think I'll find there?

> Was Galileo's comparison of the Copernican and the Ptolemaic systems,
> "marketing"?

No -- again, I'm not judging the original users of such terms, but the fact
that they became the norm so that instead of using the very common term
"tree" to describe IMS (it might not exactly be a tree, but wlog we can
consider it such), we perpetuate the relational folks' terminology not just
for relational theory, but for products that are not in their camp.  From a
global standpoint, that is a common marketing strategy -- classify
competitor products and your own and then attact the super-classes.  It has
worked so well for the relational database industry in grabbing mindshare
that almost every product, including PICK, has called itself a relational
database.  It makes sense for Oracle and other RDBMS vendors to use this
trick, but perhaps the textbooks could be a little less slanted in their use
of terms.

For example, if you say that there are hierarchical databases and then list
IMS and PICK (I know it is never listed, except as "and others") in that
category, you would have readers thinking that there is anything similar
between IMS and PICK (nothing I can see other than the ability to display
the structure of each as a di-graph).

I'm rambling and this isn't an important enough point.  But if you DO KNOW
of any reason to believe that prior to Codd's publications in 1970 (or his
work to get there) any of the existing database implementations classified
themselves as hierarchical or network, please point me to the sources.  I'm
VERY interested in that.  Thanks.  --dawn
Laconic2 - 20 Apr 2004 12:13 GMT
I expect that, if you dig deep enough, you'll find that the terms
"hierarchical data model"  and "network data model"  predate the relational
data model.

These are just two places to start the search.
Dawn M. Wolthuis - 20 Apr 2004 14:20 GMT
> I expect that, if you dig deep enough, you'll find that the terms
> "hierarchical data model"  and "network data model"  predate the relational
> data model.
>
> These are just two places to start the search.

I've searched -- I haven't found them.  My assessment is that there
certainly could have been a person who uttered the words "hierarchical
database" when talking about IMS prior to 1970, but so far I have not found
anything in writing referring to hierarchical or network database prior to
Codd's 1970 ACM paper.  I suspect it is historically accurate that
relational theorists coined these terms or at least standardized on them for
discussions of why relational was a better strategy.  If someone has
evidence to the contrary, I'm very interested.

--dawn
Laconic2 - 20 Apr 2004 17:28 GMT
Conspiracy theories can be extraordinarily hard to debunk.

If you are determined to believe that the term "hierachical database" was
popularised as part of an Orwellian agenda by the "relational camp",  I'm
just not going to argue that point with you.

Do your own investigating,  and draw your own conclusions.

A five minute search with Google turned up the following article in 1974.
But that's after 1970.

http://portal.acm.org/citation.cfm?id=811508&dl=ACM&coll=GUIDE
Dawn M. Wolthuis - 20 Apr 2004 18:07 GMT
> Conspiracy theories can be extraordinarily hard to debunk.
>
> If you are determined to believe that the term "hierachical database" was
> popularised as part of an Orwellian agenda by the "relational camp",  I'm
> just not going to argue that point with you.

You are missing my point and my motivation for it -- I don't see it as a
pre-meditated conspiracy at the outset.  I don't think the original players,
other than perhaps that guy at the company-later-known-as-Oracle, were
marketing-savvy enough to know or care about the choice of terms for
marketing purposes.

But if you address the question of what were some of the helping factors
outside of the technology itself that promoted the relational database
structure to the king of the hill position, one thing you might look at is
the language used when discussing it.

Relational database folks and their marketing counterparts have impressed
upon our minds so heavily that everything was once either a hierarchical,
network, or relational database (before declaring that relational is
obviously superior).  So now those writing text books have adopted this
terminology too and promoted a somewhat scewed version of the history of
databases, using post-IMS terminology to describe IMS, for example.  It is
like when I called the "M card approach" a design pattern -- not the
terminology we used in "data processing" in the 70's, to be sure.

> Do your own investigating,  and draw your own conclusions.
>
> A five minute search with Google turned up the following article in 1974.
> But that's after 1970.

Yup -- even post the time of the next paper(s) on the subject.  Don't get me
wrong -- I don't think this language is bad -- it just has a marketing spin
to it that most people fail to recognize.  People riding horses who started
driving cars DID recognize they were riding horses prior to the car coming
along.  The spin was that now they could have a horseless carriage.

In the case of relational databases, the proponents defined what they were
replacing in a way so as to pick up on one aspect of their competition (the
tree or di-graph structure) and then once they defined for us what we were
doing using this metaphor of hierarchical, network or relational was set
out, it was hard to make a case for either of the first two.

Anyway, we have beat this one to death, but if anyone DOES find evidence
that the terms "network database" or "hierarchical database" came from
anywhere other than the "relational camp" please let me know.  Cheers!
--dawn

> http://portal.acm.org/citation.cfm?id=811508&dl=ACM&coll=GUIDE
Eric Kaun - 20 Apr 2004 18:04 GMT
> > I expect that, if you dig deep enough, you'll find that the terms
> > "hierarchical data model"  and "network data model"  predate the
[quoted text clipped - 11 lines]
> discussions of why relational was a better strategy.  If someone has
> evidence to the contrary, I'm very interested.

I don't have any evidence either way, but I would imagine the relationalists
could have found better rhetorical and disparaging terms than "hierarchical"
and "network". Neither of those terms suggests anything on its own, nor is
either one inaccurate in any significant way (as far as I know).

- erk
Anthony W. Youngman - 22 Apr 2004 22:38 GMT
>> I've searched -- I haven't found them.  My assessment is that there
>> certainly could have been a person who uttered the words "hierarchical
[quoted text clipped - 11 lines]
>and "network". Neither of those terms suggests anything on its own, nor is
>either one inaccurate in any significant way (as far as I know).

It is a *standard* rhetorical technique to highlight what you perceive
as weakness in the opposition, and compare it to your strengths.

One of the strengths of relational is that "all queries are equal" - the
database is optimised so that you can ask any question with equal ease.
By their very nature, hierarchical databases are best with queries whose
structure matches the structure of the database.

So the terms are not "disparaging", as you put it, but are designed by
the relational camp to emphasise those features that the relational camp
WISH to emphasise - those features that the relational camp see as
placing hierarchical databases at a disadvantage.

ALL descriptions are loaded - that's the nature of language. Dawn is
simply trying to place the words in their historical context and
comprehend the impact they had then - a very difficult task when your
vision is obscured by hindsight ...

Cheers,
Wol
Signature

Anthony W. Youngman - wol at thewolery dot demon dot co dot uk
HEX wondered how much he should tell the Wizards. He felt it would not be a
good idea to burden them with too much input. Hex always thought of his reports
as Lies-to-People.
The Science of Discworld : (c) Terry Pratchett 1999

Hugo Kornelis - 20 Apr 2004 19:29 GMT
>> I expect that, if you dig deep enough, you'll find that the terms
>> "hierarchical data model"  and "network data model"  predate the
[quoted text clipped - 11 lines]
>discussions of why relational was a better strategy.  If someone has
>evidence to the contrary, I'm very interested.

Hi Dawn,

Even if someone could find hard proof that the terms hierarchical and
network database were never used prior to 1970, that would still not
proof that these are marketing terms, nor that they stem from the
"relational camp".

When the first computers were built, nobody called them "mainframe".
That term was only introduces when mini computers started to appear.
Is the term "mainframe" a marketing term, invented by the producers of
minicomputers? Or is it just a term that was needed to be able to
distinguish a new type of computers from an old type?

I've had a personal computer for years without ever referring to it as
a "desktop". That word was introduced when the first laptop computers
were introduced? A marketing term, introduced by the producers of
laptop computers? Or just a word that turend out to be helpful in
distinguishing the differend sizes of computers?

The introduction of the relational model meant the introduction of a
completely different kind of database. So, there had to be a way to
distinguish between the "old" database structure and the "new"
database structure. And I must admit that the terms "hierarchic" and
"network" describe the storage model of those databases quite
accurately.

A real marketeer would probably not have invented these words. (S)he
would have referred to the relational databases as "new" and to all
others as "old".

Groetjes, Hugo
Signature


Sorry, vandaag geen grappige sig lines meer.

Dawn M. Wolthuis - 20 Apr 2004 22:36 GMT
> >> I expect that, if you dig deep enough, you'll find that the terms
> >> "hierarchical data model"  and "network data model"  predate the
[quoted text clipped - 43 lines]
>
> Groetjes, Hugo

Thanks for piping up 'cause I'm clearly not being crisp in my point (I know,
I know, I've had the problem before).

I complete agree that this was not anything dreamed up by marketing folks.
But in doing my own mini-research to identify anything other than the data
model that has made relational databases take the king-of-the-hill position,
the classification of all of the competition and then subsequent claims that
such were clearly "wrong" turned out to be one of the things that
contributes to compacting all of the history of databases into a couple of
terms -- hierarchical and network -- for efforts prior to 1970.

Do you