Brook Preloader

Con il termine Database si identificano tutti gli archivi di dati organizzati in modo strutturato gestiti dalla memoria di massa di un elaboratore.

I dati non vengono elaborati in maniera diretta come se fossero un documento di testo, vengono gestiti da un software chiamato DBMS (DataBase Management System).

Il DBMS è un livello intermedio che si frappone tra il Database File, l’effettivo contenitore delle strutture e dei dati effettivi, e l’utente che vuole manipolarli.

 

Diagramma DBMS

Ogni DBMS, che per essere definito tale, deve soddisfare diverse caratteristiche:

 

1. Facilità e rapidità di accesso ai dati:

Le richieste effettuate da uno o più utenti devono ricevere risposta in tempi rapidi, anche se il database è molto grande. Immaginiamo di dover interrogare il database dell’anagrafica dei residenti del comune di Roma alla ricerca di tutti coloro che hanno un’età maggiore di 35 anni, una risposta che impiega trenta secondi non è socialmente e tecnologicamente accettabile.

Ciò che spinge maggiormente la concorrenze tra aziende che sviluppano DBMS è il tempo di reperimento delle informazioni all’interno del nostro database poiché il tempo impiegato nel reperire informazioni viaggia in maniera proporzionale al numero di record presenti all’interno del nostro database.

 

2. Indipendenza dei dati

L’indipendenza dei dati è una tipologia di gestione del database che mantiene i dati separati da tutti i programmi che ne fanno uso, essa si suddivide in indipendenza logica ed indipendenza fisica.

L’indipendenza logica del dato consente di modificare la struttura e l’organizzazione dei dati indipendentemente dalla modifica delle applicazioni o dei programmi che li utilizzano. Non è necessario riscrivere le applicazioni correnti come parte del processo di aggiunta o rimozione di dati dal sistema.

Per quanto riguarda invece l’indipendenza fisica, questa impatta il cambiamento nell’organizzazione dei Database file o nelle loro strategie di salvataggio che possono variare nel tempo. Questo può accadere ad esempio con un aggiornamento software che può introdurre delle nuove features che aumentano le prestazioni nel salvataggio dati o introducono nuovi livelli di compressione dei Database file. A livello utente non viene notato un cambiamento, che esso sia un essere umano o un software che si interfaccia al DBMS.

 

3. Eliminazione della ridondanza e dell’inconsistenza dei dati

Una situazione ridondante in un Database si verifica quando uno stesso dato si trova in più punti del database. Questa situazione è molto pericolosa poiché rischia di danneggiare la struttura di immagazzinamento dati nel caso in cui ci siano relazioni che vanno a coinvolgere dati ridondati.

La ridondanza dei dati espone al problema dell’inconsistenza in caso di modifica. Avere un dato replicato significa che, nel caso in cui sia necessario modificarlo, dovranno essere ricercate tutte le copie all’interno delle varie tabelle del database.

Immaginiamo un sistema di gestione ospedaliera dove l’anagrafica di un paziente viene utilizzata sia per visite che ricoveri. Modificare l’indirizzo del paziente solo nella tabella ricoveri creerebbe una inconsistenza nell’informazione poiché lo stesso utente nella tabella visite avrebbe dei dati differenti. Non potendo decidere quale delle due informazioni è quella aggiornata e quindi quella corretta, l’inconsistenza è irrisolvibile.

 

4. Salvaguardia dell’integrità dei dati

Vengono previsti all’interno del DBMS dei meccanismi di controllo per evitare anomalie nel salvataggio dei dati.

Il controllo dell’integrità viene effettuato su:

 

    • Vincolo di dominio: All’interno della tabella si verifica che il dato che stiamo cercando di inserire rispetti il tipo di dato corretto, ad esempio all’interno di un campo numerico non possiamo inserire dei caratteri alfabetici.
    • Vincolo dell’entità: Ogni record all’interno della tabella può avere un campo che lo identifica univocamente, il controllo quindi non permette di inserire due dati che abbiano un campo univoco duplicato.
    • Vincolo di colonna: Ogni record all’interno della tabella può subire delle regole per uno o più di suo campo rispetto ad un corretto utilizzo del dato, ad esempio il campo età non può avere dei valori negativi o il campo sesso può ammettere solo valori Maschio, Femmina o Altro.
    • Vincoli di integrità personalizzati: Possono essere introdotte delle regole programmate direttamente dall’utente che corrispondono a delle composizioni di regole semplici, ad esempio lo stipendio di un operaio non può essere maggiore di quello del responsabile di cantiere.
    • Vincoli di integrità referenziale: I record di diverse tabelle possono essere messi in correlazione, ad esempio l’utente di un e-commerce con gli ordini effettuati, ma cosa succederebbe se eliminassi l’utente? I record degli ordini non avrebbero più il riferimento all’ordinante, questa situazione è corretta? La risposta a questa domanda è ovviamente negativa ma ad ogni scenario bisogna trovare la corretta interpretazione.

 

5. Gestione della concorrenza di accesso ai dati

Le operazioni effettuate da utenti diversi sullo stesso dato non devono interferire tra loro. Le interferenze possono capitare quando due utenti cercano di modificare lo stesso dato in contemporanea, questa situazione viene parzialmente risolta sequenzializzando le operazioni ed implementando dei meccanismi di blocco (lock) sulle tabelle in utilizzo per impedire ad un utente la modifica su dati su cui un altro utente sta già operando.

 

6. Gestione della sicurezza e del controllo accessi

Impedire gli accessi non autorizzati è una delle caratteristiche principali dei DBMS, vengono quindi implementati meccanismi di controllo utenti, gruppi di utenti e permessi. Un utente o un gruppo di utenti, ad esempio, potrebbe avere permessi di lettura ma non di scrittura sulle tabelle del database, così come gli utenti di amministrazione possono manipolare le strutture dati, ecc.