Nozioni fondamentali sui database

Un database di SQL Server è costituito da un set di tabelle in cui è archiviato un set specifico di dati strutturati. Una tabella contiene una raccolta di righe, definite anche record o tuple, e colonne, definite anche attributi. Ogni colonna nella tabella è progettata per contenere un tipo di informazioni specifico, ad esempio date, nomi, importi in valuta e numeri.

Alle tabelle sono associati numerosi tipi di controlli, ad esempio vincoli, trigger, valori predefiniti e tipi di dati utente personalizzati, che garantiscono la validità dei dati. È possibile aggiungere vincoli di integrità referenziale dichiarativa (DRI, Declarative Referential Integrity) alle tabelle per garantire che i dati correlati delle diverse tabelle rimangano consistenti. Nelle tabelle è possibile includere indici, con caratteristiche molto simili a quelli dei libri, che consentono di trovare rapidamente le righe. Un database può inoltre contenere procedure che utilizzano codice di programmazione Transact-SQL o .NET Framework per eseguire operazioni con i dati del database. Tali operazioni includono la creazione di viste che offrono accesso personalizzato ai dati della tabella o di una funzione definita dall'utente per l'esecuzione di un calcolo complesso in un subset di righe.

È ad esempio possibile creare un database denominato MyCompanyDB per gestire i dati della società. Nel database MyCompanyDB è possibile creare una tabella denominata Employees in cui archiviare le informazioni su ogni dipendente. La tabella contiene inoltre colonne denominate EmpId, LastName, FirstName, Dept e Title. Per verificare che non vi siano due impiegati con lo stesso EmpId e che la colonna Dept contenga solo numeri validi per i reparti della società, è necessario aggiungere vincoli alla tabella.

Per trovare in modo rapido i dati di un dipendente, in base al relativo ID o cognome, è necessario definire indici. Sarà quindi necessario aggiungere una riga di dati alla tabella Employees per ogni dipendente e, di conseguenza, dovrà essere creata una stored procedure denominata AddEmployee. Questa procedura è personalizzata in modo da accettare i valori di dati per un nuovo dipendente ed eseguire un'operazione di aggiunta della riga alla tabella Employees. Potrebbe essere necessario creare un riepilogo dei dipendenti per reparti. In questo caso, è possibile definire una vista denominata DeptEmps che consenta di combinare i dati delle tabelle Departments e Employees e generare l'output. In questa figura vengono illustrate le parti di MyCompanyDB create.

Oggetti in un database

Un'istanza di SQL Server può supportare più database. Ogni database consente di archiviare dati correlati o non correlati di altri database. In un'istanza di SQL Server possono, ad esempio, essere presenti un database in cui sono archiviati i dati sul personale e un altro in cui sono archiviati i dati relativi ai prodotti. In alternativa, è possibile archiviare in un database i dati aggiornati sugli ordini dei clienti e in un altro database correlato la cronologia degli ordini dei clienti da utilizzare per la creazione di report annuali.

Nota importanteImportante

Nel database master non deve essere creato alcun oggetto utente, ad esempio tabelle, viste, stored procedure o trigger. Il database master contiene informazioni di sistema utilizzate dall'istanza di SQL Server, ad esempio informazioni di accesso e impostazioni delle opzioni di configurazione.

Database OLTP

I database relazionali OLTP (Online Transaction Processing) sono ideali per la gestione di dati in evoluzione. Generalmente, tali database sono utilizzati da diversi utenti che eseguono contemporaneamente transazioni che comportano la modifica dei dati in tempo reale. Sebbene le singole richieste di dati da parte degli utenti facciano in genere riferimento a poche righe, vengono eseguite contemporaneamente molte di queste richieste.

I database OLTP sono progettati per consentire alle applicazioni transazionali di scrivere solo i dati necessari per la gestione di una singola transazione nel modo più rapido possibile. I database OLTP hanno in genere le caratteristiche seguenti:

  • Supportano un ampio numero di utenti simultanei che aggiungono e modificano dati regolarmente.

  • Rappresentano lo stato in continua evoluzione di un'organizzazione, ma non vengono utilizzati per salvare i relativi dati storici.

  • Contengono grandi quantità di dati, incluse informazioni dettagliate utilizzate per verificare le transazioni.

  • Hanno strutture complesse.

  • Sono ottimizzati in modo da rispondere alle attività di transazione.

  • Offrono l'infrastruttura tecnologica necessaria per supportare le operazioni quotidiane eseguite in un'organizzazione.

  • Le singole transazioni vengono completate rapidamente e accedono a quantità relativamente ridotte di dati. I sistemi OLTP sono progettati e ottimizzati per l'elaborazione di centinaia o migliaia di transazioni immesse contemporaneamente.

I dati nei sistemi OLTP sono organizzati principalmente per supportare transazioni quali:

  • Registrazione di un ordine proveniente da un terminale di un punto di vendita o immesso tramite un sito Web.

  • Invio di un ordine di forniture quando le scorte scendono al di sotto un livello specifico.

  • Rilevamento dei componenti durante l'assemblaggio in un prodotto finale in una struttura di produzione.

  • Registrazione dei dati dei dipendenti.

Data warehouse

A differenza dei database OLTP, il cui scopo è quello di acquisire volumi elevati di transazioni di modifica e aggiunta di dati, lo scopo dei data warehouse consiste nell'organizzare grandi quantità di dati stabili per agevolare le operazioni di analisi e recupero. Un data warehouse viene spesso utilizzato come base per un'applicazione di Business Intelligence.

Di seguito sono elencate le operazioni che è possibile eseguire con i data warehouse:

  • Combinare dati da origini dei dati eterogenee in una singola struttura omogenea.

  • Organizzare dati in strutture semplificate mirate a migliorare l'efficienza delle query analitiche anziché quella dell'elaborazione delle transazioni.

  • Contenere dati trasformati validi, consistenti, consolidati e formattati per l'analisi.

  • Offrire dati stabili rappresentativi dell'evoluzione aziendale.

  • Aggiornare i data warehouse stessi periodicamente con dati aggiuntivi anziché eseguire transazioni frequenti.

  • Semplificare i requisiti di protezione.

Snapshot del database

Uno snapshot del database è una vista statica di sola lettura di un database, il database di origine. Ogni snapshot del database è consistente a livello di transazioni con il database di origine al momento della creazione dello snapshot. Per ulteriori informazioni, vedere Snapshot del database.