Views

Een view in een database is een soort venster dat je over je bestaande datastructuur kan leggen. Dit venster kun je bijvoorbeeld gebruiken in een SELECT-statement, stel dat je deze query hebt welke alle namen van de hotels toont met de naam van de manager en het totaal aantal reserveringen van dat hotel:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
SELECT h.naam, m.naam AS manager, COUNT(r.*) AS aantal
FROM hotel AS h
INNER JOIN medewerker AS m ON h.manager_id=m.medewerker_id
INNER JOIN reservering AS r ON r.hotel_id=h.hotel_id
GROUP BY r.hotel_id, h.naam, m.naam


Dat is nogal een lap tekst om uit te voeren. We zouden nu een view kunnen maken welke de uitvoer van deze query bevat:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
CREATE OR REPLACE VIEW view_aantal_reserveringen AS
 SELECT h.naam, m.naam AS manager, count(r.*) AS aantal
   FROM hotel h
   JOIN medewerker m ON h.manager_id = m.medewerker_id
   JOIN reservering r ON r.hotel_id = h.hotel_id
 GROUP BY r.hotel_id, h.naam, m.naam;


Er is nu een view aangemaakt welke je kunt aanroepen. In plaats van die lange query uit te voeren kun je nu zeggen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT * FROM view_aantal_reserveringen


De view wordt bewaard op de database en hoef je dus maar 1 keer aan te maken. Een voordeel van een view is dat je de onderliggende datastructuur kunt “verbergen”. Als je applicatie zijn data uit de views haalt maakt het in feite niet uit hoe je tabellen en kolommen heten, zolang de uitvoer van je view maar consistent is met je applicatie. Daarnaast kunnen rechten worden uitgedeeld op een view, zo zou je een gebruiker geen rechten hoeven te geven op al je tabellen maar alleen op de views, security dus!

Een view is read-only, je kunt er dus geen updates of inserts op uitvoeren, dit kan in sommige situaties echter wél door middel van rules, deze behandel ik niet aangezien ik persoonlijk het nut er niet helemaal van zie :)

Zie http://www.postgresql.org/docs/8.1/interactive/rules-views.html voor meer informatie hierover.

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Voorbeeld-case
  3. Overerving in PostgreSQL
  4. Aanmaken van tabellen en het leggen van relaties
  5. Views
  6. PL/pgSQL functies en procedures
  7. Triggers
  8. Check constraints en domains
  9. Conclusie

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.