Archivi e basi di dati Vito Perrone

Slides:



Advertisements
Presentazioni simili
Training On Line - CONP. 2 Richiesta Da Menu: Conferimenti ad inizio anno termico > Agosto > Pluriennali > Nuova Richiesta Si accede alla pagina di Richiesta.
Advertisements

Informatica II – Basi di Dati (08/09) – Parte 1
Tecnologia delle basi di dati: Strutture fisiche di accesso
DBMS (DataBase Management System)
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità B1 Introduzione alle basi di dati.
Unità D2 Archivi e file.
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità C1 Il linguaggio SQL.
Structured Query Language (SQL) Presentazione 13.1 Informatica Generale (Prof. Luca A. Ludovico)
Una Introduzione alle Basi di Dati
Hard disk.
File System Cos’è un File System File e Directory
Fondamenti di Informatica I CDL in Ingegneria Elettronica - A.A CDL in Ingegneria Elettronica - A.A Archivi e basi di dati Ing.
Basi di Dati prof. A. Longheu
4 – Progettazione – Introduzione e Modello E-R
Archivi   L’uso degli archivi deriva dalla necessità di conservare dati e informazioni in modo permanente affinché possano essere riutilizzate anche.
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Luglio 2004Memorie Tradizionali1 MEMORIE TRADIZIONALI Luglio 2004.
L’uso dei database in azienda
1 IT FOR BUSINESS AND FINANCE ACCESS INTRODUCTION.
File.
Camil Demetrescu, Irene Finocchi, Giuseppe F. ItalianoAlgoritmi e strutture dati Algoritmi e Strutture Dati Capitolo 2 Modelli di calcolo e metodologie.
Corso di Informatica (Basi di Dati)
1 Corso di Informatica (Programmazione) Lezione 4 (24 ottobre 2008) Architettura del calcolatore: la macchina di Von Neumann.
Corso di Informatica (Basi di Dati)
Laboratorio di Basi di Dati Introduzione ad Access 2ª Parte.
Disco magnetico (2) Ciascuna traccia è divisa in settori
Basi di dati. Vantaggi degli archivi digitali Risparmio di spazio: sono facilmente trasferibili e duplicabili Risparmio di tempo: si può accedere ai dati.
Access: Query semplici
Basi di dati Università Degli Studi Parthenope di Napoli
Unità Didattica 2 I Linguaggi di Programmazione
Strutture di controllo in C -- Flow Chart --
Archivi e basi di dati Vito Perrone
Duplicati Lalgebra relazionale non ammette duplicati, SQL li ammette. Quindi select Città from Persona where Cognome= Rossi estrae una lista di città in.
Progettazione di una base di dati
Relazioni Relazione : concetto mutuato dalla definizione di relazione matematica della teoria degli insiemi, come sottoinsieme del prodotto cartesiano.
Daniel Stoilov Tesi di Laurea
Introduzione alle basi di dati
DBMS ( Database Management System)
Basi di dati Claudia Raibulet
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
1 Negozi Nuove idee realizzate per. 2 Negozi 3 4.
INFORMATICA Corso Base Modulo G: I DataBase  Access.
TECNOLOGIE DELLINFORMAZIONE E DELLA COMUNICAZIONE PER LE AZIENDE Materiale di supporto alla didattica.
MODELLO LOGICO DEI DATI
Dottorato di ricerca Nuove Tecnologie e Informazione Territorio – Ambiente Nozioni fondamentali di Basi di Dati Seminario interno.
Introduzione a Oracle 9i
LE BASI DI DATI E IL LINGUAGGIO SQL.
1 Ly-LAB Sistema di gestione dei dati analitici di laboratorio.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
DATABASE Introduzione
Architettura Centralizzata di un DBMS Relazionale
I DATABASE.
A.P. cat. B - 1 Per chi vuole: Libro di testo D.P. Curtis, K. Foley, K. Sen, C. Morin Informatica di base 2° edizione Mc Graw-Hill Companies.
I DBMS BASI DI DATI (DATABASE) Insieme organizzato di dati utilizzati
Informatica Introduzione alle basi di dati Lezione 2 Scienze e tecniche psicologiche dello sviluppo e dell'educazione, laurea magistrale Anno accademico:
Il Linguaggio SQL. Le interrogazioni in SQL (continua…) La parte di SQL dedicata alla formulazione di interrogazioni fa parte del DML. SQL esprime le.
Dati e DBMS DBMS relazionali SQL Progettazione di un DBMS Normalizzazione Programma del Corso di Basi di Dati.
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Query languages per Basi di Dati Relazionali  Algebra Relazionale:  basato sulla teoria degli insiemi  procedurale  usato per l’implementazione di.
Cloud informatica V anno.
Approfondimenti SQL.
ICT e Sistemi informativi Aziendali Materiale di supporto alla didattica.
Linguaggio SQL prima parte Linguaggio SQL prima parte A. Lorenzi, E. Cavalli INFORMATICA PER SISTEMI INFORMATIVI AZIENDALI Copyright © Istituto Italiano.
11. Archivi e basi di dati Informatica - CDL in Ingegneria Industriale- A.A Ing. Simona Colucci.
Access Breve introduzione. Componenti E’ possibile utilizzare Access per gestire tutte le informazioni in un unico file. In un file di database di Access.
Il modello relazionale. Modello Relazionale 2 Dal modello concettuale a quello logico Una volta stabilita la rappresentazione concettuale della realtà.
Linguaggio SQL. Linguaggi per database La diffusione del modello relazionale ha favorito l’uso prevalente di linguaggi non procedurali: in questo modo.
I DONEITÀ DI C ONOSCENZE E C OMPETENZE I NFORMATICHE ( A – D ) Un database è un insieme di record (registrazioni) e di file (archivi) organizzati per uno.
Lezione 4 – Linguaggi ed Interazione. Linguaggi La comunicazione è essenziale tra gli esseri umani Se vogliamo chiedere informazioni stradali ad un passante.
Transcript della presentazione:

