Re: So what's null then if it's not nothing?

From: Marshall Spight <marshall.spight_at_gmail.com>
Date: 17 Nov 2005 22:56:55 -0800
Message-ID: <1132297015.048512.100940_at_g44g2000cwa.googlegroups.com>


michael_at_preece.net wrote:

>

> Poor deluded fools. The sooner SQL-relational is seen for what it is -
> ridiculous - the better.

Mike,

I remember you from some previous conversations, and I have to say my impression of you is that you're a better person than would write this sort of thing. What's going on?

As to the specific issue at hand, I want to assert in the strongest possible terms that the issue isn't about what NULL "is" or isn't. We may define our formal systems to have whatever semantics we wish. We may come up with better or worse abstractions, but whatever we do, it won't be a perfect reflection of the "Real World(tm)" so we should drop the whole "is" business and simply talk about what's useful.

Having some kind of representation for missing values is not a requirement for a data model, but many people happen to find it useful. Having a representation for an unknown value is not a requirement for a data model, and I have heard almost no one argue that it is a useful thing to have.

My thinking is that a good design would include a principled way of handling missing values, and would exclude any special handling of unknown values.

The question also arises as to what exactly SQL's null "is." Is it unknown or empty? The answer, alas, is that it depends on the context, a disastrously bad state of affairs. If you have a table with a nullable int column and two rows, one null, and you select sum(column) from table, you'll see that the nulls are treated as empty. If you have a row with two int columns, one null, and you select column1 + column2, you'll see that null is treated as unknown. This is simply bad design, and not any kind of indictment of relational theory.

As far as my take on "SQL vs. PICK", it seems about as likely to provoke rational debate as the Cal vs. Stanford football game, (a notorious local long-running rivalry.) I'm sick of the whole "vs." part. What I find interesting is asking, what did SQL get right, and what did it get wrong? I am also interested to consider what Pick got right and what it got wrong. Lots of interesting meat for discussion there, and perhaps not quite so confrontational.

Marshall Received on Fri Nov 18 2005 - 07:56:55 CET

Original text of this message