BD-1st-2.4-lab8.tresc-1.1-Slajd15
Perspektywy złożone modyfikowalne
Perspektywami złożonymi nazywamy wszystkie perspektywy, które nie spełniają warunków perspektywy prostej. Niektóre z perspektyw złożonych są również modyfikowalne. Perspektywa złożona jest modyfikowalna jeśli nie zawiera: operatorów zbiorowych, operatora DISTINCT, funkcji grupowej, klauzul GROUP BY i ORDER BY. Połączenia mogą występować w tych perspektywach, jednak operacje modyfikujące dane poprzez perspektywę muszą dotyczyć jedynie atrybutów pochodzących z „relacji zachowującej klucz”. Relacja zachowuje klucz, jeżeli każda unikalna wartość z tej relacji w perspektywie pozostaje unikalna. Aby móc korzystać z polecenia INSERT, perspektywa musi prezentować wszystkie atrybuty klucza podstawowego i wszystkie atrybuty wymagane relacji zachowującej klucz. Utworzona za pomocą polecenia INSERT krotka jest wstawiana jedynie do relacji zachowującej klucz. Polecenie UPDATE może dotyczyć tylko atrybutów pochodzących z relacji zachowującej klucz i nie stanowiących wyników wyrażeń. Polecenie DELETE może usunąć jedynie krotki pochodzące z relacji zachowującej klucz.
Przykład (1) pokazuje polecenie tworzące perspektywę PRAC_ZESP. Perspektywa ta nie zawiera operatorów zbiorowych, operatora DISTINCT, funkcji grupowej, klauzul GROUP BY i ORDER BY. Zawiera ona jednak połączenie. Zastanówmy się zatem, czy jedna z perspektyw bazowych zachowuje klucz. W perspektywie zastosowano połączenie naturalne z warunkiem połączeniowym zdefiniowanym na atrybucie ID_ZESP. Ponieważ ID_ZESP jest kluczem podstawowym relacji ZESPOLY, to wartości przechowywane w tym atrybucie są unikalne. W relacji PRACOWNICY atrybut ID_ZESP jest kluczem obcym i tutaj wartości atrybutu nie są unikalne. W związku z tym, do każdej krotki reprezentującej pracownika pasuje co najwyżej jedna krotka z relacji zespoły, a zatem żadna krotka z relacji pracownicy nie zostanie zwielokrotniona w wyniku połączenia, z czego wynika, że relacja pracownicy zachowuje klucz. Ponieważ perspektywa udostępnia atrybut ID_PRAC tworzący klucz podstawowy relacji PRACOWNICY, jest to perspektywa modyfikowalna za pomocą wszystkich trzech poleceń: INSERT, UPDATE i DELETE.
Przykład (2) pokazuje polecenie tworzące perspektywę PRAC_SZEF, która prezentuje identyfikatory i nazwiska pracowników, i ich szefów. Perspektywa ta nie zawiera operatorów zbiorowych, operatora DISTINCT, funkcji grupowej, klauzul GROUP BY i ORDER BY. Zawiera ona jednak połączenie zwrotne. W połączeniu zwrotnym wykorzystywany jest równościowy warunek połączeniowy wykorzystujący atrybuty ID_PRAC i ID_SZEFA. Atrybut ID_PRAC jest kluczem podstawowym relacji pracownicy, a atrybut ID_SZEFA jest kluczem obcym wskazującym na relację PRACOWNICY. Poprzez analogię do przykładu (1) można łatwo zauważyć, że klucz zachowany jest w relacji PRACOWNICY reprezentującej podwładnych, z czego wynika, że poprzez perspektywę PRAC_SZEF można modyfikować atrybuty dotyczące podwładnych. Ponieważ perspektywa udostępnia atrybut tworzący klucz podstawowy relacji PRACOWNICY możliwe jest używanie polecenia INSERT to wstawiania nowych krotek reprezentujących podwładnych.