Corso Database
Un dispensa di informatica sul database e sul DBMS (Database Management System)

da | 18 Gen 2006 | Informatica | 2 commenti

DBMS - Database Management System

Differenze tra DBMS e file system

Il file system è un nucleo, costituito da programmi, presente in ogni sistema operativo. La sua funzione è quella di gestire le varie operazioni sui file; questa gestione non è visibile all’utente, infatti il file system opera direttamente al servizio di altri programmi o utility.

Il DBMS è per l‘appunto un software che poggiando sul sistema operativo utilizza il file system di quest’ultimo.

In questo caso dunque, la maggiore ‘distanza’ del DBMS dall’hardware, rispetto al file system, permette un grado di iterazione maggiore. Questo significa che l’utente (programmatore, amministratore di sistema, ecc.) non dovrà più avere a che fare con record e file, bensì con entità astratte che rappresentano la realtà.

dbms

Componenti di un DBMS

È evidente che un DBMS è un insieme di programmi atti ad effettuare interventi su un database.

Vediamo quali sono le modalità in cui un DBMS può ricevere comandi:

  • Direttamente dall’utente in modo interattivo, tramite particolari comandi appartenenti ai linguaggi ‘accettati’ da quel particolare DBMS.
  • Attraverso un programma scritto completamente in uno o più di quei linguaggi di cui parlavamo sopra.
  • Tramite un programma scritto in un linguaggio algoritmico tradizionale (COBOL, Pascal, C, ecc.) che ingloba alcuni comandi appartenenti ai linguaggi ‘accettati’ dal DBMS.

Vediamo ora come possono essere raggruppati questi linguaggi in base alle loro funzioni:

  • DDL (Data Description Language), tramite i quali si definiscono le strutture del database. Si dice cioè come dovrà esse la base di dati.
  • DML (Data Manipulation Language),che servono per impartire comandi di elaborazione dei dati.
  • QL (Query Language) o linguaggi di interrogazione, che presentano un natura interattiva.

Così, la descrizione delle strutture avverrà tramite il DDL, i programmi di elaborazione saranno scritti in DML e le interrogazioni saranno effettuate con un QL.

Se si desidera fare uso di un linguaggio algoritmico tradizionale, è possibile ricorrere all’incapsulamento, ovvero all’inserimento di blocchi di istruzioni scritte in uno dei linguaggi che il DBMS può leggere.

Non sempre la distinzione tra i diversi tipi di linguaggi (DDL, DML, QL) è netta e chiara: vi possono essere infatti linguaggi che comprendono addirittura tutti e tre i tipi di comandi.

Componenti funzionali di un DBMS

  • Tabella di descrizione database, è una tabella in cui è descritto il modello e le caratteristiche del database.
  • Tabella delle autorizzazioni, è una tabella in cui sono presenti le informazioni dei vari utenti riguardo ai loro permessi di accesso ai vari dati.
  • Tabella per accesso concorrente, ha la funzione di permettere la gestione del traffico di più richieste operati contemporaneamente sui medesimi dati.
  • Language processor, i comandi vengono ricevuti da questa unità, che ha il compito di metterli in relazione con le specifiche di definizione del modello (contenute nella tabella di descrizione del database) e trasmetterli al Database Manager
  • Database Manager, ha il ruolo di ricevere i comandi espressi a livello concettuale cioè operanti sul modello astratto dei dati e tradurli in comandi a livello fisico trasmettendoli al file system del sistema operativo non prima di aver fatto gli opportuni controlli sulla tabella di autorizzazione e sulla tabella di accesso concorrente.

componenti-dbms
 

Livelli di astrazione di un DBMS (introduzione)

Abbiamo accennato al fatto che il DBMS ha, tra le sue funzioni, quella di mantenere un modello astratto dei dati che consenta all’utente di concepire le informazioni secondo strutture riferite direttamente alle entità reali che i dati sono preposti a rappresentare.

Abbiamo inoltre visto che spetta al DBMS, tramite il Database Manager, tradurre le operazioni ordinate dall’utente sulle strutture astratte in operazioni sui file.

Abbiamo visto che l’attività del DBMS consiste nel ricevere comandi, metterli in relazione con il modello dei dati, verificare l’eseguibilità e tradurli in operazioni sugli archivi.

