BD-1st-2.4-lab8.tresc-1.1-Slajd12
Perspektywy
Aby przedstawić ideę perspektyw rozważmy następujące zapytanie:
SELECT
nazwisko,
placa_pod AS placa
FROM pracownicy
WHERE etat=‘PROFESOR’;
Wynikiem tego zapytania jest relacja, w której znajdują się dwa atrybuty: NAZWISKO i PLACA przechowujące dane dotyczące wszystkich pracowników pracujących na etacie PROFESOR. Ponieważ zapytanie zwraca relację, a polecenie SELECT służy do odczytywania danych z relacji, to teoretycznie istnieje możliwość przetwarzania za pomocą polecenia SELECT wyników innego polecenia SELECT. Jest to podstawowy pomysł stojący za koncepcją perspektyw. Perspektywą nazywamy obiekt bazy danych, który jest nazwanym zapytaniem, składowanym w bazie danych, „naśladującym” relację. Na rysunku na slajdzie przedstawiono schematycznie działanie perspektyw. W bazie danych znajduje się „relacja” PROFESOROWIE, którą można przeszukiwać za pomocą polecenia SELECT. W rzeczywistości nie jest to jednak relacja, a perspektywa, która zawiera wyniki zwracane przez inne zapytanie. Wyniki zapytania tworzącego perspektywę nie są fizycznie składowane na dysku, ale są generowane za każdym razem, gdy do perspektywy zostanie skierowane zapytanie. W rezultacie, zamiast zapytania:
SELECT nazwisko
FROM profesorowie
WHERE placa>2500;
wykonywane jest zapytanie:
SELECT nazwisko
FROM (
SELECT
nazwisko,
placa_pod AS placa
FROM pracownicy
WHERE etat=‘PROFESOR’;
)
WHERE placa>2500;
Jak łatwo zauważyć, jest to zapytanie z podzapytaniem w klauzuli FROM.
Poprzez perspektywy możliwe jest nie tylko wykonywanie zapytań, ale również danych w nich „składowanych” (modyfikacji ulegają dane w relacjach na których zdefiniowane są perspektywy). Niestety nie zawsze jest to możliwe. W ramach tych ćwiczeń zostaną omówione polecenia pozwalające na tworzenie perspektyw, oraz omówione zostaną warunki modyfikowalności danych w perspektywach.