Re: Agility and Data Design (was: Dreaming About Redesigning SQL)

From: Bob Badour <bbadour_at_golden.net>
Date: Thu, 23 Oct 2003 08:35:09 -0400
Message-ID: <sJ6cnRlQ5tCuVgqiU-KYhA_at_golden.net>


"Marshall Spight" <mspight_at_dnai.com> wrote in message news:TELlb.1998$mZ5.16661_at_attbi_s54...
> "Dawn M. Wolthuis" <dwolt_at_iserv.net> wrote in message
news:6db906b2.0310191819.4e374303_at_posting.google.com...
> > ... And that
> > the reason for that is to help control the integrity of the data. I
> > have no doubt that there is some good in doing this, but the cost from
> > my perspective is not worth the benefit. That is not to say that it
> > is not important to protect the data, but that there are other means
> > of doing that. It can be protected with quality assurance (also
> > flawed, of course) on the sum total of all applications that maintain
> > it.
>
> In my experience this approach is uniformly a disaster. Applications
> are *not* the right place to be enforcing integrity; they *cannot*
> do a decent job of it. Integrity has to be enforced centrally and
> declaratively.
>
> Consider a multi-use enterprise database without centralized
> data integrity. Each business rule or integrity constraint
> or bit of semantics that is stored in Java application code is
> unknown and unenforced for every app that ends up being
> written in python or C++.
>
> All the approaches you are suggesting may work well enough
> when there's one or two apps written by perhaps as many as five
> developers. The schema all fits on a nice 8.5x11 sheet of
> paper in a big font. All the integrity constraints may be kept
> in the developers' heads, and maybe you won't run in to too
> much corruption, or perhaps you can recover from it "agilely."
> But in a situation with 30 apps in five different languages
> totalling a million lines of code, written by a hundred
> different developers, if you do not have central integrity
> constraints, data corruption will be a way of life.

This goes back to my earlier comment referencing Brooks' _The Mythical Man-Month_. Going from 2 applications to 30 applications can increase the integrity enforcement task by a factor of more than 200 when enforcing all integrity in applications. Enforcing integrity in the dbms keeps the integrity enforcement task constant. O(n*n) or O(0)? Hmmm, let me think... Is that a no-brainer? Or is that a no-brainer? Received on Thu Oct 23 2003 - 14:35:09 CEST

Original text of this message