2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Common Data Service のリレーションシップとつながりロールの違い

Posted at

Common Data Service (CDS) ではエンティティ間の関係として、リレーションシップ(関連)とつながりロール(接続)を使えます。この記事ではその違いを紹介します。

リレーションシップ (関連)

リレーションシップを使うことで、エンティティ間に 1:N (一対多)、N:N (多対多) の関連を作成できます。伝播やマッピングを作成できます。

1:N (一対多) の関連

親レコードから見て複数の子レコードを関連として持つことができます。フォーム上では子エンティティはサブグリッドで表現され、紐づく子エンティティのレコードを複数表示できます。

[取引先企業と活動の例]
image.png

N:1 (多対一) の関連

子エンティティから見た場合に親エンティティは特定レコードとなります。フォーム上では親エンティティは参照(ルックアップ)として表現されます。

[取引先企業と取引先担当者(取引先責任者)の例]
image.png

多対多の関連

医師と患者のようにお互いに複数のレコードに関連する場合、多対多の関連が利用でき、フォーム上ではどちらのエンティティからもサブグリッドとして表現されます。

伝播

親レコードに対する操作が子レコードにどう影響するかを設定できます。
例えば親レコードが削除された場合の動作として以下のものを選択できます。

  • カスケード: 子レコードも削除する
  • リンクの削除: 子レコードは削除せず、参照をクリアする
  • 制限: 子レコードがある場合、親レコードの削除を許可しない

削除以外にも、上図にある通り複数の操作に対する伝播を管理できます。

マッピング

現時点ではクラシックエディターのみですが、N:1 の関連でマッピングを追加できます。これは親レコードから子レコードを作成した場合に、フィールドの値をコピーする設定です。
image.png

つながりロール (接続)

リレーションシップと異なり、つながりロールはレコード間の関係を表現します。これにより、より柔軟にレコード間の性質をとらえることができます。

例えば以下のようなパターンが考えられます。

  • 以前勤めていた会社という繋がり
  • ある会社の CEO であるという繋がり
  • 親戚であるという繋がり
  • 阪神ファンという繋がり
    image.png

リレーションシップとつながりロールの使い分け

リレーションシップはそのエンティティのすべてのレコードに設定すべき値であり、かつ伝播などの制約をつけたい場合に有効ですが、情報として残しておきたい場合はつながりロールを使います。

まとめ

関連はよりシステマチックに、つながりロールはより柔軟にかつカジュアルに使える機能です。色々試してみてくください。

参照

エンティティの関連付けの概要
つながりロールの構成

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?