Relațiile dintre tabelele dintr-un model de date

Se aplică la
Excel pentru Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

Adăugați mai multă putere analizei dvs. de date prin crearea de relații în tabele diferite. O relație este o conexiune între două tabele care conțin date: o coloană din fiecare tabel este baza pentru relație. Pentru a vedea de ce sunt utile relațiile, imaginați-vă că urmăriți datele pentru comenzile clienților din compania dvs. Puteți urmări toate datele într-un singur tabel care are o structură astfel:

IDClient Nume EMail DiscountRate OrderID DatăComandă Product Quantity
1 Ashton chris.ashton@contoso.com .05 256 2010-01-07 Compact Digital 11
1 Ashton chris.ashton@contoso.com .05 255 2010-01-03 SLR Camera 15
2 Jaworski michal.jaworski@contoso.com .10 254 2010-01-03 Budget Movie-Maker 27

Această abordare poate funcționa, dar implică stocarea multor date redundante, cum ar fi adresa de e-mail a clientului pentru fiecare comandă. Stocarea este ieftină, dar dacă adresa de e-mail se modifică, trebuie să vă asigurați că actualizați fiecare rând pentru clientul respectiv. O soluție pentru această problemă este divizarea datelor în mai multe tabele și definirea relațiilor dintre tabelele respective. Aceasta este abordarea utilizată în bazele de date relaționale, cum ar fi SQL Server. De exemplu, o bază de date pe care o importați poate reprezenta datele comenzii prin utilizarea a trei tabele corelate:

Customers

[IDClient] Nume Email
1 Ashton chris.ashton@contoso.com
2 Jaworski michal.jaworski@contoso.com

CustomerDiscounts

[IDClient] DiscountRate
1 .05
2 .10

Orders

[IDClient] OrderID DatăComandă Product Quantity
1 256 2010-01-07 Compact Digital 11
1 255 2010-01-03 SLR Camera 15
2 254 2010-01-03 Budget Movie-Maker 27

Există relații într-un Model de date - una pe care o creați în mod explicit sau una pe care Excel o creează automat în numele dvs. atunci când importați simultan mai multe tabele. De asemenea, puteți utiliza programul de completare Power Pivot pentru a crea sau gestiona modelul. Pentru detalii, consultați Crearea unui model de date în Excel .

Dacă utilizați programul de completare Power Pivot pentru a importa tabele din aceeași bază de date, Power Pivot poate detecta relațiile dintre tabele pe baza coloanelor ce sunt între [paranteze] și poate reproduce aceste relații într-un model de date pe care îl generează în spatele scenelor. Pentru informații suplimentare, consultați Detectarea automată și deducerea relațiilor din acest articol. Dacă importați tabele din mai multe surse, puteți crea manual relații așa cum se descrie în Crearea unei relații între două tabele.

Coloanele și cheile

Relațiile se bazează pe coloanele din fiecare tabel ce conține aceleași date. De exemplu, puteți corela un tabel Clienți cu un tabel Comenzi dacă fiecare conține o coloană ce stochează un ID de client. În exemplu, numele coloanelor sunt aceleași, dar aceasta nu este o cerință. Una poate fi CustomerID, iar cealaltă poate fi CustomerNumber, atâta timp cât toate rândurile din tabelul Orders conțin un ID ce este stocat și în tabelul Customers.

Într-o bază de date relațională, există câteva tipuri de chei. O cheie este de obicei o coloană cu proprietăți speciale. Înțelegerea scopului fiecărei chei vă poate ajuta să gestionați un model de date cu mai multe tabele care furnizează date într-un raport PivotTable, PivotChart sau Power View.

Deși există multe tipuri de chei, acestea sunt cele mai importante pentru scopul nostru aici:

  • Cheie primară: identifică în mod unic un rând dintr-un tabel, cum ar fi CustomerID din tabelul Customers .
  • Cheie alternativă (sau cheie candidat): o coloană diferită de cheia primară care este unică. De exemplu, un tabel Employees poate stoca un ID de angajat și un cod numeric personal, ambele fiind unice.
  • Cheie externă: o coloană care se referă la o coloană unică dintr-un alt tabel, cum ar fi CustomerID din tabelul Orders , care face referire la CustomerID din tabelul Customers.

Într-un model de date, cheia primară sau cheia alternativă este denumită coloană corelată. Dacă un tabel conține atât o cheie primară, cât și o cheie alternativă, le puteți utiliza pe oricare drept bază a relației dintr-un tabel. Cheia externă este denumită coloană sursă sau pur și simplu coloană. În exemplul nostru, o relație va fi definită între CustomerID din tabelul Orders (coloana) și CustomerID din tabelul Customers (coloana de căutare). Dacă importați date dintr-o bază de date relațională, în mod implicit aplicația Excel alege cheia externă dintr-un tabel și cheia primară corespunzătoare din celălalt tabel. Totuși, puteți utiliza orice coloană care conține valori unice pentru coloana de căutare.

