Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
- 外部キー制約 (参照制約 または参照整合性制約)的な。
- 伝播規則の説明
特定操作の1対多の関連付けの関連レコードへの影響を制御
関連付けの例 †
営業案件エンティティ
1対多(多対1) †
- 親子関係
- 1つの主エンティティ(親)
- 複数の関連エンティティ(子)
- 親の外部キーが子のプライマリー キーを指している。
※ ここでの関連エンティティは、1対多の多側を表現するエンティティの意味。
”多対多を表現するエンティティのことではないので注意する。”
1対多の多側を表現するエンティティには交差エンティティという用語を使用する。
作成 †
- フィールドの作成時、関連エンティティ(子)側で検索のデータ型を指定する。
- 若しくは、エンティティの[関連付けの種類]を選択し、メニュー バーにある[新規]をクリックする(推奨)。
- 内部的には、主キー(GUID)に対する外部キー(GUID)を設定している。
表示 †
- レコード
レコードを開くとナビゲーション バーからエンティティを辿ることができる。
- ソリューション エクスプローラー
反転エントリを表示、どちらからも関連付けの作成・変更が可能。
- 親 ---> 子
主エンティティから ---> 1対多
- 子 ---> 親
関連エンティティから ---> 多対1
多対多 †
- 2つのエンティティをリンクする
関連レコードを格納する中間テーブルは以下のように呼ばれる。
- 交差エンティティ
- リンク エンティティ
- リンク テーブル
ここでは、交差エンティティを使用する。
エンティティA <-> 交差エンティティ <-> エンティティB
作成 †
システム エンティティ、カスタム エンティティを使用する方法がある。
ネイティブ †
- 概要
プラットフォームの機能で交差エンティティを作成する。
- 特徴
平たく言って、プラットフォームから見てエンティティではないので、
- 交差エンティティに直接クエリを実行できない。
- 交差エンティティの関連レコードを追加するには関連ビューを使用する。
- 交差エンティティのカスタマイズは不可能(e.g.:列の追加は不可能)。
- 交差エンティティをワークフロー ルールに含めることはできない。
- 交差エンティティへの特権はない(関連エンティティへの追加・追加先特権で制御)。
- 関連エンティティ、交差エンティティ共に、常に監査が有効になっている。
手動 †
- 概要
システム設計の一部として、交差エンティティを作成する。
- この交差エンティティ=1対多の関連付けをする
2つの検索フィールドを持つカスタム エンティティ。
- 交差エンティティにカスタム フィールドを追加する必要がある場合には、こちらの方法を使用する。
- 特徴
平たく言って、通常のカスタム エンティティなので、
- 交差エンティティに直接クエリを実行できる。
- 交差エンティティをワークフロー ルールに含めることができる。
組込み機能 †
その他の組込み機能について。
- キューアイテム
キューにリンクされているレコードの詳細を格納する。
- フォロー
ユーザが関心を持っているレコードを示する。
表示 †
ネイティブ †
- 関連ビューに交差エンティティは表示されない(エンティティA <-> エンティティBと表示される)
手動 †
- 関連ビュー(多対多の関連)が表示されない(エンティティA <-> エンティティBと表示されない)
- 通常のエンティティのビューで表示。
- 必要に応じてカスタムの関連ビューを作成する。
作成方法 †
1対多 †
手順
- ソリューションのエンティティ一覧を展開
- エンティティ(関連エンティティ側)を展開
- エンティティの[関連付けの種類]で1対多を選択
- メニュー バーにある[新規]をクリック
- 以下の関連付けのプロパティを定義する。
※フィールドの作成時、関連エンティティ(子)側で検索のデータ型を指定しても良い。
(その場合、以下プロパティには既定の設定が適用される)。
関連付けのプロパティ †
/ | プロパティ | 説明 |
1 | 主エンティティ | 1対多の1の方のエンティティ |
2 | 関連エンティティ | 1対多の多の方のエンティティ(変更不可能) |
3 | 名前 | 関連付けの名前(既定は接頭辞_主エンティティ_関連エンティティ) |
4 | 検索可能 | 高度な検索ツールで関連レコードをドリルダウンできる |
検索フィールド †
関連付けによって作成される、関連エンティティの検索フィールドのプロパティ
/ | プロパティ | 説明 |
1 | 表示名 | 検索フィールドの説明 |
2 | 名前 | 検索フィールドのスキーマ名(既定値は表示名+Id) |
3 | フィールド要件 | 主エンティティが必須の場合、検索フィールドに[必須項目]を指定する。 |
4 | 説明 | 検索フィールドの説明 |
主エンティティのナビゲーション バー項目 †
主エンティティのレコードのナビゲーション バーに表示される項目
/ | プロパティ | 説明 |
1 | 表示オプション | - [複数形の名前を使用する]:1対多なので関連エンティティの複数形の名前が使用される。 - [カスタム ラベルを使用する] ---> [カスタム ラベル]:カスタム ラベルを入力する。 - [表示しない]:ナビゲーション バーに関連エンティティを表示しない。 |
2 | カスタム ラベル | 上記参照。よりコンテキストに特化した名称をナビゲーション リンクに付与できる。 |
3 | 表示領域 | ナビゲーション バーの表示セクションの選択(詳しくは「CRM フォームのカスタマイズ」を参照) |
4 | 表示順序 | 表示セクションに表示するための順序 |
多対多 †
手順
- ソリューションのエンティティ一覧を展開
- エンティティの[関連付けの種類]で多対多を選択
- メニュー バーにある[新規]をクリック
- 以下の関連付けのプロパティを定義する。
現在のエンティティとその他のエンティティ †
多対多の場合、[現在のエンティティ]と[その他のエンティティ]を設定する。
プロパティは
を除いて「関連付けのプロパティ」と同じ。
検索可能は、交差エンティティではなく、多対多の関連の反対側のエンティティに対して。
(1対多)関連付けの動作 †
1対多の関連付けにおいて、
主レコードに対する「操作」がどう関連レコードに伝播するか?的な話。
伝播する動作 †
/ | アクション | 説明 |
1 | 割り当て | 主レコードが割り当てられる場合 |
2 | 共有 | 主レコードが共有される場合 |
3 | 共有の解除 | 主レコードの共有が解除される場合 |
4 | リペアレント | 関連レコードの初回関連付けか、関連付けの変更 |
5 | 統合 | 主レコードが別レコードに統合される場合 |
6 | 削除 | 主レコードが削除される場合 |
動作の伝播ルール †
割り当て、共有、共有解除、リペアレント †
割り当て、共有、共有解除、リペアレントの操作には、以下のルールを使用可能。
/ | ルール | 関連付けの関連エンティティに対する結果 |
1 | すべての(種類の)レコードに伝播 | すべての関連レコードに伝播 |
2 | アクティブ レコードにのみ伝播 | 状態がアクティブな関連レコードに伝播 |
3 | 同一所有者レコードにのみ伝播 | 同一所有者の関連レコードに対して伝播 |
4 | 伝播しない | 関連レコードは影響を受けない |
同一所有者の所有者とは、「レコードベースのセキュリティ」にあるようにレコードの所有者(割当した場合は、再割当て前)を指す。
削除 †
削除の操作には、以下のルールを使用可能。
/ | ルール | 関連付けの関連エンティティに対する結果 |
1 | すべての(種類の関連)レコードに伝播 | すべての関連レコードを削除(ON DELETE CASCADE的な) |
2 | 関連付けの解除 | 検索フィールドをクリアし関連レコードを残す(ON DELETE SET NULL的な)。 |
3 | 制限する | 関連レコードがある場合は主レコードを削除できない(ON DELETE NO ACTION的な)。 |
- 連鎖参照整合性制約の
[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ]的な。
動作に関わる関連付けの種類 †
上位下位の関連付け †
1つのエンティティに1つだけ定義可能。
- 主レコードの操作が関連レコードにも伝播する。
- 主レコードを割り当てると、関連レコードも割当てられる。
参照の関連付け †
その他の関係付けは、すべて参照の関連付け。
- 主レコードの操作が関連レコードに伝播しない。
- 主レコードを割り当てても、関連レコードは割り当てられない。
テンプレート †
動作に関わる関連付けの種類に対応した
定義済みの伝播ルールのテンプレートが用意されている。
/ | 動作の種類 | 伝播規則 |
1 | 上位下位 | すべてのルール:すべてのレコードに伝播 |
2 | 参照 | 主なルール:伝播しない、削除:関連付けの削除 |
3 | 参照+削除制限 | 主なルール:伝播しない、削除:削除制限 |
4 | 構成可能な伝播 | すべてのルール:既定ではすべてのレコードに伝播(カスタマイズ可能) |
操作の伝播の考慮点 †
割り当て †
- 関連コードまで割り当て操作が伝播する場合、それがビジネス・プロセス的に適正か考慮する。
- 旧レコード(履歴)までに操作が伝播される。
- ビジネス プロセスの異なるドメイン(営業、サポート、マーケティング)のレコード伝播する。
- 必要に応じて、動作の伝播ルールをカスタマイズする。
- システム エンティティでは、上位下位のテンプレートが適用されている。
- 取引先企業
- 取引先担当者
- サポート案件
- 営業案件
- すべての活動
- カスタム エンティティでは、伝播規則を個別に確認する。
共有と共有解除 †
- また、大量の共有はパフォーマンスに悪影響がある。
- スキーマの設計を考慮すると、共有はDBMSの一つのテーブルで管理される。
- セキュリティ ロールの構成によってもパフォーマンスの影響を受ける。
- 不必要な共有を行わない(行わせない)
- アクセス レベルがグローバルな特権
- 構成可能な伝播テンプレートを使用し、上位下位の1対多の関連付けから共有伝播規則を削除する。
- アクティブ レコードにのみ伝播、同一所有者レコードにのみ伝播の伝播ルールを使用する。
- 反対の操作が可能の様に共有の伝播を解除しても共有の解除の伝播は解除しない(推奨)。
リペアレント †
- 主レコードの所有者に関連レコードのアクセス権が与えられる(暗黙の共有)。
- 主レコードより関連レコードの方が気密性が高い場合はリペアレントの伝播は適用できない。
- エンティティに対する特権以上のアクセス権が与えられることはない。
- 以下のケースで影響を受けない。
- リペアレントの伝播は、割り当てでトリガされない。
- 明示的な共有と暗黙の共有は、同じユーザ&アクセス権でも別々に管理されるため、明示的な共有の影響を受けない。
- 推奨
- すべてのレコードに伝播(便利)
- すべてのレコードに伝播しない(安全)
- 特定のエンティティを保護する場合、
- リペアレントの伝播に注意する。
- 上位下位のテンプレートを使用した関連付けも確認する。
- アクティブ レコードにのみ伝播、同一所有者レコードにのみ伝播の伝播ルールが使用されることは少ない。
削除 †