Duomenų prieigos kontrolė naudojant SQL peržiūras

click fraud protection

Duomenų bazė rodiniai sumažina galutinio vartotojo patirties sudėtingumą ir apriboja vartotojų prieigą prie duomenų bazės lentelėse esančių duomenų. Iš esmės rodinyje naudojami a rezultatai duomenų bazės užklausa dinamiškai užpildyti virtualios duomenų bazės lentelės turinį.

Kodėl verta naudoti rodinius?

Yra dvi pagrindinės priežastys suteikti vartotojams prieigą prie duomenų per rodinius, o ne suteikti jiems tiesioginę prieigą prie duomenų bazės lentelių:

  • Vaizdai suteikia paprastą, detalų saugumą. Naudokite rodinį, kad apribotumėte duomenis, kuriuos vartotojui leidžiama matyti lentelėje. Pvz., Jei turite darbuotojų lentelę ir norite suteikti kai kuriems vartotojams prieigą prie visą darbo dieną dirbančių darbuotojų įrašų, galite sukurti rodinį, kuriame yra tik šie įrašai. Tai yra daug lengviau nei alternatyva (sukurti ir prižiūrėti šešėlinę lentelę) ir užtikrinti duomenų vientisumą.
  • Rodiniai supaprastina vartotojo patirtį. Rodiniai slepia sudėtingą jūsų duomenų bazės lentelių informaciją nuo galutinių vartotojų, kuriems jų nereikia matyti. Jei vartotojas išvalo rodinio turinį, jis nematys lentelės stulpelių, kurių nėra rodinys, ir gali nesuprasti. Tai apsaugo juos nuo painiavos, kurią sukelia blogai pavadinti stulpeliai, unikalūs identifikatoriai ir
    instagram viewer
    stalo raktai.

Vaizdo kūrimas

Vaizdo kūrimas yra gana paprastas: tiesiog sukurkite užklausą, kurioje yra apribojimai, kuriuos norite įgyvendinti, ir įdėkite ją į komandą CREATE VIEW. Štai tokia sintaksė:

CREATE VIEW rodinio pavadinimas AS

Pvz., Norėdami sukurti visą darbo dieną dirbančio darbuotojo rodinį, išleiskite šią komandą:

KURTI PERŽIŪRĄ visą darbo dieną
PASIRINKITE vardą, pavardę, darbuotojo ID
IŠ darbuotojų
WHERE status = 'FT';

Vaizdo modifikavimas

Keičiant rodinio turinį naudojama ta pati sintaksė kaip ir kuriant rodinį, tačiau vietoj komandos CREATE VIEW naudokite komandą ALTER VIEW. Pvz., Norėdami pridėti etatinio rodinio apribojimą, kuris prie rezultatų prideda darbuotojo telefono numerį, pateikite šią komandą:

ALTER VIEW full time AS
PASIRINKITE vardą, pavardę, darbuotojo ID, telefoną
IŠ darbuotojų
WHERE status = 'FT';

Vaizdo trynimas

Naudojant komandą DROP VIEW paprasta pašalinti rodinį iš duomenų bazės. Pvz., Jei norite ištrinti visą darbo dieną dirbančio darbuotojo rodinį, naudokite šią komandą:

DROP VIEW visą darbo dieną; 

Peržiūros prieš Materializuotos nuomonės

Rodinys yra virtuali lentelė. A materializuotas vaizdas yra tas pats rodinys, įrašytas į diską ir pasiekiamas taip, tarsi tai būtų lentelė.

Kai vykdote užklausą prieš rodinį, antrinė užklausa, rodanti rodinį, vykdoma realiuoju laiku, tada šie rezultatai grąžinami į pradinę pagrindinę užklausą. Jei jūsų rodiniai yra išskirtinai sudėtingi arba jei pagrindinei užklausai reikia, kad tarp kelių lentelių ir rodinių sujungtų daug maišos, jūsų pagrindinė užklausa bus vykdoma vėžlio greičiu.

Realizuotas rodinys paspartina užklausos vykdymą, nes jis veikia kaip iš anksto sukompiliuota užklausa, įrašyta į diską, todėl vykdoma taip pat greitai, kaip lentelė. Tačiau materializuotos nuomonės yra tik tokios geros, kaip jas atnaujinančios renginio procedūros. Ilgainiui, gerai prižiūrint, materializuoti rodiniai paspartina reikalus su nedideliu kompromisu atsilikimo atnaujinimo laiku, be reikia daugybės šešėlinių lentelių, kurios gali neveikti ir valgyti vietos diske, arba pateikti kažkieno užklausas netinkamai.

instagram story viewer