Tipurile de relații

Relația dintre un client și o comandă este o relație de tip unu-la-mai mulți. Fiecare client poate avea mai multe comenzi, dar o comandă nu poate avea mai mulți clienți. O altă relație importantă în tabel este unu-la-unu. În exemplul nostru de aici, tabelul CustomerDiscounts ce definește o singur rată de reducere pentru fiecare client are o relație de tip unu-la-unu cu tabelul Customers.

Acest tabel prezintă relațiile dintre cele trei tabele (Customers, CustomerDiscounts și Orders):

Relație Tip Coloană de căutare Coloană
Customers-CustomerDiscounts unu-la-unu Customers.CustomerID CustomerDiscounts.CustomerID
Customers-Orders unu-la-mai mulți Customers.CustomerID Orders.CustomerID

Notă

Relațiile de tip mai mulți-la-mai mulți nu sunt acceptate într-un model de date. Un exemplu de relație de tip mai mulți-la-mai mulți este o relație directă între tabelele Products și Customers, în care un client poate cumpăra mai multe produse și același produs poate fi cumpărat de mulți clienți.

Relațiile și performanța

După crearea tuturor relațiilor, aplicația Excel trebuie să recalculeze toate formulele care utilizează coloanele din tabele în relația nou creată. Procesarea poate dura un timp în funcție de volumul de date și de complexitatea relațiilor. Pentru mai multe detalii, consultați Recalcularea formulelor.

Mai multe relații între tabele

Un model de date poate avea mai multe relații între două tabele. Pentru a crea calcule precise, aplicația Excel are nevoie de o singură cale de la un tabel la următorul. Prin urmare, numai o singură relație între fiecare pereche de tabele este activă la un moment dat. Deși celelalte sunt inactive, puteți specifica o relație inactivă în formule și interogări.

În Vizualizare diagramă, relația activă este o linie continuă și cele inactive sunt linii întrerupte. De exemplu, în AdventureWorksDW2012, tabelul DimDate conține o coloană, DateKey, care este corelată cu trei coloane diferite în tabelul FactInternetSales: OrderDate, DueDate și ShipDate. Dacă relația activă este între DateKey și OrderDate, aceea este relația implicită în formule dacă nu specificați altceva.

Cerințele pentru relațiile dintr-un tabel

O relație poate fi creată când se îndeplinesc următoarele cerințe:

Criterii Descriere
Identificatorul unic pentru fiecare tabel Fiecare tabel trebuie să conțină o singură coloană care identifică în mod unic fiecare rând din tabelul respectiv. Această coloană este denumită adesea cheie primară.
Coloanele unice de căutare Valorile datelor din coloana de căutare trebuie să fie unice. Cu alte cuvinte, coloana nu poate conține dubluri. Într-un Model de date, șirurile cu valoare Null și cele goale sunt echivalente cu un șir necompletat, care reprezintă o valoare de date distinctă. Acest lucru înseamnă că nu puteți avea valori Null multiple în coloana de căutare.
Tipurile de date compatibile Tipurile de date din coloana sursă și din coloana de căutare trebuie să fie compatibile. Pentru mai multe informații despre tipurile de date, consultați Tipurile de date acceptate în modelele de date.

Caracteristici de baze de date neacceptate în modelul de date Excel

Într-un model de date, puteți crea o relație între tabele dacă cheia este o cheie compusă. De asemenea, sunteți limitați să creați relații de tip unu-la-unu și unu-la-mai mulți. Alte tipuri de relații nu sunt acceptate.

Cheile compuse și coloanele de căutare

O cheie compusă este alcătuită din mai multe coloane. Modelele de date nu pot utiliza chei compuse: un tabel trebuie să conțină exact o coloană care identifică în mod unic fiecare rând din tabel. Dacă importați tabele care au o relație existentă bazată pe o cheie compusă, Expertul import tabel din Power Pivot va ignora relația respectivă, deoarece nu poate fi creată în model.

Pentru a crea o relație între două tabele care au mai multe coloane ce definesc chei primare și externe, combinați mai întâi valorile pentru a crea o singură coloană cheie înainte de a crea relația. Puteți face acest lucru înainte de a importa datele sau creând o coloană calculată în modelul de date ce utilizează programul de completare Power Pivot.

Relațiile de tip mai mulți-la-mai mulți

Un model de date nu poate conține relații de tip mai mulți-la-mai mulți. Nu puteți adăuga pur și simplu tabele cu joncțiuni în model. Totuși, puteți utiliza funcțiile DAX pentru a modela relații de tip mai mulți-la-mai mulți.

Unirile automate și buclele

