Mostrare le relazioni molti-a-molti nelle gerarchie derivate (Master Data Services)Show Many-to-Many Relationships in Derived Hierarchies (Master Data Services)

Le gerarchie derivate (DH), che già mostravano le relazioni uno-a-molti, ora possono mostrare anche le relazioni molti-a-molti.Derived Hierarchies (DH) display one-to-many relationships, and can now also show many-to-many relationships.

Relazioni molti-a-molti (M2M)Many-to-Many (M2M) Relationships

Una relazione molti-a-molti (M2M) tra due entità può essere modellata usando una terza entità che stabilisce un mapping tra esse.A many-to-many (M2M) relationship between two entities may be modeled through the use of a third entity that provides a mapping between them:

mds_hierarchies_manytomanymds_hierarchies_manytomany

Nell'esempio precedente c'è una relazione M2M fra le entità Dipendente e CorsoFormazione , fornita dall'entità di mapping RegistrazioneCorso.In the above example, there is an M2M relationship between the Employee and TrainingClass entities, provided by the mapping entity ClassRegistration. Un dipendente può essere registrato come studente in più corsi e ogni corso può includere più studenti.An employee may be registered as a student in multiple classes, and each class may contain multiple students.

In precedenza le gerarchie derivate non potevano modellare relazioni M2M.Previously, Derived Hierarchies could not model M2M relationships. A partire da SQL Server 2017SQL Server 2017è ora possibile creare una gerarchia derivata che mostra, ad esempio, gli studenti per corso o invertire la relazione e mostrare i corsi raggruppati per studente.Beginning with SQL Server 2017SQL Server 2017, you can now create a Derived Hierarchy that displays, for example, students by class, or invert the relationship and show classes grouped by student.

Passare innanzitutto alla pagina di gestione delle gerarchie derivate e creare una nuova gerarchia derivata:First, go to the Derived Hierarchy management page and create a new Derived Hierarchy:

mds_hierarchies_add_derived_hierarchymds_hierarchies_add_derived_hierarchy

Quindi aggiungere i livelli alla nuova gerarchia derivata partendo dal fondo e procedendo verso l'alto.Next, add levels to the new Derived Hierarchy, starting from the bottom up. In questo esempio si desidera mostrare gli studenti (dipendenti) raggruppati per corso.In this example, we wish to show students (employees) grouped by class. L'entità Dipendente è perciò il livello foglia della gerarchia e viene aggiunta per prima:The Employee entity is therefore the leaf level of the hierarchy, and is added first:

mds_hierarchies_edit_derived_hierarchy_onemds_hierarchies_edit_derived_hierarchy_one

Nella schermata precedente si noti che l'entità Dipendente appare sotto Livelli correnti al centro come unico livello.In the above screenshot, note that the Employee entity appears under Current Levels in the middle as the only level. La gerarchia derivata Anteprima a destra mostra semplicemente un elenco di tutti i membri dell'entità Dipendente .The Derived Hierarchy Preview on the right simply shows a list of all members of the Employee entity. La sezione Livelli disponibili a sinistra mostra i livelli che possono essere aggiunti sopra il livello corrente (Dipendente).The Available Levels section on the left shows what levels may be added on top of the current top level (Employee). Molti di questi sono attributi basati su dominio (DBA) per l'entità Dipendente , incluso il DBA Reparto .Most of these are domain-based attributes (DBAs) on the Employee entity, including the Department DBA.

A partire da SQL Server 2017SQL Server 2017, esiste un nuovo tipo di livello che modella le relazioni M2M, ad esempio: Corso (mappato mediante RegistrazioneCorso.Studente).Beginning with SQL Server 2017SQL Server 2017, there is a new type of level that models M2M relationships, for example: Class (mapped via ClassRegistration.Student). Il nome del livello è più dettagliato rispetto degli altri, in modo da riflettere le informazioni aggiuntive necessarie per descrivere univocamente la relazione di mapping.The level name is more verbose than the others to reflect the extra information needed to unambiguously describe the mapping relationship. Trascinare il livello fino al livello Dipendente nella sezione Livelli correnti :Drag and drop this level to the Employee level in the Current Levels section:

mds_hierarchies_edit_derived_hierarchy_twomds_hierarchies_edit_derived_hierarchy_two

A questo punto l'anteprima mostra i dipendenti raggruppati in base ai corsi di formazione per i quali sono registrati.Now the preview shows employees grouped by the training classes for which they are registered. Poiché si tratta di una relazione M2M, ogni membro figlio può avere più elementi padre.Since this is a M2M relationship, each child member can have multiple parents. Nell'esempio precedente il dipendente 6 {Hillman, Reinout N} è registrato come studente in due corsi, 1 {Master Data Services 101} e 4 {Career-Limiting Moves}.In the above example, employee 6 {Hillman, Reinout N} is registered as a student in two classes, 1 {Master Data Services 101} and 4 {Career-Limiting Moves}.

