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

Achim Domma domma at procoders.net
Tue Jul 11 18:40:50 EDT 2006


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


More information about the Zope3-users mailing list