Re: Perhaps an idiotic question

From: Bob Badour <bbadour_at_pei.sympatico.ca>
Date: Fri, 01 Dec 2006 14:14:13 GMT
Message-ID: <VMWbh.27212$cz.412201_at_ursa-nb00s0.nbnet.nb.ca>


Bob Badour wrote:

> Gene Wirchenko wrote:
>

>> Bob Badour <bbadour_at_pei.sympatico.ca> wrote:
>>
>>
>>> Gene Wirchenko wrote:
>>>
>>>
>>>> Bob Badour <bbadour_at_pei.sympatico.ca> wrote:
>>>>
>>>>
>>>>> Gene Wirchenko wrote:
>>>>>
>>>>>
>>>>>> paul c <toledobythesea_at_oohay.ac> wrote:
>>>>>>
>>>>>>
>>>>>>> But it perplexes me even though I admit I have no good reason for 
>>>>>>> asking:
>>>>>>>
>>>>>>> If I declare a relation (or more properly a relvar) R to have an 
>>>>>>> attribute A where A's type is the type of R am I declaring a 
>>>>>>> fallacy or something that is logically possible (ignoring whether 
>>>>>>> it has any use)?
>>>>>>
>>>>>>
>>>>>>    I see recursion but no termination.
>>>>>>
>>>>>>    What *is* the use of such a declaration?
>>>>>
>>>>>
>>>>> What would be the type of a view that combines a recursion or 
>>>>> closure with the GROUP operation?
>>>>
>>>>
>>>>     I do not know since I see recursion but no termination.  If that
>>>> is the case, the type can not declared in the first place.
>>>
>>>
>>> Sure, it can. It just requires a forward reference.
>>
>>
>>
>>>>     I can see the attribute being an FK into its own relation.  The
>>>> type then is more pointer to R than R.  (That wording is not quite
>>>> right, but I hope the concept comes through.)
>>>
>>>
>>> Suppose you have a reference from R1 to R1. e.g. Employee relation 
>>> has a Manager reference to Employee. You declare a recursive view 
>>> that groups the manager references as a relation valued attribute.
>>>
>>> Whether the recusion terminates depends on what you did with the 
>>> CEO's manager reference and how you wrote the recursion.
>>
>>
>>      I do not see it.  Could you please post some p-code?

>
>
> Something like the following:
>
> EE = extend (Emp where mgr# = e#)
> add bosses as relation same heading as EE {}
> union
> extend (Emp where mgr# != e#)
> add bosses as (EE where EE.mgr# = mgr#)

I should amend something I said earlier. Whether the recursion terminates will also depend on whether any cycles exist in the references. Received on Fri Dec 01 2006 - 15:14:13 CET

Original text of this message