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

时间:2018-11-06 14:57:22

标签: neo4j

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

示例:

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

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

各个角色具有不同的权限...

我该如何建模? (例如neo4j)

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

提前THX!

1 个答案:

答案 0 :(得分:5)

您需要一些可以在您的国家和角色节点之间进行粘合的东西。 在我的示例中,我将其称为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)