Nell’esecuzione di tali operazioni, il DBMS, così come ogni altro programma applicativo, dipende dal sistema operativo: per l’utilizzo concorrente delle risorse, per l’input/output a video o su stampa, per gli interventi in memoria di massa e così via.

Le funzioni del DBMS

È sufficiente pensare al significato dell’acronimo DBMS (Database Management System ovvero Sistema gestore della base dei dati) per capire che la principale funzione di un DBMS è quella di governare ogni operazione di accesso al Database, sia per quanto riguarda aggiornamenti o ricerche effettuati sugli archivi, sia per le richieste da parte di più applicazioni contemporaneamente.

La caratteristica principale del DBMS consiste nel mantenimento di un modello di dati, ovvero di un’astrazione logica tramite la quale l’utente può vedere i dati non in termini di record, file, campi,

bensì in termini di unità informative, direttamente riferibili agli oggetti della realtà descritti dall’informazione stessa.

Esempio:

Prendiamo in considerazione l’entità dipendenti di una ditta; è possibile mettere in relazione (il concetto relazione nasce dalla matematica, ed in particolare dalla teoria degli insiemi) i dati anagrafici ad essi relativi e disegnare la seguente:

DIPENDENTI (Cognome, Nome, Data_nascita)

Questa relazione può corrispondere ad un file, ma ciò non è necessario: non è detto vi sia corrispondenza tra relazioni, ovvero tra entità costituite da informazioni unitarie, e registrazioni, ovvero record di dati memorizzati su disco.

Tramite il modello dei dati, è possibile progettare e gestire un database in maniera completamente svincolata:

  • Dalle applicazioni
  • Dall’organizzazione fisica dei dati

Esempio:

Supponiamo di volere stampare l’elenco dei dipendenti della ditta che hanno uno stipendio base superiore ad un certo ammontare.

Operando tramite il DBMS è possibile mettere in relazione tra loro i dati anagrafici dei dipendenti (in questo caso il nominativo) con dati di tipo amministrativo (la paga base), registrati dal punto di vista fisico, in due archivi differenti. L’utente, tramite un’astrazione dei dati stessi, può combinare i valori ed operare solo sulla porzione di quelli che gli interessano; nel caso in esame opererà su una relazione relativa ai dipendenti con paga superiore all’ammontare indicato, effettuandone la stampa.

Il linguaggio di interrogazione, o query language, fornisce inoltre il grosso vantaggio di permettere una consultazione interattiva della base di dati, senza dover redigere un programma apposito per ciascuna esigenza informativa. All’utente basta impostare il comando adeguato per ottenere la risposta cercata.

Esempio:

Utilizzando la programmazione tradizionale, ciascuna richiesta informativa necessita di un programma: i dipendenti con un certo numero di anni di anzianità, la lista di coloro che hanno figli, l’elenco dei lavoratori in ferie in un determinato periodo, ecc. È necessario impostare varie routine con diverso accesso ai dati, che verificano condizioni ogni volta differenti.

Tramite il query language, invece, ciascuna esigenza informativa è soddisfatta tramite un’interrogazione: un solo comando va a sostituire un intero programma di centinaia di righe.

Accanto a tali funzioni, il DBMS ne espleta anche altre relative per lo più alla sicurezza (non permettere all’accesso ai dati a persone non autorizzate) e all’integrità dei dati (garantire e permettere delle modifiche e aggiornamenti che non stravolgano lo schema logico della base di dati).

Vediamo quali sono queste altre funzioni:

  • La gestione delle transazioni (transazione: è un’azione che opera sui dati del database: li legge, li scrive, ecc.), per fornire un accesso corretto e concorrente al data base da parte di molti utenti contemporaneamente.
  • L’accesso controllato, per limitare l’accesso ai dati nei riguardi degli utenti non autorizzati e controllare la validità dei dati immessi.
  • La capacità di recupero, cioè la possibilità di ripristino a seguito di guasti del sistema senza perdere i dati.

Livelli di astrazione di un DBMS

Abbiamo accennato al fatto che il DBMS ha tra le sue funzioni, quella di mantenere un modello astratto dei dati che consenta all’utente di concepire le informazioni secondo strutture riferite direttamente alle entità reali che i dati sono preposti a rappresentare.

Abbiamo inoltre visto che spetta sempre al DBMS, per mezzo del Database Manager, tradurre le operazioni ordinate dall’utente sulle strutture astratte in operazioni sui file.

