Kontrol af dataadgang med visninger i SQL

Database visninger reducerer kompleksiteten af ​​slutbrugeroplevelsen og begrænser brugernes adgang til data indeholdt i databasetabeller. I det væsentlige bruger en visning resultaterne af en database forespørgsel for dynamisk at udfylde indholdet af en virtuel databasetabel.

Hvorfor bruge visninger?

Der er to primære grunde til at give brugerne adgang til data gennem visninger snarere end at give dem direkte adgang til databasetabeller:

  • Visninger giver enkel, granulær sikkerhed. Brug en visning til at begrænse de data, som en bruger har lov til at se i en tabel. For eksempel, hvis du har en medarbejdertabel og ønsker at give nogle brugere adgang til optegnelserne over fuldtidsansatte, kan du oprette en visning, der kun indeholder disse poster. Dette er meget lettere end alternativet (oprettelse og vedligeholdelse af en skyggetabel) og sikrer dataintegriteten.
  • Visninger forenkler brugeroplevelsen. Visninger skjuler komplekse detaljer om dine databasetabeller fra slutbrugere, der ikke behøver at se dem. Hvis en bruger dumper indholdet af en visning, ser de ikke de tabelkolonner, der ikke er valgt af visningen, og som de muligvis ikke forstår. Dette beskytter dem mod forvirring forårsaget af dårligt navngivne kolonner, unikke identifikatorer og
    instagram viewer
    tabel nøgler.

Oprettelse af en visning

Oprettelse af en visning er ret ligetil: Opret blot en forespørgsel, der indeholder de begrænsninger, du ønsker at håndhæve, og placer den inde i kommandoen CREATE VIEW. Her er den generelle syntaks:

CREATE VIEW viewname AS

For eksempel for at oprette fuldtidsansattes visning skal du udstede følgende kommando:

OPRET VISNING på fuldtid AS
VÆLG fornavn, efternavn, medarbejder-id
FRA medarbejdere
HVOR status = 'FT';

Ændring af en visning

Ændring af indholdet i en visning bruger nøjagtig den samme syntaks som oprettelsen af ​​en visning, men brug ALTER VIEW-kommandoen i stedet for CREATE VIEW-kommandoen. For eksempel for at tilføje en begrænsning til fuldtidsvisningen, der tilføjer medarbejderens telefonnummer til resultaterne, skal du udstede følgende kommando:

ALTER VIS Fuldtid AS
VÆLG fornavn, efternavn, medarbejder-id, telefon
FRA medarbejdere
HVOR status = 'FT';

Sletning af en visning

Det er nemt at fjerne en visning fra en database ved hjælp af kommandoen DROP VIEW. For eksempel for at slette fuldtidsansattes visning skal du bruge følgende kommando:

DROP VIEW på fuld tid; 

Visninger vs. Materialiserede synspunkter

En visning er et virtuelt bord. EN materialiseret visning er den samme visning skrevet til disken og adgang som om det var en tabel i sig selv.

Når du kører en forespørgsel mod en visning, udfører den sekundære forespørgsel, der kilder visningen, i realtid, så resultaterne føres tilbage til den oprindelige hovedforespørgsel. Hvis dine visninger er usædvanligt komplekse, eller din hovedforespørgsel kræver et stort antal hash-sammenføjninger blandt flere tabeller og visninger, udføres din hovedforespørgsel med en skildpaddes hastighed.

En materialiseret visning fremskynder udførelsen af ​​forespørgsler, fordi den fungerer som en præ-kompileret forespørgsel skrevet til disken og derfor udføres så hurtigt som en tabel. Imidlertid er materialiserede synspunkter kun lige så gode som begivenhedsprocedurerne, der opdaterer dem. I det lange løb, med god vedligeholdelse, fremskynder materialiserede synspunkter tingene med en lille kompromis i forsinkelsestid, uden behov for en masse skyggetabeller, der kan blive sovende og enten spiser diskplads eller kilde en andens forespørgsler uhensigtsmæssigt.