gnumed-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnumed-devel] NULLS was: Consolidation Proposal: ClearHealth, FreeMED a


From: Tim Cook
Subject: [Gnumed-devel] NULLS was: Consolidation Proposal: ClearHealth, FreeMED and OpenEMR
Date: Wed, 06 Jul 2005 16:25:05 -0700

On Wed, 2005-06-15 at 17:41 +0200, Karsten Hilbert wrote:
> > > > 3) do you allow any nulls in your database?
> > > Yes, hopefully only where appropriate. Please do point out any
> > > flaws you find.
> > There are no appropriate places for NULLS in a "relational" data
> model.
> Not in a "pure" relational model, true. I do think great care
> needs to be taken when using NULLs. All in all it's a
> religious issue.

No. It is not a religious issue at all.  It is a logical issue that
relates to the SQL deficiency.  For quick insight; review the fact that
the WHERE clause, by definition returns a True or a False.  What happens
when a NULL is an attribute value as the subject of the WHERE?

Relations are based on rows in a table (NOT on attributes in a row).  
If a relation can be missing then it is simply NOT There.  If an
attribute is missing then you will have an invalid data type.  

Therefore, if an attribute is allowed to be missing then the relations
have not been properly constructed in the model.  

In clinical applications there are MANY MANY places where this problem
exists (especially regarding temporal data).  So, in most cases every
attribute (if you insist on using a relational model) in a clinical
system should be decomposed into 6NF (a key and a column).  

Otherwise your relations aren't atomic and your application code must be
created to handle these exceptions.  Therefore, why constrain yourself
with a data model (relational)  that doesn't fit anyway?

More Later,
-- 
Tim Cook, Consultant
CHASE Health Informatics, Inc.
GPG Key is on key servers everywhere.

Attachment: signature.asc
Description: This is a digitally signed message part


reply via email to

[Prev in Thread] Current Thread [Next in Thread]