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 insieme 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:
- Il software e l’hardware di base;
- Una base di dati;
- 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;
- I programmi applicativi, i quali forniscono servizi agli utenti;
- 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:
- Una maggiore disponibilità dei dati, in quanto non legati ad una specifica applicazione;
- Una limitazione delle ridondanze – un’unica raccolta di dati permette un controllo migliore su di essi e su possibili duplicati;
- 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:
- 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;
- 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 a 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:
- 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));
- 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: modify … to hash on);
- 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:
- 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;
- Fallimenti di sistema – sono dovuti ad anomalie hardware
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.