Le visualizzazioni sono accettabili quando è necessario garantire che la logica complessa venga seguita ogni volta. Ad esempio, abbiamo una vista che crea i dati grezzi necessari per tutti i rapporti finanziari. Se tutti i rapporti utilizzano questa visualizzazione, tutti lavorano dallo stesso set di dati, anziché un rapporto che utilizza un insieme di join e un altro si dimentica di usarne uno che fornisce risultati diversi.
Le visualizzazioni sono accettabili quando si desidera limitare gli utenti a un particolare sottoinsieme di dati. Ad esempio, se non si eliminano i record ma si contrassegna solo quello corrente come attivo e le versioni precedenti come inattive, si desidera una visualizzazione da utilizzare per selezionare solo i record attivi. Ciò impedisce alle persone di dimenticare di inserire la clausola where nella query e di ottenere risultati negativi.
Le visualizzazioni possono essere utilizzate per garantire che gli utenti abbiano accesso solo a un set di record, ad esempio una visualizzazione delle tabelle per un particolare client e nessun diritto di sicurezza sulle tabelle può significare che gli utenti di quel client possono vedere solo i dati per quel cliente.
Le viste sono molto utili durante il refactoring dei database.
Le visualizzazioni non sono accettabili quando si utilizzano visualizzazioni per chiamare visualizzazioni che possono comportare prestazioni orribili (almeno in SQL Server). Abbiamo quasi perso un client multimilionario perché qualcuno ha scelto di astrarre il database in quel modo e le prestazioni erano orrende e i timeout frequenti. Abbiamo dovuto pagare anche per la correzione, non il cliente, poiché il problema delle prestazioni era completamente colpa nostra. Quando le visualizzazioni chiamano le visualizzazioni, devono generare completamente la visualizzazione sottostante. Ho visto questo in cui la vista chiamava una vista che chiamava una vista e così tanti milioni di record venivano generati per vedere i tre di cui l'utente alla fine aveva bisogno. Ricordo che una di queste visualizzazioni impiegò 8 minuti per fare un semplice conteggio (*) dei record. Le visualizzazioni che chiamano visualizzazioni sono un'idea estremamente scarsa.
Le visualizzazioni sono spesso una cattiva idea da utilizzare per aggiornare i record poiché di solito è possibile aggiornare solo i campi della stessa tabella (di nuovo questo è SQL Server, altri database possono variare). In tal caso, ha più senso aggiornare direttamente le tabelle comunque in modo da sapere quali campi sono disponibili.