Mitä ovat VIEWS-näkymät tietokantoissa? Ja miksi niitä tarvitaan? Näkymät ja taulukkoobjektit.

Edustus

Poistaminen

Uudelleennimeäminen

Muutos

Tallennetun prosessinhallinta

Jos haluat muuttaa olemassa olevaa toimintosarjaa, käytä ALTER PROC -käskyä. Tämän komennon parametrit ovat samankaltaisia ​​kuin toimintosarjan luomiskomennon parametrit.

Tätä varten sinun on käytettävä erityistä järjestelmään tallennettua menettelyä:

sp_rename 'ObjectName' 'NewObjectName'.

Voit poistaa tallennetun toimintosarjan käyttämällä Transact-SQL-komentoa:

DROP PROC ProcedureName.

Edustus(View) on toinen objekti, joka muodostaa minkä tahansa tietokannan loogisen rakenteen. Loppukäyttäjien näkymä näyttää taulukolta, mutta se ei sisällä tietoja, vaan vain esittää ne. Fyysisesti esitettävät tiedot sijaitsevat eri tietokantataulukoissa.

Näkymä toteutetaan tallennettuna kyselynä, jonka perusteella tehdään valinta erilaisista tietokantataulukoista.

Näkymillä on seuraavat edut:

· varmistaa tietojen luottamuksellisuus, tk. antaa sinun näyttää vain tarvittavat tiedot piilottaen tietyt kentät;

· yksinkertaistaa tietojen esittämistä, koska käyttäjä työskentelee näkymän kanssa kuin yhden taulukon kanssa, joka luodaan useista taulukoista valitun datan perusteella;

· hallita tiedon käyttöoikeuksia, esimerkiksi sen sijaan, että myönnettäisiin oikeuksia kyselyjen suorittamiseen tietyissä taulukkokentissä, on helpompi sallia kyselyjen suorittaminen näkymän kautta.

MS SQL Server tarjoaa erilaisia ​​tapoja luoda näkymiä: käyttämällä Transact-SQL-työkaluja ja hallintatyökalussa johtamisstudio.

Näkymän luomiseen käytetään CREATE VIEW -komentoa, roolien jäsenillä on oikeus suorittaa se sysadmin, db_owner, db_dlladmin:

LUO NÄKYMÄ NäkymänNimi [(kenttä [,...n])]

RequestSelections

Kun määrittelet NäytäNimi objektien nimeämisessä on noudatettava aiemmin määriteltyjä sääntöjä, eikä tämä nimi saa olla sama kuin tietokannassa jo olemassa olevan taulukon nimi. Parametri SALAUKSEN KANSSA määrittää pyyntökoodin salauksen ja varmistaa, että käyttäjät eivät voi tarkastella ja käyttää sitä.

RequestSelections on SELECT-lause, jonka parametrit määräävät näkymän sisällön. Näkymien kenttien nimet määritetään joko käyttämällä aliaksia select-käskyssä tai määritettynä parametrissa ala.

Luodaan esimerkiksi näkymä, joka sisältää vain sellaisia ​​tietoja yrityksen työntekijöistä AdventureWorks , kuten: työntekijän asema ja kirjautuminen, syntymäaika.

LUO NÄKYMÄ InfoEmployees ([Numero], [Sukunimi], [Syntymäaika]) AS

SELECT BusinessEntityID, JobTitle + "(" + LoginID + ")",

MUUNNA(merkki(10), syntymäpäivä, 104)

FROM HumanResources.Employee

Projektion sisällön tarkastelemiseksi suoritetaan seuraava kysely:

SELECT * FROM InfoEmployees

Tämän näkymän avulla pääsyä joihinkin lähdetaulukon kenttiin on rajoitettu työntekijä, tässä tapauksessa sanomme, että taulukko on päällekkäin pystysuora suodatin, eli rajoitettu pääsy joihinkin taulukon kenttiin ilman saraketason suojausta.

Jos tietueen valintaehto on määritelty valintakyselykoodissa, sanotaan, että taulukko on peitetty vaakasuora suodatin. Esimerkiksi seuraava näkymä tarjoaa pääsyn tietoihin valmistajista, joilla on online-tilauspalveluita:

LUO NÄKYMÄ OnlineVendorsista

FROM Osto.Myyjä

WHERE PurchasingWebServiceURL EI OLE NULL

Valintakysely voi sisältää minkä tahansa monimutkaisen SELECT-komennon, mutta osion käyttö on kielletty TILAA, jota voidaan myöhemmin käyttää valittaessa tietoja luodusta näkymästä. On myös suositeltavaa, että luot näkymiä vain sellaisten taulukoiden perusteella, joissa on sisäinen liitos.

Luodaan esimerkiksi näkymä, jossa näkyy kunkin tilauksen kokonaishinta sekä asiakas ja hänen numeronsa:

LUO NÄKYMÄ Infotilaukset

SELECT Etunimi + " " + Sukunimi nimellä [Yrityksen nimi],

SalesOrderHeader.SalesOrderID muodossa [tilausnumero],

Muunna (raha, summa(yksikköhinta*tilausmäärä*(1-yksikköhintaalennus)),0) [yhteensä]

FROM(Person.Contact INNER JOIN Sales.SalesOrderHeader

ON Contact.ContactID=SalesOrderHeader.ContactID)

SISÄLIITTYMINEN Sales.SalesOrderDetail

ON SalesOrderHeader.SalesOrderID=SalesOrderDetail.SalesOrderID

