[Zope] ObjectManager example needed

Paul Howell paul at smoothstone.com
Sun Nov 23 20:39:37 EST 2003


At 02:14 PM 11/23/2003 -0800, Dylan Reinhardt wrote:
><much snipped>
>Basically you have a many-to-many relationship between pieces and
>composers.  In Zope, I find these are best modeled as objects in *peer*
>containers.  Thus, you might have:
>
>MusicLibrary/
>    Composers/
>        Verdi
>    Pieces/
>        Aida
>        Otello
>
>The Verdi object would then have a "pieces" property of [Aida, Otello]
>and each of Verdi's operas has a "composers" property of [Verdi].

While this is a straightforward M:N approach, it is not recommended for 
most applications because each piece of information is recorded twice, not 
once.  Fact: Verdi wrote Aida.  This fact should be recorded only once, not 
twice in two different places.  This is standard practice when developing 
SQL database applications in order to (1) reduce storage needs and (2) to 
avoid the type of database error that can creep in any M:N storage problem 
where one side is updated or corrected (Verdi did not compoe "Hair") but 
the other part of the database is accidentally left uncorrected ("Hair" was 
composed by Verdi).  When the data fact is stored only once, you avoid this 
type of problem... it is also easier to code updates to only one table than 
to two or more tables.

That said, I have less experience developing M:N database structures in an 
object-oriented database like ZODB.  There could be other reasons why you 
might indeed want such a structure... like speed.  But that's what indexes 
are for, so I doubt that would be the reason.

My leaning is toward Dennis's suggestion... use SQL.  It seems a 
straightforward application there.  Best wishes...
=Paul




More information about the Zope mailing list