Czytam Biblię SQL Server 2008 i omawiam sekcję dotyczącą widoków. Ale autor tak naprawdę nie wyjaśnia celu poglądów. Jaki jest dobry użytek z widoków? Czy powinienem ich używać w swojej witrynie i jakie są z nich korzyści?
sql
sql-server
Łukasza 101
źródło
źródło
Odpowiedzi:
Innym zastosowaniem, o którym nie ma mowy w żadnej z poprzednich odpowiedzi, jest łatwiejsze wdrażanie zmian struktury tabeli.
Powiedzmy, że chcesz wycofać tabelę (
T_OLD
) zawierającą dane aktywnych użytkowników i zamiast tego użyć nowej tabeli z podobnymi danymi (nazwanymiT_NEW
), ale zawierającej dane zarówno dla aktywnych, jak i nieaktywnych użytkowników, z jedną dodatkową kolumnąactive
.Jeśli Twój system (y) mają miliardy zapytań, które to umożliwiają
SELECT whatever FROM T_OLD WHERE whatever
, masz dwie możliwości wdrożenia:1) Cold Turkey - Zmień DB, a jednocześnie zmień, przetestuj i wypuść wiele fragmentów kodu, które zawierały wspomniane zapytanie. BARDZO trudne do zrobienia (a nawet koordynowania), bardzo ryzykowne. Zły.
2) Stopniowo - zmień bazę danych, tworząc
T_NEW
tabelę, usuwającT_OLD
tabelę i zamiast tego tworząc WIDOK o nazwie,T_OLD
który naśladujeT_OLD
tabelę w 100% (np. Zapytanie widoku jestSELECT all_fields_except_active FROM T_NEW WHERE active=1
).Pozwoliłoby to uniknąć wydawania DOWOLNEGO kodu, który aktualnie wybiera z
T_OLD
, i wprowadzanie zmian w celu migracji kodu zT_OLD
doT_NEW
w wolnym czasie.To jest prosty przykład, są inne o wiele bardziej zaangażowane.
PS Z drugiej strony, prawdopodobnie powinieneś mieć API procedury składowanej zamiast bezpośrednich zapytań z
T_OLD
, ale nie zawsze tak jest.źródło
(Skopiowane z pierwszego samouczka, który pojawił się w wyszukiwarce Google (link nie działa), ale ma wszystkie zalety, które sam bym wpisał ręcznie.)
źródło
Kilka powodów z Wikipedii :
Widoki mogą zapewnić przewagę nad tabelami:
źródło
VIEWS mogą być używane jako sekcje SELECT / CODE wielokrotnego użytku, które mogą być dołączane do innych selekcji / zapytań, które mają być połączone, i używać różnych różnych filtrów bez konieczności ponownego tworzenia całego SELECT za każdym razem.
To również umieszcza logikę w jednym miejscu, dzięki czemu nie trzeba jej zmieniać w całej bazie kodu.
Spójrz na
Wybór między procedurami składowanymi, funkcjami, widokami, wyzwalaczami, wbudowanym kodem SQL
źródło
Widok jest warstwą abstrakcji i robi to, co robi każda dobra warstwa abstrakcji, włączając w to hermetyzację schematu bazy danych i ochronę przed konsekwencjami zmiany wewnętrznych szczegółów implementacji.
To interfejs.
źródło
Oto jedno bardzo powszechne użycie widoków do ograniczenia jednostki według pewnych kryteriów.
Tabela: USERS zawiera wszystkich użytkowników
Widok: ACTIVE_USERS zawiera wszystkich użytkowników z wyłączeniem tych, którzy są zawieszeni, zbanowani, czekają na aktywację i nie spełniają żadnych kryteriów, które możesz zdefiniować w przyszłości w ramach aktywnych wymagań. Dzięki temu nie trzeba usuwać żadnych wierszy z tabeli USERS, jeśli zdecydujesz się tego nie robić, ponieważ ACTIVE_USERS zawsze może ukryć niechciane wiersze.
W ten sposób możesz używać tabeli na stronach zarządzania użytkownikami, ale reszta aplikacji może używać ACTIVE_USERS, ponieważ mogą być jedynymi użytkownikami, którzy powinni mieć możliwość wykonywania procesów i dostępu do danych / modyfikowania ich.
źródło
Widoki umożliwiają łączenie danych z kilku różnych tabel i formatowanie ich (łączenie pól, nadawanie bardziej znaczących nazw pól itp.), Aby ułatwić użytkownikom końcowym. Stanowią abstrakcję modelu bazy danych. Można ich również użyć, aby zapewnić użytkownikom dostęp do danych w tabeli bez bezpośredniego dostępu do samej tabeli.
źródło
Oto kilka z wielu powodów używania widoku zamiast bezpośrednio tabeli
Z imexploring.com
źródło
Mała lista typowych powodów / zastosowań:
użyj ich do zmiany formatu lub „wyglądu” danych (np. możesz połączyć razem imię i nazwisko)
wykonywać obliczenia lub inne wyszukiwania danych
denormalizuj dane (wyodrębnij dane z kilku tabel w jednym miejscu)
źródło
Widoki są złe! Unikaj ich, jeśli to możliwe, i używaj tylko z powodu wskazanego przez DVK - tymczasowej migracji danych.
Należy zrozumieć, że w bazie danych zawierającej 100 tabel trudno jest zapamiętać przeznaczenie każdej tabeli. Teraz, jeśli dodasz tutaj kolejne 300 widoków, będzie to kompletny bałagan. Niż „Miłośnicy widoków” zwykle używają widoków zagnieżdżonych, a następnie używają widoków zagnieżdżonych w procedurach składowanych. Osobiście pracuję teraz z bazą danych, w której są 4 razy zagnieżdżone widoki! Aby zrozumieć najprostszą logikę procedury składowanej, muszę najpierw przejść przez wszystkie widoki.
źródło