Widoki to zapisane zapytania prezentowane jako wirtualne tabele, bez fizycznego przechowywania danych.
Czym są widoki w bazie danych
Widok jest nazwanym zapytaniem zapisanym w katalogu bazy danych i udostępnianym użytkownikowi tak, jakby był tabelą. Zwykle nie przechowuje własnych kopii wierszy. Definicja widoku zawiera instrukcję zapytania, która może pobierać dane z jednej tabeli, łączyć wiele tabel, filtrować rekordy za pomocą WHERE, wybierać kolumny oraz obliczać wartości wyrażeń. Gdy aplikacja wykonuje zapytanie skierowane do widoku, silnik analizuje jego definicję i uwzględnia ją w planie wykonania zapytania zewnętrznego.
Widok ma własną nazwę, listę kolumn i uprawnienia, ale jego dane pochodzą z tabel bazowych albo z innych obiektów zapytaniowych. Jeżeli w tabeli źródłowej zostanie dodany, zmieniony lub usunięty rekord, wynik widoku zazwyczaj zmieni się bez konieczności osobnego odświeżania. Z tego powodu widok nie jest kopią tabeli ani plikiem przechowującym niezależny zestaw danych. Wyjątkiem są materializowane widoki, które zapisują wynik zapytania i wymagają odświeżania; stanowią one odrębny mechanizm spotykany tylko w wybranych silnikach.
Definiowanie i używanie widoków
Widok tworzy się poleceniem CREATE VIEW, po którym podaje się nazwę obiektu oraz zapytanie definiujące jego wynik, na przykład wybór określonych kolumn z tabeli połączony z warunkiem ograniczającym zakres rekordów. Po utworzeniu można odwoływać się do niego w instrukcjach SELECT podobnie jak do tabeli. Widok może być używany jako źródło w kolejnych zapytaniach, w połączeniach JOIN, podzapytaniach oraz raportach, o ile pozwalają na to reguły konkretnego systemu bazodanowego.
W praktyce warto jawnie wskazywać listę kolumn zamiast stosować SELECT *. Dzięki temu zmiana struktury tabeli źródłowej nie powoduje nieprzewidzianego rozszerzenia wyniku widoku. Nazwy kolumn widoku mogą być nadane bezpośrednio w definicji albo wynikać z wyrażeń zapytania. W wielu silnikach definicję istniejącego widoku zmienia się poleceniem CREATE OR REPLACE VIEW albo właściwą dla danego produktu instrukcją modyfikacji. Składnia i ograniczenia nie są jednak identyczne we wszystkich bazach, dlatego polecenia trzeba dopasować do używanego silnika.
Widoki a bezpieczeństwo i modyfikowanie danych
Widoki często służą do ograniczania zakresu danych udostępnianych aplikacji lub użytkownikowi. Można w nich pominąć niepotrzebne kolumny, zwrócić tylko rekordy spełniające określony warunek i nadać uprawnienia do widoku bez przyznawania bezpośredniego dostępu do całej tabeli. Taki model wymaga poprawnego skonfigurowania uprawnień oraz sprawdzenia, czy użytkownik nie może ominąć ograniczenia przez dostęp do tabel bazowych, innych widoków lub dodatkowych obiektów.
Nie każdy widok można modyfikować poleceniami INSERT, UPDATE albo DELETE. Prosty widok oparty na jednej tabeli, bez agregacji, grupowania, eliminowania duplikatów i części złożonych konstrukcji, może być aktualizowalny. Widok zawierający GROUP BY, funkcje agregujące, DISTINCT, operacje zbiorowe albo wiele połączonych tabel często jest tylko do odczytu lub wymaga dodatkowych reguł aktualizacji. Jeżeli zmiana przez widok jest dozwolona, silnik musi potrafić jednoznacznie przypisać zmieniane wartości do tabeli bazowej. Szczegółowe zasady zależą od konkretnego systemu bazodanowego.
Wydajność, utrzymanie i diagnostyka widoków
Sam widok nie gwarantuje szybszego działania zapytania. Ponieważ zwykły widok zazwyczaj nie przechowuje wyniku, czas wykonania zależy od tabel źródłowych, indeksów, warunków filtrowania, połączeń i planu zapytania. Widok może poprawić czytelność oraz ujednolicić sposób pobierania danych, ale złożone, wielokrotnie zagnieżdżone widoki mogą utrudniać analizę planu wykonania. Przy problemach z szybkością należy sprawdzić rzeczywiste zapytanie wykonywane przez aplikację, plan wykonania, statystyki oraz indeksy tabel bazowych.
Usunięcie widoku wykonuje się zwykle poleceniem DROP VIEW, jednak operacja może się nie udać, jeżeli inne obiekty zależą od jego istnienia albo jeżeli silnik wymaga jawnego usunięcia zależności. Zmiana nazw kolumn tabeli bazowej może unieważnić zapytania odwołujące się do widoku, a zmiana typu danych może spowodować błędy konwersji. Podczas diagnostyki należy odczytać definicję widoku z katalogu systemowego, sprawdzić zależności, uprawnienia i aktualny schemat tabel. Warszawskie Pogotowie Komputerowe zajmuje się profesjonalną naprawą laptopów, komputerów PC i podzespołów, a w przypadku problemów z oprogramowaniem może również pomóc ustalić, czy objawy wynikają z konfiguracji aplikacji, połączenia z bazą lub błędów zapytań.