Как моделировать отношения между отношениями в графовой базе данных? - PullRequest
0 голосов
/ 06 ноября 2018

Кажется, это зашитый вопрос - и, возможно, это так.

Пример:

У меня есть пользователи, страны и роли. Пользователи имеют одну или несколько ролей для одной или нескольких стран.

Sebastian -> Germany -> TaskVerifier
                     -> QuestionApprover
          -> Austria -> TaskVerifier
                     -> Worker
                     -> Whatever

Соответствующие роли имеют разные разрешения ...

Как мне это смоделировать? (Например в neo4j)

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

THX заранее!

1 Ответ

0 голосов
/ 06 ноября 2018

Вам нужно что-то, что может связать вашу страну с ролями. В моем примере я назвал это Permission.

Вот небольшой зашифрованный скрипт для создания фиктивного графа:

// Country
CREATE (c1:Country { name:'Germany'}
CREATE (c2:Country { name:'Austria'}

// Roles
CREATE (r1:Role { name:'TaskVerifier'})
CREATE (r2:Role { name:'QuestionApprover'})
CREATE (r3:Role { name:'Worker'})
CREATE (r4:Role { name:'Whatever'})

// Users
CREATE (u:User{name:'Sebastien'})

CREATE (p1:Permission)
CREATE (u)-[:HAS_PERMISSION]->(p1)
CREATE (r1)<-[:HAS_ROLE]-(p1)-[:FOR_CONTRY]->(c1)

CREATE (p2:Permission)
CREATE (u)-[:HAS_PERMISSION]->(p2)
CREATE (r2)<-[:HAS_ROLE]-(p2)-[:FOR_CONTRY]->(c1)

CREATE (p3:Permission)
CREATE (u)-[:HAS_PERMISSION]->(p3)
CREATE (r1)<-[:HAS_ROLE]-(p3)-[:FOR_CONTRY]->(c2)

CREATE (p4:Permission)
CREATE (u)-[:HAS_PERMISSION]->(p3)
CREATE (r3)<-[:HAS_ROLE]-(p4)-[:FOR_CONTRY]->(c2)

CREATE (p4:Permission)
CREATE (u)-[:HAS_PERMISSION]->(p4)
CREATE (r4)<-[:HAS_ROLE]-(p4)-[:FOR_CONTRY]->(c2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...