Re: Proposal: 6NF

From: Frank Hamersley <terabitemightbe_at_bigpond.com>
Date: Mon, 09 Oct 2006 09:58:16 GMT
Message-ID: <Y2pWg.44207$rP1.12150_at_news-server.bigpond.net.au>


Cimode wrote:

> Frank Hamersley wrote:
>> Cimode wrote:

>>> Frank Hamersley wrote:
>>>> Cimode wrote:
>> [..]

>>>>> Not convinced? Tons of arguments and proofs were presented to make a
>>>>> case against them..Another proof, run this in SQL ORACLE, SQL Server or
>>>>> DB2
>>>> Should I try it on Sybase ASE 12.5?
>>> I personally do not work on toys to draw conclusions...Using only main
>>> products...
>>>
>>> ORACLE + SQL Server + DB2 = 3 out of 4 db's right?
>> Cute - you are aware of SQL Server's heritage in making that statement?
>>   No doubt you also appreciate Microsofts blue ribbon contribution to IT
>> - expediency before quality?
> SQL SERVER, ORACLE and DB2 have the same heritage then...

Don't know much about DB2 but Oracle certainly had that reputation in my time during the era of mini computers. The buzz was they expended all their efforts in porting to every new platform rather than addressing existing customer problems. As a commercial strategy - very effective - as a ethical question - very doubtful IMO.

Re Microsoft I was referring to the common original code base - purportedly rewritten by MS since then.

>>>>> create table table1(field1 int, field2 varchar(1))
>>>>> go
>>>>> insert table1
>>>>> select 1, 'A'
>>>>> insert table1
>>>>> select 2, 'B'
>>>>> insert table1
>>>>> select 3, 'C'
>>>>> insert table1
>>>>> select NULL, 'B'
>>>> Hmmm - the last statement fails...as it should! Maybe that is why you
>>>> only got 3 rows back :-).
>>> No problem inserting...Seems Sybase works differently...(are constraint
>>> applied automatically)

>> Yes - you must be explicit if you wish to allow null.
> NULLS are allowed on most data schemas applied today...That is a
> consequence of allowing NULLS at the first place...
> 

>>> A I specified it works on ORACLE, SQL Server, DB2 (try all variations
>>> of NULL) .. Just make sure there is at least 1 row with field2 = NULL
>>> ex:
>>>
>>> insert table1
>>> select NULL, 'D'
>>>
>>>>> --Query1/ The following should return ALL records whether NULL or not
>>>>> select * from table1 where field2 = field2
>>>> Hmmm - ASE returns all rows.
>>> SQL Server, ORACLE and DB2 do not...meaning that 3 out 4 dbms consider
>>> that NULL <> NULL
>> No they all consider it so ... in your first post you mistakenly
>> inserted NULL into the int attribute but crafted queries on the varchar.
>>   It is difficult to tell quite what your intention was - field1 as
>> implied or field2 as written.  Did you actually execute these statements
>> on all of the platforms cited?
> The fact is people can allow NULLS for various reasons and because they
> are allowed to...

Sure - however its not an answer to the question posed.

>>>>> --it turns out it return 3 out of 4 records --therefore we could
>>>>> conclude that the system considers that NULL <> NULL Right? (opposite
>>>>> of = should be <> right?)
>>>> This is wacky - trying to rationalise 3VL by clutching at 2VL thinking
>>>> is very trippy.
>>> Trippy? I say Bullshit...Facts are NOT 3 VL. Logically anything that
>>> is not = is necessarily different

>> That is 2VL logic - it is fallacious and it does not apply to a 3VL
>> logic domain - period.
> Either something equals a value either it differes from it...Are you
> saying that 3VL makes the previous statement false?  Could you answer
> that precise question...

Yep sure can. You are correct in asserting either "value = value" or the inverse "value != value" must be true. The problem is that NULL itself is not a value and can not be substituted for "value" - it lies outside the domain of all possible "values". NULL is also opaque so you can't infer that because there could be a value that NULL must take on that values nature.

>>>>> Next run...
>>>>> select * from table1 where field2 <> field2 to get the NULL value and
>>>> Hmmm - ASE returns no rows as I expect.
>>> Of course it does not if it has not inserted any 4 th line...
>>>
>>>>> the system returns no records which is madness because the system
>>>>> NEITHER considers NULLS as being = NOR <> from one another...As a
>>>>> result, all counts on tables including NULLS can only be WRONG...I do
>>>>> not care whether other technologies do worse....This is bad enough...
>>>> Even allowing for your likely intent to store the NULL in field2 as ...
>>>> create table table1(field1 int, field2 varchar(1) null)
>>>> and
>>>> insert table1 select 4,NULL
>>>> the first query returns 3 rows as expected and the second returns no
>>>> rows...as expected!
>>>
>>>> QED the "Proof" crashes and burns!
>>> I indicated it works on SQL Server/ORACLE/DB2...
>>> If you want to verify an experiment result at least do it right....

>> Seems to me these products you put so much stead in behave just like
>> ASE...the only problem is your black and white interpretation when in
>> fact there is gray as well.  Sure, I accept life would be simpler if
>> there was only 2 possible outcomes, but that statement does not imply
>> life with 3VL is impossible.
> Gray has nothing to do with math...At least not the math I am aware
> of...

Who is Gray? I was talking about gray (or grey if you prefer).

Cheers, Frank. Received on Mon Oct 09 2006 - 11:58:16 CEST

Original text of this message