Задать вопрос
AlexZeDim
@AlexZeDim

Проектирование: Как сделать связь один к одному в пределах одной сущности?

Всем привет! Есть такая «проблема».
Есть готовая коллекция MongoDB и в ней одна сущность: «предметы».
3 аттрибута/поля: id, название(string), содержимое(array).

Суть заключается в том, что некоторые предметы состоят из других предметов (их самих нельзя классифицировать по какому-то определенному признаку). И эти данные надо где-то и как-то хранить, например:

Есть предмет с id:1 предмет с id:2. Для того что-бы получился предмет id:3 надо взять предмет c id:1 в количестве 3, и предмет с id: 2 в количестве 4-ех.
id_1-(3)->Id_4
Id_2-(4)->Id_4

Дело в том, что для решения этой проблемы отлично подходят графовые СУБД вроде neo4j, проблема только в том, что она может далеко не все то,что может Mongo/Postgres. Собственно вопрос в том, как хранить эти данные? В какой именно форме и какое решение стоит использоваться? Сменить Mongo на Postgres не проблема. На данный момент моё решение, в третьем аттрибуте <содержимое> в виде массива хранить массивы, вроде:
[[1,3],[2,4],..[id,qnty]]

Но может быть у кого-то есть лучшая идея или уже опытное решение?
  • Вопрос задан
  • 319 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
longclaps
@longclaps
Сменить Mongo на Postgres не проблема.

Хорошая идея.
Кстати, если твои графы - это деревья, Postgres их умеет.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы