archivi e basi di dati vito perrone corso di informatica a per gestionali
Post on 01-May-2015
216 Views
Preview:
TRANSCRIPT
Archivi e basi di dati
Vito Perrone
Corso di Informatica A per Gestionali
2Copyright © 2004 - The McGraw-Hill Companies, srl
Archivi e Basi di DatiInformatica A – V. Perrone
Memorie di massa
3Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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)
5Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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
7Copyright © 2004 - The McGraw-Hill Companies, 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) radialmente tra le varie tracce
8Copyright © 2004 - The McGraw-Hill Companies, 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
9Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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
11Copyright © 2004 - The McGraw-Hill Companies, srl
Archivi e Basi di DatiInformatica A – V. Perrone
Organizzazione degli archivie basi di dati
12Copyright © 2004 - The McGraw-Hill Companies, 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
13Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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
15Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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
17Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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)
19Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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
21Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, srl
Archivi e Basi di DatiInformatica A – V. Perrone
Basi di dati relazionali
23Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, srl
Archivi e Basi di DatiInformatica A – V. Perrone
Esempio: schema base di dati
RelationCONTO-CORRENTE
(NUMERO-CC: integer,
NOME: char (20),
INDIRIZZO: char (20),
SALDO: decimal (14, 2)).
RelationMOVIMENTO
(NUMERO-CC:integer,
DATA-MOV: date,
NUMERO-MOV: integer,
IMPORTO: decimal (14, 2),
CAUSALE: char (1)).
25Copyright © 2004 - The McGraw-Hill Companies, srl
Archivi e Basi di DatiInformatica A – V. Perrone
Esempio: istanza base di dati
NUMERO-CC NOME INDIRIZZO SALDO
1 Rossi v. Anemoni 5 3,678.00
2 Bianchi v. Bolla 64 664.00
3 Brunelli v. Po 41 6,777.50
4 Grandi v. Romolo 3 3,400.00
NUMERO-CC DATA-MOV NUMERO-MOV IMPORTO CAUSALE
1 14-01-03 1 +200.00 V
1 14-01-03 2 -500.00 P
1 27-01-03 3 +2,700.00 S
4 27-01-03 1 +1,850.40 S
3 25-01-03 1 -650.00 A
CONTO-CORRENTE
MOVIMENTO
26Copyright © 2004 - The McGraw-Hill Companies, 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)
27Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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
29Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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
31Copyright © 2004 - The McGraw-Hill Companies, 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 tuple dell’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” sono scartate.
32Copyright © 2004 - The McGraw-Hill Companies, 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
33Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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
35Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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
37Copyright © 2004 - The McGraw-Hill Companies, srl
Archivi e Basi di DatiInformatica A – V. Perrone
Le operazioni binarie – join naturaleUn Esempio
38Copyright © 2004 - The McGraw-Hill Companies, 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
39Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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
41Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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, MovimentoWHERE Conto_corrente.Num_CC =
Movimento.Num_CC AND Nome = “Rossi” AND Data_mov = 1-1-96
43Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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
45Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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
47Copyright © 2004 - The McGraw-Hill Companies, srl
Archivi e Basi di DatiInformatica A – V. Perrone
Maschere: definizione
48Copyright © 2004 - The McGraw-Hill Companies, srl
Archivi e Basi di DatiInformatica A – V. Perrone
Maschere: uso
49Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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
51Copyright © 2004 - The McGraw-Hill Companies, srl
Archivi e Basi di DatiInformatica A – V. Perrone
Schemi concettuali e logici: Esempio di riferimento
52Copyright © 2004 - The McGraw-Hill Companies, srl
Archivi e Basi di DatiInformatica A – V. Perrone
Schemi concettuali e logici: Esempio di riferimento
53Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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 BWHERE 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à
55Copyright © 2004 - The McGraw-Hill Companies, 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 = “Mercurio”);
56Copyright © 2004 - The McGraw-Hill Companies, 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
57Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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à:
59Copyright © 2004 - The McGraw-Hill Companies, srl
Archivi e Basi di DatiInformatica A – V. Perrone
Diagramma E-R: un esempio
• Relazioni:
60Copyright © 2004 - The McGraw-Hill Companies, 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):
61Copyright © 2004 - The McGraw-Hill Companies, srl
Archivi e Basi di DatiInformatica A – V. Perrone
Diagramma E-R: un esempio
• Attributi:
62Copyright © 2004 - The McGraw-Hill Companies, 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
63Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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))
65Copyright © 2004 - The McGraw-Hill Companies, 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-Hill Companies, 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)
top related