Relazioni tra tabelle nel modello di dati

Il browser in uso non supporta le funzionalità video. Installare Microsoft Silverlight, Adobe Flash Player o Internet Explorer 9.
Video: Relazioni in Power View e PowerPivot

È possibile aumentare l'efficacia dell'analisi dei dati creando relazioni tra i dati in tabelle diverse. Una relazione è una connessione tra due tabelle di dati, ognuna basata su una colonna. Per capire perché le relazioni sono utili, provare a immaginare di tenere traccia degli ordini di un cliente della propria azienda. È possibile tenere traccia di tutti i dati in un'unica tabella che ha una struttura simile alla seguente:

IDCliente

Nome

PostaElettronica

TassoSconto

IDOrdine

DataOrdine

Prodotto

Quantità

1

Capon

cataldo.capon@contoso.com

5%

256

07-01-2010

Digitale compatta

11

1

Capon

cataldo.capon@contoso.com

5%

255

03-01-2010

Fotocamera SLR

15

2

Udinesi

luca.udinesi@contoso.com

10%

254

03-01-2010

Movie Maker

27

Questo approccio può funzionare, tuttavia comporta l'archiviazione di molti dati ridondanti, ad esempio l'indirizzo di posta elettronica del cliente per ogni ordine. L'archiviazione è economica, ma se l'indirizzo di posta elettronica cambia, è necessario assicurarsi di aggiornare ogni riga relativa al cliente. Una soluzione a questo problema consiste nel suddividere i dati in più tabelle e definire relazioni tra queste tabelle. Si tratta dell'approccio utilizzato nei database relazionali come SQL Server. Ad esempio, un database importato potrebbe rappresentare i dati dell'ordine tramite tre tabelle correlate:

Clienti

[IDCliente]

Nome

PostaElettronica

1

Capon

cataldo.capon@contoso.com

2

Udinesi

luca.udinesi@contoso.com

ScontiClienti

[IDCliente]

TassoSconto

1

5%

2

10%

Ordini

[IDCliente]

IDOrdine

DataOrdine

Prodotto

Quantità

1

256

07-01-2010

Digitale compatta

11

1

255

03-01-2010

Fotocamera SLR

15

2

254

03-01-2010

Movie Maker

27

Le relazioni sono presenti in un modello di dati creato in modo esplicito oppure da Excel per conto dell'utente quando si importano più tabelle contemporaneamente. È anche possibile usare il componente aggiuntivo PowerPivot per creare o gestire il modello. Per altre informazioni, vedere Creare un modello di dati in Excel.

Se si usa il componente aggiuntivo PowerPivot per importare tabelle dallo stesso database, PowerPivot è in grado di rilevare le relazioni tra le tabelle in base alle colonne tra [parentesi] e di riprodurle in un modello di dati che viene compilato automaticamente in background. Per altre informazioni, vedere Inferenza e rilevamento automatici delle relazioni in questo articolo. Se si importano tabelle da più origini, è possibile creare relazioni manualmente come descritto in Creare una relazione tra due tabelle.

Inizio pagina

In questo articolo

Colonne e chiavi

Tipi di relazioni

Relazioni e prestazioni

Più relazioni tra tabelle

Requisiti per una relazione tra tabelle

Tipi non supportati in una relazione tra tabelle

Chiavi composte e colonne di ricerca

Relazioni molti-a-molti

Self-join e cicli

Inferenza e rilevamento automatici delle relazioni in PowerPivot

Rilevamento automatico per set denominati

Inferenza delle relazioni

Colonne e chiavi

Le relazioni sono basate su colonne in ogni tabella contenente gli stessi dati. Ad esempio, le tabelle Clienti e Ordini possono essere correlate tra loro poiché contengono entrambe una colonna che memorizza un ID cliente. Nell'esempio, i nomi della colonna sono gli stessi ma questo non è un requisito. Uno potrebbe essere IDCliente e l'altro NumeroCliente, è sufficiente che tutte le righe nella tabella Ordini contengano un ID memorizzato anche nella tabella Clienti.