GROUP BY SalesOrderHeader.SalesOrderID, Etunimi + " " + Sukunimi

Muista, että näkymien käyttö ei lisää suorituskykyä. Näkymään pääseminen saa aikaan sen sisäisen koodin suorittamisen, eli parhaimmillaan näkymän EI vähentää tietokannan suorituskykyä.

Edustus

Näkymät ovat tietokantaan tallennettuja nimettyjä tiedonhakukyselyjä (SELECT-käskyt T-SQL:ssä). Näkymiä voidaan käyttää kyselyissä aivan kuten taulukoita riippumatta niiden SELECT-käskyjen monimutkaisuudesta. Kuten taulukot, myös näkymät koostuvat kentistä ja tietueista. Toisin kuin taulukot, ne eivät kuitenkaan sisällä mitään tietoja (poikkeuksena materialisoituneet (indeksoidut) näkymät).

Näkymät perustuvat aina taulukoihin ja niitä käytetään noutamaan näihin taulukoihin tallennettuja tietoja tietyissä yhteyksissä. Näkymien avulla voit saavuttaa korkeamman tietoturvan ja antaa suunnittelijalle mahdollisuuden mukauttaa käyttäjämallia.

Näkymämoottoria voidaan käyttää useista syistä.

  • Se tarjoaa tehokkaan ja joustavan suojausmekanismin, jonka avulla voit piilottaa tietyt tietokannan osat tietyiltä käyttäjiltä. Käyttäjä ei ole tietoinen sellaisten attribuuttien tai monikoiden olemassaolosta, jotka eivät ole käytettävissä hänen käytettävissään olevissa näkymissä. (Pöytien vaaka- ja pystyjako).
  • Sen avulla käyttäjät voivat järjestää pääsyn tietoihin heille sopivimmalla tavalla, joten eri käyttäjät voivat tarkastella samaa dataa samanaikaisesti täysin eri tavoilla. (Erityisesti attribuuttien uudelleennimeäminen).
  • Sen avulla voit yksinkertaistaa monimutkaisia ​​toimintoja perussuhteilla. Esimerkiksi, jos näkymä on määritelty kahden suhteen liitoksen perusteella, niin käyttäjä voi suorittaa sille yksinkertaisia ​​unaarisia valinta- ja projektiooperaatioita, jotka DBMS muuntaa automaattisesti vastaaviksi operaatioiksi kantaliitoksen kanssa. suhteet. Yksi tärkeimmistä syistä näkymien käyttämiseen on usean taulukon kyselyiden yksinkertaistaminen. Kun määrität näkymän, jossa on usean taulukon liitos, voit käyttää yksinkertaisia ​​yhden taulukon kyselyitä kyseisessä näkymässä sen sijaan, että monimutkaiset kyselyt suorittaisivat samaa usean taulukon liitosta.

Kaikki nämä esimerkit osoittavat tietyn asteisen loogisen datan riippumattomuuden, joka saavutetaan näkymien käytöllä. Todellisuudessa näkymät tarjoavat kuitenkin tärkeämmän tyyppisen loogisen riippumattomuuden tiedoista, jotka liittyvät käyttäjien suojaamiseen käsitteellisiltä skeeman uudelleenjärjestelyiltä. Jos esimerkiksi relaatioon lisätään uusi attribuutti, käyttäjät eivät edes ole tietoisia sen olemassaolosta, ennen kuin heidän näkymämäärittelynsä sisältävät kyseisen attribuutin. Jos olemassa oleva relaatio järjestetään uudelleen tai hajotetaan, sitä käyttävä näkymä voidaan määrittää uudelleen, jotta käyttäjät voivat jatkaa tietojen käsittelyä vanhassa muodossa.

Näkymien luominen Management Studiossa

SQL Server Management Studiossa näkymiä voidaan luoda, muokata, suorittaa ja lisätä muihin kyselyihin. Koska näkymä ei ole muuta kuin tallennettu SELECT-käsky, sen luominen alkaa tämän käskyn suunnittelusta. SELECT-käsky, jos se on kelvollinen, voidaan leikata ja liittää näkymään melkein mistä tahansa työkalusta. Management Studiossa näkymät on lueteltu kunkin tietokannan oman solmun alla.

Kontekstivalikon "Luo näkymä" -komento käynnistää Query Builderin näkymän luontitilassa.

Management Studio Query Builder pystyy näyttämään useita työkalupalkista valittuja paneeleja samanaikaisesti.

Varsinainen SQL-koodi näytetään ja sitä muokataan SQL-koodipaneelissa. Sarakkeita voidaan lisätä näkymään Kaavio-, Ruudukko- ja SQL-koodiruuduissa. Taulukoiden lisäystoiminto on käytettävissä pikavalikosta sekä työkalupalkista. Täällä voit lisätä taulukoita, muita näkymiä, synonyymejä ja taulukkofunktioita.

Taulukoita ja muita näkymiä voidaan lisätä vetämällä ne kaavioruutuun objektiselaimesta tai käyttämällä työkalupalkin tai kontekstivalikon Lisää taulukko -komentoa.

Lisää johdettuja taulukoita -ominaisuus pystyy lisäämään alikyselyn näkymien FROM-lauseeseen tietolähteenä. Tämän alikyselyn SQL-koodi voidaan syöttää manuaalisesti SQL-ruutuun. Tarkista SQL-syntaksi -painikkeella voit tarkistaa syötettyjen SQL-lauseiden syntaksin. Se ei kuitenkaan tarkista taulukoiden, sarakkeiden ja näkymien nimiä SELECT-käskyssä.

