Concetti Basilari - DISIghini/.../informatica_generale/IntroduzioneDBMS.pdf · attività (di un...

22
7 Concetti Basilari Basi di Dati: Insieme organizzato di dati utilizzati per il supporto allo svolgimento di attività (di un ente, azienda, ufficio, persona) Strumenti per creazione, gestione ed uso delle Basi di Dati: modelli per l'organizzazione dei dati linguaggi per l'utilizzo dei dati sistemi per la gestione dei dati metodologie di progettazione di basi di dati. Sistema Informativo: Componente (sottosistema) di una organizzazione che gestisce (acquisisce, elabora, conserva, produce) le informazioni di interesse dell’organizzazione stessa. Non Necessariamente automatizzata. Sistema Informatico: la porzione automatizzata del Sistema Informativo. La parte del Sistema Informativo che gestisce informazioni con tecnologia informatica (automatizzata). Gestione delle Informazioni, comprende Raccolta, acquisizione Archiviazione, conservazione Elaborazione, trasformazione, produzione Distribuzione, comunicazione, scambio

Transcript of Concetti Basilari - DISIghini/.../informatica_generale/IntroduzioneDBMS.pdf · attività (di un...

7

Concetti Basilari• Basi di Dati: Insieme organizzato di dati utilizzati per il supporto allo svolgimento di

attività (di un ente, azienda, ufficio, persona)• Strumenti per creazione, gestione ed uso delle Basi di Dati:

– modelli per l'organizzazione dei dati– linguaggi per l'utilizzo dei dati– sistemi per la gestione dei dati– metodologie di progettazione di basi di dati.

• Sistema Informativo: Componente (sottosistema) di una organizzazione chegestisce (acquisisce, elabora, conserva, produce) le informazioni di interessedell’organizzazione stessa. Non Necessariamente automatizzata.

• Sistema Informatico: la porzione automatizzata del Sistema Informativo. La parte del Sistema Informativo che gestisce informazioni con tecnologia informatica(automatizzata).

• Gestione delle Informazioni, comprende– Raccolta, acquisizione– Archiviazione, conservazione– Elaborazione, trasformazione, produzione– Distribuzione, comunicazione, scambio

8

Gestione delle Informazioni• Nelle attività umane, le informazioni vengono gestite in forme diverse:

– idee informali– linguaggio naturale (scritto o parlato, formale o colloquiale, in varie lingue) – disegni, grafici, schemi– numeri e codici

• e su vari supporti– mente umana, carta, dispositivi elettronici

• Nelle attività standardizzate dei sistemi informativi complessi, sono stateintrodotte col tempo forme di organizzazione e codifica delle informazioni

• Ad esempio, nei servizi anagrafici si è iniziato con registrazioni discorsive e poi– nome e cognome– estremi anagrafici– codice fiscale

• Nei sistemi informatici (e non solo), le informazioni vengono rappresentate in modo essenziale, spartano, attraverso i dati

9

Informazioni e Dati• informazione: notizia, dato o elemento che consente di avere conoscenza più o

meno esatta di fatti, situazioni, modi di essere. • dato: ciò che è immediatamente presente alla conoscenza, prima di ogni

elaborazione; (in informatica) elementi di informazione costituiti da simboli chedebbono essere elaborati

• Un esempio: Vittorio 2094846su un foglio di carta sono due dati e non significano molto

• Se il foglio di carta viene fornito in risposta alla domanda “Chi e‘ il professore di Informatica; qual è il suo numero di telefono?”, allora i dati possono essereinterpretati per fornire informazione e arricchire la conoscenza

• Perche‘ usare i Dati?– La rappresentazione precisa di forme più ricche di informazione e conoscenza

è difficile– I dati costituiscono spesso una risorsa strategica, perché sono più stabili nel

tempo di altre componenti (procedure, tecnologie, ruoli umani):• ad esempio, i dati delle banche o delle anagrafi

10

Sistema di Gestione di Basi di DatiDataBase Management System - DBMS

• Sistema che gestisce collezioni di dati che sono: – Grandi (dimensioni molto maggiori della memoria volatile dei sistemi di

calcolo utilizzati)– Persistenti (con un periodo di vita indipendente dalle singole esecuzioni

dei programmi che le utilizzano)– Condivise (utilizzate da molte applicazioni e utenti anche

contemporaneamente e da diverse postazioni)• garantendo

– Affidabilità (resistenza ai malfunzionamenti)– Riservatezza (grazie a politiche di controllo degli accessi)– Efficienza (utilizzo al meglio delle risorse di spazio, tempo e

comunicazioni del sistema)– Efficacia (rendendo produttive le attivita’ degli utilizzatori)

11

DBMS – Integrazione e Condivisione• Ogni organizzazione (specie se grande) è divisa in settori o comunque

svolge diverse attività. A ciascun settore o attività corrisponde un sottosistema informativo (privato o porzione di un sistema più grande).

• Possono esistere sovrapposizioni fra i dati di interesse dei vari settori.• Una base di dati è una risorsa integrata, condivisa fra i vari settori.• L’integrazione e la condivisione

– permettono di ridurre la ridondanza (evitando ripetizioni) e, di conseguenza, le possibilità di incoerenza fra i dati.

• ma – Poiché la condivisione non è mai completa (o comunque non opportuna)

i DBMS prevedono meccanismi di definizione della privatezza dei dati e di limitazioni all’accesso (autorizzazioni).

– Inoltre, la condivisione richiede un opportuno coordinamento degli accessi detto controllo della concorrenza.

12

Esempio di Integrazione e Condivisione

Gestione ricevimento

Archivio 2:ricevimento

Gestione orario lezioni

Archivio 1:orario lezioni

Archivi Separati di un’Universita’:ciascuno gestisce informazioni riguardanti i docenti, e percio’ contiene duplicati dei dati relativi ai professori (nome, cognome, ..) con possibilita’ di incoerenza, dovuta ad aggiornamenti separati.

Gestione ricevimento

Gestione orario lezioni

Base di dati

DBMS di un’Universita’:Le informazioni sono contenute nella base di dati, senza duplicazione, e ciascuna applicazione seleziona e propone agli utenti le sole informazioni di loro interesse.

13

Architettura di un DBMS (semplificata)

schema logico:descrizione della base di dati nel modello logico (ad esempio, la struttura della tabella, in un modello relazionale).

schema interno (o fisico):rappresentazione dello schema logico per mezzo di strutture di memorizzazione (file e loro struttura, ad esempio:record con puntatori, ordinati in un certo modo; indici per velocizzare l’accesso e le ricerche)

BD

Schema logico

Schema interno

utente

14

Architettura standard, a 3 livelli, di DBMSschemi esterni (viste):

la Base di Dati cosi’ come viene fatta vedere all’utente, anche in forma diversificata da utente a utente.

schema logico:descrizione della base di dati nel modello logico (ad esempio, la struttura della tabella, in un modello relazionale).

schema interno (o fisico):rappresentazione dello schema logico per mezzo di strutture di memorizzazione (file; ad esempio, record con puntatori, ordinati in un certo modo; indici per velocizzare l’accesso e le ricerche).Si noti che la base di dati puo’ essere distribuita su diversi server.

BD

Schema logico

Schemaesterno

Schema interno

Schemaesterno

utente1utente2 utente3

15

Utilizzo dei di DBMSTipologie di Applicativi utente:

GraficaInterfaccia visuale (spesso web)

Testuale (a riga di comando)Comandi digitati su una semplice console (una finestra DOS, un terminale UNIX)

Tutte le applicazioni si basano su linguaggi di interrogazione che permettono di esprimere semplicemente le richieste che possono essere fatte ad un DBMS.Il piu’ diffuso linguaggio: SQL.

Le applicazioni possono risiedere su host diversi da quello della base dati.

BD

Schema logico

Schemaesterno

Schema interno

Schemaesterno

utente1

Linguaggio di Interrogazione

Applicazionegrafica

utente2

Linguaggio di Interrogazione

Applicazionea Riga

di comando

16

Un primo DBMS di esempio: SQLite• un semplice DBMS Open-Source per Linux/Windows con cui fare alcuni test pratici

– SQLite• Reperibile on-line all’indirizzo http://www.sqlite.org/download.html

in cui potete trovare anche un semplice manuale d’uso.• In particolare, il DBMS in formato eseguibile per Windows e’ reperibile all’indirizzo

http://www.sqlite.org/sqlite-3_5_2.zip

SQLite• e’ limitato, non dispone di tutte le funzionalita’ di un DBMS.• Memorizza i dati in un unico file.• Ingloba una finestra testuale per l’interazione con l’utente mediante comandi, che possono

essere:– Comandi tipici di SQLite

(visualizzazione dello schema logico (.schema), aiuto (.help) )– Comandi (dette query) espressi in linguaggio SQL (select, insert, …).

• E’ disponibile anche un Front-End visuale per SQLite: SQLite Database Browser , reperibile all’indirizzo http://sourceforge.net/projects/sqlitebrowser/

17

Esempio Base di Dati (modello relazionale) - 1: Creazione• Obiettivo: creare un database relazionale, basato su SQLite, che gestisca informazioni sugli

studenti universitari.• Requisiti espressi in Linguaggio naturale: ogni studente ha nome e cognome, possiede un

numero di matricola univoco che lo distingue dagli altri, è nato in una data citta’ in un certo anno.

• Schema Logico: il DBMS conterrà una tabella, caratterizzato da 5 campi, tre di tipo testuale chiamati nome, cognome, citta, e due di tipo interi chiamati matricola e anno. Non possono esistere due studenti con la stessa matricola, quindi il campo matricola deve essere unico in tutta la tabella (usare la keyword unique).

• Creazione del DataBase ex-novo, memorizzandolo in un file di nome univ.db, usando una finestra DOS (nota bene, con lo stesso comando apro il database senza crearlo se gia’ esiste): Si entra così nella shell di comandi di SQLite.

C:\> sqlite3.exe univ.db• Creo la tabella studenti nel db usando il linguaggio SQL. Notare il punto e virgola ; finale

necessario che indica la fine del comando.sqlite> CREATE TABLE studenti( matricola integer unique, nome text, cognome text,

citta text, anno integer) ;• Chiudo SQLite col comando di uscita che mi fa tornare al prompt DOS; notare

l’indispensabile punto ( . ) che precede la parola quit:sqlite> .quit

18

Esempio di Base di Dati - 2: Inserimento Dati• Obiettivo: inserire dei dati nella tabella studenti del database relazionale.• Riapro il DataBase precedentemente creato, e memorizzato nel file univ.db, usando una finestra

DOS. Si entra così nella shell di comandi di SQLite.C:\> sqlite3.exe univ.db

• Popolo la tabella studenti inserendo un record usando il linguaggio SQL. Notare l’uso del delimitatore apice semplice ‘ per delimitare i campi testuali.

sqlite> INSERT INTO studenti values (11, ‘marco’, ‘bini’,’bologna’,1985);• Inserisco altro record, ma commetto un errore perché cerco di inserire un record con una

matricola gia presente (valore 11) violando il vincolo espresso dalla keyword unique nella definizione della tabella studenti. Il DBMS me lo impedisce e restituisce un messaggio di errore.

sqlite> INSERT INTO studenti values (11, ‘laura’, ‘sicuro’,’rimini’,1985);SQL error: column matricola is not unique

• Inserisco altro record, con una matricola (13) non ancora esistente nella tabella, ok.sqlite> INSERT INTO studenti values (13, ‘laura’, ‘sicuro’,’rimini’,1985);

• Ogni comando che modifica la base di dati provoca una modifica persistente nel file che memorizza il db.

• Termino l’applicazione utente:sqlite> .quit

La Tabella creata:matricola nome cognome citta anno

11 marco bini bologna 198513 laura sicuro rimini 1984

studenti

19

Esempio di Base di Dati - 3: Interrogazione (query)• Obiettivo: ottenere informazioni dal database relazionale.• Ricerca di tutte le informazioni contenute nella tabella studenti. Utilizzo il comando del linguaggio

SQL “select”. L’asterisco significa “tutti i campi”, FROM indica quali tabelle del DB bisogna considerare. Nell’output il carattere “|” separa i campi.

sqlite> SELECT * FROM studenti;11|marco|bini|bologna|198513|laura|sicuro|rimini|1984

• Ricerca solo gli studenti nati nel 1984, utilizzando la clausola WHERE seguita da condizionisqlite> SELECT * FROM studenti WHERE anno=1984;13|laura|sicuro|rimini|1984

• Ricerca il solo nome degli studenti nati nel 1984, sostituendo all’asterisco l’elenco dei campi che voglio ottenere separati da virgole

sqlite> SELECT nome, cognome FROM studenti WHERE anno=1984;laura|sicuro

20

Esempio Base di Dati - 4: Aggiunta Nuova Tabella• Obiettivo: gestire informazioni sugli studenti universitari e sui loro esami.• Requisiti espressi in Linguaggio naturale: ogni studente sostiene alcuni esami ed ottiene un voto,

ogni esame possiede un codice che lo distingue dagli altri ed nome.• Schema Logico: il DBMS conterrà altre due tabelle, una che descrive gli esami, ed una che

mantiene la relazione tra studenti ed esami sostenuti.• Creo la tabella esami usando il linguaggio SQL

CREATE TABLE esami( codice integer, nome text) ;• Inserisco i dati nella tabella esami, usando il linguaggio SQL, ad es. l’esame di Reti di Calcolatori

che ha codice 1:INSERT INTO esami( 1,’Reti di Calcolatori’) ;

• Creo la tabella sostenuti usando il linguaggio SQLCREATE TABLE sostenuti(codice integer, matricola integer, anno integer, voto integer) ;

• Inserisco i dati nella tabella sostenuti, ad es marco bini (matr 11) ha sostenuto Reti di calcolatori (codice 1) nel 2006 ottenendo 30:

INSERT INTO sostenuti( 1,11,2006,30) ;• SQlite permette di vedere lo schema logico usando il comando, che fa vedere quali comandi sono

stati eseguiti per ottenere lo schema logico:• sqlite> .schema• Aggiungendo altri dati popolo le tabelle, ottenendo la seguente rappresentazione logica

codice nome1 Reti di Calcolatori2 Sistemi Operativi

esami

3 Programmazione4 Analisi Matematica

codice matricola anno voto1 11 2006 304 13 2007 28

sostenuti

2 13 2006 303 11 2007 181 13 2007 30

21

Esempio Base di Dati - 5: Interrogazioni su piu’ tabelle• Quali voti ha ottenuto laura sicuro? (notare che uso due tabelle)• sqlite> SELECT sostenuti.voto FROM studenti, sostenuti WHERE

studenti.nome=‘laura’ AND studenti.cognome=‘sicuro’ ANDstudenti.matricola=sostenuti.matricola ;

283030

• Quali esami ha sostenuto, e con che voti, laura sicuro? (notare che uso tre tabelle)• sqlite> SELECT esami.nome, sostenuti.voto FROM studenti, sostenuti, esami WHERE

studenti.nome=‘laura’ AND studenti.cognome=‘sicuro’ ANDstudenti.matricola=sostenuti.matricola ANDsostenuti.codice=esami.codice ;

Sistemi Operativi|30Analisi Matematica|28Reti di Calcolatori|30

codice nome1 Reti di Calcolatori2 Sistemi Operativi

esami

3 Programmazione4 Analisi Matematica

codice matricola anno voto1 11 2006 304 13 2007 28

sostenuti

2 13 2006 303 11 2007 181 13 2007 30

matricola nome cognome citta anno11 marco bini bologna 198513 laura sicuro rimini 1984

studenti

22

I DBMS garantiscono affidabilità• Affidabilità (per le basi di dati): resistenza a malfunzionamenti hardware e software

• Una base di dati è una risorsa pregiata e quindi deve essere conservata a lungo termine. Tecnica fondamentale utilizzata: gestione delle transazioni

• Transazione: Insieme di operazioni da considerare indivisibile ("atomico"), corretto anche in presenza di concorrenza e con effetti definitivi

• Le transazioni sono atomiche: – non è possibile che una operazione si interrompa nel mezzo della sua esecuzione.– La sequenza di operazioni sulla base di dati viene eseguita per intero o per niente. – Il DBMS garantisce che, in una situazione di errore, il contenuto della base di dati non rimanga in

uno stato inconsistente.es: trasferimento di fondi da un conto A ad un conto B: o si fanno il prelevamento da A e il versamento su B o nessuno dei due

• Le transazioni sono concorrenti, cioè possono avvenire in contemporanea. Nonostante questo, l'effetto di transazioni concorrenti deve essere coerente, cioè "equivalente" all'esecuzione separata. Si parla di isolamento delle transazioni.

– es: Se due assegni emessi sullo stesso conto corrente vengono incassati contemporaneamente si deve evitare di trascurarne uno

• I risultati delle transazioni sono permanenti: La conclusione positiva di una transazione corrisponde ad un impegno (in inglese commit) a mantenere traccia del risultato in modo definitivo, anche in presenza di guasti e di esecuzione concorrente

23

Proprietà ACID di una transazione• Riassumendo, una transazione e’ una sequenza di operazioni, effettuata sulla base di dati,

che goda della cosiddetta proprietà ACID, acronimo ottenuto dalle iniziali delle sotto-elencate caratteristiche:

• Atomicità: la transazione viene completata integralmente oppure fallisce integralmente.• Consistenza: la transazione deve rispettare i vincoli di integrità sui dati.• Isolamento: se un DBMS esegue più transazioni contemporaneamente, il risultato deve

essere pari a quello che si otterrebbe se le stesse fossero eseguite singolarmente, una alla volta.

• Durability (persistenza). Il risultato delle transazioni terminate con successo deve essere permanente.

24

DBMS vs. File system - Descrizione dei Dati• Nei programmi tradizionali che accedono a file, ogni programma contiene una descrizione

della struttura del file stesso, con i conseguenti rischi di incoerenza fra le descrizioni (ripetute in ciascun programma) e i file stessi.

• Nei DBMS, esiste una porzione della base di dati (il catalogo o dizionario o meglio lo schema concettuale) che contiene una descrizione centralizzata dei dati, che può essere utilizzata dai vari programmi. In SQLite tale schema è visualizzabile mediante il comando .schema.

• Modello dei dati: Insieme di costrutti utilizzati per organizzare i dati di interesse e descrivernela dinamica. Ogni modello dei dati prevede alcuni propri costruttori. Esempio: il modellorelazionale prevede il costruttore relazione, che permette di definire insiemi di recordomogenei

• Nei DBMS, le rappresentazioni dei dati (i modelli dei dati) a livelli diversi permettonol’indipendenza dei dati dalla rappresentazione fisica:

i programmi fanno riferimento alla struttura a livello più alto, e le rappresentazionisottostanti possono essere modificate senza necessità di modifica dei programmi

25

DBMS - Modelli dei DatiDue tipi di modelli dei dati:

• Modelli Logici: Adottati nei DBMS esistenti per l’organizzazione dei dati– utilizzati dai programmi– indipendenti dalle strutture fisiche, ovvero Il livello logico è indipendente da quello fisico

• una tabella è utilizzata nello stesso modo qualunque sia la sua realizzazione fisica (che puòanche cambiare nel tempo)

– Perciò vedremo solo il livello logico e non quello fisico

– Esempi di modelli logici: • Modello gerarchico: anni '60, uso di strutture ad albero (gerarchiche)• Modello reticolare: anni '70, basate su grafi• Modello relazionale: anni '80, strutturazione a tabelle,• Modello a oggetti: anni '90, evoluzione del modello relazionale, eredita concetti della

programmazione ad oggetti• XML: dal 2000

• Modelli Concettuali: Permettono di rappresentare i dati in modo indipendente da ognisistema

– cercano di descrivere i concetti del mondo reale– sono utilizzati nelle fasi preliminari di progettazione– Il più diffuso è il modello Entity-Relationship

BD

Schema logico

Schemaesterno

Schema interno

Schemaesterno

utente1 utente2 utente3

26

DBMS - personaggi• progettisti e realizzatori di DBMS

– Chi scrive il software che permette di creare DBMS (es: chi ha prodotto SQLIte, tipicamente informatici)

• progettisti della base di dati e amministratori della base di dati (DBA) – Chi progetta la base di dati definendo la strutturazione del livello logico e del livello

esterno (es: noi a lezione che abbiamo progettato la base dati bio.db, la suastrutturazione in tabelle (studenti,esami,sostenuti)).

• progettisti e programmatori di applicazioni– Chi scrive il software che, utilizzando un linguaggio di interrogazione, permette ad un

utente di interagire semplicemente con il database. Tali applicazioni sono solitamentedenominate transazioni.

• utenti– utenti finali (terminalisti): eseguono applicazioni predefinite (transazioni) – utenti casuali: eseguono operazioni non previste a priori, usando linguaggi interattivi di

interrogazioni

• Transazioni: due concetti per un solo nome– Per l'utente:

• programma a disposizione che permette di eseguire attività frequente e predefinita.• Ad es: prenotazione visita medica, visualizzazione estratto conto,

– Per il sistema:• sequenza indivisibile (atomica) di operazioni

27

DBMS - Vantaggi e SvantaggiPro• dati come risorsa comune, base di dati come modello della realtà• gestione centralizzata con possibilità di standardizzazione ed “economia di scala” • disponibilità di servizi integrati• riduzione di ridondanze e inconsistenze• indipendenza dei dati (favorisce lo sviluppo e la manutenzione delle applicazioni)

Contro• costo dei prodotti e della transizione (con la i) dei sistemi verso di essi• non scorporabilità delle funzionalità (con riduzione di efficienza)

28

Linguaggi per i DBMSCome si usa un DBMS• Definendo la struttura generale dei Dati (schema logico)• Definendo le operazioni sui dati (schema esterno, procedure realizzate da applicazioni,

operazioni singole)

Per operare sui DB relazionali si utilizzano due tipologie di linguaggi:• Data Definition Language (DDL) per definire la struttura dei dati (schemi esterni, logici, fisici)• Data Manipulation Language (DML) per modificare i dati strutturati• I linguaggi delle applicazioni commerciali comprendono solitamente sia DDL sia DML e

vengono indicati come “linguaggi di interrogazione” (query languages)

• Il linguaggio di interrogazione commerciale più utilizzato per i DataBase Relazionali è SQL (Structured Query Language), che e’ ormai uno standard ‘de facto’

• SQL integra entrambi i tipi di linguaggio:– DATA DEFINITION LANGUAGE (DDL)

es: CREATE, DROP, ALTER– DATA MANIPULATION LANGUAGE (DML)

es: SELECT, INSERT, UPDATE, DELETE