Relacije između tabela
Napomena
Stupa na snagu novembra 2020:
- Common Data Service je preimenovan u Microsoft Dataverse. Saznajte više
- Neka terminologija u usluzi Microsoft Dataverse je ispravljena. Na primer, entitet je sada tabela, a polje je sada kolona. Saznajte više
Ovaj članak će biti uskoro ažuriran kako bi odražavao najnoviju terminologiju.
Relacije između tabela definišu kako se redovi mogu međusobno povezati u bazi podataka. Na najjednostavnijem nivou, dodavanje kolone za pronalaženje u tabelu kreira novu relaciju 1:N (jedan prema više) između dve tabele i omogućava vam da postavite tu kolonu za pronalaženje u obrazac. Pomoću kolone za pronalaženje, korisnici mogu da povežu više podređenih redova te tabele sa jednim nadređenim redom tabele.
Pored toga što jednostavno definišu kako se redovi mogu povezati sa drugim redovima, relacije između tabela tipa 1:N takođe pružaju podatke za rešavanje sledećih pitanja:
- Kada izbrišem red, da li treba takođe da izbrišem sve redove povezane sa tim redom?
- Kada dodelim red, da li novom vlasniku treba takođe da dodelim sve redove povezane sa tim redom?
- Kako mogu da pojednostavim proces unosa podataka kada kreiram novi povezani red u kontekstu postojećeg reda?
- Kako bi ljudi koji pregledaju red trebalo da budu u mogućnosti da vide povezane redove?
Tabele takođe mogu da učestvuju u relaciji tipa N:N (više prema više) u kojoj bilo koji broj redova za dve tabele može biti povezan jedan sa drugim.
Procena upotrebe relacija između tabela ili veza
Relacije između tabela su metapodaci koji prave izmene u bazi podataka. Ove relacije omogućavaju upite radi vrlo efikasnog preuzimanja povezanih podataka. Koristite relacije između tabela za definisanje formalnih relacija koje definišu tabelu ili koje većina redova može da koristi. Na primer, mogućnost za poslovanje bez potencijalnog klijenta ne bi bila veoma korisna. Tabela mogućnosti za poslovanje takođe ima relaciju N:N sa tabelom konkurenata. To omogućava dodavanje više konkurenata u mogućnost za poslovanje. Možda ćete želeti da prikupite ove podatke i kreirate izveštaj koji pokazuje konkurente.
Postoje i druge manje formalne vrste relacija između redova koje se zovu veze. Na primer, može biti korisno znati da li su dva kontakta u braku ili su možda prijatelji van posla ili je kontakt možda ranije radio za drugog poslovnog kontakta. Većina preduzeća neće generisati izveštaje koristeći ovu vrstu podataka ili zahteva da oni budu uneti, tako da se verovatno ne isplati kreirati relacije između tabela. Još informacija: Konfigurisanje uloga veza
Tipovi relacija između tabela
Kada pogledate istraživač rešenja, mogli biste pomisliti da postoje tri tipa relacija između tabela. Zapravo postoje samo dva, kao što je prikazano u sledećoj tabeli.
| Tip relacije | Opis |
|---|---|
| 1:N (jedan-prema-više) | Relacija između tabela gde jedan red tabele za primarnu tabelu može se povezati sa mnogim drugim redovima povezane tabele zbog kolone za pronalaženje u povezanoj tabeli. Prilikom pregledanja reda primarne tabele, može se videti lista redova povezane tabele koji su povezani sa njom. U Power Apps portalu, Trenutna tabela predstavlja primarnu tabelu. |
| N:N (više prema više) | Relacija između tabela koja zavisi od posebne tabele relacije ponekad se naziva tabela ukrštanja, tako da mnogo redova jedne tabele može biti povezano sa mnogo redova druge tabele. Prilikom pregledanja redova bilo koje tabele u relaciji tipa N:N možete videti listu svih redova druge tabele koji su povezani sa njom. |
Tip relacije N:1 (više prema jedan) postoji u korisničkom interfejsu zato što dizajner prikazuje prikaz grupisan po tabelama. Relacije tipa 1:N zapravo postoje između tabela i odnose se na svaku tabelu kao Primarna/aktuelna tabela ili Povezana tabela. Povezana tabela, koja se ponekad naziva podređena tabela, ima kolonu pronalaženja koja omogućava čuvanje reference na red iz primarne tabele, koja se ponekad naziva nadređena tabela. Relacija N:1 je samo relacija 1:N viđena iz perspektive povezane tabele.
Ponašanje relacije između tabela
Ponašanje za povezane tabele je važno jer pomaže da osigurate integritet podataka i može da automatizuje poslovne procese preduzeća.
Čuvanje integriteta podataka
Neke tabele postoje da bi podržale druge tabele. Oni nemaju smisla sami za sebe. One obično imaju obaveznu kolonu pronalaženja za povezivanje sa primarnom tabelom koju podržavaju. Šta treba da se dogodi kada se primarni red izbriše?
Možete da koristite ponašanje relacije da biste to definisali u skladu sa pravilima svog preduzeća. Postoje dve opcije:
- Sprečite brisanje primarne tabele tako da redovi povezane tabele mogu da se sravne, možda tako što ćete ih povezati sa drugom primarnom tabelom.
- Omogućite da se povezane tabele automatski izbrišu kada se izbriše red primarne tabele.
Ako povezana tabela ne podržava primarnu tabelu, možete da dozvolite brisanje primarne tabele i vrednost pronalaženja će se obrisati.
Automatizovanje poslovnog procesa
Recimo da imate novog prodavca i želite da mu dodelite određeni broj postojećih poslovnih kontakata koji su trenutno dodeljeni drugom prodavcu. Svaki red poslovnog kontakta može imati niz radnih aktivnosti povezanih sa sobom. Lako možete pronaći aktivne poslovne kontakte koje želite ponovo da dodelite i dodeliti ih novom prodavcu. Ali šta će se desiti sa radnim aktivnostima povezanim sa poslovnim kontaktima? Da li želite da otvorite svaki zadatak i odlučite da li on takođe treba da se dodeli novom prodavcu? Verovatno ne želite. Umesto toga, možete da pustite da relacija automatski primeni neka standardna pravila. Ova pravila se odnose samo na redove zadataka povezane sa poslovnim kontaktima koje ponovo dodeljujete. Imate sledeće opcije:
- Ponovo dodelite sve aktivne zadatke.
- Ponovo dodelite sve zadatke.
- Ne dodeljujte ponovo nijedan zadatak.
- Ponovo dodelite sve zadatke trenutno dodeljene bivšem vlasniku poslovnih kontakata.
Relacija može da kontroliše način na koji će obavljanje radnji na redu za red primarne tabele kaskadno uticati na sve redove povezane tabele.
Ponašanja
Evo nekoliko vrsta ponašanja koje je moguće primeniti kada dođe do određenih radnji.
| Ponašanje | Opis |
|---|---|
| Rasporedi kaskadno aktivne | Izvršava ovu radnju na svim aktivnim redovima povezane tabele. |
| Rasporedi kaskadno sve | Izvršava ovu radnju na svim redovima povezane tabele. |
| Ne raspoređuj kaskadno nijedan | Ne čini ništa. |
| Ukloni vezu | Uklanja vrednost za pronalaženje za sve povezane redove. |
| Ograniči | Sprečava brisanje redova primarne tabele kada postoje redovi povezane tabele. |
| Rasporedi kaskadno u vlasništvu korisnika | Izvršava radnju na svim redovima srodne tabele koja je u vlasništvu istog korisnika koji je vlasnik reda primarne table. |
Akcije
Ove radnje mogu da aktiviraju određena ponašanja:
| Column | Opis | Opcije |
|---|---|---|
| Dodela | Šta treba da se dogodi kada je red primarne tabele dodeljen nekom drugom? | Kaskadno rasporedi sve Kaskadni raspored je aktivan Rasporedi kaskadno u vlasništvu korisnika Ne raspoređuj kaskadno nijedan |
| Ponovo učini nadređenim | Šta treba da se dogodi kada se promeni vrednost za pronalaženje povezane tabele u nadređenoj relaciji? Još informacija: Nadređene relacije između tabela |
Kaskadno rasporedi sve Kaskadni raspored je aktivan Rasporedi kaskadno u vlasništvu korisnika Ne raspoređuj ništa kaskadno |
| Deli | Šta treba da se dogodi kada se red primarne tabele deli? | Kaskadno rasporedi sve Kaskadni raspored je aktivan Rasporedi kaskadno u vlasništvu korisnika Ne raspoređuj ništa kaskadno |
| Izbriši | Šta treba da se dogodi kada se red primarne tabele izbriše? | Kaskadno rasporedi sve Ukloni vezu Ograniči |
| Opozovi deljenje | Šta treba da se dogodi kada se onemogući deljenje reda primarne tabele? | Kaskadno rasporedi sve Kaskadni raspored je aktivan Rasporedi kaskadno u vlasništvu korisnika Ne raspoređuj ništa kaskadno |
| Objedini | Šta treba da se dogodi kada se red primarne tabele objedini? | Kaskadno rasporedi sve Ne raspoređuj ništa kaskadno |
| Prikaz zbirne vrednosti | Šta je željeno ponašanje prikaza zbirne vrednosti povezanog sa ovom relacijom? | Rasporedi kaskadno sve Rasporedi kaskadno aktivne Rasporedi kaskadno u vlasništvu korisnika Ne raspoređuj kaskadno nijedan |
Napomena
Radnje Dodeli, Izbriši, Objedini i Ponovo nadredi se neće izvršavati u sledećim situacijama:
- Ako originalni nadređeni red i tražena radnja sadrže iste vrednosti. Primer: Pokušaj pokretanja dodeljivanja i odabir kontakta koji je već vlasnik reda
- Pokušaj izvođenja radnje nad nadređenim redom koji već izvodi kaskadnu radnju
Napomena
Pri izvršavanju dodele, svi tokovi posla ili poslovna pravila koja su trenutno aktivna u redovima automatski će se deaktivirati kada dođe do preraspodele. Novi vlasnik reda moraće ponovo da aktivira tok posla ili poslovno pravilo ako želi da ga i dalje koristi.
Nadređene relacije između tabela
Svaki par tabela koje su kvalifikovane za relaciju 1:N mogu da imaju više relacija 1:N između sebe. Ipak, obično samo jednu od tih relacija možemo smatrati nadređenom relacijom između tabela.
Nadređena relacija između tabela je bilo koja relacija između tabela tipa 1:N gde jedna od kaskadnih opcija u koloni Nadređeno u sledećoj tabeli ima vrednost tačno.
| Akcija | Nadređeni | Nije nadređeno |
|---|---|---|
| Dodela | Rasporedi kaskadno sve Rasporedi kaskadno u vlasništvu korisnika Rasporedi kaskadno aktivne |
Ne raspoređuj kaskadno nijedan |
| Izbriši | Rasporedi kaskadno sve | RemoveLink Ograniči |
| Ponovo učini nadređenim | Rasporedi kaskadno sve Rasporedi kaskadno u vlasništvu korisnika Rasporedi kaskadno aktivne |
Ne raspoređuj kaskadno nijedan |
| Deli | Rasporedi kaskadno sve Rasporedi kaskadno u vlasništvu korisnika Rasporedi kaskadno aktivne |
Ne raspoređuj kaskadno nijedan |
| Opozovi deljenje | Rasporedi kaskadno sve Rasporedi kaskadno u vlasništvu korisnika Kaskadni raspored je aktivan |
Ne raspoređuj ništa kaskadno |
Na primer, ako kreirate novu prilagođenu tabelu i dodate relaciju između tabela tipa 1:N sa tabelom poslovnog kontakta gde je prilagođena tabela povezana tabela, možete da konfigurišete da radnje za tu relaciju između tabela koriste opcije u koloni Nadređeno. Ako kasnije dodate drugu relaciju između tabela tipa 1:N sa prilagođenom tabelom kao tabelom na koju se upućuje, možete samo da konfigurišete da radnje koriste opcije u koloni Nije nadređeno.
Obično to znači da za svaki par tabela postoji samo jedna nadređena relacija. Ovo su neki slučajevi kada pronalaženje za povezanu tabelu može da dozvoli relaciju sa više tipova tabela.
Na primer, ako tabela ima pronalaženje klijenta koje može da se odnosi na tabelu kontakta ili tabelu poslovnog kontakta. Postoje dve zasebne nadređene relacije između tabela tipa 1:N.
Svaka tabela aktivnosti ima sličan skup nadređenih relacija između tabela za tabele koje mogu biti povezane korišćenjem kolone za pronalaženje na koju se odnosi.
Ograničenja ponašanja koja se mogu podesiti
Zbog nadređenih relacija postoje neka ograničenja koja bi trebalo imati na umu kada definišete relacije između tabela.
- Prilagođena tabela ne može biti primarna tabela u relaciji sa povezanom sistemskom tabelom koja je kaskadno raspoređena. To znači da ne možete imati relaciju kada je bilo koja radnja između primarne prilagođene tabele i povezane sistemske tabele podešena na opciju Rasporedi kaskadno sve, Rasporedi kaskadno aktivne ili Rasporedi kaskadno kada je korisnik vlasnik.
- U novoj relaciji nijedna radnja ne može biti podešena na opciju Rasporedi kaskadno sve, Rasporedi kaskadno aktivne ili Rasporedi kaskadno kada je korisnik vlasnik ukoliko srodna tabela u toj relaciji već postoji kao srodna tabela u drugoj relaciji gde je neka radnja podešena na opciju Rasporedi kaskadno sve, Rasporedi kaskadno aktivne ili Rasporedi kaskadno kada je korisnik vlasnik. To sprečava relacije koji stvaraju relaciju sa više nadređenih instanci.
Čišćenje nasleđenih prava pristupa
Korišćenje kaskadnog ponašanja ponovnog nadređivanja i deljenja korisno je kada želite da omogućite pristup redovima u povezanim tabelama. Ali može doći do promene procesa ili dizajna koja zahteva promenu postavki kaskadnog ponašanja.
Kada relacija između tabela koristi ponovno nadređivanje ili deljenje, a kaskadno ponašanje se promeni iz Rasporedi kaskadno sve do Ne rasporedi kaskadno nijedan, relacija između tabela sprečava menjanje bilo kakvih novih dozvola sa kaskadnih na povezane podređene tabele. Pored toga, nasleđene dozvole koje su dodeljene dok je kaskadno ponašanje bilo aktivno moraju biti opozvane.
Čišćenje nasleđenih prava pristupa je sistemski posao koji čisti nasleđena prava pristupa koja ostaju nakon promene kaskadnog ponašanja iz Rasporedi kaskadno sve u Ne rasporedi kaskadno nijedan. Ovo čišćenje neće uticati na bilo kog korisnika kojem je direktno odobren pristup tabeli, ali će ukloniti pristup svima koji su pristup dobili samo nasleđivanjem.
Napomena
Trenutno je za pokretanje čišćenja nasleđenih prava pristupa potrebno korišćenje Web API-ja. Još informacija: CreateAsyncJobToRevokeInheritedAccess Action
Evo kako funkcioniše čišćenje nasleđenih prava pristupa:
Identifikuje i prikuplja sve tabele koje su bile u kaskadnoj relaciji sa ažuriranim nadređenim elementom.
Identifikuje i prikuplja korisnike kojima je odobren pristup povezanim tabelama putem nasleđenog pristupa.
Proverava korisnike kojima je dat direktan pristup povezanoj tabeli i uklanja ih iz kolekcije.
Uklanja nasleđeni pristup za prikupljene korisnike na prikupljenim tabelama.
Nakon čišćenja, korisnici koji su mogli da pristupe samo povezanim tabelama zbog kaskadne funkcije više ne mogu da pristupe redovima, obezbeđujući veću sigurnost.
Takođe pogledajte
Nadgledanje sistemskih poslova i upravljanje njima
Kreiranje i uređivanje relacije 1:N (jedan prema više) ili N:1 (više prema jedan)
Kreiranje relacija između tabela tipa N:N (više prema više)