33
1 Archivi e basi di dati Vito Perrone Corso di Informatica A per Gestionali 2 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone Memorie di massa

14 Archivi e Basi di dati V2 - corsi.dei.polimi.itcorsi.dei.polimi.it/infoA/14_Archivi_e_Basi_di_dati_V2.pdf · Archivi e Basi di Dati Informatica A – V. Perrone Basi di dati •

Embed Size (px)

Citation preview

1

Archivi e basi di dati

Vito Perrone

Corso di Informatica A per Gestionali

2Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Memorie di massa

2

3Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Indice

• Memorie di massa• Organizzazione degli archivi

e basi di dati• Basi di dati relazionali

4Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Introduzione

• Memoria di tipo persistente– Un dato è persistente se è mantenuto integralmente quando

il calcolatore viene spento oppure si verifica un errore

• Obiettivi:– Memorizzare in modo compatto grandi quantità di dati

– Accesso efficientemente e selettivo ai dati

• Possiamo classificare i dispositivi di memoria di massa in:– Dispositivi ad accesso sequenziale (nastri)

– Dispositivi ad accesso diretto (dischi)

• Tipicamente, sono basati su tecnologia magnetica• La tecnologia ottica è sempre più diffusa (per i

dischi)

3

5Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Nastri (1)• Accesso sequenziale • Sul nastro magnetico

sono incise delle piste orizzontali, parallele fra loro

• I dati vengono registrati serialmente su ogni traccia

• Il nastro scorre al di sopra della testina di lettura/scrittura

• Ai dati sono aggiunti alcuni bit di controllo per consentire il rilevamento di errori (es. bit di parità)

Bit 12345678

Bit di parità

6Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Nastri (2)

• I dati sono organizzati sul nastro in zone contigue, dette record

• Sono previste zone prove di dati (gap) tra i record e all’inizio

• Parametri principali:– Densità di memorizzazione: è misurata in bit per inch

(bpi) – Capacità di memorizzazione = densità × lunghezza (in

pollici)– Velocità di movimento del nastro

• Alcuni nastri hanno le tracce poste diagonalmente e sono letti da testine rotanti (scansione elicoidale)

• I nastri sono attualmente impiegati solo per il backup

4

7Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Dischi (1)

• Accesso diretto • Disk-pack: un certo

numero di piatti coperti da uno strato magnetico

• Ciascun piatto ha una serie di cerchi concentrici (tracce) su entrambi i lati

• Le tracce sono suddivise in spicchi di ugual grandezza (settori)

• Le testine di lettura/scrittura si spostano (tutte insieme) radialmentetra le varie tracce

8Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Dischi (2)

• L’inizio e la fine dei settori sono marcati con sequenze particolari di bit (formattazione)

• Blocco di ingresso/uscita: gruppo di dati che vengono letti o scritti con un’unica operazione di ingresso/uscita

• Ciascun blocco è individuato dalla terna:(num. superficie, num. traccia, num. settore)

• Una zona di memoria (il buffer) contiene i dati prima che vengano scritti su disco o dopo essere stati letti da disco

5

9Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Dischi (3)

• Accesso ai dati:– Spostamento della testina verso la traccia richiesta

(tempo di seek)

– Attesa del passaggio del settore richiesto (tempo di latenza)

• Mediamente, pari a metà del tempo di rotazione

– Trasferimento dei dati da/verso il buffer (tempo di trasferimento)

Quindi: ti/u = tseek + tlat + ttrasf

• Cilindro: l’insieme delle tracce, appartenenti a tutte le superfici, poste alla stessa distanza dal centro

10Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Altre memoria di massa

• Floppy disk: magnetico• Dischi ottici

– CD-ROM

– CD-R/RW

– DVD

• Chiavi USB: memorie a stato solido Flash EPROM

6

11Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Organizzazione degli archivie basi di dati

12Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Organizzazione degli archivi

• Le informazioni vengono organizzate in memoria in record logici

• Blocchi di ingresso/uscita e record logici:– In un medesimo blocco di ingresso/uscita può trovare

posto un certo numero di record logici– Esistono record logici così grandi da occupare più

blocchi di ingresso/uscita

• L’accesso ad un record logico comporta il trasferimento di uno o più blocchi di ingresso/uscita

• Coefficiente di riempimento di un file:

numero di byte allocati a record logici nel filenumero di byte dei blocchi fisici allocati al file

7

13Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Basi di dati

• Base di dati (o database): insieme di dati raccolti in base a precise regole e organizzati in strutture piuttosto rigide

• DBMS: sistema software che organizza e gestisce basi di dati– Opera al di sopra del sistema operativo

– Offre linguaggi specifici per l’organizzazione e la gestione dei dati

– Offre meccanismi efficienti per l’accesso ai dati

14Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Basi di dati e archivi separati (1)

• Dati gestiti basandosi sui file• Più applicazioni accedono ai file• Problemi:

– Inconsistenza e ridondanza dei dati

– Riservatezza dei dati– Integrità dei dati

– Concorrenza

Progr. 1 Progr. 2 Progr. 3

File

File modificati

8

15Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Basi di dati e archivi separati (2)

• Integrità dei dati– I dati devono sempre essere consistenti con un

insieme di vincoli logici– Ad es. in un’anagrafe ogni dato riguarda una

persona, che ha un padre e una sequenza di figli. Ovviamente se esiste la persona P avente padre P1 occorre che P compaia tra i figli di P1

– Se il programma che aggiorna i padri è diverso da quello che registra le nascite si possono avere momenti in cui i dati non sono consistenti

16Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Basi di dati e archivi separati (3)

• Dati gestiti da un DBMS• Vantaggi:

– I dati hanno una sola rappresentazione (meno ridondanza ed inconsistenza)

– L’accesso alla base di dati viene disciplinato dal DBMS (controllo, privatezza, ecc.)

– Alcuni vincoli di integritàpossono essere definitie verificati in modoautomatico

– Gestione ottimale della memoria di massa

– Gestione degli accessi concorrenti

Progr. 1 Progr. 1 Progr. 1

DBMS

Base di dati

9

17Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Modelli per la gestione dei dati

• Modello dei dati:– Gerarchico: basato su strutture ad albero (metà anni 60)– Reticolare: basato su strutture a grafo (Codasyl - 1973,

1978)– Relazionale: basato sul concetto di insieme e sulla

strutturazione dei dati tramite tabelle (inizio anni ’80))– Ad oggetti: estende alle basi di dati alcune

caratteristiche dei linguaggi di programmazione orientati agli oggetti (inizio anni ’90)

• Schema di una base di dati: descrizione dei dati di uno specifico contesto applicativo– Definita tramite un attività detta database design– Istanza (od occorrenza) di una base di dati: valore

assunto dalla base di dati in un particolare istante di tempo

18Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Categorie di linguaggi

• Data Definition Language (DDL):– Utilizzato per definire lo schema della base di dati

– Lo schema viene salvato nel dizionario dei dati

• Data Manipulation Language (DML):– Per formulare interrogazioni (o query) sulla base di dati– Per modificare il contenuto della base di dati

• Nel seguito vedremo il linguaggio SQL (che supporta entrambi questi aspetti)

10

19Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Livelli di astrazione

• Livelli di astrazione:– Fisico: descrive

la base di dati comeun insieme di recordin memoria di massa

– Logico: descrive la struttura di ciascun datoe i collegamenti tra dati diversi

– Esterno: presenta i dati così come vengono visti da un particolare utente o da una classe di utenti

• Livelli di indipendenza:– Fisica: ridefinire il livello fisico

senza modificare il livello logico– Logica: definire nuovi schemi

esterni senza modifica la struttura logica

Descrizione esterna 1

Descrizione esterna 2

Descrizione esterna n

Descrizione logica

Descrizione interna

Utente 1 Utente 2 Utente 3 Utente 4 Utente n

Archivi

20Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Transazioni• Transazioni: non lasciano mai la base di dati in uno

stato inconsistente• Proprietà “acide” delle transazioni:

– Atomicità: vi sono solo due possibili terminazioni• Successo: tutte le attività della transazione sono andate a

buon fine, la base di dati è aggiornata (commit)• Fallimento: qualche attività della transazione non va a buon

fine, la transazione fallisce tutta, la base di dati non viene modificata (rollback)

– Consistenza: i vincoli di integrità dei dati non sono mai violati

– Isolamento: transazioni concorrenti sono isolate le une dalle altre

– Durabilità: una volta completata con successo, l’effetto della transazione sulla base di dati è permanente

11

21Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Utenti di una base di dati

• Data Base Administrator (DBA):– Definizione degli schemi esterni, logico e fisico– Definizione dei vincoli di integrità e dei requisiti di

riservatezza– Per questi compiti, il DBA utilizza il DDL

• Terminalista:– Interagisce con un’applicazione che a sua volta si

interfaccerà con la base di dati

