2015-10-28 4 views
1

Я моделирую систему событий. Скажем, у меня есть событие EVENT_A. Когда я создаю событие, я фиксирую некоторую информацию - кто вызвал событие (лицо A), на которое повлияло событие (лицо B), и как повлияло лицо B (идентифицировано свойство B (автомобиль, дом и т. Д.) .)В Neo4j, когда уместно использовать отношения?

(EVENT_A) -> [: Влияет] -> (лИЦО {является: Ь})

Теперь суть - Do I:

  1. Put "Люди а" и «б свойство "в EVENT_A? Там будут сотни EVENT_A, в конце концов ... Или я
  2. Сделайте их свойствами по отношению AFFECTS?

Любой из них будет работать.

плюсы/минусы для # 1:

  1. Там должно быть узлом события на событие; нет совместного использования. Это раздражает, потому что у меня есть информация в EVENT_A, которая может быть разделена между всеми узлами EVENT_A; а именно текстовое описание того, что означает событие.
  2. Я могу связать человека A с соответствующим узлом PERSON и даже не иметь его как свойство на EVENT_A.

плюсы/минусы для # 2:

  1. Многие из того же узла EVENT_A может относиться к через: ЗАТРАГИВАЕТ к нескольким лицам.
  2. Атрибуты AFFECTS не могут быть связаны с другими узлами, и, таким образом, я могу потерять некоторую доброту запросов.
  3. Отношения AFFECTS выглядят пустыми, как будто я не использую его.

Итак, что является ориентиром для того, что входит в отношения и какие вещи складываются в узлы?

ответ

1

Лучше иметь разные отношения, а не одно свойство отношений.

(PERSON {name: 'Rebeca'})-[:CAUSED]->(EVENT_A {id: 1})->[:AFFECTS_CAR]->(PERSON {name: 'John'}) 
(PERSON {name: 'Joe'})-[:CAUSED]->(EVENT_A {id: 2})->[:AFFECTS_HOUSE]->(PERSON {name: 'Rebeca'}) 
(PERSON {name: 'Simon'})-[:CAUSED]->(EVENT_A {id: 3})->[:AFFECTS_ETC]->(PERSON {name: 'William'}) 

Также для обмена информацией между узлами вы можете иметь узел для этого.

(EVENT_A {id: 1})-[:HAS]->(DESCRIPTION {id: 1}) 
(EVENT_A {id: 2})-[:HAS]->(DESCRIPTION {id: 1}) 
(EVENT_A {id: 3})-[:HAS]->(DESCRIPTION {id: 1}) 
Смежные вопросы