Re: Reminder, blatant ad

From: mAsterdam <mAsterdam_at_vrijdag.org>
Date: Fri, 27 Jan 2006 01:05:21 +0100
Message-ID: <43d963a6$0$11063$e4fe514c_at_news.xs4all.nl>


Jan Hidders wrote:
> 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.

Anecdote time:

When I learned about normalisation in 1984 in a post-doc IT curriculum, we were to some extend free to do our own explorations. One nice, enlightening excercise was this one:

 From a normalised data model (based on an earlier design case, so "real" - or at least our own - analysis, complete with interviews, prioritisation, integration etcetera - remember James Martins integration bubble charts?) we made, in several workgroups, different implementation plans: one for a purely batch processing (only sequential files) environment, one for ISAM/online, (we skipped RDBMS implementation as being both being trivial and not yet feasible for performance reasons at that time :-), and eventually one hybrid plan.

Some crucial parts of those plans were actually coded and tested later in the course.

One thing I learned was that when you get your data right, you can pretty much build a working system with any tools available. A DBMS just makes the job easier. Database: Find the base for your design in data.

In short: To me the connection between RM and normalisation is mainly historical.

> 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 Fri Jan 27 2006 - 01:05:21 CET

Original text of this message