Платформа синтаксического анализа на iOS: отношения, объединения или массивы для больших "многие-ко-многим"?
В справочнике Parse.com API для Swift на iOS очень ясно, когда использовать различные виды отношений "один-ко-многим", исходя из ожидаемого размера стороны "многие".
Но мне менее ясно, какие отношения "многие ко многим" использовать, когда обе стороны могут быть очень большими.
В моем случае у меня Charity
возражаю, что мой Users
может делать небольшие (часто в один доллар) взносы - поэтому каждый User
могли бы сделать тысячи таких вкладов, и каждый Charity
мог бы иметь тысячи Users
делая взносы в это.
Для такого рода вещей перечислены параметры "многие-ко-многим": "Анализировать отношения", "Объединить таблицы" и "Массивы", о которых рассказывается в документации:
- Массивы следует использовать, когда связь надежно включает менее 100 ссылок, что является очень ясным и полезным указанием на то, что я не должен использовать массивы.
- В документах говорится, что Parse Relations могут использоваться, например, для подключения
Books
с несколькимиAuthors
а такжеAuthors
с несколькимиBooks
- ситуация, в которой данноеBook
вряд ли будет больше 100Authors
, и лишь изредкаAuthor
иметь более 100Books
- поэтому неясно, подходит ли это, когда обе стороны могут быть очень большими, как в моем случае. - В документах говорится, что таблицы соединения следует использовать, когда к каждому отношению должны быть прикреплены дополнительные метаданные, поэтому, с одной стороны, в настоящее время у меня нет явной потребности в этом, а с другой стороны, в документах, похоже, даже ничего не упоминается о том, как и имеет ли значение, насколько велика каждая сторона отношения "многие ко многим".
В отсутствие какой-либо другой информации мне кажется, что я должен использовать Join Tables, но только потому, что документы не подразумевают, что я не должен этого делать, и не по той причине, по которой в документации сказано, что я должен.
Это кажется неубедительным обоснованием.
Я был бы очень признателен за любое руководство, которое может дать кто-нибудь.
1 ответ
За кулисами, когда вы используете Relation, Parse Server автоматически создает для вас объединенную таблицу и предоставляет некоторые API-интерфейсы для простого управления и извлечения ее данных. Итак, с точки зрения производительности он должен быть очень похож.
Обратной стороной Отношения является невозможность добавлять новые поля в создаваемую им "Объединенную таблицу". Итак, если вам нужно, например, хранить благотворительные организации, которые нравятся каждому из пользователей, связь между пользователем и благотворительностью будет подходящей, потому что вам просто нужно сохранить, что связь существует, и не нужно хранить какие-либо дополнительные Информация.
С другой стороны, если вам нужно сохранить пожертвования, которые каждый пользователь сделал каждой из благотворительных организаций, я бы создал объединенную таблицу под названием Donation или UserCharity с указателем на класс User, указателем на класс Charity и стоимость пожертвования. В этом случае Relation не подходит, потому что вам нужно сохранить сумму пожертвования.