Questa relazione di mapping può essere visualizzata anche invertita, raggruppando i corsi per studente:This mapping relationship can also be displayed inverted, grouping classes by student:

mds_hierarchies_available_entities_and_hierarchiesmds_hierarchies_available_entities_and_hierarchies

Ancora una volta è possibile notare che un elemento figlio può apparire sotto più elementi padre: corso di formazione 1 {Master Data Services 101} appare sia sotto 6 {Hillman, Reinout N} sia sotto 40 {Ford, Jeffrey L}.Again, we see how a child can appear under more than one parent: training class 1 {Master Data Services 101} appears under both 6 {Hillman, Reinout N} and 40 {Ford, Jeffrey L}.

I membri dell'entità di mapping RegistrazioneCorso non sono mostrati all'interno della gerarchia derivata.The members of the mapping entity ClassRegistration do not appear anywhere within the Derived Hierarchy. Vengono usati semplicemente per definire le relazioni tra i membri padre e figlio nella gerarchia.They are used merely to define the relationships between parent and child members in the hierarchy.

È possibile modificare la relazione M2M cambiando i membri dell'entità di mapping. Procedere in uno dei modi seguenti.You can edit the M2M relationship by modifying the mapping entity members, by doing one of the following. La relazione M2M è di sola lettura nella pagina Esplora gerarchia derivata .The M2M relationship is read-only in the Derived Hierarchy Explorer page.

  • Modificare i membri dell'entità di mapping nella pagina Esplora entità mediante il componente aggiuntivo Master Data Services per Excel o mediante la gestione temporanea dei dati.Modify the mapping entity members in the Entity Explorer page, using the Master Data Services add-in for Excel, or by using data staging.

  • Trascinare i nodi figlio fra gli elementi padre nella pagina Esplora gerarchia derivata.Drag and drop child nodes between parents in the Derived Hierarchy Explorer page.

    Questo metodo consente di modificare i membri esistenti quando possibile e aggiungere nuovi membri quando necessario.This method modifies existing members when possible and adds new members when necessary. I membri esistenti non vengono eliminati.Existing members are not deleted.

    Ad esempio, con l'entità di mapping RegistrazioneCorso, quando si sposta uno studente al nodo inutilizzato, il valore dell'attributo class (corso) del corrispondente membro dell'entità di mapping viene modificato in null e il membro non viene eliminato.For example, with the ClassRegistration mapping entity, when moving a student to the unused node, the class attribute value of the corresponding mapping entity member is changed to null, and the member is not deleted. Al contrario, quando si sposta uno studente dal nodo inutilizzato a uno dei corsi, se in quel corso è presente un membro del mapping esistente corrispondente allo studente per il quale il corso è null, tale membro viene modificato mediante la modifica del corso da null al nuovo elemento padre.Conversely, when moving a student from the unused node to some class, if there exists an existing mapping member corresponding to the student where class is null, that member is modified by changing class from null to the new parent. Se tale membro non è presente, ne viene aggiunto uno.If no such member is found, then one is added.

    Questa procedura evita l'eliminazione dei membri per impedire l'eliminazione indesiderata di altri dati utente, ad esempio se l'entità di mapping contiene altri attributi oltre ai due che definiscono la relazione padre-figlio.This process avoids member deletion to prevent unwanted deletion of other user data, for example if the mapping entity contains other attributes besides the two that define the parent-child relationship. Gli utenti devono eseguire le eliminazioni in modo esplicito direttamente sull'entità di mapping.Users must explicitly do deletions directly on the mapping entity.

    Il nuovo livello M2M può trovarsi in qualsiasi punto all'interno di una gerarchia derivata in cui sia consentito un livello di attributo basato su dominio (DBA).The new M2M level can appear anywhere within a Derived Hierarchy that a domain-based attribute (DBA) level is allowed. Un livello M2M può trovarsi nella parte superiore, come negli esempi precedenti.A M2M level can be at the top, like in the above examples. Può trovarsi sopra e/o sotto un livello DBA, inclusi i livelli ricorsivi.It can be above and/or under a DBA level, including recursive levels. Può trovarsi sotto un livello estremità di una gerarchia esplicita (deprecata).It can be under an Explicit Hierarchy (deprecated) Cap level. Più relazioni M2M possono essere concatenate insieme nella stessa gerarchia derivata.Multiple M2M relationships can be chained together in the same Derived Hierarchy.

    I livelli M2M possono essere nascosti, esattamente come gli altri livelli di una gerarchia derivata.M2M levels may be hidden, just like other Derived Hierarchy levels.

Relazione molti-a-molti (M2M) nel modello di esempioM2M Relationship in Sample Model

