图数据库建模混乱

Graph Database Modelling Confusion

我正在尝试学习 neo4j 并且来自关系数据库,我对以下建模的正确方法有点困惑:

Account        Application    ApplicationModule
 acct_id        app_id         app_mod_id
 name           name           app_id
                               name

AccountModuleAccess
 id
 acct_id
 app_mod_id
 can_read
 can_delete
 can_update
 can_insert

可以看出如下关系

Application->ApplicationModule->AccountModuleAccess

Account->AccountModuleAccess

但让我感到困惑的是 AccountModuleAccess 与 Account 和 AccountModule 的关系

我认为这有助于考虑在您的模型中什么应该是关系,什么应该是节点(大多数属性都相当清楚)。

请注意,AccountModuleAccess 实际上是关于帐户如何与帐户模块相关的,其中大部分可能可以建模为关系。

你也可以去掉外键的概念,使用关系。

考虑这个模型:

(:Account)-[:CAN_READ|CAN_DELETE|CAN_UPDATE|CAN_INSERT]->(:ApplicationModule)
(:ApplicationModule)-[:MODULE_OF]->(:Application)

为了节省空间,我将所有关系放在一起,但每个关系都是 :Account 和 :ApplicationModule 之间的独立关系。