Controllo dell'accesso ai dati con le viste in SQL

Banca dati le viste riducono la complessità dell'esperienza dell'utente finale e limitano l'accesso degli utenti ai dati contenuti nelle tabelle del database. In sostanza, una vista utilizza i risultati di a interrogazione del database per popolare dinamicamente il contenuto di una tabella di database virtuale.

Perché utilizzare le visualizzazioni?

Esistono due motivi principali per fornire agli utenti l'accesso ai dati tramite le viste anziché fornire loro l'accesso diretto alle tabelle del database:

  • Le viste forniscono una sicurezza semplice e granulare. Utilizzare una vista per limitare i dati che un utente può vedere in una tabella. Ad esempio, se si dispone di una tabella dipendenti e si desidera fornire ad alcuni utenti l'accesso ai record dei dipendenti a tempo pieno, è possibile creare una vista che contenga solo tali record. Questo è molto più semplice dell'alternativa (creazione e gestione di una tabella shadow) e garantisce l'integrità dei dati.
  • Le visualizzazioni semplificano l'esperienza dell'utente
    instagram viewer
    . Le viste nascondono dettagli complessi delle tabelle del database agli utenti finali che non hanno bisogno di vederli. Se un utente scarica il contenuto di una vista, non vedrà le colonne della tabella che non sono selezionate dalla vista e potrebbe non capire. Questo li protegge dalla confusione causata da colonne con nomi errati, identificatori univoci e chiavi della tabella.

Creazione di una vista

La creazione di una vista è abbastanza semplice: crea semplicemente una query che contenga le restrizioni che desideri applicare e posizionala all'interno del comando CREATE VIEW. Ecco la sintassi generale:

CREA VISTA nome vista AS

Ad esempio, per creare la vista del dipendente a tempo pieno, immetti il ​​seguente comando:

CREA VISUALIZZAZIONE AS a tempo pieno
SELECT nome, cognome, id_impiegato
DA dipendenti
WHERE status='FT';

Modifica di una vista

La modifica dei contenuti di una vista utilizza la stessa identica sintassi della creazione di una vista, ma usa il comando ALTER VIEW invece del comando CREATE VIEW. Ad esempio, per aggiungere una restrizione alla visualizzazione a tempo pieno che aggiunge il numero di telefono del dipendente ai risultati, emettere il seguente comando:

ALTER VIEW a tempo pieno AS
SELECT nome, cognome, id_impiegato, telefono
DA dipendenti
WHERE status='FT';

Eliminazione di una vista

È semplice rimuovere una vista da un database utilizzando il comando DROP VIEW. Ad esempio, per eliminare la visualizzazione del dipendente a tempo pieno, utilizzare il comando seguente:

DROP VIEW a tempo pieno; 

Visualizzazioni vs. Viste materializzate

Una vista è una tabella virtuale. UN vista materializzata è la stessa vista scritta su disco e accessibile come se fosse una tabella a sé stante.

Quando si esegue una query su una vista, la query secondaria che origina la vista viene eseguita in tempo reale, quindi i risultati vengono restituiti alla query principale originale. Se le tue viste sono eccezionalmente complesse o la tua query principale richiede un gran numero di hash join tra diverse tabelle e viste, la tua query principale verrà eseguita alla velocità di una tartaruga.

Una vista materializzata accelera l'esecuzione della query perché funziona come una query precompilata scritta su disco e quindi viene eseguita con la stessa rapidità di una tabella. Tuttavia, le viste materializzate sono valide solo quanto le procedure di evento che le aggiornano. A lungo termine, con una buona manutenzione, le visualizzazioni materializzate accelerano le cose con un piccolo compromesso nel tempo di aggiornamento del ritardo, senza il bisogno di un mucchio di tabelle ombra che possono diventare dormienti e consumare spazio su disco o fornire le query di qualcun altro impropriamente.