Eprogram informatica
V anno
Basi di dati
Il sistema EDP
In un’azienda il sistema informativo viene gestito utilizzando strumenti
informatici.
Questo sistema prende il nome di EDP (Electronic Data Processing) e
può essere visto come un insieme di dati memorizzati su supporti
elettronici e di applicazioni informatiche utilizzate per agevolare il
raggiungimento degli obiettivi di un’azienda.
Applicazione informatica
Per applicazione informatica si intende una componente del sistema
informativo (SI) che utilizza dati in esso immagazzinati per compiere una
funzione specifica all’interno dell’organizzazione a cui il SI appartiene.
OGNI applicazione del SI opera su un insieme di dati memorizzati
secondo una struttura definita all’interno dell’applicazione stessa
dall’analista.
L’analista ha il compito di realizzare l’applicazione in modo da rendere
massima la sua efficienza, indipendentemente dalle altre applicazioni.
In un sistema EDP ogni applicazione opera in modo del tutto
indipendente (o quasi) dalle altre applicazioni, facendo uso dei propri
dati e dei propri programmi.
File system
Lo strumento utilizzato per la gestione e la memorizzazione dei dati è
il file system.
Il file system è la parte del sistema operativo che si occupa della
definizione e gestione dei file immagazzinati sulla memoria di massa.
Problematiche legate alle applicazioni
Le applicazioni nel sistema EDP presentano alcune problematiche:
- risultano isolate dalle altre dello stesso sistema informativo, un
problema quando è necessaria la condivisione di dati.
- i dati vengono ripetuti tante volte quante sono le applicazioni che
devono usarli, con conseguente spreco di memoria e con il rischio di
introdurre inconsistenze ed errori.
- l’accesso ai dati può avvenire solo tramite le applicazioni. Se c’è
necessità di ottenere risultati diversi da quelli previsti dall’applicazione,
occorre realizzare i programmi specifici.
- stretto legame tra livello logico (cosa si vuole fare in un’applicazione)
e fisico (come sono memorizzati e gestiti i dati) con conseguenti
difficoltà, lunghezza e costo nella modifica delle applicazioni anche a
fronte di variazioni lievi.
Contenitore di dati unico, le basi di dati
Da questi problemi nasce l’idea di un unico contenitore di dati, che
garantisca:
- accessi multipli
- diversità di linguaggi
- privatezza
- integrità
- consistenza
- accessibilità
- modificabilità
- correttezza
Questi obiettivi non possono essere raggiunti tramite gli strumenti
convenzionali: nasce quindi l’esigenza di nuovi strumenti, quali le
basi di dati.
Basi di dati
Una base di dati può essere definita come una collezione di dati
strutturati, progettati per essere usati in applicazioni differenti e da
differenti utenti.
In particolare, è un insieme di dati memorizzati senza ridondanze inutili
per servire più di un’applicazione in contemporanea e organizzati in
modo da essere indipendenti dai programmi che li usano.
Basi di dati e DBMS
Per la gestione delle basi di dati sono necessari particolari sistemi
software, chiamati DBMS (Data Base Management System).
I DMBS si occupano della memorizzazione, dell’organizzazione e della
gestione dei dati.
Un DBMS si colloca tra i programmi
applicativi e i file dove sono
memorizzati i dati e si occupa di gestirli
su richiesta dei programmi.
Come opera un DBMS
In figura viene evidenziato il
modello di funzionamento
di un sistema con DMBS.
Gli utenti accedono ai
programmi tramite
interfacce.
I programmi che hanno
bisogno di dati li richiedono
al DBMS che li preleva dalla
base di dati tramite file
system del S.O. restituendoli
ai programmi richiedenti.
Ridondanze
Per ridondanza si intende sia la duplicazione del dato, sia la
memorizzazione di un dato che deriva dall’elaborazione di altri.
Tuttavia, se la richiesta su un dato che risulta ridondante viene fatta
spesso, può essere conveniente memorizzare questo dato (ridondanza
utile).
Una ridondanza utile comporta un costo maggiore, sia per l’occupazione
di memoria sia per la sua gestione, ma vengono velocizzate le richieste.
È il responsabile della base di dati (DBA, DataBase Administrator) che
deve decidere se inserire o no le ridondanze utili per garantire la
massima efficienza della base di dati.
Inconsistenze
Si parla di inconsistenza quando due dati che rappresentano la stessa
informazione assumono valori diversi.
Se una dato è memorizzato in due file differenti può capitare che
un’eventuale modifica sia apportata a un solo file, in questo caso si ha
un’inconsistenza perchè si hanno due valori diversi per lo stesso dato.
Dal momento che la base di dati riduce le ridondanze, il cambiamento
del valore di un dato viene immediatamente reso disponibile a tutti gli
utenti, cioè non possono esistere dati uguali con differenti valori.
Integrità dei dati
Il DBMS si occupa di controllare che l’inserimento di nuovi dati o la
cancellazione di quelli già esistenti non alteri la congruenza della base di
dati.
Si parla cioè di integrità dei dati che vengono protetti da accidentali o
voluti cambiamenti che risultino non corretti o non autorizzati.
I livelli dei dati
In un DBMS i dati si possono descrivere a livelli diversi.
Questa possibilità permette di liberare il progettista della base di dati e il
programmatore delle applicazioni dalla preoccupazione di come i dati sono
fisicamente organizzati in memoria, concentrandosi sul loro significato
piuttosto che sulla loro organizzazione fisica.
Nell’organizzazione delle basi di dati si evidenziano tre livelli di astrazione:
- esterno
- logico
- interno
Attraverso questi livelli il DBMS può nascondere la reale organizzazione dei
dati nei supporti di memorizzazione.
Il modello ANSI/SPARC
Tutto ciò è ottenuto grazie a una particolare architettura che è stata
formalizzata da un organismo di standardizzazione (ANSI/SPARC).
Ai tre livelli di astrazione corrispondono altrettanti schemi di
rappresentazione dei dati:
- Sottoschemi o viste: livello esterno in cui differenti utenti possono avere
differenti visioni degli stessi dati a seconda dell’uso che devono farne.
- Schema logico: rappresenta la visione complessiva del database.
- Schema fisico: si pone al livello interno e descrive come sono organizzati
fisicamente i dati sui supporti di memoria di massa.
Indipendenza logica
Per indipendenza logica si intende la possibilità di modificare lo schema
logico senza dover modificare i programmi che usano le singole applicazioni.
Tale indipendenza viene realizzata tramite il concetto di sottoschema o
vista (view).
Indipendenza fisica
Per indipendenza fisica si intende la possibilità di modificare
l’organizzazione fisica dei dati senza dover modificare l’organizzazione
logico-concettuale.
L’indipendenza fisica si basa sul concetto che né lo schema né il
sottoschema rispecchiano il modo in cui i dati sono effettivamente
memorizzati nella memoria secondaria del sistema.
Indipendenza logica e fisica
Come opera il DBMS
Il DBMS gestisce i passaggi tra i vari modi di vedere i dati appoggiandosi sul SO.
Cosa succede quando un’applicazione necessita di un dato memorizzato nella
base di dati?
1. Un’applicazione richiede un’entità al DBMS definendone alcune caratteristiche.
2. Utilizzando il sottoschema corrispondente all’applicazione in questione (modello
esterno) il DBMS individua la corrispondenza tra l’entità richiesta e quella definita
nello schema logico (corrispondenza esterno/logica).
3. Il DBMS, tramite lo schema fisico individua dove il dato è fisicamente
memorizzato (file) e i metodi per accedervi (corrispondenza logica/interna).
4. Il DBMS richiede al SO di prelevare il dato in questione dal file (o dai files).
5. Il SO restituisce, in un’apposita area, il record prelevato dal DBMS.
6. Il DBMS effettua le opportune trasformazioni del record reperito per renderlo
compatibile con il modello esterno.
7. Il DBMS restituisce il record all’applicazione richiedente.
Rappresentazione operazioni DBMS
Linguaggi e utenti
Per poter gestire le basi di dati tramite il DBMS sono stati introdotti alcuni
linguaggi specifici:
- DDL (Oracle, DB2, MySQL, Access)
- DML (SQL)
Data Definition Language
Per la definizione dello schema logico si usano i linguaggi DDL (Data
Definition Language), che consentono di definire i tipi di entità presenti
nello schema concettuale e le loro relazioni.
Un DDL è in genere un linguaggio a se stante con sintassi e semantica
proprie, ed è indipendente dalle applicazioni.
Il DDL serve anche a definire le viste e alcuni parametri qualitativi e
quantità delle strutture fisiche di memorizzazione della base di dati.
Ecco un esempio di come si
può creare una tabella
usando DDL:
Interfaccia grafica DDL
I principali DBMS (Oracle, DB2, MySQL, Access) forniscono anche
ambienti grafici per amministrazione di sistema e definizione tabelle:
QuickTime™ e un
decompressore
sono necessari per visualizzare quest'immagine.
Data Manipulation Language
Per la modifica, il reperimento, l’inserimento e la cancellazione dei dati si
usano i linguaggi di manipolazione dei dati (DML, Data Manipulation
Language).
I DML hanno lo scopo di fornire all’utente uno strumento per interrogare e
modificare le informazioni contenute nella base di dati.
Un DML può essere un linguaggio a se stante o un’estensione del
linguaggio ospite.
Nel primo caso siamo di fronte a un vero e proprio linguaggio di
programmazione.
DML procedurali e non
I DML, vengono distinti in:
• procedurali (o navigazionali) quando hanno gli operatori per trattare i
singoli record;
• non procedurali (o dichiarativi) quando gli operatori sono indipendenti
dal concetto di posizione, cioè considerano i dati collettivamente. Non si
deve indicare la procedura da seguire (algoritmo) ma l’obiettivo da
raggiungere.
Query language
Un particolare tipo di linguaggio di manipolazione è il query language.
Si tratta di un linguaggio di tipo interattivo per l’interrogazione e la
modifica della base di dati.
È stato ideato principalmente per risolvere il problema degli utenti
occasionali che, pur non avendo conoscenze di programmazione,
possono così interrogare la base di dati senza dover scrivere programmi
in un linguaggio complesso.
I sistemi attuali vanno sempre più nella direzione di dotarsi di strumenti
grafici per agevolare l’attività di interfacciamento con l’utente.
Query language testuale e grafico
Di seguito è mostrato un esempio in cui si richiede di reperire alcune
informazioni della tabella Prodotti
utilizzando uno di questi linguaggi (SQL):
e come la stessa richiesta
(query) possa venire
formulata tramite un query
language grafico:
QuickTime™ e un
decompressore
sono necessari per visualizzare quest'immagine.
Gli utenti
In base alle modalità di uso della base di dati possiamo individuare
alcune categorie di utenti:
- DBA (Data Base Administrator)
- programmatori
- utenti finali
Data Base Administrator
Il DBA (Data Base Administrator) è il responsabile del sistema per quanto
riguarda la gestione dello schema e dei sottoschemi e per
l’organizzazione fisica dei dati.
Ha il compito di:
• creare inizialmente e mantenere lo schema logico;
• definire e mantenere lo schema interno;
• definire e aggiornare i diritti di accesso;
• ripristinare la base di dati in caso di malfunzionamento.
I programmatori
I programmatori sono coloro che realizzano le applicazioni utilizzando
un DML o particolari linguaggi di programmazione.
Utenti finali
Gli utenti finali possono essere di tre tipi:
- occasionali, accedono alla base di dati occasionalmente e, non avendo
conoscenze informatiche, hanno bisogno di interfacce amichevoli per
interrogare la base di dati. Usano generalmente i query language.
- frequenti, pur non avendo conoscenze informatiche, accedono alla
base di dati spesso e quindi hanno dimestichezza con un particolare
sistema.
- inconsapevoli, sono coloro che utilizzano una particolare applicazione
senza necessariamente sapere che questa è basata su una base di dati.
Rappresentare la realtà
La necessità che porta alla costruzione delle basi di dati è quella di
rappresentare la realtà attraverso un insieme di entità e di relazioni
esistenti tra di loro.
Tutta la gestione delle basi di dati dipende da come queste sono
rappresentate: gli stessi linguaggi dipendono in modo strettissimo dallo
schema su cui devono operare.
Archi delle associazioni
I modelli dei dati utilizzati per descrivere lo schema possono essere
classificati in base al modo in cui vengono rappresentate e trattate le
associazioni, in particolare nel modo diverso in cui vengono gestiti gli
archi delle associazioni nella rappresentazione grafica dello schema.
L’arco si dice informativo se senza la sua presenza fisica non è
possibile collegare le due entità.
Si parla invece di archi non informativi se il collegamento è di tipo
logico, e quindi anche senza la sua presenza fisica è possibile collegare
le due entità (tramite l’uguaglianza di due attributi).
Arco informativo e non informativo
Classificazione dei modelli
I modelli che utilizzano archi informativi sono detti modelli a grafo, e
possono essere a loro volta suddivisi in modello gerarchico e modello
reticolare.
L’uso di archi non informativi è caratteristico invece del modello
relazionale.
Un discorso a parte va invece fatto per il modello Object-Oriented.
Modelli a grafo
Nei modelli a grafo le relazioni sono implementate tramite puntatori
(indirizzi fisici) che indicano quale istanza di entità è connessa a quella
considerata. Nella relazione è individuato SEMPRE un proprietario
(padre, owner) e un posseduto (figlio, member).
Modello gerarchico
Nei modelli gerarchici lo schema è rappresentato da una struttura ad
albero, cioè da un grafo privo di cicli.
L’albero, detto albero di definizione, ha un’organizzazione tipicamente
gerarchica: ciascun nodo rappresenta una classe di entità e ciascun
arco una relazione che può essere di tipo uno a molti (1:N) o uno a uno
(1:1).
Ogni nodo ha un solo genitore
mentre un padre può avere
più figli.
Ogni entità figlio può essere
collegata a elementi di un’altra
entità figlio solo passando dall’entità
superiore.
Modello gerarchico
Una base di dati gerarchica è costituita da un insieme di alberi, uno per
ogni occorrenza del nodo radice.
NON si possono rappresentare relazioni N:N a meno di spreco di spazio
e costruzione di strutture pesanti.
Per reperire informazioni è necessario percorrere l’albero dalla radice.
Linguaggi procedurali dei DBMS gerarchici
I DBMS gerarchici sono dotati di linguaggi procedurali e la sintassi
dei comandi è strettamente dipendente dal tipo di spostamenti che si
vuole richiedere dal momento che si può navigare nello schema solo
gerarchicamente.
Ricordiamo che per linguaggio procedurale si intende un linguaggio in
cui è necessario descrivere tutti i passi necessari per poter reperire
l’informazione desiderata.
Modello reticolare
Quando non è richiesto che lo schema sia un albero, ma ogni tipo di
entità può avere nello schema un numero qualsiasi di tipi di entità
connessi a esso siamo in presenza di schema reticolare.
In questo modello possibile l’esistenza di più di una relazione tra due
entità ed è per questo che le relazioni DEVONO avere un nome.
Sono permesse anche relazioni di tipo N:N e relazioni unarie.
Nello schema sono descritti i record-type (le entità), i data-items (gli
attributi) e i set (le associazioni tra entità) in cui c’è una gerarchia tra un
owner e un member.
Tramite il set si effettua la navigazione perchè un record-type può
appartenere a più set.
Rappresentazione modello reticolare
Navigazione
Nei modelli reticolare e gerarchico è molto importante il concetto di
navigazione.
Per accedere alle occorrenze delle entità è necessario muoversi tra di
esse utilizzando come mezzo di trasporto le associazioni.
Si parte da un’occorrenza, o un insieme di occorrenze, ci si sposta
fisicamente da un insieme di occorrenze a un altro: le informazioni si
possono reperire solo allora.
Si tratta del tipico approccio procedurale e il modo di lavorare è simile
a quello che si usa con un normale linguaggio di programmazione che
usufruisce di file.
Modello relazionale
Nel modello relazionale i dati vengono rappresentati in formato tabellare.
Le tabelle sono formate da colonne per gli attributi e da righe per i record.
Il legame esistente tra due tabelle è di tipo logico ed è realizzato
tramite un attributo in comune, che nell’esempio della figura è
rappresentato dal campo CodEd della tabella Editori e dal campo CodEd
della tabella Libri.
Modello Object-oriented
Recentemente si stanno diffondendo dei sistemi basati sul modello
Object-Oriented.
Tale modello utilizza oggetti indipendenti che permettono di modellizzare in
modo naturale la realtà, e non un modello della realtà, natural modelling.
Modello Object-oriented
Il concetto base della tecnologia Object-oriented è l’inscindibilità della
struttura dei dati e delle operazioni che li manipolano: un oggetto (in
figura) è formato da un insieme di dati, detti proprietà, e da un insieme di
operazioni, dette metodi.
Le proprietà (o attributi) sono dati privati di un oggetto e non possono
essere raggiunte esplicitamente dall’esterno se non applicando le
operazioni (o metodi) associate.
Encapsulation
Il principio della encapsulation afferma che l’unico modo per accedere ai
dati dell’oggetto è l’invocazione dei metodi: non è quindi possibile usare la
struttura in modo differente da quello per cui è stata prevista.
L’encapsulation può essere vista come un’estensione del concetto di
modularità.
Dal momento che le interazioni tra gli oggetti possono avvenire solamente
tramite i metodi, risulta facilitata la costruzione incrementale di sistemi di
dimensioni ragguardevoli, nonché la localizzazione di eventuali
malfunzionamenti.
Ereditarietà
Un’altra caratteristica importante che differenzia i sistemi Object-Oriented
da quelli tradizionali è l’ereditarietà.
L’ereditarietà (inheritance) consente la definizione di un nuovo oggetto
mediante il raffinamento.
Con l’ereditarietà diventa possibile riutilizzare il software prodotto senza
duplicazioni e senza conoscere i dettagli di implementazione, con evidenti
vantaggi in termini di produttività.
Scarica

01_database - Mondadori Education