Дизайн графа свойств (Neo4j): один узел с несколькими связями или новые узлы для каждого события?

Допустим, у меня есть две лиги L1 и L2. Каждая лига может иметь несколько раундов, таких как плей-офф, четвертьфинал, полуфинал и финал. Кроме того, мне также нужно представить факт Случаи- как после того, как четвертьфинал случится после плей-офф, полуфинал случится после четвертьфинала, а финал - после полуфинала.

Вопросы

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

Случаи применения

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

РЕДАКТИРОВАТЬ

1 ответ

В общем, все, что имеет идентификацию само по себе, должно стать узлом. Отношения связывают "вещи" вместе.

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

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

Другие вопросы по тегам