如何在图数据库中建立关系模型?

eve*_*zon 1 neo4j

这似乎是一个有线的问题 - 也许是.

例:

我有用户,国家和角色.用户在一个或多个国家/地区担任一个或多个角色.

Sebastian -> Germany -> TaskVerifier
                     -> QuestionApprover
          -> Austria -> TaskVerifier
                     -> Worker
                     -> Whatever
Run Code Online (Sandbox Code Playgroud)

各种角色有不同的权限......

我该如何建模呢?(例如在neo4j中)

使用country属性设置用户和角色之间的关系似乎不是解决方案,因为我还需要其他关系中的国家/地区节点.

THX提前!

log*_*ima 5

您需要能够在国家/地区和角色节点之间粘合的东西.在我的例子中,我打电话给它Permission.

这是一个用于创建虚拟图形的小型cypher脚本:

// 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)
Run Code Online (Sandbox Code Playgroud)