[Zope3-Users] Expressing n:m relationship in ZODB

Leonardo Rochael Almeida leo at enfoldsystems.com
Tue Jul 11 19:39:07 EDT 2006

What you describe sounds perfectly fine.

You might want to consider exposing the actual IArticleProjectRelation
object eventually if you decide to hang other attributes to it, say a
'start date'.

Cheers, Leo

Em Qua, 2006-07-12 às 00:40 +0200, Achim Domma escreveu:
> Leonardo Rochael Almeida wrote:
> > In usual Object Oriented modeling, an n:m relationship is usually
> > modeled as a collection of relationship objects each one keeping one
> > direct reference to each side of the relationship. Of course, using
> > these systems that already try to model relationships helps you not to
> > reinvent another wheel.
> I think I understand. So if I would like to reinvent another wheel, just 
> for the educatinal purpose, I should do it like this:
> If I have IArticle and IProject which should have a relationship, I 
> would introduce IArticleProjectRelation which holds a reference to the 
> related objects. These relation objects will be managed by an 
> IArticleProjectRelationManager which has an interface like:
> relate(article,project)
> unrelate(article,project)
> get_related_articles(project)
> get_related_projects(article)
> In that case, IArticleProjectRelation would be an implementation detail 
> of IArticleProjectRelationManager and I do not have to expose it at all. 
> And in Zope 3 terms, I would implement the manager as a local utility. 
> Right so far?
> If yes, I could add helper methods to IArticle and IProject which 
> encapsulate the access of the utility to hide this detail from the user. 
> Would you do that? Or has it some drawbacks which I don't see yet?
> thanks for your help,
> Achim
> _______________________________________________
> Zope3-users mailing list
> Zope3-users at zope.org
> http://mail.zope.org/mailman/listinfo/zope3-users
Leonardo Rochael Almeida
Enfold Systems
phone. +1.713.942.2377 Ext 215
fax. +1.832.201.8856

More information about the Zope3-users mailing list