次の方法で共有


派生階層 で多対多リレーションシップを表示する(マスター データ サービス)

Applies to: SQL Server - Windows only Azure SQL Managed Instance

派生階層 (DH) には 1 対多のリレーションシップが表示されますが、多対多のリレーションシップも表示できるようになります。

多対多 (M2M) リレーションシップ

2 つのエンティティ間の多対多 (M2M) リレーションシップは、両者間のマッピングを提供する第 3 のエンティティを使用してモデリングできます。

mds_hierarchies_manytomany

上の例では、マッピング エンティティ ClassRegistration に指定された、 Employee エンティティと TrainingClassエンティティ間に M2M リレーションシップがあります。 1 人の従業員は、複数クラスの受講者として登録できます。また、各クラスには、複数の受講者を含めることができます。

例えば受講者をクラス別に表示する派生階層を作成したり、リレーションシップを反転して、受講者別にグループ化されたクラスを表示したりすることができます。

Note

SQL Server 2016 (13.x) では、M2M リレーションシップの派生階層が導入されました。 この機能は、このバージョンより前では使用できませんでした。

最初に、派生階層の管理ページを開き、新しい派生階層を作成します。

mds_hierarchies_add_derived_hierarchy

次に、新しい派生階層に下から順にレベルを追加します。 この例では、クラス別にグループ化して受講者 (従業員) を表示するのが目的です。 そのため、 Employee エンティティが階層のリーフ レベルで、最初に追加されます。

mds_hierarchies_edit_derived_hierarchy_one

上のスクリーンショットで、 Employee エンティティが唯一のレベルとして [現在のレベル] の中間に表示される点に注目してください。 右側の派生階層の [プレビュー] には、Employee エンティティのすべてのメンバーの一覧が表示されます。 左側の [使用できるレベル] セクションには、現在の上位レベル (Employee) に追加できるレベルが表示されます。 そのほとんどは、 Department DBA を含む、 Employee エンティティのドメインベースの属性 (DBA) です。

SQL Server 以降には、例えば Class (ClassRegistration.Student でマッピング) のような、M2M リレーションシップをモデリングする新しい種類のレベルがあります。 レベル名は他の情報よりも詳細で、マッピング リレーションシップをあいまいに説明するために必要な追加情報を反映しています。 このレベルを [現在のレベル] セクションの [Employee] レベルにドロップ ダウンします。

mds_hierarchies_edit_derived_hierarchy_two

これで、プレビューには、登録したトレーニング クラスごとにグループ化された従業員が表示されるようになります。 これは M2M リレーションシップなので、各子メンバーは複数の親を持つ可能性があります。 上の例では、従業員 6 {Hillman, Reinout N} は 2 つのクラス 1 {Master Data Services 101} と 4 {Career-Limiting Moves}で受講者として登録されています。

このマッピングのリレーションシップは、反転させて、受講者別にクラスをグループ化して表示することもできます。

mds_hierarchies_available_entities_and_hierarchies

ここでも、1 つの子を複数の親に表示できる方法について説明します。トレーニング クラス 1 {Master Data Services 101} は、 6 {Hillman, Reinout N}40 {Ford, Jeffrey L}の両方に表示されます。

マッピング エンティティのメンバー ClassRegistration は、派生階層内のどこにも現れません。 階層内の親と子メンバー間のリレーションシップを定義するためだけに使用されることはありません。

