Vis (SQL) - View (SQL)

I en database , en visning er resultatet sæt af en lagret forespørgsel data , som de database- brugere kan forespørge, ligesom de ville i en vedvarende database samling objekt. Denne forudindstillede forespørgselskommando opbevares i databaseordbogen. I modsætning til almindelige basistabeller i en relationsdatabase udgør en visning ikke en del af det fysiske skema : som et resultatsæt er det en virtuel tabel, der beregnes eller samles dynamisk ud fra data i databasen, når der anmodes om adgang til den visning. Ændringer anvendt på dataene i en relevant underliggende tabel afspejles i de data, der vises i efterfølgende påkald af visningen. I nogle NoSQL- databaser er visninger den eneste måde at forespørge på data på.

Visninger kan give fordele i forhold til tabeller:

  • Visninger kan repræsentere et undersæt af dataene i en tabel. Derfor kan en visning begrænse graden af ​​eksponering af de underliggende tabeller for den ydre verden: en given bruger kan have tilladelse til at forespørge visningen, mens den nægtes adgang til resten af ​​basistabellen.
  • Visninger kan deltage i og forenkle flere tabeller til en enkelt virtuel tabel.
  • Visninger kan fungere som aggregerede tabeller, hvor databasemotoren aggregerer data ( sum , gennemsnit osv.) Og præsenterer de beregnede resultater som en del af dataene.
  • Visninger kan skjule kompleksiteten af ​​data. For eksempel kan en visning blive vist som Sales2000 eller Sales2001, hvor den aktuelle underliggende tabel opdeles transparent .
  • Visninger tager meget lidt plads til at gemme; databasen indeholder kun definitionen af ​​en visning, ikke en kopi af alle de data, den præsenterer.
  • Afhængigt af den anvendte SQL- motor kan visninger give ekstra sikkerhed.

Ligesom en funktion (i programmering) kan give abstraktion , kan en databasevisning også. I en anden parallel med funktioner kan databasebrugere manipulere indlejrede visninger, således at en visning kan samle data fra andre visninger. Uden brug af synspunkter ville normaliseringen af databaser over anden normale form blive meget vanskeligere. Visninger kan gøre det lettere at skabe tabsfri dekomponering af sammenføjning.

Ligesom rækker i en basistabel mangler nogen defineret rækkefølge, vises rækker, der er tilgængelige gennem en visning, ikke med nogen standardsortering. En visning er en relationstabel, og relationsmodellen definerer en tabel som et sæt af rækker. Da sæt ikke er ordnet - pr. Definition - er rækkerne i en visning heller ikke. Derfor er en ORDER BY- klausul i synsdefinitionen meningsløs; SQL-standarden ( SQL: 2003 ) tillader ikke en ORDER BY-klausul i underforespørgslen af ​​en CREATE VIEW-kommando, ligesom den nægtes i en CREATE TABLE-sætning. Men sorterede data kan fås fra en visning, på samme måde som enhver anden tabel - som en del af en forespørgsel erklæring om dette synspunkt. Ikke desto mindre overholder nogle DBMS (såsom Oracle Database ) ikke denne SQL-standardbegrænsning.

Skrivebeskyttet kontra opdaterbare visninger

Databasepraktikere kan definere visninger som skrivebeskyttede eller opdaterbare. Hvis databasesystemet kan bestemme den omvendte kortlægning fra visningsskemaet til skemaet for de underliggende basistabeller, kan visningen opdateres. INSERT- , UPDATE- og DELETE- operationer kan udføres i visninger, der kan opdateres. Skrivebeskyttet visninger understøtter ikke sådanne operationer, fordi DBMS ikke kan kortlægge ændringerne til de underliggende basistabeller. En visningsopdatering udføres ved nøglebevaring.

Nogle systemer understøtter definitionen af ​​INSTEAD OF triggers on views. Denne teknik gør det muligt at definere anden logik til udførelse i stedet for en indsættelse, opdatering eller sletning af visningerne. Således kan databasesystemer implementere datamodifikationer baseret på skrivebeskyttede visninger. En INSTEAD OF-trigger ændrer dog ikke den skrivebeskyttede eller opdaterbare egenskab af selve visningen.

Materialiserede synspunkter

Forskellige databasestyringssystemer har udvidet visningerne fra skrivebeskyttede delmængder af data , især materialiserede visninger : forudførte, ikke-virtuelle visninger, der ofte bruges i datalagring . De giver et statisk øjebliksbillede af dataene og kan omfatte data fra eksterne kilder. Nøjagtigheden af ​​en materialiseret visning afhænger af hyppigheden af ​​udløsermekanismer bag dens opdateringer.

Materialiserede visninger blev introduceret af Oracle Database , mens IBM DB2 leverer såkaldte "materialiserede forespørgselstabeller" (MQT'er) til samme formål. Microsoft SQL Server introducerede i sin 2000-version indekserede visninger, der kun gemmer et separat indeks fra tabellen, men ikke hele dataene. PostgreSQL implementerede materialiserede synspunkter i sin 9.3-udgivelse.

Ækvivalens

En visning svarer til kildeforespørgslen. Når forespørgsler køres mod visninger, ændres forespørgslen. For eksempel, hvis der findes en visning med navnet accounts_view med indholdet som følger:

-- accounts_view:
-------------
SELECT name,
       money_received,
       money_sent,
       (money_received - money_sent) AS balance,
       address,
	   ...
  FROM table_customers c 
  JOIN accounts_table a 
    ON a.customer_id = c.customer_id

så kunne applikationen køre en simpel forespørgsel såsom:

-- Simple query
------------
SELECT name,
       balance
  FROM accounts_view

RDBMS tager derefter den enkle forespørgsel, erstatter den tilsvarende visning og sender derefter følgende til forespørgselsoptimering :

-- Preprocessed query:
------------------
SELECT name,
       balance
  FROM (SELECT name,
               money_received,
               money_sent,
               (money_received - money_sent) AS balance,
               address,
			    ...
          FROM table_customers c JOIN accounts_table a
               ON a.customer_id = c.customer_id        )

Optimizer fjerner derefter unødvendige felter og kompleksitet (for eksempel: det er ikke nødvendigt at læse adressen, da den overordnede indkaldelse ikke gør brug af den) og derefter sender forespørgslen til SQL-motoren til behandling.

Se også

eksterne links