Il Database e l'SQL
Il database è uno strumento che permette di condividere efficacemente grosse quantità di informazioni. L'SQL o Structured Query Language è il linguaggio che si utilizza per gestire la struttura e i contenuti del database.
Tutte le informazioni che si vogliono raccogliere e correlare devono essere organizzate in modo logico e razionale.
Per far questo è necessario avere chiara in mente la struttura che si vuole realizzare, sia che si tratti di una singola tabella o di un intero database.
La creazione degli elementi di un database può essere effettuata tramite gli strumenti grafici di amministrazione, oppure tramite righe di comando scritte con un linguaggio specifico.
Creazione di una tabella
Sebbene ad una tabella si possa assegnare un nome qualsiasi, le tabelle di un database solitamente hanno nomi che ne descrivono il contenuto: ad esempio in un database gestionale la tabella denominata CodArt conterrà l'elenco dei codici articolo; si può immaginare quale tipo di dati contenga la tabella IndirizziDiSpedizione.
Per sfruttare al meglio le risorse ed ottimizzare le prestazioni, oltre al nome del campo, dovrà essere dichiarato il tipo di dato e le sue dimensioni massime.
Ci saranno quindi campi di tipo numerico intero, numerico decimale, testo a lunghezza fissa o variabile, data ora, vero o falso, etc. .
I record rispetteranno queste condizioni infatti un valore testo in un campo numerico, causerà il mancato inserimento della riga.
La chiave primaria
In una tabella la chiave primaria rappresenta il valore che rende ogni record univoco, cioè unico tra tutti gli altri.
Uno o più campi di una tabella possono essere contrassegnati come chiavi primarie. Ad esempio in una tabella di articoli, quando vogliamo che ogni voce inserita sia univoca, quindi sia impossibile inserire duplicati, il codice articolo deve essere impostato come chiave primaria.
Se volessimo prevedere diverse versioni dello stesso articolo, imposteremo due chiavi: CodiceArticolo e Versione; ad esempio potremo indicare versione zero quella standard ed in progressione le altre.
L'utilizzo delle chiavi serve anche ad ottimizzare le prestazioni dell'intero database.
Per rendere agevole e comodo l'utilizzo delle tabelle, è buona abitudine non inserire troppi campi, soprattutto quando parte di questi restano spesso inutilizzati.
È meglio distribuire le informazioni in diverse tabelle; se analizziamo l'anagrafica di un cliente, questa conterrà dati di ogni genere che serviranno alle procedure operative.
Ci sarà una sezione anagrafica, una contatti, una commerciale, una contabile, una per la generazione dei documenti, etc. ; ognuna di queste conterrà numerosi campi da compilare.
Solitamente si creano tabelle diverse: anagraficaGenerale, anagraficaCommerciale, etc.; tutte queste tabelle avranno in comune il campo CodiceCliente che sarà impostato come chiave primaria.
Nei database relazionali è possibile dichiarare preventivamente le relazioni tra le tabelle ad esempio per fare in modo che alla cancellazione di un record di una tabella principale vengano eliminati tutti i relativi record delle tabelle collegate.
Relazioni tra tabelle
In un database le relazioni servono ad associare le informazioni di tabelle distinte tramite uno o più campi comuni.
Quando si stabiliscono le relazioni tra le tabelle, è possibile dichiarare diversi tipi di relazioni, ad esempio una relazione uno a molti.
Un esempio classico di relazione uno a molti è quella che correla la tabella articoli con quella delle distinte base: ad un componente "padre" corrisponderanno diversi componenti "figli"; in questo modo sarà possibile ad esempio stampare una lista di prelievo per il magazzino.
Le viste: query di selezione record
Una query è una riga di comando che permette di interagire con un database.
Quando ci si collega via internet ad una base dati condivisa, la connessione, seppur stabile e veloce, rappresenta il collo di bottiglia di tutto il processo.
Per ovviare a questa strozzatura é necessario ridurre al minimo lo scambio dati tra le due macchine collegate. L'utente che vuole visualizzare i movimenti contabili del proprio conto bancario inserirà i parametri di filtro e col comando aggiorna invierà la richiesta al server che si presenterà più o meno così:
SELECT * FROM MovimentiContabili WHERE userName = 'gdavanzo' AND DataMovimento > #31/12/2018#.
Il server elaborerà la richiesta e, tra i milioni di record in essa contenuti, restituirà solo quelli richiesti.
Queste query (chiamate anche 'viste') possono essere salvate con un nome specifico e possono prevedere alcuni parametri obbligatori (nell'esempio sopra saranno il nome utente e la data di inizio interrogazione).
Altre query, con una struttura simile, permetteranno di inserire, eliminare, o modificare uno o più record contemporaneamente.