In un database relazionale esistono molti tipi di chiavi, in genere semplici colonne con proprietà speciali. Se si comprende lo scopo di ogni chiave, è possibile gestire un modello di dati a più tabelle tramite cui vengono forniti dati a una tabella pivot, un grafico pivot o un report Power View.

Le chiavi seguenti sono le più interessanti per gli scopi di questo argomento:

  • Chiave primaria: viene identificata in modo univoco una riga in una tabella, ad esempio IDCliente nella tabella Clienti.

  • Chiave alternativa (o chiave candidata): una colonna diversa dalla chiave primaria univoca. Ad esempio, una tabella Dipendenti potrebbe memorizzare un ID dipendente e un numero di previdenza sociale, entrambi univoci.

  • Chiave esterna: colonna tramite cui viene fatto riferimento a una colonna univoca in un'altra tabella, ad esempio IDCliente nella tabella Ordini, che fa riferimento a IDCliente nella tabella Clienti.

In un modello di dati la chiave primaria o la chiave alternativa viene definita colonna correlata. Se in una tabella è presente sia una chiave primaria sia una alternativa, è possibile utilizzarne una come base di una relazione tra tabelle. La chiave esterna viene definita colonna di origine o semplicemente colonna. Nell'esempio viene definita una relazione tra IDCliente nella tabella Ordini (la colonna) e IDCliente nella tabella Clienti (la colonna di ricerca). Se vengono importati dati da un database relazionale, per impostazione predefinita Excel sceglie la chiave esterna da una tabella e la chiave primaria corrispondente dall'altra. Tuttavia, è possibile usare qualsiasi colonna in cui sono disponibili valori univoci per la colonna di ricerca.

Tipi di relazioni

La relazione tra Clienti e Ordini rappresenta una relazione uno-a-molti. Ogni cliente può disporre di più ordini, ma a un ordine non possono essere associati più clienti. Gli altri tipi di relazioni sono uno-a-uno e molti-a-molti. La tabella ScontiClienti, che definisce un solo tasso di sconto per ogni cliente, è in una relazione uno-a-uno con la tabella Clienti.

Nella tabella seguente sono riportate le relazioni tra le tre tabelle:

Relazione

Tipo

Colonna di ricerca

Colonna

Clienti-ScontiClienti

uno-a-uno

Clienti.IDCliente

ScontiClienti.IDCliente

Clienti-Ordini

uno-a-molti

Clienti.IDCliente

Ordini.IDCliente

Nota :  Le relazioni molti-a-molti non sono supportate in un modello di dati. Un esempio di una relazione molti-a-molti è una relazione diretta tra Prodotti e Clienti, in cui un cliente può comprare molti prodotti e lo stesso prodotto può essere comprato da molti clienti.

Relazioni e prestazioni

Dopo aver creato una relazione, generalmente tramite Excel devono essere ricalcolate le formule in cui sono utilizzate le colonne provenienti dalle tabelle della relazione appena creata. L'elaborazione può richiedere del tempo, a seconda della quantità di dati e della complessità delle relazioni. Per ulteriori informazioni, vedere Ricalcolare le formule.

Più relazioni tra tabelle

In un modello di dati possono essere presenti più relazioni tra due tabelle. Per creare calcoli accurati, in Excel è richiesto un unico percorso da una tabella a quella successiva. Di conseguenza, è attiva una sola relazione tra ogni coppia di tabelle. Le altre sono inattive, tuttavia è possibile specificare una relazione non attiva nelle formule e nelle query. Nella vista diagramma la relazione attiva viene visualizzata come una linea continua, mentre quelle inattive come linee tratteggiate. In AdventureWorksDW2012, ad esempio, nella tabella DimDate è contenuta una colonna, DateKey, correlata a tre colonne diverse nella tabella FactInternetSales: OrderDate, DueDate e ShipDate. Se la relazione attiva è tra DateKey e OrderDate, sarà la relazione predefinita nelle formule a meno che l'utente non ne specifichi un'altra.

