Kontrollere datatilgang med visninger i SQL

click fraud protection

Database visninger reduserer kompleksiteten i sluttbrukeropplevelsen og begrenser brukernes tilgang til data som finnes i databasetabeller. I hovedsak bruker en visning resultatene av a databasespørring for å fylle innholdet i en virtuell databasetabell dynamisk.

Hvorfor bruke visninger?

Det er to hovedgrunner til å gi brukerne tilgang til data gjennom visninger i stedet for å gi dem direkte tilgang til databasetabeller:

  • Visninger gir enkel, granulær sikkerhet. Bruk en visning for å begrense dataene som en bruker får se i en tabell. Hvis du for eksempel har en ansatt-tabell og ønsker å gi noen brukere tilgang til postene til heltidsansatte, kan du opprette en visning som bare inneholder disse postene. Dette er mye enklere enn alternativet (lage og vedlikeholde en skyggetabell) og sikrer integriteten til dataene.
  • Visninger forenkler brukeropplevelsen. Visninger skjuler komplekse detaljer om databasetabellene dine for sluttbrukere som ikke trenger å se dem. Hvis en bruker dumper innholdet i en visning, ser de ikke tabellkolonnene som ikke er valgt av visningen, og som de kanskje ikke forstår. Dette beskytter dem mot forvirring forårsaket av dårlig navngitte kolonner, unike identifikatorer og
    instagram viewer
    bordnøkler.

Lage en visning

Å lage en visning er ganske grei: Bare lag et spørsmål som inneholder begrensningene du vil håndheve, og plasser det i CREATE VIEW-kommandoen. Her er den generelle syntaksen:

CREATE VIEW viewname AS

For eksempel, for å opprette den heltidsansattes visning, gi følgende kommando:

SKAP VIS fulltid AS
VELG fornavn, etternavn, ansatt-ID
FRA ansatte
WHERE status = 'FT';

Endre en visning

Endring av innholdet i en visning bruker nøyaktig samme syntaks som opprettelsen av en visning, men bruk ALTER VIEW-kommandoen i stedet for CREATE VIEW-kommandoen. Hvis du for eksempel vil legge til en begrensning i heltidsvisningen som legger til ansattes telefonnummer i resultatene, utsteder du følgende kommando:

ALTER VIS heltid AS
VELG fornavn, etternavn, ansatt-ID, telefon
FRA ansatte
WHERE status = 'FT';

Slette en visning

Det er enkelt å fjerne en visning fra en database ved hjelp av DROP VIEW-kommandoen. Hvis du for eksempel vil slette heltidsansattes visning, bruker du følgende kommando:

DROP VIEW på heltid; 

Visninger vs. Materialiserte visninger

En visning er et virtuelt bord. EN materialisert syn er den samme visningen skrevet til disken og tilgjengelig som om det var en tabell i seg selv.

Når du kjører et spørsmål mot en visning, utfører den sekundære spørringen som kilder visningen i sanntid, deretter resultatene tilbake til den opprinnelige hovedspørringen. Hvis visningene dine er eksepsjonelt komplekse, eller hvis hovedforespørselen krever et stort antall hash-sammenføyninger blant flere tabeller og visninger, vil hovedforespørselen utføres med en skilpaddes hastighet.

En materialisert visning gir raskere kjøring av spørring fordi den fungerer som et forhåndskompilert spørsmål skrevet til disk og kjøres derfor like raskt som en tabell. Imidlertid er materialiserte synspunkter bare like gode som hendelsesprosedyrene som oppdaterer dem. I det lange løp, med godt vedlikehold, fremskynder materialiserte utsikter ting med en liten avveining i forsinkelsestid, uten behov for en haug med skyggetabeller som kan bli sovende og enten spiser diskplass eller kilder til andres spørsmål upassende.

instagram story viewer