On Tue, 2009-06-30 at 12:32 +0200, Gaetan de Menten wrote:
> Hi people,

Hi Gaetan,

> I'm faced with a tough decision. Here is the problem:

[CUT]

> Here are the solutions I could come up:
> 
> 1) Produce column names which depend on the relation name for all
> ManyToMany relationships.
> 
> Pro:
>   - Seems logical. This is the pattern I wish I had used in the first place.
> 
> Con:
>   - Massive breakage when upgrading from older Elixir: all ManyToMany
> (self-referencial or not) relationships are affected. That is, each
> developer will need to either:
>      * use old scheme through setting the global variable
> "elixir.M2MCOL_NAMEFORMAT" before doing anything else with Elixir.
> Ugly but effective.
>      * use local_colname AND remote_colname in every ManyToMany relationship.
>      * update all M2M tables
>   - We cannot easily detect (at Elixir-level) whether there is a
> problem or not and thus provide "migration help" automatically. That
> is, people upgrading without reading the release/upgrade notes (and
> unfortunately I think most people don't) will be hit by strange
> "missing column" errors without any clear indication of what to do to
> fix the problem.
>   - Breaks if the relationship is renamed. This seems logical and IMO
> acceptable. In that case, the developer can simply use local_colname
> for the renamed relationship.

[CUT]

> 4) Use a different pattern to generate columns for self-referential
> relationships than for non self-referential (ie use solution #1 but
> only for self-referential relationships).
> 
> Pro:
>   - Only breaks self-referencial ManyToMany relationships.
> 
> Con:
>   - No way to know there is a problem (see #1).
>   - A slight case of spaghetti code. But this is also true with the
> current approach.


I prefer solution #1 and #4.
I think the best design solution is the #1, but I understand upgrading
problems (I don't understand why people upgrade without reading release
notes) and a good compromise is the solution #4 (probably, but I prefer
#1).


-- 
Ing. Stefano Fontanelli
PhD Student, Scuola Superiore Sant'Anna
ReTiS Lab c/o CEIIC
Via G. Moruzzi, 1
56124 Pisa (Italy)
tel: +39 050 5492010, mobile: +39 333 3653294
skype: stefanofontanelli


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"SQLElixir" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/sqlelixir?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to