Re: delete cascade
From: paul c <toledobythesea_at_oohay.ac>
Date: Tue, 17 Apr 2007 13:21:42 GMT
Message-ID: <GR3Vh.87974$aG1.10937_at_pd7urf3no>
>
>
> Ahhh, so 'and' and 'or' have higher precedence than '='. That explains
> much.
> ...
>
>
> Okay, that makes sense. How does it relate to cascading again?
Date: Tue, 17 Apr 2007 13:21:42 GMT
Message-ID: <GR3Vh.87974$aG1.10937_at_pd7urf3no>
Bob Badour wrote:
> paul c wrote:
> 
>> Bob Badour wrote:
>>
>>> paul c wrote:
>>
>>
>> ...
>>
>>>> Sorry, I think I put that wrongly.  Maybe the constraint that "one 
>>>> may not delete an invoice when any items exists would look something 
>>>> like "(NOT Invoices{Invoice#}) AND Items{Invoice#} = FALSE", ie., a 
>>>> reference from the complement of invoices to items.
>>>
>>>
>>> I am not sure I fully understand your syntax and the order of 
>>> precedence you are using, but wouldn't demorgan make that:
>>>
>>> Invoices{Invoice#} OR Items{Invoice#}
>>>
>>> That doesn't seem like the constraint at all to me.
>>
>>
>> Not sure I entirely understand my notation either but here's what I 
>> get if I substitute "A" for the invoices projection and "B" for the 
>> items projection:
>>
>> (not A) and B = false               /* ie., the join is empty */
>>
>> -> not ((not A) and B) = true       /* negate both sides */
>
>
> Ahhh, so 'and' and 'or' have higher precedence than '='. That explains
> much.
> ...
Sorry for not explaining that.
> 
>> -> A or (not B) = true              /* de Morgan */
>>
>> in other words,
>> Invoices{Invoice#} OR NOT(Items{Invoice#}) is not empty.
>
>
> Okay, that makes sense. How does it relate to cascading again?
p Received on Tue Apr 17 2007 - 15:21:42 CEST
