Платформа синтаксического анализа на iOS: отношения, объединения или массивы для больших "многие-ко-многим"?

В справочнике Parse.com API для Swift на iOS очень ясно, когда использовать различные виды отношений "один-ко-многим", исходя из ожидаемого размера стороны "многие".

Но мне менее ясно, какие отношения "многие ко многим" использовать, когда обе стороны могут быть очень большими.

В моем случае у меня Charity возражаю, что мой Users может делать небольшие (часто в один доллар) взносы - поэтому каждый User могли бы сделать тысячи таких вкладов, и каждый Charity мог бы иметь тысячи Users делая взносы в это.

Для такого рода вещей перечислены параметры "многие-ко-многим": "Анализировать отношения", "Объединить таблицы" и "Массивы", о которых рассказывается в документации:

  • Массивы следует использовать, когда связь надежно включает менее 100 ссылок, что является очень ясным и полезным указанием на то, что я не должен использовать массивы.
  • В документах говорится, что Parse Relations могут использоваться, например, для подключения Books с несколькими Authors а также Authors с несколькими Books- ситуация, в которой данное Book вряд ли будет больше 100 Authors, и лишь изредка Author иметь более 100 Books- поэтому неясно, подходит ли это, когда обе стороны могут быть очень большими, как в моем случае.
  • В документах говорится, что таблицы соединения следует использовать, когда к каждому отношению должны быть прикреплены дополнительные метаданные, поэтому, с одной стороны, в настоящее время у меня нет явной потребности в этом, а с другой стороны, в документах, похоже, даже ничего не упоминается о том, как и имеет ли значение, насколько велика каждая сторона отношения "многие ко многим".

В отсутствие какой-либо другой информации мне кажется, что я должен использовать Join Tables, но только потому, что документы не подразумевают, что я не должен этого делать, и не по той причине, по которой в документации сказано, что я должен.

Это кажется неубедительным обоснованием.

Я был бы очень признателен за любое руководство, которое может дать кто-нибудь.

1 ответ

Решение

За кулисами, когда вы используете Relation, Parse Server автоматически создает для вас объединенную таблицу и предоставляет некоторые API-интерфейсы для простого управления и извлечения ее данных. Итак, с точки зрения производительности он должен быть очень похож.

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

С другой стороны, если вам нужно сохранить пожертвования, которые каждый пользователь сделал каждой из благотворительных организаций, я бы создал объединенную таблицу под названием Donation или UserCharity с указателем на класс User, указателем на класс Charity и стоимость пожертвования. В этом случае Relation не подходит, потому что вам нужно сохранить сумму пожертвования.

Другие вопросы по тегам