Le versioni successive di SQL (2005+) sembrano migliori nell'ottimizzare l'uso delle viste. Le visualizzazioni sono ottimali per il consolidamento delle regole aziendali. Ad esempio: dove lavoro abbiamo un database di prodotti di telecomunicazione. Ogni prodotto è assegnato a un piano tariffario e tale piano tariffario può essere scambiato e le tariffe sul piano tariffario possono essere attivate / disattivate all'aumentare o alla modifica delle tariffe.
Per semplificare, possiamo creare viste nidificate. La prima vista unisce semplicemente i piani tariffari alle loro tariffe utilizzando le tabelle necessarie e restituendo tutti i dati necessari di cui avrebbero bisogno i prossimi livelli di visualizzazioni. La / e seconda / e vista / e può isolare solo i piani tariffari attivi e le loro tariffe attive. Oppure, solo le tariffe dei clienti. O tariffe dei dipendenti (per lo sconto dei dipendenti). O tariffe per clienti commerciali o residenziali. (i piani tariffari possono complicarsi). Il punto è che la vista di base garantisce che la nostra logica aziendale complessiva per piani tariffari e tariffe sia unita correttamente in un'unica posizione. Il prossimo livello di visualizzazioni ci consente di concentrarci maggiormente su piani tariffari specifici (tipi, attivo / inattivo, ecc.).
Concordo sul fatto che le visualizzazioni possono rendere il debug disordinato se si creano query e visualizzazioni contemporaneamente. Tuttavia, se si utilizza una vista di tipo affidabile, questo semplifica il debug. Sai che la vista è già passata attraverso la suoneria, quindi sai che molto probabilmente non sta causando il problema.
Tuttavia, possono sorgere problemi con le tue opinioni. "cosa succede se un prodotto è associato solo a un piano tariffario inattivo?" o "cosa succede se un piano tariffario ha solo tassi inattivi su di esso?" Bene, questo può essere catturato a livello di front-end con una logica che rileva gli errori dell'utente. "Errore, il prodotto è su un piano tariffario inattivo ... per favore correggi". Possiamo anche eseguire controlli delle query per ricontrollarlo prima di eseguire una fatturazione. (selezionare tutti i piani e unirsi a sinistra alla vista del piano tariffario attivo, restituire solo i piani che non ottengono un piano tariffario attivo come problemi che devono essere risolti).
La cosa positiva di questo è che le viste consentono di ridurre notevolmente le query per i rapporti, la fatturazione, ecc. È possibile avere una vista dell'account cliente, quindi una vista di 2 ° livello solo per i clienti attivi. Team che in vista dell'indirizzo del cliente. Team che in vista del (i) prodotto (i) (unito a quale prodotto (i) cliente (i) ha). Abbinalo per visualizzare il piano tariffario dei prodotti. Team che in vista delle caratteristiche del prodotto. Visualizza, visualizza, visualizza ogni prova-n-errata per garantire l'integrità. La tua query finale usando le viste è molto compatta.
modificare:
Come esempio di come la vista sarebbe stata migliore di una semplice query di tabelle ... abbiamo avuto un appaltatore temporaneo per apportare alcune modifiche. Gli dissero che c'erano punti di vista per le cose, ma decise di appiattire tutte le sue domande. La fatturazione stava eliminando alcune delle sue domande. Continuavano a ricevere piani tariffari multipli e tariffe sulle cose. Si scopre che le sue query mancavano di criteri per consentire alle tariffe di fatturare solo se si trovavano tra le date di inizio e fine in cui il piano tariffario avrebbe dovuto utilizzare quella / quelle tariffe durante. Ops. Se avesse usato la vista, avrebbe già tenuto conto di quella logica.
Fondamentalmente, devi valutare le prestazioni rispetto alla sanità mentale. Forse puoi fare tutti i tipi di cose fantasiose per aumentare le prestazioni di un database. Ma, se significa che è un incubo per una persona nuova da assumere / mantenere, ne vale davvero la pena? Vale davvero la pena che il nuovo ragazzo debba giocare a meraviglia dovendo trovare tutte le domande che devono cambiare la sua logica (e rischiare che lui le dimentichi / le faccia ingrassare) b / c qualcuno ha deciso che le viste sono "cattive" e non ha consolidato una logica di business principale in una che potrebbe essere utilizzata in centinaia di altre query? Dipende davvero dalla tua azienda e dal tuo team IT / IS / DB. Preferirei chiarezza e consolidamento a fonte singola rispetto alle prestazioni.