Re: Proposal: 6NF

From: Brian Selzer <brian_at_selzer-software.com>
Date: Sat, 30 Sep 2006 17:08:06 GMT
Message-ID: <WvxTg.11808$7I1.3639_at_newssvr27.news.prodigy.net>


"JOG" <jog_at_cs.nott.ac.uk> wrote in message news:1159625559.607066.76970_at_i42g2000cwa.googlegroups.com...

> Bob Badour wrote:

>> Karen Hill wrote:
>>
>> > J M Davitt wrote:
>> >
>> >>Karen Hill wrote:
>> >>
>> >>>6NF would be a database that uses no Nulls.
>> >>
>> >>Um, "no nulls" is necessary for 1NF. And I
>> >>believe someone already has dibs on "6NF."
>> >
>> > How so? Plenty of people have nulls in 3NF. How is no nulls necessary
>> > for 1NF?
>>
>> There are basically two schools of thought on NULL. The SQL school and
>> the consistent school. The consistent school observes that 1NF requires
>> logical identity and what is sometimes called the Information Principle.
>> These both require one represent all information explicitly as values,
>> and NULL is not a value.
>>
>> Hence, no table with a nullable column can be in 1NF let alone 3NF. The
>> SQL school fudges the books ignoring both logical identity and the
>> information principle.
>>
>> Codd started down the SQL path with his RM V/2, but that path turned out
>> to be the primrose path.
>
> I don't even need 1NF to want to discard nulls. So long as one realises
> that the aim is simply record propositions of fact in one consistent
> way, it becomes clear nulls are a theoretical nonsense period.
>

There is a problem with your reasoning. The aim isn't simply to record propositions of fact: it is also to make use of those facts. Recording propositions is only about 5% of the typical activity for a database. With today's technology, querying multiple tables is almost always more expensive than querying one, and a database in 6NF would force most queries to involve multiple tables. Even if you separated only the NULLable columns into different tables, the effort required to perform many simple queries can become impractical. For example, if you have a table with 30 columns where 15 are NULLable, you would need as many as 16 tables to eliminate NULLs. As a consequence, every query that would have involved a NULLable column would now require a join.

NULLs are as much a theoretical nonsense as the empty set or the imaginary component of a complex number.

> If more people were taught this at the start of their database
> education, perhaps we could get away from the 'plugging holes in a
> table' syndrome that does so much damage.
>
Received on Sat Sep 30 2006 - 19:08:06 CEST

Original text of this message