Re: Null and Void() - Or, Abandon All Hope Ye Who allow

From: "Florian G(dot) Pflug" <fgp(at)phlo(dot)org>
To: Berend Tober <btober(at)seaworthysys(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: Null and Void() - Or, Abandon All Hope Ye Who allow
Date: 2006-06-28 13:44:35
Message-ID: 44A287C3.2030103@phlo.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Berend Tober wrote:
> Florian G. Pflug wrote:
> > dananrg(at)yahoo(dot)com wrote:
> >
> >> Date and Pascal hate nulls.
> >
> > ...the functions described by those functional dependencies are
> > not required to be defined for every possible value - let's say you have
> > a function dependency A -> B - meaning that whenever you know the value
> > of column A, then there is _at_most_ one value for column BNormalization
> > basically tells you to model that function dependency as a
> > table containing fields A and B, and make A the primary key.
> >
> > Now, if there is no B for a specific value of A, then this table will
> > just not contain a record for this value of A. But if you allow
> > NULL-values, then suddently there are _two_ different ways to express
> > "I don't know what B is for this A". You could either have a record with
> > the A-value in question, and with B null, or you could have _no_ record
> > with the A-value in question.
> >

> But in the former case, you affirm the existence and your knowledge of
> the second A-value; in the latter case you affirm ignorance of the
> second A-value. The two-column example may be useful for theoretical
> discussion, but in practise likely more columns exist so that NULL can
> represent incomplete data that may be determined later for a particular
> row when you still need to commit the column values already known.
I came up with the two-column example because it's the simplest example
possible. For larger tables you _could_ split them into n tables (at
most one per field). If not saying I'd do that - just that it's possible
and that it's basically what Date and Pascal suggest.

> For
> instance, in response to customer demands, it may be required that a new
> employee begins work on projects right away, even though we have only
> basic identifying information, like say, their name. This gives us
> enough to create a new employee row, start recording their labor hours
> worked for billing purposes, and to cut checks for travel expenses. We
> eventually need date of birth, social security number, and other
> information, but as a practical matter those columns can certainly be
> committed NULL initially.
Well, yes - as I said, using null values gives you more flexibility. But
still, you _can_ shoot yourself in the foot by using them - that's why
it's still good to know why some people oppose them, even if you don't
share their point of view. But of course, "rm -r $(PGDATA)" is a more
efficient way to shoot yourself in the foot, and will probably harm more
then using null ;-)

greetings, Florian Pflug

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Andrew Gould 2006-06-28 14:06:08 Re: Null and Void() - Or, Abandon All Hope Ye Who allow
Previous Message Berend Tober 2006-06-28 13:27:54 Re: Null and Void() - Or, Abandon All Hope Ye Who allow