Inizio pagina

Requisiti per una relazione tra tabelle

Una relazione può essere creata quando vengono soddisfatti i requisiti seguenti:

Criteri

Descrizione

Identificatore univoco per ogni tabella

In ogni tabella deve essere presente una singola colonna tramite cui viene identificata in modo univoco ogni riga. La colonna correlata viene spesso definita chiave primaria.

Colonne di ricerca univoche

I valori dei dati nella colonna di ricerca devono essere univoci. In altri termini, nella colonna non possono essere contenuti duplicati. In un modello di dati le stringhe Null e vuote sono equivalenti a un valore vuoto, cioè un valore di dati distinto. Ciò vuole dire che non è possibile avere più valori Null nella colonna di ricerca.

Tipi di dati compatibili

I tipi di dati nella colonna di origine e nella colonna di ricerca devono essere compatibili. Per ulteriori informazioni sui tipi di dati, vedere Tipi di dati supportati neimodelli di dati.

Tipi non supportati in una relazione tra tabelle

In un modello di dati non è possibile creare una relazione tra tabelle se la chiave è composta. Inoltre si è limitati a creare relazioni uno-a-uno e uno-a-molti. Gli altri tipi di relazioni non sono supportati.

Chiavi composte e colonne di ricerca

Una chiave composta è costituita da più di una colonna. Non è possibile usare chiavi composte nei modelli di dati; in una tabella deve essere sempre presente una colonna tramite cui viene identificata in modo univoco ogni riga nella tabella. Se si importano tabelle con una relazione esistente basata su una chiave composta, la relazione viene ignorata dall'Importazione guidata tabella in PowerPivot, in quanto non può essere creata nel modello.

Per creare una relazione tra due tabelle in cui sono presenti più colonne tramite cui vengono definite le chiavi primarie ed esterne, è necessario innanzitutto combinare i valori per creare una singola colonna chiave prima di creare la relazione. Questa operazione può essere effettuata prima di importare i dati oppure creando una colonna calcolata nel modello di dati tramite il componente aggiuntivo PowerPivot.

Relazioni molti-a-molti

In un modello di dati non possono essere presenti relazioni molti-a-molti. Non è possibile aggiungere semplicemente tabelle di collegamento al modello. È tuttavia possibile utilizzare funzioni DAX per modellare relazioni molti-a-molti.

Self-join e cicli

I self-join non sono consentiti in un modello di dati. Un self-join è una relazione ricorsiva tra una tabella e se stessa. I self-join vengono spesso utilizzati per definire gerarchie padre-figlio. Ad esempio, è possibile creare un join di una tabella Dipendenti a se stessa in modo da creare una gerarchia in cui viene mostrata la catena di gestione di un'azienda.

In Excel non è possibile creare cicli tra relazioni in una cartella di lavoro. In altre parole, il set di relazioni seguente non è consentito.

  • Da Tabella 1, colonna a   a   Tabella 2, colonna f

  • Da Tabella 2, colonna f   a   Tabella 3, colonna n

  • Da Tabella 3, colonna n   a   Tabella 1, colonna a

Se si tenta di creare una relazione che comporterebbe la creazione di un ciclo, viene generato un errore.

Inizio pagina

Inferenza e rilevamento automatici delle relazioni in PowerPivot

Uno dei vantaggi dell'importazione di dati tramite il componente aggiuntivo PowerPivot consiste nel fatto che tramite PowerPivot è talvolta possibile rilevare relazioni e crearne di nuove nel modello di dati creato in Excel.

Quando si importano più tabelle, PowerPivot rileva automaticamente le relazioni esistenti tra le tabelle. Inoltre, quando viene creata una tabella pivot, PowerPivot analizza i dati nelle tabelle,  rileva le possibili relazioni non definite e suggerisce le colonne appropriate da includere in queste relazioni.