Kun näkymä on luotu, sitä voi muokata Management Studiossa korostamalla nimen ja valitsemalla pikavalikosta Project-komennon.

Voit testata näkymän SELECT-käskyä kyselyn suunnittelijassa napsauttamalla Suorita SQL-koodi -painiketta tai painamalla näppäintä.

Näkymän kontekstivalikko sisältää myös komentoja sen kokotekstin indeksoinnin hallintaan ja uudelleennimeämiseen. Sovelluksen ominaisuudet sisältävät lisäsuojausasetuksia ja käyttöoikeuksia. Jos haluat poistaa näkymän tietokannasta, valitse se, valitse pikavalikosta "Poista"-komento tai paina vastaavaa näppäintä.

Näkymien luominen koodillaSQL

Näkymiä voidaan muokata kyselyeditorissa suorittamalla SQL-komentosarjat, jotka käyttävät DDL-komentoja: CREATE, ALTER ja DROP. Näkymän luomisen perussyntaksi on seuraava:

LUO NÄKYMÄ näkymän_nimi

SELECT_lausunto

Jos esimerkiksi luodaan ohjelmallisesti v_Customer-näkymä, joka palauttaa asiakasluettelon asuinkaupungin mukaan, kyselyikkunassa suoritetaan seuraava komento.

LUO NÄKYMÄ.

SELECT dbo.Customer.IdCust, dbo.Customer.FName, dbo.Customer.LNname, dbo.City.CityName

FROM dbo.Customer SISÄINEN LIITTYMINEN

dbo.City PÄÄLLÄ dbo.Customer.IdCity = dbo.City.IdCity

Jo olemassa olevan näkymän luominen aiheuttaa virheen. Kun näkymä on luotu, SELECT-lausetta voidaan helposti muokata ALTER-komennolla:

ALTER view_name

muokattu_SELECT_lausunto

Jos näkymän muokkaamiseen liittyy myös sen käyttöoikeuksien muuttaminen, se kannattaa poistaa ja luoda uudelleen, koska näkymän poistaminen poistaa myös aiemmin asetetut käyttöoikeudet.

Voit poistaa näkymän tietokannasta käyttämällä DROP-komentoa:

DROP VIEW view_name

TuomitaTILAUS BYja esitykset

Näkymät toimivat tietolähteenä muille kyselyille, eivätkä ne tue sisäistä lajittelua. Esimerkiksi seuraava koodi hakee tiedot v_Customer-näkymästä ja järjestää ne LNname- ja FName-kenttien mukaan. ORDER BY -lause ei ole osa v_Customer-näkymää, mutta sitä sovelletaan siihen kutsumalla SQL-käsky:

VALITSE IdCust, FName, LName, CityName

LÄHETTÄJÄ dbo.v_Customer

TILAA NIMI, FNimi

Näkemysten toteuttaminen

Näkymää ei voi suorittaa itsestään. SELECT-käsky, johon näkymä perustuu, voidaan suorittaa, mutta tässä muodossa SQL-käsky ei teknisesti ottaen ole näkymä. Näkymä on hyödyllinen vain tietolähteenä kyselyssä.

Siksi Management Studion Open View -kontekstivalikko luo automaattisesti yksinkertaisen kyselyn, joka hakee kaikki sarakkeet näkymästä. Näkymä näyttää vain tulokset. Muiden paneelien ottaminen käyttöön Query Designerissa antaa kuitenkin mahdollisuuden nähdä itse kyselyn, kun se haetaan näkymästä.

SQL-ruutu näyttää näkymän SELECT-käskyn FROM-lauseessa. Tässä muodossa käyttäjät viittaavat näkymään:

VALITSE *

FROM v_Customer

Tehtävä itsenäiseen työskentelyyn: Luo näkymä, joka palauttaa tilausluettelon, jossa on asiakkaan nimi ja kunkin tilauksen tuotteiden määrä. Tuloksen tulee siis sisältää seuraavat attribuutit: IdOrd, OrdDate, IdCust, FName, LName, Tilauksen tuotetyyppien lukumäärä.

1) Edustuksen käsite
Näkymät ovat tietokantaobjekteja, jotka eivät sisällä omia taulukoitaan, mutta niiden sisältö otetaan muista taulukoista tai näkymistä suorittamalla kysely.

2) Luo näkymiä
LUO NÄKYMÄ
[()]
KUTEN
TARKISTA VAIHTOEHTO]

Huomautuksia:
SQL Serverissä näkymän teksti voidaan salata käyttämällä WITH ENCRYPTION -vaihtoehtoa näkymän nimen perässä.

3) Näkymien poistaminen
DROP VIEW CASDADE|RESTRICT

merkintä:
RAJOITTAA– näkymässä ja rajoituksissa ei saa olla viittauksia poistettavaan näkymään, muuten poistaminen evätään.
CASADE- tarkoittaa kaikkien tähän näkymään viittaavien kohteiden poistamista.