Vediamo adesso quali sono i livelli di astrazione consentiti.

Livello fisico

Il livello fisico del database è rappresentato dalle strutture di memoria di massa usate per conservare i dati e per accedervi in modo rapido ed efficiente.

È necessario distinguere tra:

  • I dati veri e propri
  • Le strutture che li contengono e che ci permettono di accedere ai medesimi

Il livello fisico è, per l’utente, del tutto trasparente: egli, infatti, non si preoccupa affatto di come i dati vengano registrati sui supporti, tale funzione è compito esclusivo del DBMS. L’utente si occuperà principalmente del cosa vi è registrato: quali sono i dati e in quale relazione si trovano tra loro.

Essendo la gestione dei file realizzata dal sistema, l’utente non deve interessarsi della forma assunta dai dati in memoria di massa; non gli resta dunque che occuparsi del valore informativo dei dati.

Livello concettuale

Il livello concettuale rappresenta la struttura globale del database, relativa a tutte le informazioni in esso presenti, rappresentate in modo organizzato tramite un modello astratto.

La descrizione è realizzata tramite il Data Description Language (DDL), ovvero il linguaggio di descrizione dei dati, che fornisce la descrizione del modello astratto del database.

Il modello è composto da entità, a ciascuna entità saranno riferite informazioni, rappresentate da attributi inerenti all’entità medesima. Si crea quindi un rapporto biunivoco tra un’entità del mondo reale, che costituisce l’oggetto di riferimento, e un insieme di dati omogenei e coerenti all’interno del database. Questi dati riporteranno le caratteristiche dell’oggetto a cui si riferiscono, realizzando per l’appunto un processo di astrazione dal livello reale al livello concettuale.

Un’entità è costituita da ciascun oggetto al quale si vogliono riferire informazioni: sono entità gli studenti di un scuola, i dipendenti di un’azienda, i correntisti di un istituto di credito, i libri di una biblioteca. A ciascuna entità fanno riferimento dati ben precisi: nome, data di nascita, reparto, classe, titolo, autore, ecc. Gli attributi sono collegati alle entità, costituendo un oggetto di potenziale informativo maggiore rispetto ad una collezione di informazioni non correlate.

Esempio:

Prendiamo in esame l’entità STUDENTI

STUDENTI (nome, classe, sezione)

Il dominio di sarà costituito da una stringa di caratteri, il dominio da un intero compreso tra 1 e 5, il dominio di da un carattere alfabetico limitato alle sole sezioni presenti nella scuola.

Livello esterno

Una volta definito lo schema concettuale, è possibile limitare l’accesso ai dati ad alcuni utenti. Quindi sono realizzabili accessi e navigazioni personalizzate.

Ciò è reso possibile dalle funzioni del DBMS relative al livello esterno che danno la sensazione a ciascuno di essere l’unico utilizzatore dei dati che vede.

Accesi e navigazioni si attuano attraverso schemi detti viste logiche dei dati.

Definizione di vista:

Una vista è l’astrazione di una parte del data base concettuale che coinvolge i dati dell’istanza del data base limitatamente alla porzione interessata.

Attraverso il DDL, l’utente può descrivere viste logiche dei dati che abbiano tra loro informazioni appartenenti a entità diverse, creando così nuove entità informative.

vista-logica
 

Si può inoltre limitare l’accesso in orizzontale, cioè a una sola parte degli attributi di una entità, oppure in verticale, condizionando il dominio di uno o più attributi. In questo modo, si verrà a disporre di una nuova configurazione della base dei dati, rispondente in modo completo alle esigenze di quel utente.

Esempio:

Tornando alla entità di cui sopra:

STUDENTI (nome, classe, sezione)

Qualora ci interessi una stampa dei nomi, dei soli studenti che frequentano la classe quinta, è possibile descrivere una vista logica dei dati limitando il dominio di al valore 5 e gli attributi a . Se invece si desidera il listato dei soli alunni della sezione E, si limiterà il dominio di a E appunto.

In sostanza, la vista logica è un modo di vedere, accedere e navigare sui dati che sono stati descritti in precedenza dallo schema concettuale e tramite questo registrati nell’istanza del data base a livello fisico.

