Kontrola pristupa podacima s prikazima u SQL-u

Baza podataka pogledi smanjuju složenost iskustva krajnjeg korisnika i ograničavaju pristup korisnicima podacima u tablicama baze podataka. U osnovi, pogled koristi rezultate a upit baze podataka za dinamičko popunjavanje sadržaja virtualne tablice baze podataka.

Zašto koristiti prikaze?

Dva su osnovna razloga da se korisnicima omogući pristup podacima putem pogleda, umjesto da im se omogući izravan pristup tablicama baze podataka:

  • Pogledi pružaju jednostavnu, granuliranu sigurnost. Upotrijebite prikaz za ograničavanje podataka koje korisnik smije vidjeti u tablici. Na primjer, ako imate tablicu zaposlenika i želite nekim korisnicima pružiti pristup evidenciji stalno zaposlenih, možete stvoriti prikaz koji sadrži samo te zapise. To je puno lakše od alternative (stvaranje i održavanje tablice sjena) i osigurava integritet podataka.
  • Pogledi pojednostavljuju korisničko iskustvo. Pogledi skrivaju složene detalje tablica vaše baze podataka od krajnjih korisnika koji ih ne trebaju vidjeti. Ako korisnik izbaci sadržaj prikaza, neće vidjeti stupce tablice koje prikaz nije odabrao i možda ih neće razumjeti. To ih štiti od zabune koju uzrokuju loše imenovani stupci, jedinstveni identifikatori i
    instagram viewer
    tipke stola.

Stvaranje pogleda

Stvaranje pogleda je prilično jednostavno: Jednostavno stvorite upit koji sadrži ograničenja koja želite nametnuti i smjestite ga u naredbu CREATE VIEW. Evo opće sintakse:

STVARI PRIKAZ naziv pogleda AS

Na primjer, da biste stvorili prikaz zaposlenika s punim radnim vremenom, izdajte sljedeću naredbu:

STVARI POGLED puno radno vrijeme KAO
ODABERITE ime, prezime, id zaposlenika
OD zaposlenika
GDJE status = 'FT';

Izmjena prikaza

Mijenjanje sadržaja pogleda koristi potpuno istu sintaksu kao i stvaranje pogleda, ali upotrijebite naredbu ALTER VIEW umjesto naredbe CREATE VIEW. Na primjer, da biste dodali ograničenje na prikaz punog radnog vremena koji dodaje telefonski broj zaposlenika rezultatima, izdajte sljedeću naredbu:

ALTER VIEW full time AS
ODABERITE ime, prezime, ID zaposlenika, telefon
OD zaposlenika
GDJE status = 'FT';

Brisanje pogleda

Jednostavno je ukloniti prikaz iz baze podataka pomoću naredbe DROP VIEW. Na primjer, da biste izbrisali prikaz zaposlenika s punim radnim vremenom, upotrijebite sljedeću naredbu:

DROP VIEW puno radno vrijeme; 

Pregledi vs. Materijalizirani pogledi

Pogled je virtualna tablica. A materijalizirani pogled je li taj isti prikaz zapisan na disk i kojem se pristupa kao da je to tablica sama po sebi.

Kada pokrenete upit prema prikazu, sekundarni upit koji daje izvor pogleda izvršava se u stvarnom vremenu, a zatim se ti rezultati vraćaju u izvorni glavni upit. Ako su vaši pogledi izuzetno složeni ili vaš glavni upit zahtijeva velik broj hash spajanja između nekoliko tablica i pogleda, vaš će se glavni upit izvršiti brzinom kornjače.

Materijalizirani prikaz ubrzava izvršavanje upita jer funkcionira kao unaprijed sastavljeni upit zapisan na disk i stoga se izvršava jednako brzo kao tablica. Međutim, materijalizirani pogledi toliko su dobri koliko i postupci događaja koji ih osvježavaju. Dugoročno, uz dobro održavanje, materijalizirani pogledi ubrzavaju stvari uz mali kompromis u vremenu kašnjenja osvježavanja, bez potreba za gomilom tablica sjena koje mogu postati uspavane i pojesti prostor na disku ili donijeti tuđe upite neprimjereno.

instagram story viewer