Condividi tramite


Relazioni tra tabelle di Microsoft Dataverse

Le relazioni tra tabelle in Microsoft Dataverse definiscono i modi in cui le righe della tabella possono essere associate alle righe di altre tabelle o alla stessa tabella. Esistono due tipi di relazioni tra tabelle:

Relazioni uno-a-molti

In una relazione di tabella uno-a-molti, molte righe della tabella di riferimento (correlate) possono essere associate a una singola riga della tabella (primaria) a cui viene fatto riferimento. La riga della tabella a cui si fa riferimento viene talvolta definita "padre" e le righe della tabella di riferimento vengono definite "figli". Una relazione molti-a-uno è solo la prospettiva opposta di una relazione uno-a-molti.

Ad esempio, in uno scenario scolastico più corsi potrebbero essere distribuiti in una singola classe, quindi la tabella delle classi avrà una relazione uno-a-molti con la tabella dei corsi.

Relazioni molti-a-molti

In una relazione di tabella molti-a-molti, molte righe della tabella possono essere associate a molte altre righe della tabella. Le righe correlate che utilizzano una relazione molti-a-molti possono essere considerate di pari livello e la relazione è reciproca.

Ad esempio, nello stesso scenario scolastico menzionato in precedenza, un singolo studente può iscriversi a più corsi e ogni corso può avere più studenti. Questo tipo di relazione consente associazioni di dati più complesse e viene gestito usando Power Apps in Dataverse.

Funzionamento delle relazioni in Dataverse

Le relazioni tra tabelle definiscono il modo in cui le righe della tabella possono essere correlate tra loro in Dataverse. A livello più semplice, l'aggiunta di una colonna di ricerca a una tabella crea una nuova relazione 1:N (uno-a-molti) tra le due tabelle e consente di inserire tale colonna di ricerca in una maschera. Con la colonna di ricerca, gli utenti possono associare più righe figlio di tale tabella a una singola riga della tabella padre .

Oltre a definire semplicemente come le righe possono essere correlate ad altre righe, le relazioni tra tabelle 1:N forniscono anche dati per risolvere le domande seguenti:

  • Quando si elimina una riga, è necessario eliminare anche le righe correlate a tale riga?
  • Quando si assegna una riga, è necessario assegnare anche tutte le righe correlate a tale riga al nuovo proprietario?
  • Come è possibile semplificare il processo di immissione dei dati quando si crea una nuova riga correlata nel contesto di una riga esistente?
  • In che modo gli utenti che visualizzano una riga possono visualizzare le righe associate?

Le tabelle possono anche partecipare a una relazione N:N (molti-a-molti) in cui un numero qualsiasi di righe per due tabelle può essere associato tra loro.

Decidere se usare relazioni o connessioni tra tabelle

Le relazioni tra tabelle sono metadati che apportano modifiche in Dataverse. Queste relazioni consentono alle query di recuperare in modo efficiente i dati correlati. Utilizzare relazioni tra tabelle per definire relazioni formali che definiscono la tabella o che la maggior parte delle righe può usare. Ad esempio, un'opportunità senza un potenziale cliente non sarebbe utile. La tabella delle opportunità in Dynamics 365 for Sales ha anche una relazione N:N con la tabella concorrente, disponibile anche con Dynamics 365 for Sales. Ciò consente l'aggiunta di più concorrenti all'opportunità. È possibile acquisire questi dati e creare un report che mostri i concorrenti.

Esistono altri tipi meno formali di relazioni tra righe chiamate connessioni. Ad esempio, potrebbe essere utile sapere se due contatti sono sposati, o forse sono amici al di fuori del lavoro, o forse un contatto usato per lavorare per un altro account. La maggior parte delle aziende non genererà report usando questo tipo di informazioni o richiede che venga immessa, quindi probabilmente non vale la pena creare relazioni tra tabelle. Altre informazioni: Configurare i ruoli di connessione

Tipi di relazioni tra tabelle