4) Avainsanat
a) REKURSIIVINEN
Luodaan näkymä, joka saa arvot itsestään.
b) TARKKIVAIHTOEHDOLLA
Estää näkymiin perustuvat taulukoiden päivitykset, jos muutettavat tai lisättävät tiedot eivät näy näkymässä.
Kielto koskee vain arvoja, jotka eivät täytä WHERE-lausekkeen ehtoja.
c) PAIKALLINEN
Säätimet, jotka muuttuvat perustaulukoiksi, näkyvät vain nykyisessä näkymässä.
d) CASKASDI
Määrittää, näkyvätkö muutokset kaikissa tässä näkymässä määritellyissä näkymissä.

5) Rajoitukset ja ominaisuudet
1. Sarakkeiden nimet määritetään yleensä, kun jotkin sarakkeet on laskettu ja siksi niitä ei nimetä, ja myös silloin, kun kahdella tai useammalla sarakkeella on sama nimi kyselyn vastaavissa taulukoissa. InterBasessa aina.
2. Useissa DBMS-järjestelmissä on mahdotonta käyttää ORDER BY -lausetta, joka tarjoaa lajittelun.
3. Näkymiä voidaan yhdistää sekä perustaulukoihin että muihin näkymiin kyselemällä molemmista objekteista.

6) Kriteerit näkymien päivittämiselle
1. Sen tulisi perustua vain yhteen taulukkoon. Sen tulisi mieluiten sisältää taulukon ensisijainen avain.
2. Se ei saa sisältää sarakkeita, jotka on saatu aggregointifunktioiden soveltamisen tuloksena.
3. Se ei voi sisältää DISTINCT-spesifikaatiota määritelmässään.
4. Se ei voi käyttää määritelmässään GROUP BY tai HAVING.
5. Se ei saa sisältää alikyselyjä.
6. Jos se on määritelty toisessa näkymässä, sen on myös oltava päivitettävissä.
7. Se ei voi sisältää vakioita, merkkijonoja tai lausekkeita tuloskenttien luetteloon. Kenttien järjestäminen ja uudelleennimeäminen ei ole sallittua.
8. INSERT-käskyssä sen on sisällettävä kaikki taustalla olevien perustaulukkonäkymien kentät, joissa EI ole NULL-rajoituksia, mutta oletusarvoksi voidaan määrittää eri arvo.

7) Esimerkkejä

1. LUO NÄKYMÄ LondonStaffista
AS SELECT * FROM SalesPeople WHERE Kaupunki='Lontoo'

2. LUO NÄKYMÄ SalesOwn
AS SELECT SNum, SNimi, kaupunki myyntihenkilöiltä

3. LUO NÄKYMÄ NameOrders
AS SELECT ONum, Amt, A.SNum, Sname, Cname
Tilauksista A, asiakas B, myyjät C
WHERE A.CNum=B.CNum JA A.SNUM=C.SNum

Esimerkkejä päivitysten poistamisesta käytöstä:

1. LUO NÄKYMÄ HighRating AS SELECT CNum, Rating

2. Lisää rivi, jota näkymä ei näe:
INSERT INTO HighRating ARVOT (2018, 200)
3. Kielletään rivien lisääminen näkyvyyden ulkopuolelle:
LUO NÄKYMÄ HighRating AS SELECT CNum, Rating
FROM Customer WHERE Arvio = 300
TARKKIVAIHTOEHDOLLA
4. Luo uusi, johon voit lisätä uudelleen:
LUO NÄKYMÄ MyRating AS SELECT * FROM HighRating

LUO NÄKYMÄ. Tätä menetelmää suositellaan muihin verrattuna, jos on mahdollista, että luot tulevaisuudessa muita näkymiä, koska voit laittaa T-SQL-käskyt komentosarjatiedostoon ja sitten muokata ja käyttää tiedostoa yhä uudelleen ja uudelleen. SQL Server Enterprise MАnager tukee graafista ympäristöä, jossa voit luoda näkymän. Lopuksi voit käyttää ohjattua näkymän luontitoimintoa, kun tarvitset apua näkymän luomisessa, mikä voi olla hyödyllistä sekä aloittelijalle että asiantuntijalle.
T-SQL:n käyttäminen näkymän luomiseen

Näkymien luominen T-SQL:llä on melko yksinkertainen prosessi: suoritat käskyn LUO NÄKYMÄ luodaksesi näkymän ISQL:n, OSQL:n tai Query Analyzerin avulla. Kuten jo mainittiin, T-SQL-käskyjen käyttäminen komentosarjassa on suositeltavaa, koska näitä käskyjä voidaan muokata ja käyttää uudelleen. (Sinun tulee myös tallentaa tietokantamääritelmät skripteihin siltä varalta, että sinun on luotava tietokanta uudelleen.)

Operaattori LUO NÄKYMÄ on seuraava syntaksi:

CREATE VIEW view_name [(sarake, sarake...)] SELECT-käskynä

Kun luot näkymän, voit aktivoida kaksi ominaisuutta, jotka muuttavat näkymän toimintaa. Ottaaksesi nämä ominaisuudet käyttöön, sinun on sisällytettävä T-SQL-käskyyn avainsanat WITH ENCRYPTION ja/tai WITH CHECK OPTION. Tarkastellaanpa näitä työkaluja tarkemmin.

Avainsana WITH ENCRYPTION määrittää, että näkymän määritelmä (näkymän määrittelevä SELECT-käsky) tulee salata. SQL Server käyttää samaa menetelmää SQL-lauseiden salaamiseen kuin salasanat. Tämä suojaustekniikka voi olla hyödyllinen, jos et halua, että tietyt käyttäjäryhmät tietävät, mitä taulukoita käytetään.

