Платформа Parse для iOS: отношения, объединения или массивы для больших «многие ко многим»? - PullRequest
0 голосов
/ 23 апреля 2020

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

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

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

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

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

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

Это выглядит как хрупкое обоснование.

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

1 Ответ

2 голосов
/ 23 апреля 2020

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

Недостатком Relation является невозможность добавления новых полей в создаваемую им «Объединенную таблицу». Так что, если вам нужно, например, хранить благотворительные организации, которые нравятся каждому из пользователей, отношения между Пользователем и Благотворительностью будут подходящими, потому что вам просто нужно сохранить, что отношения существуют, и не нужно хранить какие-либо дополнительные информация.

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

...