Представление рецепта приготовления в графической базе данных - PullRequest
1 голос
/ 13 октября 2011

Я пытаюсь обернуть голову вокруг графовых баз данных. Так что, возможно, кто-то может помочь мне объяснить, как правильно моделировать эти отношения. Это в основном с точки зрения neo4j, но я предполагаю, что это будет применимо к большинству графовых баз данных

У меня есть узел Recipe и узлы Ingredient. Узлы Ingredient имеют отношение ingredient_in к узлу Recipe. Отношение будет содержать несколько атрибутов, особенно следует отметить поле суммы с единицей измерения.

Я могу себе представить, что в другом месте на графике были бы UnitOfMeasure узлы, которые имели бы отношения convertts_to с коэффициентом преобразования.

Вопрос, с которым я борюсь, заключается в том, как мне представить отношение Ingredient-> Recipe как имеющее UnitOfMeasure. Исходя из RDMS, я чувствую, что мне нужен другой узел между ними, но это неправильно для базы данных графа.

1 Ответ

3 голосов
/ 13 октября 2011

Это зависит от двух вещей:

а) Вы приписали отношения или n-арные отношения

б) как вы используете единицы и суммы - возможно, промежуточный узел легче

Имо, используя "нормальный" дизайн, подобный этому

Recipe -- Entry          -- Ingredient
          amount: double
             |
             |
          UniOfMeasure

хорошо, когда Entry является узлом - даже если вы используете базу данных графов, которая может обрабатывать приписанные ребра. Конструкция была бы такой же, как и приписанный n-арный край - единственное отличие состояло бы в том, что Entry, который теперь возможно называется «содержит», будет Edge, а не Node.

...