A questo punto siamo in grado di riassumere quanto detto per i tre livelli:

  • Il livello fisico riguarda l’effettiva memorizzazione dei dati, organizzati in file, record e strutture di accesso.
  • Il livello concettuale riguarda la struttura logica assunta dai dati registrati, quindi il loro schema astratto.
  • Il livello esterno si riferisce la modo in cui ciascun utente può vedere gli stessi dati, che mantengono l’organizzazione fisica e concettuale precedentemente descritte, ma vengono messe a disposizione secondo il formato richiesto.

Il concetto fondamentale da comprendere è la differenza tra i dati e lo schema; solo i file contengono effettivamente raggruppamenti di byte, mentre gli schemi, le entità e le viste non fanno altro che descrivere il formato con cui possono essere di volta in volta manipolati. Tale realtà, tuttavia, è completamente trasparente all’utente, che opera tramite proprie viste logiche come se si trattasse di una base dati fisica vera e propria.

Perché utilizzare un DBMS

Il largo successo ottenuto nel corso degli ultimi quindici anni dai sistemi di gestione delle basi di dati lascia intendere che i vantaggi legati al loro utilizzo siano numerosi. I DBMS sono sistemi di utilità che si occupano di una vasta gamma di operazioni relative alla gestione dei dati non volatili del sistema di elaborazione; in particolare si tratta di operazioni che:

  • Sostituiscono il programmatore: in questo caso, i vantaggi sono legati al fatto che il sistema esegue funzioni che in precedenza erano a carico dei programmatori. Si pensi alla possibilità di consultare la base di dati senza necessità di redigere un apposito programma, ma attraverso un semplice comando di interrogazione, utilizzando il query language; in questo caso l’accesso ai dati è realizzato tramite routine del DBMS.
  • Arricchiscono la gestione precedente, ovvero permettono l’esecuzione di nuove funzioni, in basi di dati già esistenti, aumentandone quindi il potenziale informativo senza che sia necessario aumentare la quantità di dati raccolti e memorizzati.

In una gestione tradizionale è conveniente scrivere un programma di interrogazione solo quando questa esigenza interessa più utenti e si verifica con una certa frequenza. Con i database invece ciascun utente può ottenere informazioni di grande valore semplicemente manipolando i dati secondo i criteri che desidera.

In sostanza, con il DBMS si realizza una gestione centralizzata e controllata della base dati i cui vantaggi principali possono essere così sintetizzati:

  • Riduzione della ridondanza dei dati, dove con ridondanza si intende la possibilità che i dati si presentino ripetutamente nella base.
  • Eliminazione dell’incongruenza.
  • Condivisione dei dati da parte di tutte le applicazioni che ne facciano richiesta.
  • Sicurezza e riservatezza delle informazioni, per ridurre il rischio di distruzione di dati e di accessi non autorizzati.
  • Ottimizzazione della struttura della base dati, che ne facilita l’accesso e la manutenzione e ne garantisce una crescita ordinata.
  • Indipendenza dei dati dalle applicazioni.

Modelli di dati

Come si è visto, uno degli scopi del DBMS è il mantenimento di un modello astratto dei dati in grado di rappresentare la realtà cui questi dati si riferiscono e di mantenere l’indipendenza tra l’aspetto formale della base dati e la sua effettiva implementazione fisica.

Vediamo ora di comprendere più a fondo cosa significa modello e quali sono gli elementi che ne fanno parte.

Definizione di modello:

Un modello è una rappresentazione della realtà, descritta mediante un apposito formalismo.

Una volta che si è avuta percezione della realtà, si procede alla sua descrizione, omettendo quei particolari che non interessano al fine del modello stesso e utilizzando invece quelle strutture che il modello mette a disposizione.

I vari tipi di modelli servono per semplificare la progettazione del data base, vediamo quali sono e quando si usano nelle varie fasi:

modelli-dati
 

Dunque utilizzeremo in genere solo due tipi di modello nella progettazione: il modello entità-lazione che è un modello concettuale e quindi utilizzabile per qualsiasi tipo di database e uno dei tre modelli logici scelto in base al tipo di database che si utilizzerà.

Il modello entità-relazione

Il modello entità-relazione E-R è un modello concettuale di dati e fornisce una serie di strutture, dette costrutti, atte a descrivere la realtà di interesse in una maniera facile da comprendere e che prescinde dai criteri di organizzazione dei dati negli elaboratori.

content_entita relazione

 

