多个顶点之间的OrientDb边

OrientDb edge between multiple vertex

我正在尝试为 OrientDB 建模数据。我是图形数据库的新手。我在建模过程中遇到了疑问(从 RDBMS 到 GraphData 的范例更改)。
如何在图形数据库(OrientDB)中建模三级(3 向,即 3 顶点之间)关系?举例如下:

  1. Customer A introduces Customer B to Bank C.
  2. Employee A has referred Employee B and Employee C in Company D.
  3. Fiend A introduces Friend B to friend C.
  4. Person A is Granter of the Loan account of Person B in Mortgage company C.
  5. Person A & B has purchased policy type 'Life-Insurance' of Insurance Company 'MetLife' from Agent C.

目前,我正在使用介于两者之间的顶点(如 Introduction-Process)和所有相关顶点的边

('IntroducedBy'-edge between 'Customer A' and 'Inroduction-Process'; 'IntroducedTo'-edge between 'Customer B' and 'Inroduction-Process' and 'IntroducedFor'-edge between 'Bank C' and 'Inroduction-Process').

是否正确或有其他选择?

如何表示一个枚举值?例如客户帐户类型。 目前,我已经创建了一个 class 的 AccountType 并具有固定数量的顶点(与枚举值相同)并创建了一个从 Account 到 AccountType 的 link。在图形数据库中对枚举进行建模是否有更好的选择?

提前致谢。

你指的是Hypergraph

市场上所有主要的图数据库(包括OrientDB)都没有实现超图功能,所以你必须在两者之间使用一个顶点,就像你现在做的那样。

对于枚举,你的方法可能是正确的,但你很快就会得到超节点(有很多连接的顶点),这不是你想要的。

在大多数情况下,您不需要完整的顶点来表示和枚举值,一个字符串(或数字)通常就足够了。在 OrientDB 中,要将 属性 限制为一组有限的值,您可以在模式中定义验证规则(例如正则表达式),请参阅 http://orientdb.com/docs/2.2.x/SQL-Alter-Property.html

您不能使用 LINKSET 数据类型来代替创建这些边吗?这将帮助您存储所需的参考,而不会创建额外的边缘。

我是 OrientDB 的新手,可能是错误的,但我 运行 进入了@Luigi 提到的超级节点问题,并使用 LINKSET 解决了它。

在我的例子中,它是一个医疗数据库,其中包含处方和药物以及一些创建超级节点的常用药物。