Re: 3vl 2vl and NULL

From: Hugo Kornelis <hugo_at_pe_NO_rFact.in_SPAM_fo>
Date: Mon, 26 Dec 2005 00:52:26 +0100
Message-ID: <cjbuq15agpo8r73kqu641crkoq72nms8ht_at_4ax.com>


Hi Jon,

Here's a quick reply to some of your points. I'll be without access to any computer for the next week, so don't expect to hear anything from me during that period!

On Thu, 22 Dec 2005 11:58:36 +0100, Jon Heggland wrote:

>In article <matjq1d2tt7utdnqkolibgajee78blnnfn_at_4ax.com>,
>hugo_at_pe_NO_rFact.in_SPAM_fo says...
(snip)
>> I know. I am very aware of the fact that SQL is not relational. I just
>> don't know what other term to use over here when I try to refer to the
>> family of SQL-supporting databases (as opposed to other database
>> families, e.g. Pick, hierarchical, network, ...)
>
>The SQL model. SQL DBMSs (not databases, to be even more nitpicky:).
>
>> >Well, in the RM, all the tuples in the same relation have to use the
>> >same predicate for reading the fact. Your interpretation breaks this.
>>
>> My interpretation was based on common practice in SQL databases where
>> any predicates are combined in one table.
>
>Sure. Any time you perform a join, you combine predicates (using AND).
>The result has *one* predicate, though, not many.

I guess that our disagreements are caused by discussing two similar but not equal subjects. I was talking about the behaviour of NULL in SQL DBMSs; you were talking about the RM. (And considering that there is still some dispute going on about how exactly the RM should be defined, your approach reminds me of TTM - though I have to admit that I've still not found the time to study TTM in the detail it deserves).

IMO, any model that forces the result of a join to have just one predicate can't have a NULL symbol. At least not the NULL as it is defined and used in the SQL model. Since NULL signals missing data, it also signals that part of the predicate does not apply to a specific row.

>> >> Name | Age
>> >> -------------+-----
>> >> Uncle Vernon | NULL
>> >> Aunt Marge | 47
>> >>
>> >> means nothing more and nothing less than
>> >> - I have a family member who is uniquely identified (in the UoD of my
>> >> family database) by the name "Aunt Marge";
>> >> - I have a family member who is uniquely identified (in the UoD of my
>> >> family database) by the name "Uncle Vernon".
>> >> - My family member Aunt Marge has an age of 47 years.
>> >
>> >Yes, I understand your point of view. But this means that the connection
>> >between relations and predicate logic is weakened. For instance, what is
>> >the meaning of your table above projected on Age? It seems you will have
>> >a row that doesn't have a meaning at all.
>>
>> The meaning would be "There exists an age that is uniquely identified by
>> the number of 47 years".
>
>Not that row, the other one:
>
>Age
>----
>NULL
>
>What does that mean?

That row should not be in the projection on Age. NULL doesn't signal a "NULL age" (whatever that might be), but "no data in the Age column for this row". The project operation projects data that is there, not data that isn't there.

The meaning I wrote down is therefor meaning for ALL rows in the projection.

>Besides, the RM interpretation of the "47" row is "There exists a family
>member with the age 47 years". This is important; your interpretation
>leads to problems with the closed world assumption.

Yes, you're right. That was my NIAM mindset coming through again.

(FYI, in NIAM, there would be one predicate like I used in my reply for the model, and all ages used anywhere in that model would reference this predicate.)

Best, Hugo

-- 

(Remove _NO_ and _SPAM_ to get my e-mail address)
Received on Mon Dec 26 2005 - 00:52:26 CET

Original text of this message