2011-01-06 4 views
7

Что такое принятый шаблон для обработки отношений «многие ко многим» в дизайне базы данных документов?Nosql many-to-many

ответ

3

Как вы хотите смоделировать модель «многие-ко-многим» будет зависеть от того, какие запросы вы хотите задать, как вы хотите обновить данные и т. Д. ... Скажем, у нас есть привязки к барам во многих много мода.

Вы можете моделировать Foo как

{ 
    'bars': ['bar1', 'bar2', 'bar3'] 
} 

и модель бар в

{ 
    'foos': ['foo_x', 'foo_y', 'foo_z'] 
} 

Или вы можете моделировать график или отношения между Foo и бар, а отдельные документы сами

{ 
    from: 'foo1', 
    to: 'bar1' 
} 

{ 
    from: 'foo1', 
    to: 'bar2' 
} 

{ 
    from: 'foo2', 
    to: 'bar3 
} 

{ 
    from 'foo3', 
    to: 'bar3' 
} 

Есть много других способов. Как вы хотите это сделать, это будет зависеть от вопросов, которые вы хотите задать, операций, которые вы хотите поддерживать, чего вы хотите быть эффективными и индексации, доступных в базе данных.

2

Предполагая, что мы говорим о случаях, когда отношения действительно необходимы, а не те, которые существуют только потому, что SQL обрабатывает отношения лучше, чем сложные объекты, дизайн аналогичен стандартным для SQL - от двух до нескольких отношений.

Главное отличие состоит в том, что у вас есть многозначные поля, поэтому вместо третьего документа/таблицы, записывающего одиночные соединения в виде пары идентификаторов, у вас есть список идентификаторов в каждом документе.

Если вы сталкиваетесь с ситуациями, когда этот список слишком длинный, вы, вероятно, смотрите на то, что лучше обрабатывать индексацией поиска, чем отношения.

+0

он говорит о документации –

+0

нет, это «документ базы данных». «База данных документов» похожа на http://www.mongodb.org/ –

Смежные вопросы