• Programmatore: – Scrive le applicazioni e le rende disponibili agli utenti– Utilizza il DML per interfacciare applicazione e base di dati

• Utente occasionale:– Formula query non previste dalle applicazioni, usando il

DML

22Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Basi di dati relazionali

12

23Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Base di dati relazionale• Relazione, una tabella caratterizzata da:

– Un numero fisso di colonne (dette attributi); ciascuna colonna assume valori estratti da uno stesso dominio

– Un numero variabile di righe (dette tuple)– Grado di una relazione: il numero di colonne– Cardinalità di una relazione: il numero di righe– Schema di una relazione: il nome della relazione seguito

dai nomi dei suoi attributi; a ciascun attributo è associato un dominio

– Istanza di una relazione: insieme delle tuple presenti nella base di dati in un determinato istante (quindi, varia nel tempo)

• Base di dati relazionale, un insieme di relazioni:– Schema di una base di dati: l’elenco delle relazioni– Istanza di una base di dati: insieme delle istanze delle

relazioni

24Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Esempio: schema base di dati

Relation CONTO-CORRENTE

(NUMERO-CC: integer,

NOME: char (20),

INDIRIZZO: char (20),

SALDO: decimal (14, 2)).

Relation MOVIMENTO

(NUMERO-CC:integer,

DATA-MOV: date,

NUMERO-MOV: integer,

IMPORTO: decimal (14, 2),

CAUSALE: char (1)).

13

25Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Esempio: istanza base di dati

3,400.00v. Romolo 3Grandi4

6,777.50v. Po 41Brunelli3

664.00v. Bolla 64Bianchi2

3,678.00v. Anemoni 5Rossi1

SALDOINDIRIZZONOMENUMERO-CC

A-650.00125-01-033

S+1,850.40127-01-034

S+2,700.00327-01-031

P-500.00214-01-031

V+200.00114-01-031

CAUSALEIMPORTONUMERO-MOVDATA-MOVNUMERO-CC

CONTO-CORRENTE

MOVIMENTO

26Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Alcune considerazioni

• Siamo vincolati ad introdurre informazioni che soddisfino lo schema– Ad es. nella relazione Conto_corrente possiamo introdurre

solo il nome e l’indirizzo del cliente, non il suo numero di telefono o il codice fiscale. Per inserire queste informazioni dovremmo prima modificare lo schema

• Partendo dalle relazioni esistenti è possibile ricavare informazioni non direttamente disponibili nel DB, ad es. l’elenco dei clienti che abitano in una certa zona e hanno versato più di un milione nel 1995

• Questo tipo di operazioni viene fatto attraverso il query language (o linguaggio di interrogazione del DB)

14

27Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Accesso alle tuple

• L’accesso ad una certa tupla (o ad un insieme di tuple) di una relazione è sempre ed esclusivamente di tipo associativo (non posizionale): avviene in base al valore contenuto nella tupla

• Ovvero, posso chiedere al DBMS il saldo di Rossi – trova la tupla in cui l’attributo Nome vale “Rossi” e

leggi l’attributo Saldo• Non posso chiedere il valore dell’attributo

Nome della terza tupla– le tuple non sono ordinate e non c’è modo di fare

un accesso diretto

28Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Chiavi nelle relazioni• A causa dell’accesso associativo, è importante dotare le relazioni di una

“chiave”

• Una chiave è un insieme minimo di attributi il cui valore identifica univocamente una tupla

• Serve per poter accedere ad una singola tupla – Ad es. nel caso del Conto_corrente si vuole poter aggiornare il Saldo di una

specifica tupla, corrispondente ad un ben preciso conto corrente. La chiave sarà pertanto l’attributo Num_CC

– Nel caso del Movimento, la chiave sarà data dall’insieme degli attributi Num_CC, Data_mov, Num_mov

• C è una chiave per una relazione R se valgono le seguenti proprietà:– univocità: non possono esistere due tuple di R con lo stesso valore di C– minimalità : eliminando un attributo da C la proprietà precedente decade

• Per una stessa relazione possono esistere piùchiavi candidate– La chiave primaria della relazione sarà una tra queste– Spesso sulla chiave primaria non si accettano valori nulli

15

29Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Restrizione e chiave• Restrizione: di una tupla t sugli attributi A di R,

indicata con t[A], è data dalla lista dei valori assunti da t sugli attributi A di R

• Chiave di una relazione R: un sottoinsieme K degli attributi di R, tale che valgano:– Unicità: in una qualunque istanza di R, non possono