Quando si visualizzano le relazioni in Power Apps, si potrebbe pensare che siano presenti tre tipi di relazioni tra tabelle. In realtà ci sono solo due, come illustrato nella tabella seguente.

Tipo di relazione Description
1:N (uno-a-molti) Relazione di tabella in cui è possibile associare una riga di tabella per la tabella Primaria a molte altre righe di tabella correlate a causa di una colonna di ricerca nella tabella correlata.

Quando si visualizza una riga di tabella primaria, è possibile visualizzare un elenco delle righe della tabella correlate associate.

Nel portale di Power Apps la tabella Corrente rappresenta la tabella primaria.
N:N (molti-a-molti) Relazione di tabella che dipende da una tabella Relazione speciale, talvolta denominata tabella Intersect, in modo che molte righe di una tabella possano essere correlate a molte righe di un'altra tabella.

Quando si visualizzano righe di una tabella in una relazione N:N, è possibile visualizzare un elenco di tutte le righe dell'altra tabella correlate.

Il tipo di relazione N:1 (molti-a-uno) esiste nell'interfaccia utente perché la finestra di progettazione mostra una visualizzazione raggruppata per tabelle. Le relazioni 1:N esistono effettivamente tra tabelle e fanno riferimento a ogni tabella come tabella Primaria/Corrente o Tabella correlata. La tabella correlata, talvolta denominata tabella figlio , ha una colonna di ricerca che consente di archiviare un riferimento a una riga dalla tabella primaria, talvolta denominata tabella padre . Una relazione N:1 è solo una relazione 1:N visualizzata dalla tabella correlata.

Comportamento delle relazioni tra tabelle

I comportamenti per le tabelle correlate sono importanti perché consentono di garantire l'integrità dei dati e di automatizzare automaticamente i processi aziendali.

Mantenere l'integrità dei dati

Alcune tabelle esistono per supportare altre tabelle. Non hanno senso da soli. In genere avranno una colonna di riferimento necessaria per collegarsi alla tabella primaria che supportano. Cosa deve accadere quando viene eliminata una riga primaria?

Puoi utilizzare il comportamento della relazione per definire cosa accade alle righe correlate in base alle regole per la tua azienda. Maggiori informazioni: Aggiungere il comportamento avanzato delle relazioni

Automatizzare i processi aziendali

Si supponga di avere un nuovo venditore e di voler assegnargli un certo numero di account esistenti attualmente assegnati a un altro venditore. Ogni riga di account può avere una serie di impegni di tipo attività associati. È possibile individuare facilmente gli account attivi da riassegnare e assegnarli al nuovo venditore. Ma cosa dovrebbe accadere per una qualsiasi delle attività associate agli account? Si desidera aprire ogni attività e decidere se deve essere assegnata a un nuovo venditore? Probabilmente no. In alternativa, è possibile consentire alla relazione di applicare alcune regole standard automaticamente. Queste regole si applicano solo alle righe di attività associate agli account che si sta riassegnando. Le opzioni disponibili sono:

  • Riassegnare tutte le attività attive.
  • Riassegnare tutte le attività.
  • Non riassegnare alcuna attività.
  • Riassegnare tutte le attività attualmente assegnate al proprietario precedente degli account.

La relazione può controllare il modo in cui le azioni eseguite su una riga per la riga della tabella primaria vengono propagate a catena a qualsiasi riga di tabella correlata.

Behaviors

Esistono diversi tipi di comportamenti che possono essere applicati quando si verificano determinate azioni.

Comportamento Description
Esegui a catena sui record attivi Eseguire l'azione su tutte le righe di tabella correlate attive.
Esegui a catena su tutti i record Eseguire l'azione su tutte le righe di tabella correlate.
Non eseguire a catena Non eseguire alcuna operazione.
Rimuovi collegamento Rimuovere il valore di ricerca per tutte le righe correlate.
Limita Impedire l'eliminazione della riga della tabella primaria quando sono presenti righe di tabella correlate.
Esegui a catena sui record di proprietà dell'utente Eseguire l'azione su tutte le righe di tabella correlate che appartengono allo stesso utente della riga primaria della tabella.