マッピング エンティティ メンバーを変更し、次のいずれかを実行して M2M リレーションシップを編集できます。 M2M リレーションシップは、 [派生階層エクスプローラー] ページで読み取り専用です。

  • Excel 用のマスター データ サービス アドイン、またはデータ ステージングを使用して、 [エンティティ エクスプローラー] ページでマッピング エンティティ メンバーを変更します。

  • [派生階層エクスプローラー]ページで、親間で子ノードをドロップ ダウンします。

    このメソッドは、可能であれば既存のメンバーを変更し、必要に応じて新しいメンバーを追加します。 既存のメンバーは削除されません。

    たとえば、ClassRegistration マッピング エンティティがあり、受講者を未使用のノードに移動すると、対応するマッピング エンティティ メンバーのクラス属性値は null に変更されますが、メンバーは削除されません。 反対に、未使用のノードから受講者をいずれかのクラスに移動するときに、クラスが null の場合に受講者に対応する既存のマッピング メンバーがあると、そのメンバーは、null から新しい親に変更することで修正します。 このようなメンバーがない場合は、追加します。

    このプロセスでは、メンバーの削除を回避することで、他のユーザー データの不要な削除を回避します。たとえば、マッピング エンティティに、親子のリレーションシップを定義する 2 つの属性を除く他の属性が含まれている場合などです。 ユーザーは、マッピング エンティティで直接、明示的に削除を実行する必要があります。

新しい M2M レベルは、ドメインベースの属性 (DBA) レベルが許可されている派生階層内であれば、どの階層にも現れる可能性があります。 M2M レベルは、上の例のように最上位にすることができます。 再帰レベルを含め、DBA レベルより上位または下位の場合があります。 明示的階層 (非推奨) のキャップ レベルより下位の場合があります。 複数の M2M リレーションシップは、同じ派生階層内で連結することができます。

M2M レベルは、他の派生階層レベルと同様に非表示にすることができます。

サンプル モデル内の M2M リレーションシップ

M2M リレーションシップのデモを見るには、マスター データ サービスと共に含まれているサンプル モデル Customer 内の 派生階層 Region Climate を表示させます。

次の画像に示すように、このリレーションシップをモデル化したレベル名は mds_Number1Climate (RegionClimate.Region を介してマッピング) です。 mds_Number2Preview には、地域と関連付けられている気候の種類によって地域がグループ化されて表示されます。 複数の気候 (親) に関連付けられた地域 (子メンバー) が存在するため、これは M2M リレーションシップです。 例えば、mds_Number3APCR {Asia Pacific}mds_Number4A {Tropical}mds_Number5B {Dry} に関連付けられています。

mds_M2MRelationship_Example_CustomerModel

サンプル モデル Customer や、マスター データ サービスに付属する他のサンプル モデルをデプロイする手順については、「サンプル モデルとデータのデプロイ」を参照してください。

1 対多のリレーションシップ

DH のメンバーは、多くの子メンバーの親になることができますが、一般的に、複数の親を持つことはできません (例外については、「 メンバーのセキュリティ」を参照してください)。 たとえば、Employee と Department という 2 つのエンティティがあるとします。各従業員 (employee) は 1 つの部門 (department) に属します。 このリレーションシップは、Employee エンティティに、Department エンティティを参照するドメインベースの属性 (DBA) を追加してモデリングします。

mds_hierarchies_onetomany

各従業員は 1 つの部門にのみ属し、各部門には複数の従業員が属する可能性があるので、これは 1 対多のリレーションシップです。 派生階層を作成して、部署別にグループ化された従業員を表示することができます。

mds_hierarchies_dh_screenshot

メンバーのセキュリティ

メンバーの重複を許可する (1 人のメンバーが複数の親を持つことを許可する) 階層を使用して、メンバーのセキュリティ アクセス許可を割り当てることはできません。 次に例を示します。

  • null 再帰をアンカーしない再帰的派生階層 (RDH) (再帰レベルの各メンバーは、ROOT と再帰的な親の両方の下に出現します)。

  • 再帰レベルより上位のレベルの再帰的派生階層 (再帰レベルの各メンバーは、再帰的ではない親とその再帰的な親の両方の下に出現します)。

  • M2M レベルがある派生階層 (1 つの子を多数の親にマッピングできます)。

コレクション

コレクションと明示的階層は非推奨とされます。 変換ストアド プロシージャ (udpConvertCollectionAndConsolidatedMembersToLeaf) は、コレクション メンバーをリーフ メンバーに変換し、多対多の派生階層を作成し、コレクション メンバー情報をキャプチャします。

参照

派生階層 (マスター データ サービス)