Indice
Capitolo 1
Sistemi Informativi …………………………………………………………………………………….. 2
Sistemi Informativi & DBMS ………………………………………………………………………. 4
Capitolo 2
Progettazione – Modellazione di Basi di Dati …………………………………………….. 12
Capitolo 3
Costruzione di una Base di Dati ………………………………………………………………... 19
Capitolo 4
Modello dei Dati Relazionale ……………………………………………………………………. 24
Linguaggi Relazionali ………………………………………………………………………………… 35
Capitolo 5
Teoria Relazionale …………………………………………………………………………………….. 52
Forme Normali …………………………………………………………………………………………. 64
Capitolo 6
Introduzione a SQL …………………………………………………………………………………… 83
SQL – Costrutti Avanzati 1 ………………………………………………………………………… 98
SQL – Costrutti Avanzati 2 ………………………………………………………………………. 111
Capitolo 7
SQL – Definizione dei Dati ……………………………………………………………………… 121
SQL – Definizione dei Dati & Programmazione ………………………………………. 135
Capitolo 8
Architettura e Implementazione dei DBMS ……………………………………………. 148
Capitolo 9
Transazioni – Gestore della Memoria Permanente – Gestore del Buffer … 169
Organizzazione Seriale e Sequenziale ……………………………………………………. 184
Capitolo 1 – Parte 1
Sistemi Informativi
Storia dei DBMS
I DataBase Management System sono sistemi che si occupano della gestione di
database. Prima della loro nascita, i programmi dovevano lavorare in maniera
autonoma e avevano diverse difficoltà:
Difficile ottimizzare il codice;
Nessuna garanzia sulla sicurezza e sulla privacy;
Nessun controllo sugli accessi;
Tempi e costi di sviluppo elevati.
I DBMS nascono per risolvere questi problemi (ottimizzazione, sicurezza, controllo
della concorrenza, ripristino dei fallimenti, tipizzazione), offrendo la memorizzazione
dei dati (separandola dall’applicazione stessa) e una descrizione della struttura dati
chiamata schema.
I DBMS possono essere di tipo:
Gerarchico – basato sull’uso di alberi, dove i nodi rappresentano i record e gli
archi le associazioni (struttura rigida, ridondanza non gestita);
Reticolare – basato sull’uso dei grafi, risolve i problemi di ridondanza del
modello gerarchico attraverso l’uso di record e set;
Relazionale – costruisce i tipi attraverso relazioni, che organizzano i dati in
insiemi di record con struttura fissa. La relazione è rappresentata da una
tabella le cui righe sono i record e le colonne sono i campi.
Nei tipi gerarchico e reticolare, la chiave per raggiungere i dati è un cammino,
mentre, in quello relazionale, la chiave è un identificatore.
Sistemi Informativi
Un Sistema Informativo è un insieme di risorse, sia umane che materiali, e di
procedure che si occupano di raccogliere, archiviare, elaborare e scambiare
informazioni di servizio, gestione e di governo.
Per poter digitalizzare le informazioni di un’organizzazione, queste devono prima
essere interpretate e formalizzate. Questo processo permetterà diversi vantaggi:
Riduzione dei tempi e dei costi;
Possibilità di aggiornamento;
Disponibilità immediata.
Un Sistema Informatico è l’insieme di tecnologie informatiche e di comunicazione a
supporto delle attività di un’organizzazione.
Un Sistema Informativo Automatizzato è la parte del sistema informativo che si
occupa di raccogliere, elaborare, archiviare e scambiare utilizzando un sistema
informatico.
Sistema informativo Sistema informativo automatizzato Sistema Informatico
I componenti di un sistema informatico sono:
1. Il software e l’hardware di base;
2. Una base di dati;
3. Uno schema, che descrive la struttura della base di dati, le operazioni possibili,
le restrizioni sulla memorizzazione e le modalità con cui i dati possono
cambiare nel tempo. Lo schema è fondamentale per garantire un corretto uso
dei dati del database;
4. I programmi applicativi, i quali forniscono servizi agli utenti;
5. La comunicazione, ovvero le modalità per scambiare messaggi fra utente e
base di dati.
I DBMS nascono negli anni ’70 con l’obiettivo di trattare i dati in maniera globale e
non settoriale. Questo significa che l’informazione registrata veniva rappresentata
solo una volta e poi utilizzata in diversi ambiti, anche diversi da quello del sistema
informativo. Questa scelta portò diversi vantaggi:
Integrazione dei dati – si prevede l’utilizzo di un’unica raccolta di dati comuni,
anziché avere una coppia dati/programmi per ogni applicazione. In questo
modo si ottiene:
o Una maggiore disponibilità dei dati, in quanto non legati ad una
specifica applicazione;
o Una limitazione delle ridondanze – un’unica raccolta di dati permette
un controllo migliore su di essi e su possibili duplicati;
o Efficienza – gestione integrata dei dati e ottimizzazione
dell’organizzazione fisica.
Flessibilità – le modifiche che possono rendersi necessarie nel tempo devono
essere effettuate senza stravolgere la natura del sistema informatico stesso.
Capitolo 1 – Parte 2
Sistemi Informativi
Sistemi Informatici Operativi
Ogni attività dispone di una base di dati operazionale (o transazionale) che
memorizza le informazioni riguardanti le operazioni quotidiane di tale attività.
Queste basi di dati sono gestite da applicazioni che rientrano nella definizione di
sistemi informatici operativi o sistemi di elaborazione di transazioni (Transaction
processing Systems TPS), i quali servono ai dipendenti per svolgere le loro mansioni.
In questo genere di sistemi, rientrano le On-Line Transaction Processing OLTP, le
quali permettono elaborazioni sul DBMS di natura standard su pochi dati (rispetto
alla totalità), sempre aggiornati (es: inserire i dati delle vendite di un giorno
specifico).
Sistemi Informatici Direzionali
Tramite i sistemi informatici operativi, si possono ricavare informazioni riguardo
avvenimenti recenti e vengono rallentati se usati per trovare informazioni portata
più elevata.
I sistemi informatici direzionali sono utilizzati per ricavare questo genere di
informazioni e vengono utilizzati per ottenere dati di carattere storico (tendenze,
anomalie) e decisionale.
La base di dati utilizzata per questo genere di esigenze si chiama data warehouse,
la quale verrà aggiornata in maniera periodica con dati storici o esterni, a differenza
di quella operazionale che si aggiorna tempestivamente.
Le applicazioni che si basano su tali sistemi sono dette di Business intelligence.
Tale base di dati supporta l’operazione di data mining, ovvero l’estrapolazione di
modelli da un insieme di dati utili ai dirigenti per prendere decisioni.
Un modello è una rappresentazione concettuale che mette in evidenza, in una
forma opportuna, le caratteristiche di determinate informazioni, le quali sono
raccolte fra i dati disponibili.
I sistemi di supporto alle decisioni (Decision Support Systems DSS) sono sistemi
che, tramite l’utilizzo di opportuni dati, aiutano i dirigenti a prendere decisioni.
Nei sistemi direzionali, quindi, vengono effettuate le cosiddette Online Analytical
Processing OLAP, le quali prevedono le operazioni che coinvolgono molti dati, di
supporto alle decisioni, complesse e su dati storici non necessariamente aggiornati.
Sistemi per Basi di Dati (DataBase Management Systems –
DBMS)
Un DBMS è un sistema centralizzato o distribuito che permette di:
Definire uno schema per una base di dati;
Scegliere le strutture di dati per la loro memorizzazione;
Memorizzare dati in base allo schema definito;
Recuperare e modificare i dati tramite un query language;
Controllare i dati e gestirli;
Utilizzare linguaggi per la definizione di basi di dati e l’uso dei dati.
Una base di dati è un insieme di dati permanenti. Tali dati si dividono in due tipi:
1. Metadati – sono una raccolta di dati che descrivono altri dati come lo schema
dei dati, gli utenti autorizzati, applicazioni, le relazioni fra insiemi, parametri,
ecc. Sono descritti, a loro volta, da uno schema e sono interrogabili allo stesso
modo dei dati;
2. Dati – sono rappresentazioni di fatti conformi alle definizioni dello schema.
I dati hanno le seguenti caratteristiche:
Sono organizzati in insiemi strutturati e omogenei fra i quali si stabiliscono
delle relazioni. Tutte queste informazioni sono descritte all’interno dello
schema;
Sono molti, in assoluto e rispetto ai metadati, non possono essere gestiti dalla
memoria temporanea;
Vi si può accedere tramite le transazioni, unità di lavoro atomiche (non
possono essere eseguite in maniera parziale);
Sono protetti da utenti non autorizzati e da malfunzionamenti hardware e
software;
Possono essere utilizzati da più utenti contemporaneamente.
Il modello dei dati è un insieme di meccanismi di astrazione che definiscono una
base di dati, a cui è associato un insieme di operatori e vincoli d’integrità. Un
modello di dati deve essere espressivo (rappresentazione dei dati in maniera
naturale), semplice da usare e realizzabile in maniera efficiente su una macchina.
Ci sono due tipi di modelli di dati: il relazionale e quello ad oggetti.
Fra i DBMS, la tipologia più diffusa è quello di tipo relazionale, il cui meccanismo di
astrazione fondamentale è la relazione (tabella), un insieme di record con campi
elementari. Lo schema di una relazione definisce il nome descrive la struttura degli
elementi della relazione.
Linguaggi per le Basi di Dati
In una base di dati abbiamo bisogno di quattro tipi di linguaggi:
Data Definition Language DDL – serve per la definizione dello schema dei
dati;
Data Manipulation Language DML – usato per accedere ai dati e modificarli,
privo dei tipici costrutti di un classico linguaggio di programmazione;
Host Language – utilizzato per la codifica delle applicazioni che richiedono
l’accesso alla base di dati, solitamente è un linguaggio tipo C o Java con
l’aggiunta di operatori DML;
Query Language – linguaggio di interrogazione per l’interazione con i dati.
Definizione della Base di Dati
Nei DBMS, la base di dati è separata dai programmi applicativi ed è necessaria una
distinzione fra i livelli di descrizione dei dati:
1. Livello logico – viene descritta la struttura degli insiemi di dati e delle relazioni
che si instaurano fra loro, secondo un modello di dati, senza far riferimento
alla loro organizzazione fisica in memoria permanente (es: create table
Studenti (Matricola char(8), Nome char(20), login char(8), AnnoNascita int,
Reddito real));
2. Livello fisico – descrive la maniera in cui i dati verranno fisicamente
memorizzati all’interno delle memorie permanenti e quali strutture utilizzare
es: dati memorizzati in maniera seriale o sequenziale con indice (es: modifiy …
to hash on);
3. Livello di vista logica – viene specificato come deve apparire la struttura della
base di dati ad una particolare applicazione (Schema esterno o vista, create
view as select ... from).
Richiesta di dati tramite uno schema esterno Conversione dei dati “virtuali” in
dati dello schema logico Conversione dei dati dello schema logico in dati
realmente presenti nel sistema.
La suddivisione in tre livelli è stata proposta per favorire l’indipendenza fisica e
logica dei dati:
Indipendenza fisica – i programmi applicativi che utilizzano la base di dati
non devono essere modificati quando si cambia l’organizzazione fisica dei
dati, come quando si vuole cambiare la struttura ausiliaria per la ricerca di
dati per migliorarne le prestazioni (es: aggiungere un indice con create index
… on). Per garantire tale indipendenza, è sufficiente che gli operatori della
base di dati non dipendano dall’organizzazione fisica dei dati;
Indipendenza logica – i programmi applicativi non devono essere modificati
a seguito di una modifica dello schema logico, come l’aggiunta di nuove
definizioni, la modifica o l’eliminazione di quelle esistenti.
Uso della Base di Dati
Un DBMS può essere utilizzato da diversi tipi di utenti e quindi deve essere capace di
soddisfare tutti i tipi di esigenze. Il DBMS deve quindi mettere a disposizione:
Un’interfaccia grafica;
Un linguaggio di interrogazione per gli utenti non programmatori;
Un linguaggio di programmazione per gli sviluppatori che integra DDL, DML,
procedure predefinite, compilatore, precompilatore;
Un linguaggio per lo sviluppo di interfacce per le applicazioni.
Controllo della Base di Dati
Caratteristica fondamentale dei DBMS è il garantire tre proprietà fondamentali:
integrità, sicurezza e affidabilità.
Integrità
I DBMS controllano che ogni dato al suo interno siano conformi allo schema, in
modo tale da lasciare la base di dati in uno stato consistente. I dati, inoltre, devono
sottoporsi a dei vincoli d’integrità per essere significativi.
Sicurezza
I DBMS presentano dei meccanismi di sicurezza che prevedono l’accesso ai dati solo
a chi ne è autorizzato e la restrizione del tipo di operazioni che si possono effettuare
su tali dati in base al tipo di autorizzazione che l’utente presenta.
Affidabilità
I DBMS proteggono i dati da malfunzionamenti hardware e software e da fenomeni
legati all’accesso concorrente dei dati da parte di più utenti.
Le interazioni con la base di dati avvengono tramite le transazioni. Una transazione
è un evento che innesca una sequenza S di azioni, le quali devono essere concluse
tutte correttamente. Inoltre, in caso di malfunzionamento, la transazione garantisce
che la base di dati si troverà nello stato in cui la base di dati si trovava prima che S
iniziasse. In altre parole, è una sequenza di azioni in lettura e in scrittura della base
di dati e di elaborazioni di dati in memoria temporanea che il DBMS esegue
garantendo le seguenti proprietà:
Atomicità – tutte le transazioni devono terminare normalmente e
completamente per far passare la base di dati in un nuovo stato (committed
transaction), quelle terminate in maniera parziale (aborted transactions)
vengono annullate;
Serializzabilità – è l’effetto secondo cui l’esecuzione concorrente di diverse
transazioni è equivalente all’esecuzione seriale di tali transazioni in qualsiasi
ordine;
Persistenza – se una transazione termina correttamente, allora i suoi effetti
sono permanenti, ovvero non possono venire alterati da malfunzionamenti
successivi.
L’esecuzione di ogni transazione comporta un trasferimento di dati fra le memorie
temporanee (buffer) e quelle permanenti.
Un malfunzionamento (failure) è un evento a causa del quale la base di dati si trova
in uno stato scorretto. In risposta a tale evento, si risponde con opportune azioni
quali l’interruzione della transazione o dello stesso sistema o l’attivazione di
particolari procedure che ristabiliscono l’ordine nella base di dati.
Ci sono tre tipi di malfunzionamenti:
1. Fallimenti di transazioni – non comportano perdite né perdite in memoria
temporanea né in quella permanente. Sono dovute a situazioni previste o
meno nei programmi e comportano la terminazione prematura della
transazione;
2. Fallimenti di sistema – sono dovuti ad anomalie har
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.