Azioni

Queste sono le azioni che possono attivare determinati comportamenti:

colonna Description Options
Assegnazione Cosa deve accadere quando la riga della tabella primaria viene assegnata a un altro utente? Propaga a catena - Tutti gli elementi
Propaga a catena - Elementi attivi
Esegui a catena sui record di proprietà dell'utente
Propaga a catena - Nessun elemento
Ricollegamento Cosa dovrebbe accadere quando viene modificato il valore di ricerca di una tabella correlata in una relazione genitoriale?
Ulteriori informazioni: Relazioni di tabella con elemento padre
Propaga a catena - Tutti gli elementi
Propaga a catena - Elementi attivi
Esegui a catena sui record di proprietà dell'utente
Propaga a catena - Nessun elemento
Condivisione Cosa dovrebbe accadere quando la riga della tabella primaria viene condivisa? Propaga a catena - Tutti gli elementi
Propaga a catena - Elementi attivi
Esegui a catena sui record di proprietà dell'utente
Propaga a catena - Nessun elemento
Elimina Cosa deve accadere quando viene eliminata la riga della tabella primaria? Propaga a catena - Tutti gli elementi
Annulla collegamento articolo
Limita
Rimozione condivisione Cosa dovrebbe accadere quando una riga di tabella primaria non viene condivisa? Propaga a catena - Tutti gli elementi
Propaga a catena - Elementi attivi
Esegui a catena sui record di proprietà dell'utente
Propaga a catena - Nessun elemento
Unione Cosa deve accadere quando viene unita una riga di tabella primaria? Propaga a catena - Tutti gli elementi
Propaga a catena - Nessun elemento
Visualizzazione sommaria Qual è il comportamento desiderato della visualizzazione di rollup associata a questa relazione? Propaga a catena - Tutti gli elementi
Propaga a catena - Elementi attivi
Esegui a catena sui record di proprietà dell'utente
Propaga a catena - Nessun elemento

Annotazioni

Le azioni Assign, Delete, Merge e Reparent non vengono eseguite nelle situazioni seguenti:

  • Se la riga padre originale e l'azione richiesta contengono gli stessi valori. Esempio: tentativo di attivare una funzione Assign scegliendo un contatto già proprietario della riga.
  • Se si tenta di eseguire un'azione su una riga padre che sta già eseguendo un'azione a catena.

Quando si esegue un'assegnazione, tutti i flussi di lavoro o le regole business attualmente attivi nelle righe vengono disattivati automaticamente quando si verifica la riassegnazione. Il nuovo proprietario della riga deve riattivare il flusso di lavoro o la regola aziendale se desidera continuarne l'uso.

Relazioni di tabella con un elemento padre

Ogni coppia di tabelle idonee per avere una relazione 1:N può avere più relazioni 1:N tra di esse. Eppure solo una di tali relazioni può in genere essere considerata una relazione di tabella con elemento padre.

Una relazione di tabella con elemento padre è una qualsiasi relazione di tabella 1:N in cui una delle opzioni di esecuzione a catena nella colonna Con elemento padre della tabella seguente è vera.

Action Con elemento padre Senza elemento padre
Assegnazione Propaga a catena - Tutti gli elementi
Esegui a catena sui record di proprietà dell'utente
Propaga a catena - Elementi attivi
Propaga a catena - Nessun elemento
Elimina Propaga a catena - Tutti gli elementi RemoveLink
Limita
Ricollegamento Propaga a catena - Tutti gli elementi
Cascata di proprietà dell'utente
Propaga a catena - Elementi attivi
Propaga a catena - Nessun elemento
Condivisione Propaga a catena - Tutti gli elementi
Esegui a catena sui record di proprietà dell'utente
Propaga a catena - Elementi attivi
Propaga a catena - Nessun elemento
Rimozione condivisione Propaga a catena - Tutti gli elementi
Esegui a catena sui record di proprietà dell'utente
Propaga a catena - Elementi attivi
Propaga a catena - Nessun elemento

