如何为一个人提供的服务进行数据模型认可,Graph Data建模

问题描述 投票:0回答:2

嗨,我是图形数据库建模的新手,并对表达一个人提供的服务的认可表示怀疑。用例如下。 PersonA给予PersonB提供的服务认可。

关键是如果我是赞助的接受者,我想知道谁支持我。我已经提出了几个关于我如何能够做到这一点的情景,但由于我缺乏经验,我怀疑什么是最好的方法。

场景1。

认可直接表示为关系,服务在认可下属于财产所以它看起来像:

PersonA-------ENDORSE{service}--->PersonB 

情景2

我为一个名为Service的实体建模。问题是,当我将“ENDORSE”关系用于服务时,我会忘记关于我支持谁的信息。因此,我必须在关系中保留一份关于我支持谁的财产。然后,PersonB将获得AQUIRE对服务的认可,但他不知道谁有实际的支持。所以.....它看起来像这样:

PERSONA----ENDORSE{personB}--->Service------ENDORSMENT{personA}--->PERSONB

这有意义吗?

场景3:

我将第二个关系“ENDORSEMENT”规范化并将该人排除为属性,但我需要查询所有人以找出他们认可的人。

你会如何模仿这种关系?

graph neo4j model data-modeling graph-databases
2个回答
2
投票

验证图数据库数据模型的两个重要原则:

  • 如果一个实体或事实可以被多次使用,那么它应该被存储为节点
  • 如果两个节点的关系需要存储节点标识符,则必须将此关系转换为节点

所以@Raj指出了正确的方法,在这种情况下,模型可能如下所示:

enter image description here

我建议你读这个:


1
投票

第二种方法看起来不错,您不必在关系上添加这些属性。

有可能让A人认可B人进行服务S.唯一的问题是任何服务S都会有多个节点。如果这是不可接受的。

您可以使用Endorse节点E替换第二种方法中的服务节点,并将此E连接到服务节点S.因此,将有四种类型的节点。

编辑:

添加图像以便澄清。根据需要重命名REL1和REL2。 @Stdob为这些关系提出了一些好名声。 enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.