esistere due tuple distinte di R la cui restrizione su K sia uguale

– Minimalità: non è possibile sottrarre a K un attributo senza che la condizione di unicità cessi di valere

• Ogni relazione deve avere almeno una chiave– Se la relazione ha più chiavi, una di esse sarà la chiave

primaria

CONTO-CORRENTE (NUMERO-CC; NOME, INDIRIZZO, SALDO)

MOVIMENTO (NUMERO-CC, DATA-MOV, NUMERO-MOV, IMPORTO, CAUSALE)

30Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Le operazioni Le operazioni relazionali• Ci sono operazioni che servono per combinare

relazioni, limitandosi a leggere il contenuto del DB. Restituiscono sempre una relazione– Operazioni unarie: hanno come operando un’unica

relazione– Operazioni binarie: hanno come operando due relazioni– Operazioni insiemistiche: corrispondono alle solite

operazioni di unione, differenza e intersezione

• Ci sono operazioni che servono a modificare il contenuto del DB– Aggiunta e riomozione e modifica di record

• Ci sono operazioni che servono a modificare lo schema del DB

16

31Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Le operazioni unarie - selezione

• La selezione restituisce una relazione che è strutturalmente identica all’operando (ha lo stesso schema), ma contiene un sottoinsieme delle tupledell’operando

• Fa una selezione delle tuple della relazione “operando”, utilizzando un criterio di selezione:– Il criterio di selezione è una espressione logica (predicato)

che viene valutata (vero/ falso) su ciascuna tupla: le tuple per cui l’espressione vale “vero” sono selezionate e fanno parte del risultato, le altre, per cui l’espressione vale “falso” sonoscartate.

32Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Le operazioni unarie – selezioneUn Esempio• Selezioniamo dalla relazione Conto_corrente le tuple

in cui Saldo > 2.000.000

17

33Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Le operazioni unarie - proiezione

• Mentre la selezione elimina delle righe della tabella operando, la proiezione elimina delle colonne

• Contrariamente al caso della selezione il criterio di eliminazione non dipende da un’espressione da valutare, ma si dà direttamente l’insieme degli attributi che vanno mantenuti

34Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Le operazioni unarie – proiezioneUn Esempio• Proiettiamo la relazione Movimento sugli attributi Data_mov e

Importo

• Nota: eliminando delle colonne può darsi che tra le tuple così ottenute esistano dei duplicati. Poiché le relazioni sono insiemi, i duplicati non sono ammessi, e quindi vengono eliminati– Ad es. il movimento del CC 1 del 1-1-96 è un duplicato e viene

eliminato

18

35Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Le operazioni binarie – prodotto cartesiano• Il prodotto cartesiano crea una relazione avente per

tuple tutte le possibili combinazioni ottenibili giustapponendo una tupla del primo operando con una tupla del secondo

• Esempio

36Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Le operazioni binarie – join naturale

• Il prodotto cartesiano raramente è utile, perché generalmente si vogliono ottenere solo le combinazioni di tuple tra le quali esiste una certa corrispondenza, o vale una certa proprietà

• join naturale: si combinano tra loro solo le tuple in cui valori delle relazioni in due attributi aventi dominio uguale (e nome uguale) verificano la proprietà di uguaglianza

• Nella tabella risultante, si considera la colonna uguale una volta sola

19

37Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Le operazioni binarie – join naturaleUn Esempio

38Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Il linguaggio SQL• E’ presente in tutti i DBMS relazionali• Standard ANSI e ISO• Mette a disposizione sia un DDL, sia un DML• DDL: permette di creare lo schema della base di

darti– CREATE TABLE: crea una relazione a livello logico– CREATE INDEX: crea indici per una certa relazione; gli

indici permettono di accedere ai dati con maggiore efficienza

– DROP TABLE: cancella una relazione

– DROP INDEX: cancella un indice

• DML: permette di scrivere le query– Basato sull’algebra relazionale– Operatori: selezione, proiezione, join, unione e differenza

20

39Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Il linguaggio SQL: select

• L’istruzione che permette di formulare le query• Sintassi:

SELECT nomi di attributi

FROM nomi di relazioni

WHERE condizioni di ricerca sui dati

• Le tre clausole individuano rispettivamente:– gli attributi da includere nel risultato;

– le relazioni da cui estrarre i dati;

– la condizione di ricerca. Questa condizione può essere assai complessa e coinvolgere nel suo interno altri blocchi SQL

40Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Il linguaggio SQL: esempi 1

