Serwisanci dostępni teraz · czynne całą dobę, także w weekendy i świętaWarszawa i okolice · dojazd bezpłatny
Darmowa diagnoza laptopa
Darmowa diagnoza laptopa
Dojazd do klienta bezpłatnie
Dojazd do klienta bezpłatnie
Laptopy zastępcze bezpłatnie
Laptopy zastępcze bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie
Odbiór i zwrot sprzętu bezpłatnie

Widok jako warstwa abstrakcji

Termin Definicja
Widok jako warstwa abstrakcji

Widok jako warstwa abstrakcji ukrywa złożoność struktury tabel przed aplikacją korzystającą z danych.

Rola widoku w modelu danych

Widok jest nazwanym zapytaniem zapisanym w bazie danych, które przedstawia wynik tak, jakby był tabelą. Nie musi przechowywać własnych kopii wierszy. W typowym widoku przechowywana jest definicja zapytania, a dane są pobierane z tabel źródłowych podczas wykonywania odwołania do widoku. Dzięki temu aplikacja może korzystać z ustalonego zestawu kolumn i wierszy bez znajomości pełnej struktury tabel bazowych.

Przykładowo tabela pracownicy może zawierać identyfikator, imię, nazwisko, dział, wynagrodzenie i wewnętrzne oznaczenia techniczne. Widok może zwracać wyłącznie identyfikator, imię, nazwisko i nazwę działu. Aplikacja odwołuje się wtedy do widoku podobnie jak do tabeli, używając instrukcji SELECT, lecz nie musi znać nazw pozostałych kolumn ani sposobu połączenia tabel pracowników i działów. Widok porządkuje więc interfejs dostępu do danych i ogranicza zależność kodu aplikacji od szczegółów schematu.

Ukrywanie złączeń, filtrów i obliczeń

Definicja widoku może zawierać filtrowanie rekordów za pomocą WHERE, łączenie tabel przez JOIN, wybór określonych kolumn, sortowanie wyników oraz wyrażenia obliczeniowe. Z punktu widzenia użytkownika widoku złożona operacja jest dostępna pod jedną nazwą. Przykładowy widok zamówienia może połączyć tabelę zamówień, pozycje zamówień i klientów, a następnie zwrócić numer zamówienia, datę, nazwę klienta oraz wartość wyliczoną na podstawie ceny i liczby sztuk.

Warstwa widoku pozwala także ujednolicić sposób interpretacji danych. Jeżeli status aktywnego konta jest zapisany w tabeli jako kod liczbowy, widok może zwracać kolumnę opisową utworzoną przez wyrażenie warunkowe lub połączenie z tabelą słownikową. Aplikacja nie musi powtarzać tej logiki w wielu miejscach. Zmiana sposobu prezentacji kodu może zostać wykonana w definicji widoku, o ile zachowane zostaną jego nazwa oraz oczekiwane kolumny.

Stabilność interfejsu i kontrola dostępu

Widok może pełnić funkcję kontraktu pomiędzy bazą danych a aplikacją. Tabele bazowe można rozdzielić, dodać do nich kolumny techniczne albo zmienić sposób przechowywania części informacji, podczas gdy aplikacja nadal korzysta z niezmienionego zestawu pól widoku. Nie oznacza to jednak pełnej niezależności od schematu. Usunięcie wymaganej kolumny, zmiana jej typu albo modyfikacja relacji używanych w zapytaniu może spowodować błąd odwołania do widoku lub zmianę jego wyników.

Widoki są również używane do ograniczania zakresu danych dostępnych dla określonego użytkownika lub modułu. Uprawnienie można nadać do widoku zamiast do tabel bazowych, a sama definicja widoku może zwracać tylko wybrane kolumny i rekordy. Mechanizm ten nie zastępuje poprawnego modelu uprawnień ani testów bezpieczeństwa, ponieważ skuteczność zależy od konkretnego silnika bazy, konfiguracji uprawnień i sposobu wykonywania zapytań. Widok powinien być projektowany tak, aby nie ujawniał kolumn, które nie są potrzebne odbiorcy.

Wydajność, modyfikacja i diagnostyka widoków

Zwykły widok nie jest automatycznie kopią danych ani gwarancją szybszego działania zapytania. Silnik bazy może rozwinąć jego definicję i zoptymalizować całość razem z zapytaniem wywołującym, ale czas wykonania nadal zależy od liczby rekordów, warunków filtrowania, złączeń, indeksów oraz planu wykonania. Widok zawierający wiele złączeń lub agregacji może być wygodnym interfejsem, lecz jego użycie na dużych tabelach wymaga sprawdzenia planu zapytania i rzeczywistego czasu wykonania.

Nie każdy widok można modyfikować instrukcjami INSERT, UPDATE lub DELETE. Możliwość zapisu zależy między innymi od tego, czy widok opiera się na jednej tabeli, czy zawiera złączenia, agregacje, grupowanie, wartości wyliczane albo inne konstrukcje utrudniające jednoznaczne wskazanie wiersza źródłowego. W praktyce widok należy traktować jako warstwę odczytu, dopóki dokumentacja używanego silnika i testy nie potwierdzą bezpiecznej obsługi operacji modyfikujących. Przy diagnozowaniu problemu sprawdza się definicję widoku, typy kolumn, zależności między obiektami oraz plan wykonania zapytania.

+48 22 100 48 29Zadzwoń teraz · serwisant w 1 godzinę