WITH CHECK OPTION -avainsana määrittää, että näkymään käytettävien tietojen muokkaustoimintojen on täytettävä SELECT-käskyn ehdot. Voit esimerkiksi poistaa käytöstä näkymään sovelletun tietojen muokkaustoiminnon luodaksesi taulukkorivin, joka ei näy kyseisessä näkymässä. Oletetaan, että olet määrittämässä näkymää kaikkien talousosaston työntekijöiden tietojen hakemiseksi. Jos WITH CHECK OPTION -avainsana ei sisälly lausumaan, voit muuttaa osastosarakkeen rahoitusarvon arvoksi, joka määrittää toisen osaston. Mutta jos tämä avainsana on määritetty, tätä muutosta ei sallita, koska osastosarakkeen arvon muuttaminen millä tahansa rivillä tekee kyseisestä rivistä poissa käytöstä tästä näkymästä. WITH CHECK OPTION -avainsana osoittaa, että et voi tehdä mitään riviä pois käytöstä näkymässä tekemällä muutoksia näkymän sisällä.

SELECT-lausetta voidaan muokata minkä tahansa näkymän luomiseksi. Sitä voidaan käyttää sarakkeiden tai rivien osajoukon valitsemiseen tai jonkinlaisen liitosoperaation suorittamiseen. Seuraavissa osioissa opit käyttämään T-SQL:ää erityyppisten näkymien luomiseen.

Sarakkeen osajoukko

Sarakkeiden osajoukon sisältävä näkymä voi olla hyödyllinen, jos haluat suojata taulukon, jonka pitäisi olla vain osittain käyttäjien käytettävissä. Tarkastellaanpa yhtä esimerkkiä. Oletetaan, että yrityksen työntekijöiden tietokanta sisältää taulukon nimeltä Employee (Employees) tietosarakkeineen (kuva 18.1).


Riisi. 18.1.

Suurin osa näistä tiedoista on kriittistä, ja vain tiettyjen työntekijöiden pitäisi nähdä ne. Saattaa kuitenkin olla hyödyllistä antaa kaikkien käyttäjien tarkastella osaa näistä tiedoista. Voit tehdä tämän luomalla näkymän, jonka avulla kaikki käyttäjät voivat käyttää vain tiettyjä tietoja. Tätä näkymää voidaan käyttää myös välttämiseen tietojen kopiointi työntekijöistä muissa tietotaulukoissa.

Voit luoda Työntekijä-taulukkoon näkymän, jolla on pääsy vain nimi-, puhelinnumero- ja toimistosarakkeisiin, käyttämällä seuraavaa T-SQL-käskyä:

LUO NÄKYMÄ emp_vw AS VALITSE nimi, puhelin, toimisto työntekijältä

Tuloksena oleva näkymä sisältää sarakkeita (Kuva 18-2). Vaikka nämä sarakkeet ovat myös taustalla olevassa taulukossa, tämän näkymän kautta tietoja käyttävät käyttäjät voivat nähdä vain nämä sarakkeet tässä näkymässä. Ja koska näkymällä voi olla eri suojaustaso kuin näkymän perustaulukolla, näkymä voidaan asettaa kenen tahansa saataville, kun taas päätaulukko pysyy suojattuna. Toisin sanoen voit rajoittaa pääsyn Työntekijätaulukkoon esimerkiksi vain HR:ään ja voit antaa kaikille käyttäjille pääsyn tähän näkymään.

Esitysten käsite on annettu. Edustustojen rooli tietoturvaasioissa määritellään. Kuvaa näkymien hallintaprosessia: näkymien luominen, muokkaaminen, käyttäminen, poistaminen.

Näytä määritelmä

Näkymät tai näkymät (NÄKYMÄ) ovat väliaikaisia, johdettuja (muuten virtuaalisia) taulukoita ja tietokantaobjekteja, joihin tietoja ei tallenneta pysyvästi, kuten perustaulukoissa, vaan ne muodostuvat dynaamisesti, kun niitä käytetään. Tavalliset taulukot ovat perus, ts. sisältää tietoja ja sijaitsee pysyvästi tiedontallennuslaitteella. Näkymä ei voi olla olemassa yksinään, vaan se määritellään vain yhden tai useamman taulukon perusteella. Näkymien avulla tietokannan kehittäjä voi tarjota kullekin käyttäjälle tai käyttäjäryhmälle sopivimman tavan käsitellä tietoja, mikä ratkaisee helppokäyttöisyyden ja turvallisuuden ongelman. Näkymien sisältö valitaan muista taulukoista kyselyllä, ja kun taulukoiden arvot muuttuvat, näkymän tiedot muuttuvat automaattisesti. Näkymä on itse asiassa sama kysely, joka suoritetaan aina, kun osallistut mihin tahansa komentoon. Tämän kyselyn suorittamisen tuloksesta kullakin hetkellä tulee näkymän sisältö. Käyttäjä saa vaikutelman, että hän työskentelee todellisen, tosielämän taulukon kanssa.

DBMS:llä on kaksi vaihtoehtoa näkemysten toteuttaminen. Jos sen määritelmä on yksinkertainen, järjestelmä luo jokaisen näkymän tietueen tarpeen mukaan ja lukee asteittain lähdetiedot taustalla olevista taulukoista. DBMS:n monimutkaisen määritelmän tapauksessa on ensin suoritettava operaatio, kuten näkymän materialisointi, ts. tallentaa näkymän muodostavat tiedot väliaikaiseen taulukkoon. Sitten järjestelmä alkaa suorittaa käyttäjäkomentoa ja tuottaa sen tuloksia, minkä jälkeen väliaikainen taulukko poistetaan.

