这似乎是一个有线问题-也许是。
示例:
我有用户,国家和角色。 用户在一个或多个国家/地区担任一种或多种角色。
Sebastian -> Germany -> TaskVerifier
-> QuestionApprover
-> Austria -> TaskVerifier
-> Worker
-> Whatever
各个角色具有不同的权限...
我该如何建模? (例如neo4j)
设置具有国家属性的用户和角色之间的关系似乎不是解决方案,因为我还需要其他关系中的国家节点。
提前THX!
答案 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)