Jak w przypadku innych perspektyw, tak samo i tu zapytanie jest traktowane jakby było równoważnym zapytaniem określonym na tabelach bazowych, czyli jako zapytanie:
SELECT nazwisko
FROM Film, FilmDyr
WHERE producentC# = cert? AND tytuł = 'Przeminęło z wiatrem';
□
Czasami zamiast korzystać z nazw atrybutów występujących w definicji perspektywy, może się okazać wygodne, żeby w perspektywie wybrać inne nazwy dla atrybutów. Możemy to zrobić, umieszczając w instrukcji CREATE VIEW wybrane nowe nazwy w postaci listy ujętej w nawiasy, po nazwie perspektywy, a przed zapytaniem definiującym. Definicję z przykładu 5.40 możemy zapisać w następujący sposób:
CREATE VIEW FilmProd(tytułFilmu/ nazwiskoProć) AS
SELECT tytuł, nazwisko
FROM Film, FilmDyr
WHERE producenta# = cert#;
Perspektywa jest taka sama jak poprzednio, ale w nagłówkach kolumn zamiast nazw tytuł, nazwisko wystąpią teraz atrybuty o nazwach tytuł-Filmu, nazwiskoProd.
W pewnych okolicznościach można wykonywać działania wstawiania, usuwania oraz zmian perspektyw. Po pierwsze jednak trzeba określić znaczenie takich działań w przypadku perspektyw-, które przecież nie istnieją w sensie fizycznym, tak jak to występuje przy tabelach bazowych (czyli relacji przcchowyw-anych). Co zatem oznacza wstawienie krotki do perspektywy-? Gdzie ta krotka zostanie umieszczona i w jaki sposób system baz danych rozpozna, że ma ona być dołączona do danej perspektywy?
W wielu przypadkach odpowiedź jest prosta: „nie można tak robić”. Jednakże przy bardzo prostych perspektywach, tak zwanych „modyfikowalnych”, można przekładać modyfikowanie perspektywy na równoważne działanie na tabeli bazowej, które zostanie dokonane na niej zamiast na perspektywie. W języku SQL2 w- sposób formalny określa się, kiedy jest dopuszczalna modyfikacja perspektywy. Zasady zapisane w- języku SQL są skomplikowane, krótko można je streścić w następujących słowach: modyfikacje perspektyw są dopuszczalne tylko wtedy, kiedy perspektywy są zdefiniowane przez selekcję (czyli SEI.ECT lub SELECT DISTINCT) pewnych atrybutów z jednej relacji R (która sama także może być perspektywą modyfikowalną). Muszą jednak być spełnione następujące warunki techniczne:
• Klauzula WHERE nic może zawierać zapytania dotyczącego relacji R.
• W klauzuli SELECT musi być dostatecznie dużo atrybutów po to, by dla każdej krotki, którą wstawia się do perspektywy, można było wprowadzić pozostałe atrybuty z wartościami NULL lub domyślnymi, i aby w relacji bazowej istniała krotka, która stanowi podstawę dla krotki umieszczanej w perspektywie.
PRZYKŁAD 5.41
Załóżmy, ze do perspektywy Filmy Pa ramount z przykładu 5.37 będzie wstawiana następująca krotka:
INSERT INTO FilmyParamount VALUES ('Star Trek', 1979);
Perspektywa Fi lmyParamount nieomal spełnia warunki modyfikowalności z $QL2, ponieważ wchodzą do niej dane tylko z jednej relacji
Film{tytuł, rok, długość, czyKolór, nazwaStudia, producentC#)
której krotki ograniczono do wybranych składowych. Problem pojawia się przy określaniu wartości nazwaStudia, ponieważ ten atrybut nie należy do perspektywy. Zatem jego wartością w krotce perspektywy nie jest ' Paramo-unt', lecz NULL.
Można jednak doprowadzić perspektywę Fi lmyParamount do postaci, która umożliwi wykonanie modyfikowania. Wystarczy do klauzuli SELECT dołączyć atrybut nazwaStudia, mimo iż wiemy, że to będzie nazwa Para-mount. Tak zmieniona definicja będzie miała następującą postać:
1) CREATE VIEW FiimyParamount AS
2) SELECT nazwaStudia, tytuł, rok
3) FROM Film
4) WHERE nazwaStudia = 'Paramount';
Wówczas instrukcja wstawiania krotki do perspektywy przyjmie następującą postać:
INSERT INTO FiimyParamount
VALUES ('Paramount', 'Star Trek', 1979);