Я хочу написать приложение для карточной игры Magic the Gathering (MtG) с использованием laravel и MongoDB.Я хочу использовать данные из API scryfall и до сих пор я бы просто сериализовал эти данные в обычную базу данных MySQL.Однако данные из Scryfall очень не сериализуемы, и я бы потерял большую гибкость, поэтому я подумал, что это может быть идеальным проектом для изучения другого подхода и опробования MongoDB.
Теперь в MtG каждый Card
является частью Set
, поэтому я думал, что объекты Card
являются вложенными объектами в каждом Set
, например:
{
name: "Set Name",
code: "SN",
// More paramaters for the set...
cards: [{
id: "123ljk123123l",
name: "Card Name"
// All parameters of that card
},
{
id: "123123ljk12al",
name: "Another Card Name"
// All parameters of this card
}]
}
таким образом, отношение Set
кCard
будет EmbedsMany
.Однако мне все еще нужно получить доступ к карте, не зная, в каком наборе она находится, просто по ее идентификатору (который будет уникальным).Это возможно?Является ли это даже лучшим подходом для такого рода проблем?
В конечном счете, я хочу управлять коллекцией карточек пользователей, поэтому мне нужно каким-то образом иметь возможность иметь связь ManyToMany между пользователями и карточками (до сих пор я использовалсводная таблица с дополнительными полями для количества карт, которые пользователь имеет такого типа, и если они являются фольгой или нет, поэтому мне нужно добавить некоторую информацию к этому отношению, а также)
Итак, вопрос в том, чтолучший способ моделирования этого в рекламной базе данных?Является ли MongoDB правильным выбором?