Collection Object (there was a picture...)

Philip Mötteli philip.moetteli at econophone.ch
Tue Aug 1 13:10:41 CDT 2006


Am 01.08.2006 um 11:11 schrieb Philip Mötteli:
> Am 31.07.2006 um 21:35 schrieb Ruslan Zasukhin:
>> On 7/31/06 9:27 PM, "Philip Mötteli"  
>> <philip.moetteli at econophone.ch> wrote:
>>
>>>> Hmm, it seems SQL do not have query type which can do similar  
>>>> thing ..
>>>> OF course we can have low level API methods...
>>>> But SQL also is in interest
>>>>
>>>> It needs to think about this deeply. You have touch very
>>>> interesting issue.
>>>>     mix of Arrays, Links, Ptrs, ...
>>>>
>>>
>>> Definitely. Do others already have solved this problem?
>>>
>>
>> I have not see nothing similar to be automated.
>>
>
> So the arrays of Postgres you mentioned don't let do a search  
> through them?
>
>
>> I have realize that this is VERY strange query:
>>
>>     SELECT f3
>>     FROM NSSet
>>     WHERE RecID=1 AND f3.*.name='Ruslan'
>>
>> Why?
>>
>> Because here you make very weak assumption that all 3 tables T1 -  
>> T3 have
>> field "name".
>>
>
> That's almost true.
> Almost, because Yes, I make that assumption. So why does Apple  
> offer such a method to search for a value of an attribute? Because  
> it is no problem, if there's no such IVar/accessor method. Apple  
> first checks, if the attribute is there and only then accesses it.  
> This strategy is called Key Value Coding (KVC: <http:// 
> developer.apple.com/documentation/Cocoa/Conceptual/KeyValueCoding/ 
> Concepts/BasicPrinciples.html>).
>
>
>> In general case as I see it, tables Ti will have totally different
>> structures. Right?
>>
>
> Mostly, yes.
>
>
>> So such kind of query is useless
>>
>
> The objects might be different, so be in different tables, but  
> still have the same accessor method in three cases:
>
> 1. By chance.
> 2. Because they adhere to the same protocol/Interface (@protocol)
> 3. Because they are related by inheritance.
>
>
>> I think we need together spend time to write really complete  
>> specification
>> of tasks you want to solve in your layer. Having this list of  
>> tasks we can
>> think how this can be solved
>>
>>

I have another proposition how we could approach the problem (instead  
of looking how Postgres possibly does it): Lets assume the following  
M:M intermediate table:

MMIntermediate {collectionRecord as ObjectsPtr, nextRecord as RecID,  
memberRecord as ObjectsPtr}
-------------- next part --------------


(For the moment just ignore the 'nextRecord', which is there only to  
create an ordered collection).
So this MMIntermediate table would play the M:M table, joining the  
collection table (e. g. NSSet) to the destination table of the member  
object (here displayed by taking the root of all Foundation objects:  
NSObject). This would replace the array kind of field, proposed by  
Postgres and Ruslan.
How would searching work in this case? I mean, here too, I can search  
for a field of the member record, that possibly doesn't exist?


Re
Phil




More information about the Valentina mailing list