[Zope] zope.schema: association vs. containment in Object, List
Sean Upton
sdupton at gmail.com
Fri Jun 6 20:08:29 EDT 2008
On Fri, Jun 6, 2008 at 7:24 AM, Fred Drake <fdrake at gmail.com> wrote:
> Still another approach, if you're looking to create software support
> and the first isn't suitable, is to use fields that provide additional
> interfaces that indicate the nature of the references.
My application (and I suspect other cases will) need to do just this;
a marker on the field eliminates the ambiguity. Schema and interfaces
should allow for complete "domain modeling" in such a way that
expresses intent of the business case, regardless of the persistence
mechanism or implementation details underneath, so I think I'll
continue to use custom field types marked with an IRelationshipField
interface, and assume the built-in Object, List fields are only used
for containment. The only thing I do not like about my direction is
that it leaves ambiguity when working with code from other
components/projects that do not share this assumption.
For RDBMS persistence of schema-defined content, z3c.dobbin (for
example) assumes Object fields are just foreign-key relationships, but
the downside to this simplification is an inability to meaningfully
interact with a simple persisted containment scenario (a complex
object that has contained specialized child objects intrinsically part
of the primary object; trying to serialize to JSON with clear
recursion boundaries for example, would be difficult). In my
application-case, I'm looking to do something similar, but hoping to
do so with a clear bright-line between associations and containment.
Note: removal of such ambiguity is helpful for the possible use case
of schema/interface bootstrapping/generation from UML tools for
model-driven-design.
Sean
More information about the Zope
mailing list