Lists Home |
Date Index |
One has to be careful about stepping in dogma...
Quoting from the apostle Fabian:
"domains... are nothing but data types of arbitrary complexity."
Gosh, I dunno. Classes seem to be types of arbitrary complexity, but I'm not
The gist of the argument that classes are not domains is that there is no
membership defined for a class. The way around this, of course, is to create
a dictionary of class instances, each uniquely identified. Of all possible
instances of classes, the ones in the collection are the members. In other
words, you construct a table of instances, each instance is a proposition.
I suppose one could use sparse arrays instead, and call the indices
surrogate keys, but positions of instances must remain fixed. And, of
course, OOP people use all types of collections, some without fixed
identifiers, and get loosy-goosy with instances. But gee, ya know... my apps
run fine without the formalism (QA would beg to differ, but they're
I wouldn't want to get in a knife fight with Data or Darwin (or even Mr.
Pascal), but I do think the relational fascists tend to grind an argument to
a brittle edge.
From: John Schlesinger [mailto:firstname.lastname@example.org]
Sent: Saturday, September 07, 2002 2:19 PM
To: Jeff Lowery
Cc: 'email@example.com'; 'firstname.lastname@example.org'; Xml-Dev (E-mail); 'Dare
Subject: RE: [xml-dev] Subtyping in XML
On Fri, 2002-09-06 at 13:23, Jeff Lowery wrote:
No, but a normalized relational schema defines domains, represented by
tables. Domains are the spittin' cousins of types.
This is the standard wisdom, but is strongly contested by Chris Date and
Hugh Darwen. They claim that equating Classes with Tables is a 'blunder' and
that a Class really equates to a domain ('domain=class' not relvar).
The argument for this is that a domain is the type of a column and that a
set of columns, forming a table and therefore a relationship, is a set of
true propositions about those types. From this follows all the good stuff in
the relational model.
The argument against this is that no-one seems to do this (even though the
user-defined data types are now available in most databases, even if the
encapsulating operators are not). Indeed, typical O/R mappings themselves
commit the 'blunder'.
Date and Darwen's idea is so counter-intuitive that I think they must be