Näkymä on ennalta määritetty tietokantaan tallennettu kysely, joka näyttää tavalliselta taulukolta ja ei vaadi levytilaa sen tallentamiseen. Näkymän tallentamiseen käytetään vain RAM-muistia. Toisin kuin muut tietokantaobjektit, näkymä ei vie levytilaa lukuun ottamatta muistia, joka tarvitaan itse näkymän määritelmän tallentamiseen.

Esitysten luominen ja muokkaaminen kielistandardissa ja toteutus MS SQL Serverissä ovat samat ja niitä edustaa seuraava komento:

<определение_просмотра>::= ( CREATE| ALTER) NÄYTÄ näkymän_nimi [(sarakkeen_nimi [,...n])] SELECT_lausekkeena

Harkitse pääparametrien tarkoitusta.

Oletusarvoisesti näkymän sarakkeiden nimet vastaavat lähdetaulukoiden sarakkeiden nimiä. Selkeä sarakkeen nimi vaaditaan lasketuille sarakkeille tai kun yhdistetään useita taulukoita, joissa on samannimisiä sarakkeita. Sarakkeiden nimet on lueteltu pilkuilla eroteltuina niiden järjestyksen mukaan näkymässä.

WITH ENCRYPTION -vaihtoehto kehottaa palvelinta salaamaan kyselyn SQL:llä varmistaakseen, että asiattomat henkilöt eivät voi tarkastella tai käyttää sitä. Jos haluat piilottaa lähdetaulukon ja sarakkeen nimet sekä tietojen yhdistämisalgoritmin näkymää määriteltäessä, sinun on käytettävä tätä argumenttia.

WITH CHECK OPTION -vaihtoehto kehottaa palvelinta tarkistamaan näkymän kautta tehdyt muutokset SELECT-käskyssä määritettyjen ehtojen mukaisesti. Tämä tarkoittaa, että muutokset eivät ole sallittuja, jotka aiheuttaisivat rivin katoamisen näkymästä. Näin tapahtuu, kun näkymässä on vaakasuuntainen suodatin ja tietojen muuttaminen aiheuttaa sen, että rivi ei vastaa asetettuja suodattimia. WITH CHECK OPTION -argumentin käyttäminen varmistaa, että tehdyt muutokset näkyvät näkymässä. Jos käyttäjä yrittää tehdä muutoksia, jotka johtavat rivin poissulkemiseen näkymästä, jos WITH CHECK OPTION on määritetty, palvelin antaa virheilmoituksen ja kaikki muutokset hylätään.

Esimerkki 10.1. Esitys Moskovan asiakkaiden edustuksessa.

Näkymän luominen:

Tietojen hakeminen näkymästä:

VALITSE * näkymästä1

Näkymään päästään SELECT-käskyllä ​​ikään kuin se olisi tavallinen taulukko.

Näkymää voidaan käyttää komennossa aivan kuten mitä tahansa muuta taulukkoa. Voit rakentaa kyselyn näkymään, muokata sitä (jos se täyttää tietyt vaatimukset) ja yhdistää sen muihin taulukoihin. Näkymän sisältö ei ole kiinteä, ja se päivitetään aina, kun siihen viitataan komennossa. Näkymät laajentavat huomattavasti tiedonhallinnan mahdollisuuksia. Erityisesti tämä on loistava tapa päästää käsiksi taulukon tietoihin ja samalla piilottaa osan tiedoista.

Näkymä esimerkiksi yksinkertaisesti rajoittaa käyttäjän pääsyä asiakastaulukon tietoihin, jolloin vain osa arvoista voidaan nähdä.

Suoritetaan komento:

INSERT INTO view1 ARVOT (12, "Petrov", "Samara")

Tämä on kelvollinen komento näkymässä ja view1 lisää rivin Asiakastaulukkoon. Kun tiedot lisätään, rivi kuitenkin katoaa näkymästä, koska kaupungin nimi on eri kuin Moskovan nimi. Joskus tämä lähestymistapa voi olla ongelma, koska tiedot ovat jo taulukossa, mutta käyttäjä ei näe niitä eikä voi poistaa tai muokata niitä. Tällaisten hetkien välttämiseksi käytä TARKISTUSVAIHTOEHTOA näkymän määrittelyssä. Lause sijoitetaan näkymän määritelmään ja kaikki muokkauskomennot tarkistetaan.

Järjestelmä hylkää tällaisen esityksen yllä olevan arvon lisäyksen.

Näkymää voidaan siis muokata DML-muokkauskomennoilla, mutta varsinainen muutos ei vaikuta itse näkymään, vaan sen taustalla olevaan taulukkoon.

Näkymä poistetaan komennolla:

DROP VIEW näkymänimi [,...n]

Tietojen päivittäminen näkymissä

Kaikkia SQL:n näkymiä ei voi muokata. Muokattava näkymä määritetään seuraavilla kriteereillä:

  • perustuu vain yhteen perustaulukkoon;
  • sisältää tämän taulukon ensisijaisen avaimen;
  • ei sisällä DISTINCT:tä määritelmässään;
  • ei käytä määritelmässään GROUP BY:tä tai HAVINGia;
  • jos mahdollista, ei käytä alikyselyitä määrittelyssään;
  • ei käytä vakioita tai arvolausekkeita valittujen tuloskenttien joukossa;
  • jokainen taulukon sarake, jossa on NOT NULL -attribuutti, on sisällytettävä tarkistukseen;
  • browse SELECT -käsky ei käytä koontifunktioita, taulukkoliitoksia, tallennettuja proseduureja tai käyttäjän määrittämiä funktioita;
  • perustuu yhteen kyselyyn, joten UNIONia ei sallita.

