On 11/01/10 12:46 PM, Kevin Menard wrote:
> On Sun, Jan 10, 2010 at 8:21 PM, Aristedes Maniatis<ar..aniatis.org>wrote:
>
>> On 11/01/10 12:08 PM, Kevin Menard wrote:
>>
>>> More complicated would be AR's notion of polymorphic relationships, which
>>> I
>>> guess were added as a way to avoid join tables.
>>>
>>
>> My coincidence Lachlan Deck and I were discussing this just this morning.
>> We have to think about what is involved, but what about an interface you can
>> define in CM on which you can then perform a Query? Then rather than forcing
>> inheritance on users, you could just define an interface.
>>
>> The common examples (as per the original poster) are attachments, comments
>> and tags. So you want to be able to define a Taggable interface implemented
>> by Artists, Paintings, etc. That then ties back to Tags and a special
>> many-many Taggable_Tags join table with "foreign_key" and "foreign_table"
>> fields. This implementation looks a lot like vertical inheritance, but
>> without the inheritance.
>>
>
> So, the problem I've always had with this approach is that renaming a table
> invalidates your data. Additionally, you're always doing a join on a
> varchar field for which an index may not buy you a whole lot (best case is a
> 1/n partitioning). The benefit is you don't need n join tables.
There is no reason why the descriminator (class designator) couldn't be a java enum mapped to int or anything else that made the database fast. Even if was text as far as Java was concerned, mysql has the ability to define an enum which makes it smaller/faster. [1] The very same problem exists for vertical and horizontal inheritance.
Ari
[1] http://dev.mysql.com/doc/refman/5.0/en/enum.html
-- --------------------------> Aristedes Maniatis GPG fingerprint CBFB 84B4 738D 4E87 5E5C 5EFA EF6A 7D2E 3E49 102A
This archive was generated by hypermail 2.0.0 : Sun Jan 10 2010 - 22:56:34 EST