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

From: Alexandr Savinov <spam_at_conceptoriented.com>
Date: Thu, 24 Nov 2005 11:59:54 +0100
Message-ID: <43859d3d$1_at_news.fhg.de>


Jon Heggland schrieb:
> In article <1132798608.160942.270970_at_o13g2000cwo.googlegroups.com>,
> michael_at_preece.net says...
>

>>If you have a text/string field and it can have an empty string what
>>have you got? What is the value of the data? How does that value differ
>>from "no value at all"? Question mark.

>
>
> Are two variables/"fields" (of the same type) with "no value at all"
> equal?

The question does not make sense because we cannot talking about things that do not exist. In particular, it does not make sense to ask if two things that do not exist are equal or not. Why not to ask then if two records that have not been created yet (or have been already deleted) are equal?

The issue of comparison of nulls with normal values or with other nulls arose because inappropriate application of attribute-value approach. In particular, the standard reasoning is that if we see some attribute then it is necessary to have a facility to take its value and to compare with other values. It is a consequence of a general assumption that:

all objects have some coordinates along appropriate dimensions

However, there is another (more general) principle:

objects may exist in multidimensional space without the necessity to exist in (to be projected to) all axes.

Such a phenomenon does not exist in real world and this is why it is difficult to imagine it. If we take two axes X and Y (say, Colour and Weight) then normally any point in it has two concrete coordinates x and y:

  Y
  |
y|------o
  | |
  |-------------> X

         x
However, in data modelling (our assumption) objects are not necessarily have to possess all the coordinates. Most of objects are not projected to most of existing axes and are not visible from those perspectives. For example, an object o might have coordiante x but not y:

  Y

  |
  |      o
  |      |
  |-------------> X
         x

The traditional approach is somewhat dogmatic: if such a coordinate is not assigned then we must assign some special value and then compare it with other values anyway. This does not make sense. If an object does not exist along this coordiante then it does not exist, and that is all. We do not see it. And any database procedure does not see it. Because having a coordinate means to exist.

For example, the following object:

  Y

  |
  |      o
  |
  |-------------> X

has no coordinates at all. So it is exists as an entity (has a reference or a primary key) but does not exhibit itself in any other way.

-- 
http://conceptoriented.com
Received on Thu Nov 24 2005 - 11:59:54 CET

Original text of this message