Jos näkymä täyttää nämä ehdot, siihen voidaan käyttää INSERT , UPDATE , DELETE -käskyjä. Erot välillä ja esitykset vain luku -muotoiset eivät ole satunnaisia. Niiden käyttötarkoitukset ovat erilaisia. KANSSA muokattavat näkymät käsitellään periaatteessa täsmälleen samalla tavalla kuin perustaulukoita. Itse asiassa käyttäjät eivät edes tunnista, onko heidän pyytämänsä objekti perustaulukko vai näkymä, ts. se on ensisijaisesti turvatoimenpide taulukon arkaluonteisten tai epäolennaisten osien piilottamiseen. Näkymät tilassa<только для чтения>mahdollistaa tietojen vastaanottamisen ja muotoilun järkevämmin. Ne luovat kokonaisen arsenaalin monimutkaisia ​​kyselyitä, jotka voidaan suorittaa ja toistaa uudelleen ja tallentaa vastaanotetut tiedot. Näiden kyselyiden tuloksia voidaan sitten käyttää muissa kyselyissä, jolloin vältetään monimutkaiset predikaatit ja vähennetään virheellisten toimien mahdollisuutta.

LUO NÄKYMÄNÄKYMÄNÄKYMÄ2 VALITSEMAAN Asiakkaan.Sukunimi, Asiakas.Yritys, Kauppa.Number Client SISÄINEN LIITTYMINEN Kauppa Client.ClientId=Kauppa.Asiakastunnus Esimerkki 10.3. Muokamaton näkymä, jossa on tietoja eri taulukoista.

LUO NÄKYMÄ näkymä3(tyyppi, jäljellä yhteensä) AS SELECT Tyyppi, Summa(Jäljellä) Hyödykeryhmästä tyypin mukaan Esimerkki 10.4. Ei-muokattava näkymä ryhmittely- ja yhteenvetotoiminnoilla.

Tyypillisesti näkymät käyttävät nimiä, jotka on johdettu suoraan taustalla olevan taulukon kenttien nimistä. Joskus on kuitenkin tarpeen antaa sarakkeille uudet nimet, kuten yhteenvetofunktioiden tai laskettujen sarakkeiden tapauksessa.

LUO NÄKYMÄnäkymä4 (Koodi, nimi, tyyppi, hinta, vero) AS SELECT Tuotekoodi, nimi, tyyppi, hinta, hinta*0,05 tuotteesta Esimerkki 10.5. Muokattava esitys laskelmilla.

Edustustojen edut ja haitat

Näkymäkone on tehokas DBMS-työkalu, jonka avulla voit piilottaa tietokannan todellisen rakenteen joiltakin käyttäjiltä määrittämällä näkymiä. Minkä tahansa katso toteutus on varmistettava, että esitettävän suhteen tila vastaa täsmälleen sen datan tilaa, jolle esitys määritellään. Yleensä näkymää arvioidaan aina, kun sitä käytetään. Kun näkymä luodaan, sen tiedot kirjoitetaan tietokantahakemistoon omalla nimellä. Kaikki tiedoissa tehdyt muutokset näkyvät riittävästi näkymässä - tämä on sen ero hyvin samankaltaiseen tietokantakyselyyn. Samalla pyyntö on<мгновенную фотографию>tiedot ja viimeinen kysely tietokantaan vaihdettaessa on toistettava. Esitysten läsnäolo tietokannassa on välttämätöntä tietojen loogisen riippumattomuuden varmistamiseksi. Jos järjestelmä varmistaa tietojen fyysisen riippumattomuuden, tietokannan fyysisen rakenteen muutokset eivät vaikuta käyttäjäohjelmien toimintaan. Looginen riippumattomuus tarkoittaa sitä, että loogisen tietorakenteen muuttaminen ei vaikuta myöskään käyttäjäohjelmiin, mikä tarkoittaa, että järjestelmän tulee pystyä ratkaisemaan tietokannan kasvuun ja uudelleenjärjestelyyn liittyviä ongelmia. Ilmeisesti tietokantaan tallennetun tiedon määrän kasvaessa sitä on tarpeen laajentaa lisäämällä uusia attribuutteja tai suhteita - tätä kutsutaan tietokannan kasvuksi. Tietojen uudelleenjärjestely tarkoittaa sitä, että säilytetään samat tiedot, mutta muutetaan sen sijaintia esimerkiksi järjestämällä attribuutteja suhteissa uudelleen. Oletetaan, että jokin suhde on jostain syystä jaettava kahdella. Syntyneiden suhteiden yhdistäminen näkymään luo alkuperäisen suhteen uudelleen jättäen käyttäjälle vaikutelman, ettei uudelleenjärjestelyä ole tapahtunut. Uudelleenjärjestelyongelman ratkaisemisen lisäksi näkymällä voidaan tarkastella samaa dataa eri käyttäjiltä ja eri tavoilla. Näkymien avulla käyttäjällä on mahdollisuus rajoittaa tiedon määrää käytön helpottamiseksi. Lopuksi näkymämekanismin avulla voit piilottaa yleistiedot, jotka eivät ole käyttäjiä kiinnostavia.