Ad esempio, se si crea una nuova tabella personalizzata e si aggiunge una relazione di tabella 1:N con la tabella account in cui la tabella personalizzata è la tabella correlata, è possibile configurare le azioni per la relazione di tabella in modo da usare le opzioni nella colonna Parental . Se successivamente si aggiunge un'altra relazione di tabella 1:N con la tabella personalizzata come tabella di riferimento, è possibile configurare solo le azioni in modo da usare le opzioni nella colonna Not Parental .

In genere ciò significa che per ogni coppia di tabella esiste una sola relazione con elemento padre. In alcuni casi la ricerca nella tabella correlata potrebbe consentire una relazione con più tipi di tabella.

Ad esempio, se una tabella include un valore di ricerca cliente che può fare riferimento a un contatto o alla tabella account. Esistono due relazioni di tabella 1:N con elemento padre separate.

Una qualsiasi tabella impegni ha un set simile di relazioni di tabella con elemento padre che può essere associato utilizzando la colonna di ricerca in questione.

Limitazioni ai comportamenti che è possibile impostare

A causa delle relazioni genitoriali esistono alcune limitazioni, è consigliabile tenere presente quando si definiscono le relazioni tra tabelle.

  • Una tabella personalizzata non può essere la tabella primaria in una relazione con una tabella di sistema correlata a catena. Ciò significa che non è possibile avere una relazione con qualsiasi azione impostata su Cascade All, Cascade Active o Cascade User-Owned tra una tabella personalizzata primaria e una tabella di sistema correlata.
  • Nessuna nuova relazione può avere alcuna azione impostata su Cascade All, Cascade Active o Cascade User-Owned se la tabella correlata in tale relazione esiste già come tabella correlata in un'altra relazione con qualsiasi azione impostata su Cascade All, Cascade Active o Cascade User-Owned. Ciò evita la creazione di relazioni che danno luogo a relazioni con più elementi principali.

Pulizia dei diritti di accesso ereditati

L'uso di comportamenti a catena reparent e share è utile quando si vuole fornire l'accesso alle righe tra le tabelle correlate. Tuttavia, può verificarsi una modifica del processo o della progettazione che richiede una modifica delle impostazioni del comportamento a catena.

Quando una relazione di tabella usa Reparent o Share e il comportamento a catena viene modificato in Cascade None, la relazione di tabella impedisce che le modifiche alle nuove autorizzazioni vengano propagate alle tabelle figlio correlate. Inoltre, le autorizzazioni ereditate che sono state concesse mentre il comportamento a catena era attivo devono essere revocate.

La pulizia dei diritti di accesso ereditati è un lavoro di sistema che ripulisce i diritti di accesso ereditati legacy che rimangono dopo che il comportamento a cascata è stato modificato in Non eseguire a catena. Questa ripulitura non influisce sugli utenti ai quali è stato concesso direttamente l'accesso alla tabella, ma rimuove l'accesso a chi ha ricevuto l'accesso solo in via ereditaria.

Ecco come funziona la pulizia dei diritti di accesso ereditata:

  1. Identifica e raccoglie tutte le tabelle che erano in una relazione a cascata con il padre aggiornato.
  2. Identifica e raccoglie gli utenti a cui è stato concesso l'accesso alle tabelle correlate tramite l'accesso ereditato.
  3. Verifica la presenza di utenti a cui è stato concesso l'accesso diretto a una tabella correlata e li rimuove dalla raccolta.
  4. Rimuove l'accesso ereditato per gli utenti raccolti nelle tabelle raccolte.

Dopo l'esecuzione della pulizia, gli utenti che in precedenza erano in grado di accedere alle tabelle correlate solo a causa della funzionalità a cascata non possono più accedere alle righe, garantendo una maggiore sicurezza. In alcuni casi la pulizia potrebbe non riuscire. Altre informazioni su come pulire l'accesso ereditato

Vedere anche

Monitorare i processi di sistema
Creare e modificare relazioni 1:N (uno-a-molti) o N:1 (molti-a-uno)
Creare relazioni molti-a-molti (N:N) tra tabelle