Per una dimostrazione di una relazione molti-a-molti, visualizzare la gerarchia derivata Region Climate del modello di esempio Customer incluso in Master Data ServicesMaster Data Services.For a demonstration of an M2M relationship, view the Region Climate derived hierarchy in the Customer sample model that is included with Master Data ServicesMaster Data Services.

Come mostra l'immagine seguente, il nome del livello che modella questa relazione è mds_Number1Climate (mappato attraverso RegionClimate.Region).As shown in the following image, the level name that models this relationship is mds_Number1Climate (mapped via RegionClimate.Region). mds_Number2Preview mostra le regioni raggruppate in base ai tipi di clima a cui sono associate.The mds_Number2Preview shows regions grouped by the types of climates that they are associated with. Questa è una relazione molti-a-molti poiché include regioni (membri figlio) associate a più climi (membri padre).This is a M2M relationship because there are regions (child members) that are associated with multiple climates (parents). Ad esempio, mds_Number3APCR {Asia Pacific} è associata a mds_Number4A {Tropical} e mds_Number5B {Dry}.For example, mds_Number3APCR {Asia Pacific} is associated with mds_Number4A {Tropical} and mds_Number5B {Dry}.

mds_M2MRelationship_Example_CustomerModel

Per istruzioni sulla distribuzione del modello di esempio Customer e di altri modelli di esempio inclusi in Master Data ServicesMaster Data Services, vedere Distribuzione di modelli di esempio e dati.For instructions on deploying the Customer sample model, and other sample models included with Master Data ServicesMaster Data Services, see Deploying Sample Models and Data.

Relazione uno-a-moltiOne-Many Relationship

Un membro di una gerarchia derivata può essere padre di molti membri figlio, ma non può avere in genere più di un padre (per le eccezioni, vedere Sicurezza dei membri).A member of a DH may be the parent of many child members, but it generally cannot have more than one parent (for exceptions, see Member Security). Si supponga ad esempio che ci siano due entità, Dipendente e Reparto, in cui ogni dipendente appartiene a un singolo reparto.For example, suppose there are two entities: Employee and Department, where each employee belongs to a single department. Questa relazione viene modellata aggiungendo all'entità Dipendente un attributo basato su dominio (DBA) che fa riferimento all'entità Reparto:This relationship is modeled by adding to the Employee entity a domain-based attribute (DBA) that references the Department entity:

mds_hierarchies_onetomanymds_hierarchies_onetomany

Si tratta di una relazione uno-a-molti in quanto ogni dipendente appartiene a un solo reparto ma ogni reparto può avere più dipendenti.This is a one-to-many relationship because each employee belongs to just one department, but each department can have multiple employees. È possibile creare una gerarchia derivata che mostra i dipendenti raggruppati per reparto:A Derived Hierarchy may be created that displays employees grouped by department:

mds_hierarchies_dh_screenshotmds_hierarchies_dh_screenshot

Sicurezza dei membriMember Security

Una gerarchia che consente la duplicazione dei membri (consente che un membro abbia più di un elemento padre) non può essere usata per assegnare autorizzazioni di sicurezza ai membri.A hierarchy that allows member duplication (allows a member to have more than one parent) cannot be used to assign member security permissions. Esempio:For example:

  • Una gerarchia derivata ricorsiva (RDH) che non effettua l'ancoraggio delle ricorsioni null (ciascun membro al livello ricorsivo appare sia sotto la radice sia sotto il suo elemento padre ricorsivo).A Recursive Derived Hierarchy (RDH) that does not anchor null recursions (each member at the recursive level appears under both ROOT and its recursive parent).

  • Una gerarchia derivata ricorsiva con un livello al di sopra del livello ricorsivo (ciascun membro del livello ricorsivo appare sia sotto l'elemento padre non ricorsivo sia sotto l'elemento padre ricorsivo).A Recursive Derived Hierarchy with a level above the recursive level (each member of the recursive level appears under both its non-recursive parent and its recursive parent).

  • Una gerarchia derivata con un livello M2M (un elemento figlio può essere mappato a molti elementi padre).A Derived Hierarchy with a M2M level (a child may be mapped to many parents).

RaccolteCollections

Le raccolte e le gerarchie esplicite sono deprecate.Collections and Explicit Hierarchies are deprecated. La stored procedure di conversione (udpConvertCollectionAndConsolidatedMembersToLeaf) converte i membri della raccolta in membri foglia e crea gerarchie derivate molti-a-molti per acquisire informazioni sui membri della raccolta.The conversion stored procedure (udpConvertCollectionAndConsolidatedMembersToLeaf) converts collection members to leaf members and creates many-to-many Derived Hierarchies to capture collection membership info.

Vedere ancheSee Also

Gerarchie derivate (Master Data Services)Derived Hierarchies (Master Data Services)