1

Скажем, у меня есть две лиги L1 и L2. Каждая лига может иметь несколько раундов, таких как плей-офф, четвертьфиналы, полуфиналы и финалы. Более того, мне также нужно представить happens_after факт, как четвертьфиналы происходит после плей-офф, полуфинал происходит после четвертьфиналов и финалов после полуфинала.Дизайн графического объекта (Neo4j): единый узел с несколькими отношениями или новыми узлами для каждого события?

Вопросы

Если мой график один узел для каждого из этих раундов, и каждая лига должна связать эти раундов? Таким образом, мы просто создаем новые отношения (например, оба L1 и L2 будут иметь отношение к Playoffs), но есть только один узел Playoff. Тем не менее, это ограничивает отношения happens_after, потому что в некоторых лигах может быть больше раундов (например, раунд 2 может пройти до четвертьфиналов). Есть ли лучший способ представить это?

Использование футляры

  1. Нужно быть в состоянии найти все раунды данной лиги.
  2. Нужно иметь возможность найти заказ всех раундов данной лиги и даты каждого из них.

EDIT

enter image description here

ответ

2

В общем, все, что имеет определить по себе должно стать узлом. Отношения связывают «вещи» вместе.

Не уверен, что я полностью понимаю ваш домен. L1, L2 и каждый раунд будут узлами. Лига отношений -> раунд указывает, что данная лига принимает участие в раунде.

Временный порядок в раундах может быть смоделирован с использованием отношений BEFORE и/или AFTER между ними. Таким образом вы создаете связанный (или двойной) список раундов. Другим способом выражения временного порядка было бы сохранить свойство индексированного временного штампа для раунда. Если вас просто интересуют до или после, а не по абсолютному времени, первый подход (связанный список), кажется, лучше подходит.

+0

Я добавил фотографию к своему сообщению. L1 имеет 2 уровня (плей-офф и раунд 2), но L2 имеет два «разных» уровня (плей-офф, а затем четвертьфиналы). Как вы пишете запрос, чтобы определить все уровни для данной лиги здесь? –

+0

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

+0

Если количество лиг ограничено, вы можете закодировать лигу в «следующей» зависимости, используя «next_l1» и «next_l2». Также в лиге должно быть отношение next_l1/l2 к первому раунду (palyoff). Запрос, чтобы получить все раунды во временном порядке, следующий: 'start l = node: league (лиги: 'L1') соответствует l - [: NEXT_L1 *] -> n return n' –