Näkymä (SQL) - View (SQL)

On tietokanta , joka on näkymä on tulos joukko on tallennettu kyselyn on tiedot , joihin tietokannan käyttäjät voivat kyselyn aivan kuin ne olisivat pysyvään tietokantaan kokoelma esine. Tämä ennalta määritetty kyselykomento pidetään tietokannan sanakirjassa. Toisin kuin tavalliset pohja taulukoita on relaatiotietokantaan , jotta ei kuulu fyysistä skeeman : seurauksena joukko, se on virtuaalinen taulukko lasketaan tai kootaan dynaamisesti tiedot tietokantaan, kun pääsy, että näkymä on pyydetty. Asiaankuuluvan taustataulukon tietoihin tehdyt muutokset heijastuvat näkymän myöhemmissä kutsumisissa näytettyihin tietoihin. Joissakin NoSQL- tietokannoissa näkymät ovat ainoa tapa kysellä tietoja.

Näkymät voivat tarjota etuja taulukoihin verrattuna:

  • Näkymät voivat edustaa osajoukkoa taulukossa olevista tiedoista. Tästä syystä näkymä voi rajoittaa alla olevien taulukoiden altistumisastetta ulkomaailmaan: tietyllä käyttäjällä voi olla lupa kysellä näkymää, mutta häneltä on evätty pääsy muuhun perustaulukkoon.
  • Näkymät voivat yhdistää ja yksinkertaistaa useita taulukoita yhdeksi virtuaaliseksi taulukoksi.
  • Näkymät voivat toimia koottuina taulukoina, joissa tietokantamoottori kootaan tiedot ( summa , keskiarvo jne.) Ja esittää lasketut tulokset osana dataa.
  • Näkymät voivat piilottaa tietojen monimutkaisuuden. Esimerkiksi näkymä saattaa näkyä Sales2000 tai Sales2001, läpinäkyvästi osittaa varsinainen taustalla pöydän.
  • Näkymien varastointi vie hyvin vähän tilaa; tietokanta sisältää vain näkymän määritelmän, ei kopiota kaikista sen esittämistä tiedoista.
  • Käytetystä SQL- moottorista riippuen näkymät voivat tarjota ylimääräistä turvallisuutta.

Aivan kuten funktio (ohjelmoinnissa) voi tuottaa abstraktin , niin voi myös tietokantanäkymä. Toisessa toimintojen rinnalla tietokannan käyttäjät voivat manipuloida sisäkkäisiä näkymiä, joten yksi näkymä voi koota tietoja muista näkymistä. Ilman näkymiä tietokantojen normalisointi toisen normaalin muodon yläpuolella muuttuisi paljon vaikeammaksi. Näkymät voivat helpottaa häviöttömän liitoksen hajoamisen luomista.

Aivan kuten perustaulukon riveiltä puuttuu määritelty järjestys, näkymän kautta saatavissa olevat rivit eivät näy oletuslajittelussa. Näkymä on relaatiotaulukko, ja relaatiomalli määrittelee taulukon riviryhmänä. Koska sarjaa ei ole järjestetty - määritelmän mukaan -, eivät myöskään näkymän rivit. Siksi ORDER BY -lauseke näkymämäärittelyssä on merkityksetön; SQL-standardi ( SQL: 2003 ) ei salli ORDER BY -lauseketta CREATE VIEW -komennon alakyselyssä, aivan kuten se hylätään CREATE TABLE -käskyssä. Kuitenkin lajitella dataa voidaan saada näkymä, samalla tavalla kuin kaikki muut pöydän - osana kyselyn lausuma siitä mieltä. Jotkin DBMS: t (kuten Oracle Database ) eivät kuitenkaan noudata tätä SQL-standardirajoitusta.

Vain luku -toiminnolla päivitettävät näkymät

Tietokannan harjoittajat voivat määritellä näkymät vain luku -muodossa oleviksi tai päivitettäviksi. Jos tietokantajärjestelmä pystyy määrittämään käänteisen kartoituksen näkymäkaavasta alla olevien pohjataulukoiden kaavioon, näkymä on päivitettävä. INSERT- , UPDATE- ja DELETE- toiminnot voidaan suorittaa päivitettävissä näkymissä. Vain luku -näkymät eivät tue tällaisia ​​toimintoja, koska DBMS ei pysty kartoittamaan muutoksia taustalla oleviin perustaulukoihin. Näkymän päivitys tapahtuu avaimen säilyttämisen avulla.

Jotkut järjestelmät tukevat näkymien liipaisujen sijasta määritelmää . Tämän tekniikan avulla voidaan määritellä muu logiikka suoritettavaksi näkymien lisäys-, päivitys- tai poistotoiminnon sijasta. Siten tietokantajärjestelmät voivat toteuttaa datamuutoksia vain luku -näkymien perusteella. INSTEAD OF triggeri ei kuitenkaan muuta itse näkymän vain luku- tai päivitettävää ominaisuutta.

Toteutuneet näkemykset

Eri tietokantojen hallintajärjestelmät ovat laajentaneet näkymistä vain luku-osajoukot tietojen , erityisesti toteutunut katsottu : pre-toteutettu, ei-virtuaalinen näkymiä käytetään yleisesti tietovarasto . Ne antavat staattisen tilannekuvan tiedoista ja voivat sisältää tietoja etälähteistä. Realisoidun näkymän tarkkuus riippuu sen päivitysten takana olevista liipaisumekanismeista.

Toteutetut näkymät otettiin käyttöön Oracle Database -ohjelmassa , kun taas IBM DB2 tarjoaa niin kutsuttuja "toteutettuja kyselytaulukoita" (MQT) samaan tarkoitukseen. Microsoft SQL Server esitteli 2000-versiossaan indeksoidut näkymät, jotka tallentavat vain erillisen hakemiston taulukosta, mutta eivät kaikkia tietoja. PostgreSQL toteutti toteutuneet näkymät 9.3-julkaisussaan.

Vastaavuus

Näkymä vastaa sen lähdekyselyä. Kun kyselyt suoritetaan näkymiä vastaan, kyselyä muokataan. Jos esimerkiksi on olemassa näkymä nimeltä tilit_näkymä sisällön kanssa seuraavasti:

-- 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

sitten sovellus voi suorittaa yksinkertaisen kyselyn, kuten:

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

RDBMS ottaa sitten yksinkertaisen kyselyn, korvaa vastaavan näkymän ja lähettää sitten kyselyn optimoijalle seuraavan :

-- 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        )

Tämän jälkeen optimoija poistaa tarpeettomat kentät ja monimutkaisuuden (esimerkiksi: osoitetta ei tarvitse lukea, koska vanhemman kutsu ei käytä sitä) ja lähettää kyselyn SQL-moottorille käsittelyä varten.

Katso myös

Ulkoiset linkit