Nell'algoritmo di rilevamento vengono utilizzati i dati statistici relativi ai valori e ai metadati delle colonne per eseguire inferenze sulla probabilità di relazioni.

  • I tipi di dati in tutte le colonne correlate devono essere compatibili. Per il rilevamento automatico, sono supportati solo numeri interi e tipi di dati di testo. Per ulteriori informazioni sui tipi di dati, vedere Tipi di dati supportati nei modelli di dati.

  • Affinché la relazione venga rilevata correttamente, il numero di chiavi univoche nella colonna di ricerca deve essere maggiore dei valori nella tabella sul lato molti. In altre parole, nella colonna chiave sul lato molti della relazione non deve essere contenuto alcun valore che non sia disponibile nella colonna chiave della tabella di ricerca. Si supponga, ad esempio, di disporre di una tabella in cui siano elencati prodotti con i relativi ID (la tabella di ricerca) e una tabella in cui siano elencate le vendite per ogni prodotto (il lato molti della relazione). Se nei record di vendita è contenuto l'ID di un prodotto che non dispone di un ID corrispondente nella tabella Products, non è possibile creare la relazione automaticamente, ma dovrebbe essere possibile crearla manualmente. Affinché tramite Excel venga rilevata la relazione, è necessario innanzitutto aggiornare la tabella di ricerca Product con gli ID dei prodotti mancanti.

  • Verificare che il nome della colonna chiave sul lato molti sia simile al nome della colonna chiave nella tabella di ricerca. I nomi non devono essere esattamente gli stessi. Ad esempio, in un contesto aziendale spesso i nomi delle colonne in cui essenzialmente sono contenuti gli stessi dati variano leggermente: ID Dip, IDDipendente, ID Dipendente, ID_DIP e così via. Tramite l'algoritmo vengono rilevati i nomi simili e viene assegnata una probabilità superiore alle colonne con nomi simili o esattamente corrispondenti. Di conseguenza, per aumentare la probabilità di creare una relazione, è possibile provare a rinominare le colonne dei dati importati con nomi simili alle colonne presenti nelle tabelle esistenti. Se tramite Excel vengono rilevate più relazioni possibili, non viene creata nessuna relazione.

Queste informazioni potrebbero consentire di capire il motivo per cui non tutte le relazioni vengono rilevate o il modo in cui le modifiche apportate ai metadati, ad esempio al nome del campo e ai tipi di dati, possono migliorare i risultati del rilevamento automatico delle relazioni. Per ulteriori informazioni, vedere Risolvere i problemi relativi alle relazioni.

Rilevamento automatico per set denominati

Le relazioni non vengono rilevate automaticamente tra set denominati e campi correlati in una tabella pivot. Le relazioni possono essere create manualmente. Se si desidera utilizzare il rilevamento automatico delle relazioni, rimuovere ogni set denominato e aggiungere i singoli campi dal set denominato direttamente alla tabella pivot.

Inferenza delle relazioni

In alcuni casi, le relazioni tra le tabelle vengono concatenate automaticamente. Se ad esempio si crea una relazione tra i primi due set di tabelle indicati di seguito, viene dedotta l'esistenza di una relazione tra le altre due tabelle e viene stabilita automaticamente una relazione.

  • Prodotti e Categoria -- creata manualmente

  • Categoria e Sottocategoria -- creata manualmente

  • Prodotti e Sottocategoria -- relazione dedotta

Affinché relazioni vengano concatenate automaticamente, le relazioni devono andare in una direzione, come riportato in precedenza. Se le relazioni iniziali erano tra, ad esempio, Vendite e Prodotti e Vendite e Clienti, la relazione non viene dedotta. Ciò avviene perché la relazione tra Prodotti e Clienti è una relazione molti-a-molti.

Inizio pagina

Amplia le tue competenze
Esplora i corsi di formazione
Ottieni in anticipo le nuove caratteristiche
Partecipa al programma Office Insider

Queste informazioni sono risultate utili?

Grazie per i tuoi commenti e suggerimenti

Grazie per il tuo feedback! Potrebbe essere utile metterti in contatto con uno dei nostri operatori del supporto di Office.

×