Unirile automate nu sunt permise într-un model de date. O unire automată este o relație recursivă între un tabel și ea însăși. Unirile automate sunt utilizate adesea pentru a defini ierarhii părinte-fiu. De exemplu, puteți uni un tabel Employees cu el însuși pentru a crea o ierarhie ce prezintă ierarhia administrativă într-o companie.

Aplicația Excel nu permite crearea buclelor între relațiile dintr-un registru de lucru. Cu alte cuvinte, următorul set de relații este interzis.

Între Tabelul 1, coloana a și Tabelul 2, coloana f

Între Tabelul 2, coloana f și Tabelul 3, coloana n

Între Tabelul 3, coloana n și Tabelul 1, coloana a

Dacă încercați să creați o relație care va duce la crearea unei bucle, este generată o eroare.

Detectarea automată și deducerea relațiilor din PowerPivot

Unul dintre avantajele importului de date cu ajutorul programului de completare Power Pivot este acela că Power Pivot poate detecta uneori relații și poate crea relații noi în modelul de date pe care îl creează în Excel.

Atunci când importați mai multe tabele, Power Pivot detectează automat toate relațiile existente între tabele. De asemenea, atunci când creați un raport PivotTable, Power Pivot analizează datele din tabele. Detectează posibilele relații care nu au fost definite și sugerează coloanele corespunzătoare de inclus în relațiile respective.

Algoritmul de detectare utilizează date statistice legate de valorile și metadatele coloanelor pentru genera deduceri legate probabilitatea relațiilor.

  • Tipurile de date din toate coloanele corelate trebuie să fie compatibile. Pentru detectarea automată, sunt acceptate numai tipuri de date numere întregi și text. Pentru informații suplimentare legate de tipurile de date, consultați Tipurile de date acceptate în modelele de date.
  • Pentru detectarea relației, numărul cheilor unice din coloana de căutare trebuie să fie mai mare decât valorile din tabelul din partea mai mulți. Cu alte cuvinte, coloana cheie din partea mai mulți a relației nu trebuie să conțină nicio valoare care nu este în coloana cheie din tabelul de căutare. De exemplu, să presupunem că aveți un tabel ce listează produse cu ID-urile lor (tabelul de căutare) și un tabel de vânzări care listează vânzările pentru fiecare produs (partea mai mulți a relației). Dacă înregistrările de vânzări conțin ID-ul unui produs care nu are un ID corespunzător în tabelul Products, relația nu poate fi creată automat, însă o puteți crea manual. Pentru ca aplicația Excel să detecteze relația, trebuie să actualizați mai întâi tabelul de căutare Product cu ID-urile produselor lipsă.
  • Asigurați-vă că numele coloanei de chei din partea mai mulți este similar cu numele coloanei de chei din tabelul de căutare. Numele nu trebuie să fie neapărat identice. De exemplu, într-un cadru de afaceri, există adesea variații ale numelor de coloane care conțin în esență aceleași date: ID categorie virtuală, ID angajat, ID angajat EMP_ID etc. Algoritmul detectează nume similare și atribuie o probabilitate mai mare acelor coloane care au nume asemănătoare sau care se potrivesc exact. Prin urmare, pentru a crește probabilitatea de a crea o relație, puteți încerca să redenumiți coloanele din datele pe care le importați în ceva asemănător cu coloanele din tabelele dvs. existente. Dacă Excel găsește mai multe relații posibile, atunci nu creează o relație.

Aceste informații vă pot ajuta să înțelegeți de ce nu sunt detectate toate relațiile sau modul în care modificările din metadate - cum ar fi numele câmpului și tipurile de date - pot îmbunătăți rezultatele detectării automate a relațiilor. Pentru informații suplimentare, consultați Depanarea relațiilor.

Detectarea automată pentru seturile denumite

Relațiile nu sunt detectate automat între seturile denumite și câmpurile corelate dintr-un raport PivotTable. Puteți crea manual aceste relații. Dacă doriți să utilizați detectarea automată a relațiilor, eliminați fiecare set denumit și adăugați câmpurile individuale din setul denumit direct în raportul PivotTable.

Deducerea relațiilor

În anumite cazuri, relațiile dintre tabele sunt înlănțuite automat. De exemplu, în cazul în care creați o relație între primele două seturi de tabele de mai jos, se deduce existența unei relații între celelalte două tabele și se stabilește automat o relație.

Products și Category - create manual

Category și SubCategory - create manual

Products și SubCategory - relația este dedusă

Pentru înlănțuirea automată a relațiilor, acestea trebuie să meargă într-o direcție, după cum este prezentat mai sus. Dacă relațiile inițiale au fost, de exemplu, între tabelele Sales și Products și Sales și Customers, nu se deduce o relație. Aceasta deoarece relația dintre tabelele Products și Customers este o relație de tip mai mulți-la-mai mulți.