From: | Christopher Browne <cbbrowne(at)acm(dot)org> |
---|---|
To: | pgsql-advocacy(at)postgresql(dot)org |
Subject: | Use/Abuse of Nulls |
Date: | 2003-10-31 17:33:11 |
Message-ID: | m31xstfh2g.fsf_-_@wolfe.cbbrowne.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-advocacy |
In the last exciting episode, Jon(dot)Ericson(at)jpl(dot)nasa(dot)gov (Jon Ericson) wrote:
> Christopher Browne <cbbrowne(at)acm(dot)org> writes:
>> At one extreme, Chris Date holds to the position that NULLs ought to
>> be forbidden outright. He does make a fairly credible case for it,
>> albeit with the problem that when you forbid NULLs, you have to
>> replace them by making the data model a little more complex. (He
>> recently released a paper on how to do this; there's not much
>> surprise to it; whenever a column "could be NULL," you have to split
>> it off to a separate table so that its omission amounts to not
>> bothering to populate the new table...)
>>
>> The other "major" position is that there should be multiple sorts of
>> 'NULL' values to indicate different forms of missing information.
>> (One problem with NULL is that you can't easily distinguish between
>> "I left that NULL because I didn't know the value" and "That's NULL
>> because that's how we say it's 'empty.'")
>>
>> I fall more into the pragmatic position that "NULL columns have the
>> potential to cause a lot of confusion; use NOT NULL when you can,
>> and be wary when you can't."
>
> Interesting. The bullet caught my eye because I am currently working
> with a table that has, in my opinion, poorly thought out NOT NULL
> constraints. When I do the initial insert I have to use 0 to mean
> both "I don't know the value yet" and "this is how we say empty"! It
> occurs to me that adding a cross-reference table would not only let me
> avoid NULL, but also solve a couple of other problems as well.
Actually, I misattributed that.
The paper on dealing with 'missing information' without using NULLs is
by Hugh Darwen. (He and Date do a lot of work together, so it's
honest confusion :-).)
<http://www.hughdarwen.freeola.com/TheThirdManifesto.web/Missing-info-without-nulls.pdf>
It's worth a read. I am not sure it TRULY gets around the problems
with NULLs, but there certainly are some ideas there worth looking at.
Food for thought, if not a perfect prescription for a permanent
doctrine on the matter.
The problem I see with the "make another table" approach is that you
wind up with another table for everyone to manage. More data to join;
more tables to add data to; none of that comes for free, even if it is
cheap, performance-wise.
--
output = ("cbbrowne" "@" "cbbrowne.com")
http://www.ntlug.org/~cbbrowne/x.html
Did you hear about the Buddhist who refused his dentist's novocaine
during root canal work? He wanted to transcend dental medication.
From | Date | Subject | |
---|---|---|---|
Next Message | Merlin Moncure | 2003-10-31 18:34:36 | Re: Use/Abuse of Nulls |
Previous Message | Jan Wieck | 2003-10-31 02:04:32 | Re: PostgreSQL Certification |