Re: Reminder, blatant ad

From: Jan Hidders <jan.hidders_at_REMOVETHIS.pandora.be>
Date: Thu, 26 Jan 2006 20:43:15 GMT
Message-ID: <DvaCf.212115$7f1.7126132_at_phobos.telenet-ops.be>


Hi Dawn,

Since I don't like discussing by means of blog comments I'll post my reaction here. As you probably know I'm in the pro-RM and anti-dbdebunk camp, so although I'm probably mostly crticial, it is certainly not meant as an attack.

Dawn Wolthuis wrote in her blog on
http://www.tincat-group.com/mewsings/2006/01/naked-model.html the following:
>
> [...] If we were to implement a data model what would we have? Let's
> take a look at a recent definition of data model from Date.
>
> A data model is an abstract, self-contained, logical definition of
> the objects, operators, and so forth, that together constitute the
> abstract machine with which users interact. The objects allow us to
> model the structure of data. The operators allow us to model its
> behavior. (C. J. Date, An Introduction to Database Systems, Addison
> Wesley, 8e, 2003, p 15-16)
>
> I conclude from this that the implementation of a data model is a
> programming language, whether a general purpose programming language
> or not.

While I don't think that what you say here is strictly speaking incorrect, I do believe that it is misleading. In programming languages one is often rather more concrete about how the data is stored and how the operators do their work, in fact that is often the whole purpose fo the programming language, whereas Date stresses rightly here that it has to be an *abstract* definition. Another important aspect is the extent to which the definition is *logical*, which implies that the definition of constraints and manipulations should be more declarative, whereas in programming languages this is often more done in an operational way. Of course there are no black and whites here because these things vary in different programming languages, but simply equating the concept of "data model" as Date and Codd define it and "programming language" is cutting a few corners too many.

> My beef with the RM is related both to normalization theory as taught
> in colleges and universities, discussed in the Is Codd Dead? blog
> and to the way the RM, or parts thereof, are used in the practice of
> software development and maintenance today. It shapes the thinking of
> software developers in ways that are often not the most effective.

I have really no idea where this comes from. When I teach normalization I do that in the context of the relational model. It is part of the theory that you should know if you have to deal with an RDBMS. Obviously, if you have to deal with another type of DBMS you should not apply it, or at least not in exactly the same way. Are you now telling me that most computer science students in the United States massively fail to get this when they take their database courses? And those people are allowed to build critical information systems? :-)

> And, by the way, if you are thinking that the RM need not be obvious
> in a developer's programming language but could be hidden behind the
> scenes, then my work is done. That would mean that no computer
> language would need to use the Information Principle, and neither you
> nor I would need to use the RM as a data model. We can use any
> programming language that does not represent itself as an
> implementation of the RM to employ an alternative data model.

Again, I have no idea what you are talking about here. Who on earth has ever claimed that the RM would be the best data model for programming languages? The claim of the RM is that it is a good data model for a DBMS, and even that claim is usually qualified.

  • Jan Hidders

PS. Apologies in advance if I don't reply this week, I'll be mostly off-line then. Received on Thu Jan 26 2006 - 21:43:15 CET

Original text of this message