| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Usenet -> comp.databases.theory -> Re: delete cascade
paul c wrote:
> 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.
>> ...
>>
>>> -> 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?
I understand how it expresses the constraint. What does that have to do with cascading, though? Received on Tue Apr 17 2007 - 08:25:23 CDT
![]() |
![]() |