Widok (view) to wirtualna tabela w bazie danych: zapisane pod nazwą zapytanie SQL, którego można używać jak zwykłej tabeli - SELECT-ować, filtrować, łączyć - choć fizycznie nie przechowuje danych. Przy każdym odwołaniu baza wykonuje zapytanie składowe na świeżych danych.
Analitykowi widoki służą do trzech rzeczy. Po pierwsze, upraszczają: zamiast za każdym razem pisać złączenie pięciu tabel, raz definiuje się widok i raporty czyta się z niego. Po drugie, ujednolicają logikę - gdy definicja „aktywnego pacjenta" siedzi w widoku, wszystkie raporty liczą go tak samo, zamiast każdy po swojemu. Po trzecie, ograniczają dostęp: widok może wystawiać tylko wybrane kolumny.
W MediFlow widok v_wizyty_raport łączy tabele wizyt, pacjentów, lekarzy i przychodni, a jednocześnie nie zawiera numeru PESEL ani danych kontaktowych - analitycy raportujący obłożenie gabinetów dostają dostęp do widoku, nie do tabel źródłowych. Jedna decyzja w warstwie dostępu załatwiła kawał zgodności z RODO: minimalizacja danych wprost w bazie.
Częsta pomyłka: mylenie widoku zwykłego ze zmaterializowanym. Zwykły widok wykonuje zapytanie przy każdym użyciu (zawsze świeże dane, ale bywa wolny); widok zmaterializowany przechowuje wyniki fizycznie i wymaga odświeżania (szybki, ale dane mogą być nieaktualne). Raport z widoku zmaterializowanego odświeżanego w nocy pokazuje wczorajszy stan - lepiej to wiedzieć, zanim zarząd zapyta, czemu liczby się nie zgadzają. Druga pomyłka: budowanie widoków na widokach na widokach. Po trzecim poziomie zagnieżdżenia nikt już nie wie, skąd pochodzą dane i czemu zapytanie trwa minutę.