Re: WWW/Internet 2009: 2nd CFP until 21 September
Date: Fri, 14 Aug 2009 20:49:27 GMT
Message-ID: <r5khm.2044$nh2.739_at_nwrddc02.gnilink.net>
"paul c" <toledobythesea_at_oohay.ac> wrote in message
news:YOehm.41212$PH1.10421_at_edtnps82...
> Mr. Scott wrote:
>> "paul c" <toledobythesea_at_oohay.ac> wrote in message
> ...
>>> 4) if the answer to 2) is 'one predicate', what does projection on any
>>> of the four columns mean?
>>
>> That is an interesting question. I think that the predicate of a
>> projection must include in some way the predicate of its operand. A
>> projection over B on the table {X,A,B,C,D,E} includes only those B's that
>> are actually in the table. Does this look right to you? "Being a
>> snail-mail address B for an order where an order has order number X for
>> customer E that was placed on date D with delivery e-mail address A ....
>
> If some 'row' (pretending for the moment that rows can be treated like
> tuples) contains 'null' (eg., 'unknown') in the B column, I presume in
> SQL that row instantiates, ie. stands for a true fact. But the Closed
> World Assumption means that unknown values are false. Seems like a
> contradiction to me.
This is a little over my head, but I'll dive in anyway.
Connecting SQL and "facts" can be tricky, particularly when nulls are
involved.
If I say
select distinct OrderId, MailingAddress from Orders
and there are some rows with Null in MailingAddress, those rows don't
appear in the result. The row may exist in orders, but its projection on
the space
Likewise if I say select count(MailingAddress) from Orders
I'm going to get the count of rows that have a value in MailingAddress. If
I compare with
I can see what happened. If some rows actually have null in Mailing
address, it is as though those rows were not there when you do some
operation that only deals with rows containing a value in MailingAddress.
Comparing this behaviour with either the open world assumption or the closed
world assumption is largely in the mind of the beholder.
{OrderId, MailingAddress} doesn't exist (at least in the dialects I used).
(assuming that what SELECT DISTINCT does is really a projection.)
select count(1) from Orders where MailingAddress is not null
select count(1) from Orders where MailingAddress is null
select count(1) from Orders