Какой самый способ "mongo" для представления отношений "многие ко многим", которые имеют атрибуты?
Итак, например:
Введение
Таблицы MYSQL
people
= > firstName, lastName, ...
Movies
= > name, length ..
peopleMovies
= > movieId, personId, language, role
Решение 1
Вставить людей в фильмы...?
В MongoDB я понимаю, что это хорошо для denormalize and embed
, но я не хочу, чтобы embed
люди в фильмы, это просто логически не имеет смысла. Потому что люди не обязательно должны принадлежать только к фильмам.
Решение 2
people
и Movies
будут две отдельные коллекции.
people
= > embed [{movieId: 12, personId: 1, language: "English", role: "Main"} ...]
Movies
= > embed [{movieId: 12, personId: 1, language: "English", role: "Main"} ...]
Проблема с этим решением заключается в том, что, когда мы хотим обновить человека role
для конкретного movie
, нам нужно запустить два запроса на обновление, чтобы обеспечить синхронизацию данных в обеих коллекциях.
Решение 3
Мы также можем сделать что-то гораздо более реляционное, и в итоге получим три коллекции
people
= > firstName, lastName, ...
Movies
= > name, length ..
Castings
= > movieId, personId, language, role
Проблема заключается в том, что из-за отсутствия утверждения объединения в MongoDB требуется 3 queries
перейти от людей → к фильмам и наоборот.
Вот мой вопрос, какие еще есть способы моделирования чего-то подобного в MongoDB
и более NoSQL
. С точки зрения предоставленных решений, какой из них будет лучшим с точки зрения производительности и согласия в манго.