• La selezione riportata nell’esempio precedente si scrive:SELECT *FROM Conto_correnteWHERE Saldo > 2.000.000

• La proiezione dell’esempio precedente si scrive:SELECT Data_mov, ImportoFROM Movimento

• Nota: nei DBMS commerciali i duplicati sono ammessi. Per eliminarli occorre indicarlo esplicitamente, attraverso la parola chiave DISTINCT:SELECT DISTINCT Data_mov, ImportoFROM Movimento

21

41Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Il linguaggio SQL: esempi 2

• Una singola espressione SQL può indicare selezione e proiezione insieme:SELECT Num_CC, ImportoFROM MovimentoWHERE Data_mov = 1-1-96

• L’operazione descritta seleziona le tuple in cui l’attributo Data_mov ha il valore rescritto, poi sopprime gli attributi diversi da Num_CC e Importo

• Join: Voglio sapere i nomi dei correntisti interessati da ciascun movimento: devo combinare le tuple di Conto_corrente con le tuple di Movimento aventi uguale Num_CC

• In SQL scrivo:SELECT *FROM Conto_corrente, MovimentoWHERE Conto_corrente.Num_CC =Movimento.Num_CC

42Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Il linguaggio SQL: esempi 3

• Il join è combinabile con la selezione e la proiezione in un’unica operazione SQL: semplicemente il predicato non indicherà solo la corrispondenza tra tuple, ma anche un criterio cui le tuple del risultato dovranno essere conformi

• Voglio conoscere importo e causale dei movimenti di Rossi del 1-1-96:

SELECT Importo, CausaleFROM Conto_corrente, Movimento

WHERE Conto_corrente.Num_CC = Movimento.Num_CC AND Nome = “Rossi” AND Data_mov = 1-1-96

22

43Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Il linguaggio SQL: le operazioni insiemistiche

• Corrispondono alle normali operazioni sugli insiemi

• Occorre notare che per avere come risultato dei veri insiemi occorre sempre indicarlo esplicitamente usando la keyword DISTINCT– Altrimenti ad es. l’unione darà semplicemente un

risultato contenente le tuple del primo operando e quelle del secondo, duplicati compresi

• In SQL queste operazioni si chiamano rispettivamente– UNION– MINUS– INTERSECT

44Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Il linguaggio SQL: esempio 4

• Estraiamo i CC che hanno un saldo maggiore di 2.000.000 e per i quali non è stato fatto alcun movimento per un importo maggiore di 1.000.000

SELECT Num_CCFROM Conto_correnteWHERE Saldo > 2.000.000MINUSSELECT Num_CCFROM MovimentoWHERE Importo > 1.000.000

23

45Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Alcune considerazioni

• L’SQL supporta uno stile di interrogazione dichiarativo, nel senso che le query specificano le caratteristiche del risultato ma non indicano come estrarlo– Ad es. nelle selezioni non diciamo se la tabella deve

essere scandita dall’alto o dal basso, o quale parte della condizione deve essere valutata per prima

• Le query vengono interpretate dal DBMS, che provvede anche a ottimizzarle– Ad es. dovendo fare un join e una selezione conviene fare

la selezione prima, per avere meno tuple su cui valutare la condizione del join

46Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Le applicazioni• SQL non è adatto agli utenti finali delle basi di dati• Si realizzano applicazioni che permettono

un’interazione semplice e schematica• L’informazione scambiata con l’utente durante

l’esecuzione di un’applicazione è mostrata in una maschera (o form)

• Esistono strumenti software per la gestione delle maschere che permettono al programmatore di:– Definire le maschere

– Associare ogni maschera l’operazione da eseguire sulla base di dati

• L’utente finale interagisce con le maschere e non vede né l’SQL, né lo schema della base di dati

24

47Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Maschere: definizione

48Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Maschere: uso

25

49Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Rapporti (o report)

• Ulteriore modo per estrarre informazioni dalla base di dati

• Caratteristiche tipiche:– Destinati alla stampa o ad essere visualizzati in pagine Web

– Contengono grandi quantità di dati– Generati periodicamente, senza interazioni con l’utente

• Esistono strumenti software per la definizione dei rapporti (generatori di report)

50Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Altri linguaggi

• Linguaggi di quarta generazione• Consentono di realizzare applicazioni specificandole a

un alto livello• Il progettista usa tali linguaggi interagendo con loro

tramite interfacce a menu e maschere

26

51Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Schemi concettuali e logici: Esempio di riferimento

52Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Schemi concettuali e logici: Esempio di riferimento

27

53Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Esercizi

