共用方式為


在衍生階層 (Master Data Services) 中顯示多對多關聯性

適用於:SQL Server - 僅限 Windows Azure SQL 受控執行個體

衍生階層 (DH) 顯示一對多關聯性,現今也可以顯示多對多關聯性。

多對多 (M2M) 關聯性

兩個實體之間的多對多 (M2M) 關聯性可能會透過使用第三個實體 (該實體提供兩者間的對應),進而模型化︰

mds_hierarchies_manytomany

在上述範例中, EmployeeTrainingClass 實體具有 M2M 關係,其為對應實體 ClassRegistration所提供。 員工可能會在多個課程中註冊為學生,而且每個課程可能包含多位學生。

您可以建立衍生階層,其可顯示像是依據課程的學生,或反轉關聯性並顯示依據學生分組的課程。

注意

SQL Server 2016 (13.x) 已針對 M2M 關聯性引進衍生階層。 該版本之前的版本無法使用此功能。

首先,請移至 [衍生階層] 管理頁面,並建立新的衍生階層:

mds_hierarchies_add_derived_hierarchy

接著,從底部開始,將層級加入新衍生階層中。 在此範例中,我們想要顯示依課程分組的學生 (員工)。 因此, Employee 實體是階層的分葉層級,且為第一個加入的項目︰

mds_hierarchies_edit_derived_hierarchy_one

在上面的螢幕擷取畫面中,注意 Employee 實體作為中間唯一的層級顯示在 [目前層級] 之下。 右邊的衍生階層 [預覽] 只會顯示 Employee 實體的所有成員清單。 左邊的 [可用層級] 區段會顯示哪些層級可能會新增至目前最上層的上方 (Employee)。 大多數為 Employee 實體上以網域為基礎的屬性 (DBA),包括 Department DBA。

自 SQL Server 開始,有新類型的層級可將模型 M2M 關聯性模型化,例如︰Class (透過 ClassRegistration.Student 對應)。 層級名稱會比其他項目具備更多詳細資訊,以反映所需的額外資訊,進而明確地描述對應的關聯性。 將此層級拖放至 [目前層級] 區段中的 Employee 層級︰

mds_hierarchies_edit_derived_hierarchy_two

現在預覽會顯示依其所註冊的培訓課程所分組的員工。 由於這是 M2M 關聯性,每個子成員皆可以有多個父系。 在上述範例中,員工 6 {Hillman, Reinout N} 在兩堂課程中註冊為學生,分別為 1 {Master Data Services 101}4 {Career-Limiting Moves}

此對應關聯性也可反轉顯示,將課程依據學生分組︰

mds_hierarchies_available_entities_and_hierarchies

同樣地,我們看到子系可出現在多個父系下︰培訓課程 1 {Master Data Services 101} 同時出現在 6 {Hillman, Reinout N}40 {Ford, Jeffrey L}之下。

對應實體 ClassRegistration 的成員不會在衍生階層內的任何位置出現。 其僅用來定義階層中父系和子系成員之間的關聯性。

您可以透過修改對應的實體成員來編輯 M2M 關聯性,方法是執行下列其中一項。 M2M 關聯性在 [衍生階層總管] 頁面中為唯讀。

  • 修改 [實體總管] 頁面中的對應實體成員,方法是使用適用於 Excel 的 Master Data Services 增益集,或使用資料暫存。

  • 拖放 [衍生階層探索] 頁面中父代之間的子節點。

    這個方法會在允許的情況下修改現有的成員,並視需要新增新成員。 不會刪除現有的成員。

    以 ClassRegistration 對應實體為例,將學生移到未使用的節點時,相對應對應實體成員的課程屬性值會變更為 null,且不會刪除該成員。 相反地,將學生從未使用的節點移動至部分課程時,若有現有的對應成員對應到課程為 null 的學生,該成員會進行修改,將課程從 null 變更為新父系。 若找不到任何這類成員,則會新增一個。

    此程序可避免刪除成員,以避免不必要地刪除其他使用者資料;例如,若對應實體除了兩個定義父子式關聯性的屬性以外,還包含其他屬性。 使用者必須明確地直接在對應實體上進行刪除。

新的 M2M 層級可以出現在衍生階層內的任何位置,前提為該位置允許以網域為基礎的屬性 (DBA)。 M2M 層級可以在最上方,如同上述範例。 其可以在 DBA 層級上方及/或下方,包括遞迴層級。 其可以在明確階層 (已過時) 端點層級之下。 多個 M2M 關聯性可以在相同的衍生階層中鏈結在一起。

M2M 層級可能會隱藏起來,就像其他衍生階層層級一樣。

範例模型中的 M2M 關聯性

如需 M2M 關聯性的示範,請檢視 Master Data Services 隨附之 Customer 範例模型中的 Region Climate 衍生階層。

如下圖所示,建立此關聯性模型的層級名稱是 mds_Number1Climate (mapped via RegionClimate.Region)mds_Number2預覽 會顯示依相關聯氣候類型分組的地區。 這是 M2M 關聯性,原因是有與多個氣候 (父系) 相關聯的地區 (子成員)。 例如,mds_Number3APCR {Asia Pacific} 是與 mds_Number4A {Tropical}mds_Number5B {Dry} 相關聯。

mds_M2MRelationship_Example_CustomerModel

如需部署 Customer 範例模型的指示,以及 Master Data Services 隨附的其他範例模型,請參閱部署範例模型和資料

一對多關聯性

DH 的成員可能是許多子成員的父系,但通常不能有一個以上的父代 (對於例外狀況,請參閱 成員安全性)。 例如,假設有兩個實體︰Employee 和 Department,其中每一位員工皆屬於單一部門。 此關聯性是透過加入 Employee 實體進行模型化,其為參考 Department 實體的以網域為基礎的屬性 (DBA)︰

mds_hierarchies_onetomany

這是一對多關聯性,因為每一位員工皆屬於一個部門,但每個部門皆可以有多個員工。 可能會建立衍生階層,其會顯示依部門分組的員工:

mds_hierarchies_dh_screenshot

成員安全性

可讓成員重複的階層 (允許成員有一個以上的父系) 不能用來指派成員安全性權限。 例如:

  • 遞迴衍生階層 (RDH),其未錨點 null 遞迴 (遞迴層級的每個成員皆會出現在 ROOT 與其遞迴父系之下)。

  • 遞迴衍生階層,其具有在遞迴層級之上的層級 (遞迴層級的每個成員皆會出現在非遞迴父系與其遞迴父系之下)。

  • 衍生階層,其具有 M2M 層級 (子系可能對應至多個父系)。

集合

集合和明確階層已被取代。 轉換預存程序 (udpConvertCollectionAndConsolidatedMembersToLeaf) 會將集合成員轉換為分葉成員,並建立多對多衍生階層,以擷取集合成員資格的資訊。

另請參閱

衍生階層 (Master Data Services)