Archivi e basi di dati Vito Perrone Corso di Informatica A per Gestionali

Memorie di massa

Indice Memorie di massa Organizzazione degli archivi e basi di dati Basi di dati relazionali

Introduzione Memoria di tipo persistente Obiettivi: 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)

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 1 2 3 4 5 6 7 8 Bit di parità

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

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

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

Dischi (3) Accesso ai dati: Quindi: ti/u = tseek + tlat + ttrasf 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

Altre memoria di massa Floppy disk: magnetico Dischi ottici CD-ROM CD-R/RW DVD Chiavi USB: memorie a stato solido Flash EPROM

Organizzazione degli archivi e basi di dati

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

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

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

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

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 definiti e verificati in modo automatico Gestione ottimale della memoria di massa Gestione degli accessi concorrenti Progr. 1 DBMS Base di dati

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

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)

Livelli di astrazione Livelli di astrazione: Livelli di indipendenza: Fisico: descrive la base di dati come un insieme di record in memoria di massa Logico: descrive la struttura di ciascun dato e 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

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

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

Basi di dati relazionali

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

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)).

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 664.00 3 Brunelli v. Po 41 6,777.50 4 Grandi v. Romolo 3 3,400.00 MOVIMENTO NUMERO-CC DATA-MOV NUMERO-MOV IMPORTO CAUSALE 1 14-01-03 +200.00 V 2 -500.00 P 27-01-03 3 +2,700.00 S 4 +1,850.40 25-01-03 -650.00 A

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)

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

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

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)

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

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.

Le operazioni unarie – selezione Un Esempio Selezioniamo dalla relazione Conto_corrente le tuple in cui Saldo > 2.000.000

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

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

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

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

Le operazioni binarie – join naturale Un Esempio

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

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

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

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

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, Causale FROM Conto_corrente, Movimento WHERE Conto_corrente.Num_CC = Movimento.Num_CC AND Nome = “Rossi” AND Data_mov = 1-1-96

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

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 FROM Movimento WHERE Importo > 1.000.000

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

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

Maschere: definizione

Maschere: uso

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)

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

Schemi concettuali e logici: Esempio di riferimento

Schemi concettuali e logici: Esempio di riferimento

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

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à

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”);

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

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

Diagramma E-R: un esempio Un sistema per la gestione dell’allocazione delle aule per i corsi Universitari Entità:

Diagramma E-R: un esempio Relazioni:

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):

Diagramma E-R: un esempio Attributi:

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

Traduzione di relazioni 1-1 E1(IdE1: integer, A1: char(1), IdE2: integer) E2(IdE2: integer, A2: char(1))

Traduzione di relazioni 1-n E1(IdE1: integer, A1: char(1), IdE2: integer) E2(IdE2: integer, A2: char(1))

Traduzione di relazioni 1-n Si possono evitare le ridondanze rappresentando la relazione inversa

Traduzione di relazioni n-n In questo caso si deve introdurre una tabella apposita per la relazione R(IdE1: integer, IdE2: integer)