Я не уверен, что понимаю ваш вопрос.
PersistentMapping ведет себя так же, как словарь, но является постоянным. PersistentList - это просто список, который является постоянным.
BTree ведет себя также как словарь, но он оптимизирован для огромного количества объектов. Вы не должны использовать PersistentMapping или PersistentList, если вам приходится иметь дело со многими объектами.
Для отношений ZODB вы можете использовать ссылки на объекты , как это обычно делается в Python.
ZODB даже поддерживает слабые ссылки, если они вам нужны.
Существуют и другие специализированные пакеты, такие как z3c.relationfield, для работы с отношениями в ZODB, например, если вам нужен поиск по отношению, но у меня никогда не было необходимости их использовать.