This is a religious argument. Codd and Date conducted a famous debate on the
subject. (01)
It is true that one does not "need" to have NULL, in the sense that it is
always possible to design the database to avoid it in those cases where it
represents "no value". The rest is a matter of agreeing that you don't insert
an incomplete record, or using similar design principles to deal with "may not
be provided". (02)
In every such case, the solution is to break up a 3rd normal form table into
multiple tables, one for each column that "might be NULL", for whatever reason.
And of course, every query that needs all of that information must formally
"join" those tables. But the join eliminates all the incomplete instances, so
you have to do separate queries to get the "incomplete records", or you have to
reintroduce NULL as a possible value in a query result (the so-called
'generalized join'). The point is that the religious purism creates costly
mechanical overheads for very reasonable and meaningful situations; it is not
just a crutch for poor database designs. (03)
The analogous idea in ontologies is to require a subclass for every optional
property of objects of a "natural" class, the subclass being a subclass of the
domain of the property -- objects that do have that property. The problem is
that those classes are not really meaningful to end-users; they are pure
technical constructs. They may have a use, in that some queries would restrict
the class to a subclass that does have the property, but to force the ontology
to explicitly contain every such "contextual subclass" creates a very
cumbersome ontology. (04)
I think of including things like NULL in languages as "Goedel's corollary for
computational languages": you can't get everything you want without allowing
things you don't want. (05)
-Ed (06)
--
Edward J. Barkmeyer Email: edbark@xxxxxxxx
National Institute of Standards & Technology
Systems Integration Division
100 Bureau Drive, Stop 8263 Tel: +1 301-975-3528
Gaithersburg, MD 20899-8263 Cel: +1 240-672-5800 (07)
"The opinions expressed above do not reflect consensus of NIST,
and have not been reviewed by any Government authority." (08)
> -----Original Message-----
> From: ontolog-forum-bounces@xxxxxxxxxxxxxxxx [mailto:ontolog-forum-
> bounces@xxxxxxxxxxxxxxxx] On Behalf Of John F Sowa
> Sent: Tuesday, January 22, 2013 8:30 AM
> To: [ontolog-forum]
> Subject: Re: [ontolog-forum] Knowledge graphs by Google and Facebook
>
> Bob and Matthew,
>
> There's an excellent reason why nobody mentions NULL in SQL:
> it's an embarrassment, which every expert wishes would go away.
>
> BN
> > I am sure there is a really good reason why none of the experts on
> > this thread have mentioned the "NULL' value in RDBMS practice, but for
> > the life of me I cannot guess it.
>
> MW
> > That is precisely the problem with NULL. You don't know if it means
> > not known, or does not exist. In principle it could mean either in any
> > situation.
>
> Yes. There is no way to define any rational semantics for NULL, and many
> people have been trying to get rid of it (deprecate it) for years.
> But once something goes into a standard and people start to use it, it's
> extremely difficult to get rid of it.
>
> If you need a value to represent something that is known to exist but has not
> been identified, it's better to choose some name that does not normally
> occur in the domain.
>
> Many businesses would use 99999 for an unknown ZIP code. That caused
> huge volumes of mail to be delivered to Alaska before it got sorted out and
> sent back to the other 49 states. With more computerization, the USPS now
> avoids shipping the physical mail to Alaska.
>
> John
>
> __________________________________________________________
> _______
> Message Archives: http://ontolog.cim3.net/forum/ontolog-forum/
> Config Subscr: http://ontolog.cim3.net/mailman/listinfo/ontolog-forum/
> Unsubscribe: mailto:ontolog-forum-leave@xxxxxxxxxxxxxxxx
> Shared Files: http://ontolog.cim3.net/file/ Community Wiki:
> http://ontolog.cim3.net/wiki/ To join: http://ontolog.cim3.net/cgi-
> bin/wiki.pl?WikiHomePage#nid1J
> (09)
_________________________________________________________________
Message Archives: http://ontolog.cim3.net/forum/ontolog-forum/
Config Subscr: http://ontolog.cim3.net/mailman/listinfo/ontolog-forum/
Unsubscribe: mailto:ontolog-forum-leave@xxxxxxxxxxxxxxxx
Shared Files: http://ontolog.cim3.net/file/
Community Wiki: http://ontolog.cim3.net/wiki/
To join: http://ontolog.cim3.net/cgi-bin/wiki.pl?WikiHomePage#nid1J (010)
|