0

OrientDB のデータをモデル化しようとしています。私はグラフデータベースが初めてです。モデリング中に疑問が生じました (RDBMS から GraphData へのパラダイム変更)。
グラフ データベース (OrientDB) で 3 次 (3 頂点間、つまり 3 方向) の関係をどのようにモデル化しますか? 以下に例を示します。

  1. 顧客 A が顧客 B を銀行 C に紹介します。
  2. 従業員 A は、D 社の従業員 B と従業員 C を紹介しました。
  3. 悪魔Aが友人Bを友人Cに紹介します。
  4. 人物 A は、住宅ローン会社 C の人物 B のローン口座の付与者です。
  5. Person A & B は、エージェント C から保険会社「MetLife」のポリシー タイプ「Life-Insurance」を購入しました。

現在、私は(導入プロセスのような)間の頂点と関連するすべての頂点へのエッジを使用しています

(「顧客 A」と「紹介プロセス」の間の「IntroducedBy」エッジ、「顧客 B」と「紹介プロセス」の間の「IntroducedTo」エッジ、および「銀行 C」と「紹介プロセス」の間の「IntroducedFor」エッジ')。

それは正しいですか、それとも他のオプションはありますか?

列挙値を表す方法は? たとえば、Customer-account-type などです。現在、AccountType のクラスを作成し、固定数の頂点 (Enum 値と同じ) を持ち、Account から AccountType へのリンクを作成しています。グラフデータベースで列挙をモデル化するためのより良いオプションはありますか?

前もって感謝します。

4

2 に答える 2

1

あなたが参照しているものはハイパーグラフと呼ばれます

市場に出回っているすべての主要なグラフ データベース (OrientDB を含む) はハイパーグラフ機能を実装していないため、その間に頂点を使用する必要があります。

列挙については、あなたのアプローチは正しいかもしれませんが、すぐにスーパーノード (多くの接続を持つ頂点) になってしまいます。これはあなたが望むものではありません。

ほとんどの場合、列挙値を表現するために本格的な頂点は必要なく、通常は文字列 (または数値) で十分です。OrientDB では、プロパティを制限された値のセットに制限するために、スキーマで検証規則 (正規表現など) を定義できます。http://orientdb.com/docs/2.2.x/SQL-Alter- を参照してください。プロパティ.html

于 2017-11-20T07:38:07.520 に答える