Itsenäisessä henkilökohtaisessa tietokoneessa toimivan DBMS:n tapauksessa näkymien käyttö on yleensä tarkoitettu vain tietokantaan kohdistuvien kyselyjen rakenteen yksinkertaistamiseen. Usean käyttäjän verkon DBMS:n tapauksessa näkymät ovat kuitenkin avainasemassa tietokannan rakenteen määrittämisessä ja tietoturvan järjestämisessä. Harkitse pääasiallista näkymien käytön edut sellaisessa ympäristössä.

Tietojen riippumattomuus

Näkymien avulla voit luoda johdonmukaisen, muuttumattoman kuvan tietokannan rakenteesta, joka pysyy vakaana, vaikka lähdetaulukoiden muoto muuttuisi (esimerkiksi lisäämällä tai poistamalla sarakkeita, muuttamalla suhteita, jakamalla taulukoita, järjestämällä niitä uudelleen tai nimeämällä niitä uudelleen niitä). Jos taulukkoon lisätään tai poistetaan sarakkeita, joita ei käytetä näkymässä, näkymän määritelmää ei tarvitse muuttaa. Jos alkuperäisen taulukon rakenne järjestetään uudelleen tai taulukko jaetaan, voit luoda näkymän, jonka avulla voit työskennellä vanhan virtuaalitaulukon kanssa. Alkuperäisen taulukon jakamisen tapauksessa vanha muoto voidaan luoda virtuaalisesti uudelleen käyttämällä näkymää, joka on rakennettu juuri luotujen taulukoiden yhdistämisen perusteella - tietysti jos tämä osoittautuu mahdolliseksi. Viimeinen ehto voidaan tarjota sijoittamalla vanhan taulukon perusavain kaikkiin uusiin taulukoihin.

Merkityksellisyys

Tietojen muutokset missä tahansa määrittelykyselyssä määritetyssä tietokantataulukossa näkyvät välittömästi näkymän sisällössä.

Tietoturvan parantaminen

Tietojen käyttöoikeudet voidaan myöntää vain rajoitetun näkymän kautta, joka sisältää vain käyttäjän tarvitseman tiedon osajoukon. Tämä lähestymistapa mahdollistaa merkittävästi tiukemman valvontaa tiettyjen käyttäjäryhmien pääsyssä tietokannan tietoihin.

Kustannusten vähentäminen

Näkymien avulla voit yksinkertaistaa kyselyrakennetta yhdistämällä tiedot useista taulukoista yhdeksi virtuaaliseksi taulukoksi. Tämän seurauksena usean taulukon kyselyt pelkistyvät yksinkertaisiksi kyselyiksi yhtä näkymää vastaan.

Lisäpalvelut

Näkymien luominen voi tarjota käyttäjille lisämukavuutta, kuten mahdollisuuden käsitellä vain sitä osaa tiedoista, joita he todella tarvitsevat. Tämän seurauksena voit saavuttaa mahdollisimman suuren yksinkertaisuuden tietomallista, jota jokainen loppukäyttäjä tarvitsee.

Mahdollisuus mukauttaa

Näkymät ovat kätevä tapa mukauttaa yksittäistä tietokantakuvaa. Tämän seurauksena samat taulukot voidaan esittää käyttäjille täysin eri muodossa.

Tietojen eheyden varmistaminen

Jos WITH CHECK OPTION -lause on määritetty CREATE VIEW -käskyssä, DBMS varmistaa, että yhtään riveistä, jotka eivät täytä määritelmäkyselyn WHERE-lausetta, ei lisätä tietokannan lähdetaulukoihin. Tämä mekanismi takaa näkymän tietojen eheyden.

Käytännöllä, jolla rajoitetaan joidenkin käyttäjien pääsyä tietoihin luomalla mukautettuja näkymiä, on varmasti merkittäviä etuja verrattuna siihen, että heille annetaan suora pääsy tietokantataulukoihin.

Näkymien käyttö SQL-ympäristössä ei kuitenkaan ole vailla haittoja.

Rajoitetut päivitysmahdollisuudet

Joissakin tapauksissa näkymät eivät salli sinun tehdä muutoksia niiden sisältämiin tietoihin.

Rakenteelliset rajoitukset

Näkymän rakenne asetetaan sen luomishetkellä. Jos määritelmäkysely on muodossa SELECT * FROM_ , * viittaa kaikkiin sarakkeisiin, jotka ovat olemassa lähdetaulukossa näkymän luomishetkellä. Jos uusia sarakkeita lisätään myöhemmin alkuperäiseen tietokantataulukkoon, ne eivät näy tässä näkymässä ennen kuin näkymä pudotetaan ja luodaan uudelleen.

Suorituskyvyn heikkeneminen

Näkymien käyttämisestä seuraa jonkin verran suorituskykyä. Joissakin tapauksissa tämän tekijän vaikutus on melko merkityksetön, kun taas toisissa se voi olla merkittävien ongelmien lähde. Esimerkiksi monimutkaisella usean taulukon kyselyllä määritetty näkymä voi viedä huomattavan paljon käsittelyaikaa, koska sen ratkaiseminen vaatii taulukon yhdistämisen aina, kun näkymää on käytettävä. Näkymän resoluution suorituskyky liittyy lisälaskentaresurssien käyttöön.