Entità:

È un oggetto esistente nel mondo reale che si vuole rappresentare nel modello concettuale. Libro e Utente sono esempi di entità di una applicazione per la gestione di una biblioteca. Il Sig. Mario Rossi (in carne ed ossa) è un esempio di una occorrenza dell’entità Utente.

LIBRO UTENTE

Relazioni:

Rappresentano legami logici, significativi per l’applicazione, tra due o più entità. Assegnamento è un esempio di relazione che può sussistere tra le entità Impiegato e Incarico.

relazione
 

Attributo:

Descrivono proprietà elementari di entità o relazioni di interesse ai fini dell’applicazione. Per esempio, Cognome, Stipendio, Età sono possibili attributi dell’entità Impiegato.

Un attributo associa a ciascuna occorrenza di entità o di relazione un valore appartenente a un insieme, detto dominio dell’attributo. Per esempio, l’attributo Età dell’entità Impiegato può avere un dominio di interi compreso tra 18 e 65.

attributo
 

Cardinalità delle relazioni:

Vengono specificate per ciascuna entità che partecipa a una relazione e descrivono il numero minimo e massimo di occorrenze di relazione a cui le occorrenze delle entità coinvolte possono partecipare.

Cardinalità degli attributi:

Possono essere specificate per gli attributi di entità o relazioni e descrivono il numero minimo o massimo di valori dell’attributo associati ad ogni occorrenza di entità o relazione.

Nella maggior parte dei casi, la cardinalità di un attributo è pari a (1,1) e viene omessa.

Identificatori delle entità:

Permettono di identificare in maniera univoca le occorrenze delle entità. In molti casi, uno o più attributi di entità sono sufficienti a individuare un identificatore: si parla in questo caso si un identificatore interno (detto anche chiave). Per esempio, un identificatore interno per l’entità Automobile con attributi Modello, Targa e colore è l’attributo Targa. Alla stessa maniera, un identificatore interno per l’entità Persona con attributi Nome, Cognome, Indirizzo e data di Nascita può essere l’insieme degli attributi Nome, Cognome e Data di Nascita, avendo assunto che nella nostra applicazione non esistono due persone aventi, contemporaneamente, lo stesso nome, lo stesso cognome e la stessa data di nascita.

content_identificatore esterno

 

Identificatore esterno:

Dove l’identificazione di una entità è ottenuta utilizzando altre entità.

È il caso in cui ad esempio l’entità Dipartimento utilizza come identificativo oltre al suo attributo Nome anche l’attributo Città dell’entità Sede.

Per ogni città esiste un solo dipartimento; un dipartimento fa capo a più sedi; possono esistere dipartimento con nome uguale.

identificatore-esterno
 

Generalizzazione:

Rappresenta legami logici tra una entità E, detta entità padre, e una o più entità E1, . . . , En, dette entità figlie.

Si dice in questo caso che E è generalizzazione di E1, . . . ,En e che le entità E1, . . . , En sono specializzazioni dell’entità E.

Per esempio, l’entità Persona è una generalizzazione delle entità Uomo e Donna e le entità Uomo e Donna sono specializzazioni dell’entità Persona.

generalizzazione
 

Abbiamo visto come il modello E-R è il modello concettuale per eccellenza: ciò significa che attraverso il simbolismo che gli è proprio, è possibile rappresentare la struttura di qualunque base di dati espressa sotto forma di entità, relazioni, attributi.

Tutto ciò lo rende adatto a descrivere la realtà indipendentemente dall’ambiente nel quale il Data Base verrà poi effettivamente realizzato. Pertanto, il modello E-R presenta un livello di astrazione che:

  • da un lato, si rivela indispensabile per adeguarsi alla molteplice realtà, tramite l’uso di un formalismo di valenza universale;
  • dall’altro, richiede di un processo di esplicitazione per passare dal modello concettuale dei dati, ovvero quello realizzato tramite le strutture che gli sono proprie, al modello logico, che tiene conto invece dell’ambiente operativo nel quale il data base verrà implementato.

2 Commenti

  1. nico96

    ottima spiegazione

    Rispondi
    • giack

      spiegazione molto chiara e utile.
      ottimi esempi molto comprensibili che aiutano a comprendere meglio.
      grazie

      Rispondi

Invia un commento

Il tuo indirizzo email non sarà pubblicato.

Share This