Archivi e basi di dati Vito Perrone Corso di Informatica A per Gestionali Memorie di massa Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 2 Indice • Memorie di massa • Organizzazione degli archivi e basi di dati • Basi di dati relazionali Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 3 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) Archivi e Basi di Dati Copyright © 2004 - The McGraw-Hill Companies, srl Informatica A – V. Perrone 4 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à) Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone Bit 1 2 3 4 5 6 7 8 Bit di parità 5 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 6 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 Archivi e Basi di Dati Copyright © 2004 - The McGraw-Hill Companies, srl Informatica A – V. Perrone 7 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 8 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 9 Altre memoria di massa • Floppy disk: magnetico • Dischi ottici – CD-ROM – CD-R/RW – DVD • Chiavi USB: memorie a stato solido Flash EPROM Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 10 Organizzazione degli archivi e basi di dati Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 11 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 file numero di byte dei blocchi fisici allocati al file Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 12 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 13 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 File Progr. 2 Progr. 3 File modificati Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 14 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 15 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, Progr. 1 privatezza, ecc.) – Alcuni vincoli di integrità possono essere definiti e verificati in modo automatico – Gestione ottimale della memoria di massa – Gestione degli accessi concorrenti Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone Progr. 1 Progr. 1 DBMS Base di dati 16 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 17 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) Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 18 Livelli di astrazione • Livelli di astrazione: Utente 1 Utente 2 Utente 3 Utente 4 – Fisico: descrive la base di dati come un insieme di record Descrizione Descrizion in memoria di massa esterna 1 e esterna 2 – Logico: descrive la struttura di ciascun dato e i collegamenti tra dati diversi – Esterno: presenta i dati così Descrizione come vengono visti da un logica 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone Utente n Descrizion e esterna n Descrizione interna Archivi 19 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 20 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 21 Basi di dati relazionali Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 22 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 23 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)). Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 24 Esempio: istanza base di dati CONTO-CORRENTE NUMERO-CC NOME INDIRIZZO SALDO 1 Rossi v. Anemoni 5 3,678.00 2 Bianchi v. Bolla 64 3 Brunelli v. Po 41 6,777.50 4 Grandi v. Romolo 3 3,400.00 664.00 MOVIMENTO 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 25 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) Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 26 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 27 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 28 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) Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 29 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 30 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. Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 31 Le operazioni unarie – selezione Un Esempio • Selezioniamo dalla relazione Conto_corrente le tuple in cui Saldo > 2.000.000 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 32 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 33 Le operazioni unarie – proiezione Un 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 34 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 35 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 36 Le operazioni binarie – join naturale Un Esempio Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 37 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 38 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 39 Il linguaggio SQL: esempi 1 • La selezione riportata nell’esempio precedente si scrive: SELECT * FROM Conto_corrente WHERE Saldo > 2.000.000 • La proiezione dell’esempio precedente si scrive: SELECT Data_mov, Importo FROM Movimento • Nota: nei DBMS commerciali i duplicati sono ammessi. Per eliminarli occorre indicarlo esplicitamente, attraverso la parola chiave DISTINCT: SELECT DISTINCT Data_mov, Importo FROM Movimento Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 40 Il linguaggio SQL: esempi 2 • Una singola espressione SQL può indicare selezione e proiezione insieme: SELECT Num_CC, Importo FROM Movimento WHERE 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, Movimento WHERE Conto_corrente.Num_CC =Movimento.Num_CC Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 41 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 FROM WHERE Copyright © 2004 - The McGraw-Hill Companies, srl Importo, Causale Conto_corrente, Movimento Conto_corrente.Num_CC = Movimento.Num_CC AND Nome = “Rossi” AND Data_mov = 1-1-96 Archivi e Basi di Dati Informatica A – V. Perrone 42 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 43 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_CC FROM Conto_corrente WHERE Saldo > 2.000.000 MINUS SELECT Num_CC FROM Movimento WHERE Importo > 1.000.000 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 44 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 45 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 46 Maschere: definizione Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 47 Maschere: uso Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 48 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) Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 49 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 50 Schemi concettuali e logici: Esempio di riferimento Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 51 Schemi concettuali e logici: Esempio di riferimento Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 52 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 53 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à Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 54 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”); Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 55 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 56 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 57 Diagramma E-R: un esempio • Un sistema per la gestione dell’allocazione delle aule per i corsi Universitari • Entità: Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 58 Diagramma E-R: un esempio • Relazioni: Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 59 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): Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 60 Diagramma E-R: un esempio • Attributi: Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 61 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 Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 62 Traduzione di relazioni 1-1 • E1(IdE1: integer, A1: char(1), IdE2: integer) • E2(IdE2: integer, A2: char(1)) Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 63 Traduzione di relazioni 1-n • E1(IdE1: integer, A1: char(1), IdE2: integer) • E2(IdE2: integer, A2: char(1)) Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 64 Traduzione di relazioni 1-n • Si possono evitare le ridondanze rappresentando la relazione inversa Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 65 Traduzione di relazioni n-n • In questo caso si deve introdurre una tabella apposita per la relazione – R(IdE1: integer, IdE2: integer) Copyright © 2004 - The McGraw-Hill Companies, srl Archivi e Basi di Dati Informatica A – V. Perrone 66