• Visualizzare il nome e il peso specifico degli inquinanti prodotti nella città di Torino

• Visualizzare tutte le informazioni relative agli inquinanti prodotti nella città di Torino

• Visualizzare tutte le città in cui viene prodotto un inquinante

• Visualizzare il nome delle aziende con sede a Milano e grado di pericolosità superiore o pari a 20

• Visualizzare le coppie di aziende ed inquinanti tali che entrambi si trovino nella medesima città

• Visualizzare il nome degli inquinanti scaricati durante la lavorazione del prodotto con codice P3

54Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Esercizi

• Visualizzare le coppie di nomi di città tali che un azienda che ha sede nella prima cittàscarichi nella seconda un inquinante relativo a un qualsiasi prodotto

• Visualizzare le coppie di aziende tali che abbiano sede nella stessa cittàSELECT A.NomeA, B.NomeA,

FROM AZIENDA AS A, AZIENDA AS B

WHERE A.Città = B.Città AND A.CodA < B.CodA;

• Visualizzare i nomi delle aziende che producono inquinanti a Milano, a Venezia, o in entrambe le città

28

55Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Esercizi

• Visualizzare i nomi delle aziende che scaricano inquinanti a Milano – Ripetere l’esercizio usando select annidate

• Visualizzare i nomi delle aziende che non scaricano mercurio

SELECT NomeA FROM AZIENDA

WHERE CodA NOT IN

(SELECT CodA FROM SCARICO,INQUINANTE

WHERE SCARICO.CodI = INQUINANTE.CodI AND NomeI = “Me rcurio”);

56Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Progettare le Basi di Dati

• Progettare un DBMS vuol dire essenzialmente definirne lo schema– capire quali tabelle servono– definire lo schema di ciascuna tabella– creare le chiavi

• La progettazione delle query e delle modalità di interazione fa invece parte della progettazione delle applicazioni

29

57Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Progettare le Basi di Dati

• Innanzitutto si cerca di produrre un modello concettuale dei dati da gestire– Il modello è concettuale in quanto prescinde dal

modello logico dei dati adottato dal particolare DBMS scelto

• Un formalismo molto usato per la descrizione concettuale dei dati è costituito dai diagrammi Entity/ Relationship (Chen)– Entità: ciò che è di interesse per il sistema– Relazioni: legami di diversa natura tra entità– Attributi: caratteristiche (proprietà) delle entità e

delle relazioni

58Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Diagramma E-R: un esempio

• Un sistema per la gestione dell’allocazione delle aule per i corsi Universitari

• Entità:

30

59Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Diagramma E-R: un esempio

• Relazioni:

60Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Diagramma E-R: un esempio

• Molteplicità delle relazioni: indicata graficamente dal “ventagl io” ad una estremità della relazione; ad es:

• Aula--<-Corso, indica che una entità Aula può ospitare più Corsi ma un Corso può essere ospitato in una sola aula (relazione uno-molti)

• Corso->---<-Studente indica che una entità Studente può seguire piùCorsi, e viceversa un Corso può essere seguito da più studenti (relazione molti-molti):

31

61Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Diagramma E-R: un esempio

• Attributi:

62Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Progettare del DB a partire dal modello E-R

• Un diagramma E-R può essere “trasformato” in uno schema logico di DB con qualunque data model

• Tuttavia, i diagrammi E-R sono particolarmente adatti al progetto di DB relazionali, perché la trasformazione di un diagramma E-R in uno schema relazionale èmolto semplice:– un’entità diventa una relazione (tabella)– un attributo di un’entità diventa un attributo di una relazione– le relazioni tra entità possono diventare riferimenti diretti da

una tupla di una relazione ad una tupla di un’altra relazione oppure possono dar luogo ad una relazione aggiuntiva, a seconda dei casi

32

63Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Traduzione di relazioni 1-1

• E1(IdE1: integer, A1: char(1), IdE2: integer)

• E2(IdE2: integer, A2: char(1))

64Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Traduzione di relazioni 1-n

• E1(IdE1: integer, A1: char(1), IdE2: integer)

• E2(IdE2: integer, A2: char(1))

33

65Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Traduzione di relazioni 1-n

• Si possono evitare le ridondanze rappresentando la relazione inversa

66Copyright © 2004 - The McGraw-HillCompanies, srl

Archivi e Basi di DatiInformatica A – V. Perrone

Traduzione di relazioni n-n

• In questo caso si deve introdurre una tabella apposita per la relazione– R(IdE1: integer, IdE2: integer)