Re: Why is database integrity so impopular ?

From: David BL <>
Date: Tue, 7 Oct 2008 01:05:59 -0700 (PDT)
Message-ID: <>

On Oct 7, 1:51 am, Daniel Pitts
<> wrote:

> I think that part of the problem is DB design and Application design are
> really different types of abstraction. For application programmers,
> dealing with DB constraints is tedious.

I assume you mean it's tedious when done in application code. It's easy when the integrity constraints are defined declaratively and enforced by the DBMS.

> The truth is that whenever your "Application" calls for persistence, it
> is no longer just an "Application"; it has become a "System". System
> design is a higher level abstraction.

So is notepad.exe a "system" because it allows for persisting text files? ;)

The need for a formal data model has to do with the need to encode complex values, irrespective of whether persistence is needed. One can have persistent or transient data, just as one can have persistent or transient finite state machines. Of course mostly we want data to persist and state machines to be transient, and there are reasons for that - some quite subtle, such as the difficulty of defining consistent cuts on distributed state machines, but it is hardly a definition of the distinction between data and state machine.

A common modern view of a large distributed system, is of interacting applications that communicate either synchronously or asynchronously such as by using web services. The various databases in the system take a back seat to this application-centric view point.

However I suspect most of the data theorists in this ng prefer the idea that state machines and data are kept apart at ever increasing scales in the "system" - so even at an "enterprise" level there is a clean separation between applications and the enterprise wide data.

I like to define "data-centric architecture" according to the 4th item in the following article:

Another crime perpetrated by ignorant application programmers is to heavily use application defined messaging protocols to build distributed systems. It is usually much easier for applications to communicate indirectly via a shared database. Received on Tue Oct 07 2008 - 10:05:59 CEST

Original text of this message