Database
Con il termine database, si indicano in informatica gli archivi di dati, organizzati e gestiti sulle memorie di massa dei computer attraverso appositi software. Negli archivi deve essere garantita la consistenza, cioè i dati in essi contenuti devono essere significativi ed essere utilizzabili nelle applicazioni dell’azienda; i dati devono essere protetti per impedire perdite accidentali, la produzione deve anche riguardare gli interventi sui dati dovuti ad accessi non autorizzati con operazioni di lettura, modifica o cancellazione. La sicurezza è utile per impedire che il database venga danneggiato da interventi accidentali o non autorizzati; integrità, significa garantire che le operazioni effettuate sul database da utenti autorizzati non provochino una perdita di consistenza ai dati. I prodotti software per la gestione di database vengono indicati con il termine DBMS (DataBase Management System).
I difetti dell’organizzazione degli archivi derivano dalla ridondanza dei dati, cioè gli stessi dati compaiono in maniera duplicata che può portare all’incongruenza, nel caso in cui un dato venga aggiornato in un archivio e non in altro, oppure siano presenti valori diversi per lo stesso dato; questo a sua volta porta all’inconsistenza dei dati, cioè i dati a disposizione non sono più affidabili, perché non si sa con certezza quale dei diversi valori sia quello corretto.
Nello sviluppo della teoria dei database, sono emersi tre tipi diversi di modelli per le basi di dati cronologicamente:
- gerarchico, sviluppato negli anni sessanta, ed ha una struttura ad albero nella quale i nodi rappresentano le entità e gli archi le associazioni;
- reticolare, sviluppato negli anni sessanta, ed ha una struttura a grafo nella quale i nodi rappresentano i nodi e gli archi rappresentano le associazioni;
- relazionale, sviluppato tra gli anni settanta e ottanta e rappresentano il database come un insieme di tabelle;
- ad oggetti, sviluppato negli anni ottanta ed è basato sulla programmazione a oggetti.
Quello più utilizzato al giorno d’oggi è quello relazionale, perché è considerato il modello più semplice ed efficace. Questo modello si basa su alcuni concetti matematici e assegna grande importanza all’uso del linguaggio matematico con, due obiettivi importanti:
- utilizzare un linguaggio conosciuto a livello universale, quale è il linguaggio matematico;
- eliminare i problemi di ambiguità nella terminologia e nella simbologia.
Il modello E/R
Il modello Entità-Relazione, è piuttosto semplice e il suo nome deriva dal fatto che permette di modellare il mondo reale utilizzando entità e relazioni. Il risultato è un diagramma E/R che viene utilizzato per rappresentare visivamente gli oggetti del modello. Le entità sono gli oggetti su cui vengono raccolte informazioni e possono essere persone, macchine, eventi ecc.
La relazione rappresenta un’associazione tra una o più entità. Si dicono:
- relazioni binarie le associazioni tra due entità;
- relazioni binaria ricorsiva quando una relazione associa un’entità con se stessa;
- ternaria la quale implica tre entità o n-arie e vengono scomposte in due o più relazioni binarie;
- complesse che coinvolgono più di due entità;
- ridondanti definite tra due entità equivalente nel significato di un’altra relazione tra le stesse due entità.
La caratteristica principale della relazione è la cardinalità, la quale descrive la mappa delle istanze delle entità associate nelle relazioni. I tipi principali di cardinalità sono: uno a uno, uno a molti, molti a molti. Date due entità A e B, la relazione uno a uno (1:1) si ottiene quando un’unica istanza dell’entità A viene associata a un’unica istanza dell’entità B. la relazione uno a molti (1:M) si verifica quando a una istanza dell’entità A corrispondono zero, una, o molte istanze dell’entità B, ma a un’istanza dell’entità b corrisponde solo un’istanza dell’entità A. una relazioni molti a molti (M:M), si verifica quando per un’istanza dell’entità A ci sono zero, una o molte istanze dell’entità B, e per un’istanza dell’entità B ci sono zero, una o molte istanze dell’entità A.
In un modello E/R sono presenti anche gli attributi che descrivono le entità con le quali sono associati.
Una particolare istanza di un attributo è detta valore. Questi possono essere identificatori, dette anche chiavi, le quali identificano univocamente un’istanza di un’entità; e descrittori, la quale descrivere una caratteristica non unica di una istanza di un’entità. Gli attributi chiave sono quelli che possono essere per identificare un’entità; quelli non chiave, descrivono l’entità a cui appartengono e possono e possono esistere solo in un’entità; quelli derivati, creati da una formula o da operazioni di elaborazione su altri attributi. Il dominio di un attributo è la collezione di tutti i valori possibili di un attributo.
Le chiavi
La chiave primaria è un attributo o un insieme di attributo che identificano univocamente una specifica istanza di una entità e l’attributo deve avere le seguenti proprietà:
- il valore deve essere specificato per ogni istanza dell’entità;
- il valore deve essere unico per ogni istanza dell’entità
- il valore non deve cambiare o diventare nullo durante la vita di ogni istanza dell’entità.
Le tabelle
Le tabelle vengono ricavate dal modello E/R applicando le regole di derivazione del modello logico, e cioè:
- ogni entità diventa relazione;
- ogni attributo di un’entità diventa un attributo della relazione;
- ogni attributo della relazione eredita le caratteristiche dell’attributo dell’entità da cui deriva;
- l’identificatore univoco diventa la chiave primaria della relazione derivata;
- l’associazione uno a uno diventa un’unica relazione che contiene gli attributi della prima e della seconda entità;
- nell’associazione uno a molti la chiave primaria dell’entità di partenza diventa chiave esterna dell’entità di arrivo associata;
- l’associazione molti a molti diventa una nuova relazione composta dagli identificatori univoci dalle due entità e dagli eventuali attributi dell’associazione.
Le tabelle relazionali godono di 6 proprietà:
- i valori sono atomici. Questa proprietà indica che le colonne non sono scomponibili;
- i valori delle colonne sono omogenei tra di loro. Tutti i valori in una colonna appartengono allo stesso dominio;
- ogni riga è univoca. Questa proprietà assicura che non ci siano due righe identiche;
- la sequenza della colonna non è significativa;
- la sequenza delle righe non è significativa;
- ogni colonna deve avere un nome univoco.
Le operazioni operazionali
Gli operatori relazionali agiscono su una relazione per ottenere una nuova relazione. Quindi le operazioni relazionali consentono di effettuare le interrogazioni (o query) ai database per ottenere le informazioni desiderate estraendo da una tabella una sottotabella.
Alcune principali operazioni del modello relazionale sono:
- la selezione genera una nuova relazione costituita solo dalle tuple della relazione di partenza che soddisfano a una determinata condizione; la relazione ottenuta possiede tutte le colonne della relazione di partenza e quindi ha lo stesso grado, la cardinalità può essere minore o uguale alla tabella di partenza, ma di solito è minore.
- la proiezione genera una nuova relazione estraendo della tabella iniziale due o più colonne corrispondenti agli attributi prefissati. La tabella ottenuta potrebbe contenere alcune righe uguali: in questo caso occorre chiedere che ne venga conservata una sola perché il modello relazionale non consente righe uguali tra loro; nelle relazioni risultante il grado è minore o uguale al grado della relazione di partenza, la cardinalità di norma è uguale a quella di partenza;
- la congiunzione serve a combinare due relazioni aventi uno o più attributi in comune, generando una nuova relazione che contiene le righe della prima e della seconda tabella, che possono essere combinate secondo i valori uguali dell’attributo comune; la coniugazione viene realizzata facendo corrispondere valori uguali per attributi comuni nelle due tabelle: per questo motivo si chiama equi-join.
Esistono altri tipi di congiunzione:
- il join.-esterno è una congiunzione che restituisce le righe dell’una e dell’altra tabella anche se non sono presenti valori uguali per l’attributo comune; vengono combinate solo le due righe per le quali il valore dell’attributo comune nella prima tabella trova un valore uguale nella colonna dell’attributo comune nella seconda tabella. Il join-esterno può essere:
- left join, quando elenca comunque tutte le righe della prima tabella congiungendo tra le righe della seconda solo quelle per le quali si trovano valori corrispondenti per l’attributo comune;
- right join, in questo caso comunque restituisce tutte le righe della seconda tabella e di queste congiunge con le righe della prima tabella solo quelle per quali si possono trovar valori corrispondenti per l’attributo comune.
Se le tabelle su si opera hanno una struttura gabellare omogenea si possono applicare le usuali operazione sugli insiemi:
- l’unione che consente di ottenere una nuova tabella, contiene le righe della prima e della seconda tabella con riduzione a una di quelle ripetute;
- l’intersezione la quale genera a partire da due tabelle omogenee, una nuova tabella che contiene soltanto le righe comuni;
- la differenza che genera una nuova tabella contenente soltanto le righe della prima tabella che non sono contenute nella seconda tabella;
- il prodotto di due tabelle, detto anche prodotto cartesiano, è la concatenazione di ogni riga una tabella con ogni riga della seconda tabella.