basi di dati monica bianchini dipartimento di ingegneria dellinformazione e-mail:...
TRANSCRIPT
Basi di datiBasi di dati
Monica BianchiniMonica BianchiniDipartimento di Ingegneria dell’InformazioneDipartimento di Ingegneria dell’Informazione
E-mail: [email protected]
SommarioSommario
Cenni storici e introduzioneCenni storici e introduzione Da sistemi informativi a sistemi informatici: Da sistemi informativi a sistemi informatici:
le basi di dati e i DBMS le basi di dati e i DBMS Il modello relazionale: vincoli, chiavi, Il modello relazionale: vincoli, chiavi,
algebra relazionalealgebra relazionale I linguaggi di interrogazioneI linguaggi di interrogazione Le basi di dati distribuite e i sistemi Le basi di dati distribuite e i sistemi
ipermedialiipermediali
Cenni storiciCenni storici
Gli archivi costituiscono una memoria di lavoro indispensabile per gestire quantità ingenti di informazione, per ordinare gli elementi utili, metterli in relazione e filtrare i dati che devono essere utilizzati nelle varie circostanze
Prima della diffusione dei sistemi informatici, gli archivi erano gestiti in forma cartacea, con schedari e registri, che permettevano di catalogare e ordinare i dati secondo un unico criterio di ricerca e rendevano disagevole il recupero e l’analisi dell’informazione
L’avvento dell’informatica ha permesso l’integrazione, in un unico programma applicativo, delle funzionalità di archiviazione e gestione dei dati
Introduzione Introduzione 1 1
Le basi di dati, ed i relativi programmi di gestione, sono sistemi che permettono la manipolazione di grandi quantità di informazione, per raggiungere gli scopi di una qualche organizzazione (azienda, istituzione, etc.): Raccolta, acquisizione Archiviazione, conservazione Elaborazione, trasformazione, produzione Distribuzione, comunicazione, scambio
Introduzione Introduzione 2 2
Le attività di gestione delle informazioni, così come le informazioni stesse, mentre a livello umano possono essere realizzate usando idee informali e linguaggio naturale, a livello informatico devono essere opportunamente formalizzate e codificate
Tali formalizzazioni sono anteriori alla realizzazione dei sistemi informatici
Nei sistemi informatici le informazioni vengono rappresentate in modo strutturato ed essenziale (mediante i dati)
Introduzione Introduzione 3 3
Il database permette la creazione di una memoria digitale vasta ed “intelligente”, che può essere utilizzata a diversi livelli di complessità
Il database è un insieme integrato di informazioni omogenee, che fornisce strumenti, quali tabelle, query, maschere e report, per la catalogazione, l’ordinamento e la ricerca dei dati
Basi di dati... oggi...Basi di dati... oggi...
Sistemi informativiSistemi informativi
InformazioniInformazioni
DatiDati
DBMS
borsa
DBMS
orari
Sistema informativoSistema informativo
Sottosistema di un’organizzazione che gestisce acquisizione elaborazione conservazione produzione
delle informazioni informazioni di interesse
Ogni organizzazione ha un sistema informativo Le informazioni sono un “bene”
L’esistenza del sistema informativo è indipendente dalla sua automazione (sistema sistema
informaticoinformatico)
Sistema informaticoSistema informatico
Gestisce un sistema informativo in modo automatizzato
Garantisce che i dati siano conservati in modo permanente su dispositivi di memoria
Permette un aggiornamento veloce dei dati per riflettere rapidamente le loro variazioni
Rende i dati accessibili alle interrogazioni degli utenti
Può essere distribuito sul territorio Anche prima di essere automatizzati, molti sistemi
informativi si sono evoluti verso una razionalizzazione e standardizzazione delle razionalizzazione e standardizzazione delle procedure e della organizzazione delle informazioniprocedure e della organizzazione delle informazioni
Gestione delle informazioniGestione delle informazioni
Modo di gestire e comunicare le informazioni
accesso, elaborazione, trasmissioneaccesso, elaborazione, trasmissione
lingua scritta e parlata disegni, grafici, schemi codici e numeri
Modo di memorizzare l’informazione ricordata a memoria copia cartacea in formato elettronico
Sistemi per la gestione di Sistemi per la gestione di informazioniinformazioni
Nelle attività standardizzate dei sistemi informativi complessi sono state introdotte col tempo
forme di organizzazione eforme di organizzazione e
codifica delle informazionicodifica delle informazioni
Ad esempio, nei servizi anagraficiservizi anagrafici si è iniziato con registrazioni discorsive e poi nome e cognome
estremi anagrafici codice fiscale .... una chiavechiave per tutti!
I sistemi informativiI sistemi informativi
Rendono disponibili le informazioni Permettono di gestirle in maniera efficace Non sono legati alla loro realizzazione
automatizzata (sistema informatico)
L’informazione si ottiene interpretando opportunamente i dati
Mario Rossi0577233601
Numero di telefono di Mario Rossi
Informazione - dato
Numero
Mario Rossi
Dati e informazioniDati e informazioni
DatoDato: ciò che è immediatamente presente alla conoscenza, prima di ogni elaborazione; in informatica, elementi di informazione costituiti da simboli che devono essere elaborati
InformazioneInformazione: notizia o elemento che consente di avere conoscenza di fatti, situazioni, modi di essere
Basi di datiBasi di dati
È una collezione di dati utilizzata per rappresentare le informazioni di interesse in un sistema informativo
I dati hanno vita più lunga delle procedure che operano su di essi
Gestione di una base di dati
• Organizzazione e conservazione dei dati• Operazioni per la gestione e l’accesso ai dati
Un esempio: la rubrica telefonicaUn esempio: la rubrica telefonica
Dati
Nome Cognome Indirizzo Telefono
Operazioni
• Cercare un numero, dato il nome• Inserire un nuovo numero• Modificare un indirizzo• ……
Mario Rossi Via Garibaldi 10 0577233601
Basi di dati: dove si trovano?Basi di dati: dove si trovano? AnagrafeAnagrafe — anagrafe residenti, anagrafe studenti Servizi bancariServizi bancari — conti correnti, Bancomat, carte di
credito Elenchi delle utenze telefonicheElenchi delle utenze telefoniche Orari ferroviariOrari ferroviari Prenotazione voliPrenotazione voli Catalogo prodottiCatalogo prodotti (CD,…) ……
Accessibili in modo distribuito (Sportelli Bancomat, negozi,...) Accessibili da Internet (Orari FFSS, siti di ecommerce,...) Accessibili da terminali dedicati (Agenzie di viaggio, biblioteche...) ……
DBMSDBMS DBMSDBMS — Data Base Management SystemData Base Management System è un sistema
software per gestire basi di dati: ha il compito di amministrare i file in una base di dati, in modo persistente e condiviso
Grandi dimensioniGrandi dimensioni uso della memoria secondaria
CondivisioneCondivisione accesso di più utenti a dati comuni; si riduce la ridondanza dei dati e la possibilità di inconsistenze ed errori
PersistenzaPersistenza i dati rimangono memorizzati
AffidabilitàAffidabilità capacità di non perdere i dati in caso di malfunzionamento (backupbackup e e recoveryrecovery)
PrivatezzaPrivatezza ciascun utente è riconosciuto da un usernameusername e una passwordpassword e ha autorizzazione ad effettuare soltanto certe operazioni
EfficienzaEfficienza capacità di svolgere le operazioni in tempo ragionevole e con risorse di calcolo e memoria accettabili
Caratteristiche
Cosa si può fare con una base di dati Cosa si può fare con una base di dati 11
Per l’utente finale, l’uso più comune di una base di dati è l’esecuzione di opportune interrogazioni, queryquery, predefinite
Esempi tipici di interrogazioni sono… l’accesso al catalogo elettronico di una biblioteca la consultazione (on-line oppure sulle apposite
macchine nelle stazioni) degli orari dei treni la prenotazione di un volo aereo la consultazione delle informazioni relative
all’andamento dei titoli in borsa ……
Cosa si può fare con una base di dati Cosa si può fare con una base di dati 22
Le interrogazioni possono essere molto semplici… Elencami tutti i libri di Calvino che sono presenti in
biblioteca …ma possono essere anche molto complesse
Elencami i libri di Calvino che nel titolo hanno una parola che compare anche nel titolo di un libro di Pavese e che sono stati presi in prestito almeno 10 volte
Le interrogazioni possono essere espresse usando opportuni linguaggi, query languagequery language, che si differenziano in base al modello dei dati adottato
L’uso di linguaggi di programmazione specializzati costituisce la maggiore differenza fra le basi di dati ed i fogli elettronici (oltre alla diversa quantità di informazione trattabile)
Descrizione dei dati nei DBMSDescrizione dei dati nei DBMS
Livelli diversi di descrizione e rappresentazione dei dati permettono l’indipendenza dei datiindipendenza dei dati dalla rappresentazione
fisica i programmi fanno riferimento alla struttura a livello più
alto le rappresentazioni sottostanti possono essere modificate
senza necessità di modifica dei programmi
Si introduce il concetto dimodello dei datimodello dei dati
modalità usata per organizzare i dati e descriverne la struttura
offre meccanismi di strutturazione per descrivere sinteticamente il formato dei dati
I modelli dei datiI modelli dei dati
Modalità prescelta per l’organizzazione dei dati e per
descriverne la struttura
Il modello relazionalerelazionale permette di organizzare i dati in insiemi di record a struttura fissarecord a struttura fissa (concetto di relazione)
recordrecord
RelazionaleRelazionale, gerarchica, reticolare, ad oggetti..., gerarchica, reticolare, ad oggetti...
NomeNome CognomeCognome IndirizzoIndirizzo TelefonoTelefono
Mario Rossi Via Verdi 5 0577234567
Marco Bianchi Via Righi 73 0557456783
Anna Dati Via Romeo 4 0578345234
Schemi ed istanzeSchemi ed istanze
SchemaSchema: parte non variabile dei dati, è il formato del record
IstanzaIstanza (stato): valori effettivi contenuti nella base di dati
RUBRICA(Nome,Cognome,Indirizzo,Telefono)
Mario Rossi Via Verdi 5 0577234567 Marco Bianchi Via Righi 73 0557456783 Anna Dati Via Romeo
4 0578345234
Schemi e astrazioneSchemi e astrazione
rappresentazione dello schema logico
per mezzo di strutture di memorizzazione
(file)
il livello logico è indipendente da quello fisico:una tabella è utilizzata nello stesso modoqualunque sia la sua realizzazione fisica
(che può anche variare nel tempo)
utente(applicazioni)
DB
schema logico
schema fisico
descrizione della base di datinel modello logico
(es., struttura della tabella)
schema esterno (vista)
descrizione, allo stesso livello di astrazione dello schema logico, di una parte della base di dati (es., la parte accessibile ad una classe di utenti)
Utenti di un DBMSUtenti di un DBMS
L’amministratore della base di datiamministratore della base di dati (DBA) è responsabile della progettazione, del controllo e dell’amministrazione della base di dati; configura il DBMS per garantirne le prestazioni, assicura l’affidabilità del sistema, gestisce le autorizzazioni di accesso
I progettisti progettisti e programmatori di applicazioni programmatori di applicazioni realizzano programmi che accedono alla base di dati; utilizzano gli strumenti di sviluppo per la creazione di interfacce verso la base di dati
Gli utentiutenti,, in grado di utilizzare i linguaggi interattivi di interrogazione, che effettuano transazioni transazioni (attività frequenti e predefinite) o attività casualicasuali
Transazioni Transazioni 1 1
Programmi che realizzano attività frequenti e predefinite, con poche eccezioni, previste a priori
Esempi: versamento presso uno sportello bancario emissione di un certificato anagrafico prenotazione aerea
Il termine transazione transazione ha un’altra accezione, più specifica: una transazione è un insieme di operazioni sulla base di dati che devono essere considerate in modo indivisibile (o atomico); ovvero, o tutte le operazioni dell’insieme sono eseguite correttamente oppure nessuna
Transazioni Transazioni 2 2
L’effetto di una transazione deve essere corretto, anche in presenza di transazioni concorrenti eseguite nello stesso intervallo di tempo
Gli effetti di una transazione conclusasi positivamente devono essere definitivi, ovvero devono essere garantiti anche in presenza di guasti e di esecuzione concorrente
Devono costituire una transazione... ...le operazioni di addebitamento dell’importo prelevato
da un Bancomat e l’erogazione del denaro ...lo spostamento di fondi fra due conti (le operazioni di
accreditamento su un conto e addebitamento su un altro)
Vantaggi e svantaggi dei DBMSVantaggi e svantaggi dei DBMS
VantaggiVantaggi dati come risorsa comune a disposizione di tutta
l’organizzazione gestione centralizzata con possibilità di standardizzazione disponibilità di servizi integrati riduzione di ridondanze e inconsistenze grazie alla condivisione indipendenza dei dati (favorisce lo sviluppo e la manutenzione
delle applicazioni)
SvantaggiSvantaggi costo dei prodotti e della transizione verso di essi (strutture,
hardware/software, personale) non scorporabilità di eventuali servizi non utili (con riduzione di
efficienza)
Il modello relazionaleIl modello relazionaleCodd, 1970Codd, 1970
Adottato dalla maggior parte dei DBMS in commercio Definisce come sono organizzati i dati e non come sono
memorizzati e gestiti dal sistema informatico
Relazione – TabellaRelazione – Tabella
Il concetto di relazionerelazione proviene dalla matematica, mentre quello di tabellatabella è intuitivo
Il modello relazionale permette di trattare i dati ad un livello livello logicologico senza preoccuparsi del livello fisicolivello fisico, ovvero di come i dati sono effettivamente elaborati e memorizzati: per accedere ai dati non è necessario conoscere le strutture fisiche con cui sono realizzati!
Prodotto cartesiano Prodotto cartesiano 1 1 Consideriamo l’insieme dei nomi e dei numeri di
telefono dei dipendenti di un’azienda:
Mario RossiLuca VerdiAnna Bianchi
2345236723782356
D1 D2
Il prodotto cartesiano prodotto cartesiano D1 D2 è l’insieme di tutte le coppie ordinate (NOME,TELEFONO)
Prodotto cartesiano Prodotto cartesiano 2 2Mario Rossi 2345Mario Rossi 2367Mario Rossi 2378Mario Rossi 2356Luca Verdi 2345Luca Verdi 2367Luca Verdi 2378Luca Verdi 2356Anna Bianchi 2345Anna Bianchi 2367Anna Bianchi 2378Anna Bianchi 2356
Il prodotto cartesiano contiene tutte le possibili associazioni fra gli elementi degli insiemi La rubrica dei numeri telefonici contiene solo alcune possibili coppie
RelazioniRelazioni
Una relazione matematicarelazione matematica sugli insiemi D1 e D2 (dominidomini) è un sottoinsieme del prodotto cartesiano D1 D2.
La rubrica contiene solo le coppie (NOME,TELEFONO) che esistono
Mario Rossi 2345Luca Verdi 2367Luca Verdi 2378Anna Bianchi 2356
Un esempioUn esempio
D1 = Squadre di Serie A D2 = Squadre di Serie A
D3 = Numero D4 = Numero
Risultati delle partite della 29° giornata del campionato 2003/04
Relazione
Ancona Bologna 3 2Brescia Modena 0 0Juventus Lazio 1 0Milan Empoli 1 0Parma Lecce 3 1Perugia Inter 2 3Reggina Udinese 0 1Roma Chievo 3 1Siena Sampdoria 0 0
Relazioni con attributiRelazioni con attributi Ogni nupla della relazione stabilisce un legame fra i
dati Il significato dei valori dipende dall’ordine con cui
sono elencati nella nupla
Un nome può essere associato a ciascuna componente della nupla I nomi associati ai domini si dicono attributiattributi e descrivono il ruolo che il dominio ha nella relazione
SquadraDiCasaSquadraDiCasa SquadraOspite RetiCasa RetiOspitataSquadraOspite RetiCasa RetiOspitata
Brescia Modena 0 0
Record e campiRecord e campi
Ciascuna nupla della relazione può essere vista come un recordrecord
Gli attributi definiscono la struttura del record ovvero i suoi campicampi
Si può accedere al valore di un attributo di un record usando il nome del campo
tupletuple
Si usa il termine tuplatupla per indicare una riga di n valori corrispondenti ad attributi (l’ordine non è significativo)
SquadraDiCasaSquadraOspitata RetiCasa RetiOspitataAncona Bologna 3 2Brescia Modena 0 0Juventus Lazio 1 0
TupleTuple Data una tuplatupla si possono estrarre i valori degli attributi
Si possono estrarre anche insiemi di attributi, ottenendo tuple
t[SquadraOspitata] = Modena
t[SquadraDiCasa] = Brescia
t[SquadraDiCasa,SquadraOspitata]=
SquadraDiCasaSquadraOspitataRetiCasa RetiOspitata
Bescia Modena 0 0
SquadraDiCasa SquadraOspitataBrescia Modena
Tuple e relazioniTuple e relazioni
Una relazione su X è un insieme di tuple su X (X è un insieme di attributi)
Si usa la definizione di tupla al posto di n–upla: In una n–upla gli elementi sono individuati per posizione In una tupla gli elementi sono individuati per attributiIn una tupla gli elementi sono individuati per attributi
relazione tuple
attributi
serie A N dominiserie A N
SquadraDiCasaSquadraOspitata RetiCasa RetiOspitataAncona Bologna 3 2Brescia Modena 0 0Juventus Lazio 1 0
Relazioni e basi di datiRelazioni e basi di dati
Una base di dati è in genere costituita da più relazioni
Si possono creare corrispondenzecorrispondenze fra le tuple di relazioni distinte
Le corrispondenze si ottengono fra tuple di relazioni diverse aventi gli stessi valori su un insieme assegnato di attributi
Corrispondenze fra relazioniCorrispondenze fra relazioni
Matricola Cognome Nome Data di nascita A80198760 Bianchi Anna 22/03/1977 A80293450 Rossi Andrea 13/04/1978 A80198330 Neri Luca 04/08/1980 A80295640 Felici Lorenzo 25/02/1979 A80197456 Melli Mara 17/10/1976
Studente Voto Corso
A80198760 28 01A80293450 30 04A80198330 27 01A80198330 25 03A80197456 21 05
Codice Titolo Docente01 Analisi I Anna Verdi03 Geometria Andrea Pitagora04 Fisica I Luca Galileo05 Chimica Lorenzo Argenti
STUDENTI
CORSI
ESAMI
Schemi per basi di datiSchemi per basi di dati
Uno schema di relazioneschema di relazione R(X) è costituito dal nome della relazione e da un insieme di attributi, X={A1, A2,…, An}
STUDENTI(Matricola,Cognome,Nome,Data di Nascita)
Uno schema di base di datischema di base di dati è un insieme di schemi di relazioni con nomi diversi: R={R1(X1), R2(X2),…, Rm(Xm)}
R = { STUDENTI(Matricola,Cognome,Nome,Data di Nascita), ESAMI(Studente,Voto,Corso), CORSI(Codice,Titolo,Docente) }
Esempio: archivio fornitureEsempio: archivio forniture
Articolo Quantita Data ClienteA0001 3000 25/06/2000 0034A0004 500 25/06/2000 0034P0010 3 12/07/2000 0001P0230 2 13/07/2000 0101A0004 100 15/07/2000 0034
PRODOTTI
FORNITURE
CLIENTI
Codice Descrizione Magazzino CostoA0001 Chiodi 35mm 234000 0.15A0004 Viti 12mm 102400 0.25P0010 Pinza 200 7P0230 Cacciavite 600 3.50
Codice Nome Indirizzo P. IVA0001 Carlo Berti Via Roma 6 023320020034 BCD Spa Via Verdi 4 045543030101 A&G Srl Viale Morgagni 16 109203930076 Luca Nelli Piazza Bixio 5 08832822
Informazione incompletaInformazione incompleta
Può accadere che il valore di un attributo non sia disponibile per tutte le tuple
Si introduce un valore nullovalore nullo (NULLNULL) che denota l’assenza di informazione sul valore di un attributo per una data tupla
Il valore di un attributo può essere sconosciutosconosciuto, inesistenteinesistente o privo di informazioneprivo di informazione (non si sa se esiste)
Codice Nome Indirizzo P. IVA 0001 Carlo Berti Via Roma 6 NULL 0034 BCD Spa Via Verdi 4 04554303 0101 A&G Srl Viale Morgagni 16 NULL
inesistenteinesistente
sconosciutosconosciuto
Vincoli di integritàVincoli di integrità
Occorre che le tuple rappresentino informazioni corrette per l’applicazione:
Matricola Cognome Nome Data di nascita NULL Bianchi Anna 22/03/1977 A80293450 Rossi Andrea 13/04/1978 A80197456 Melli Mara NULL
Ex: Valori nulli
Può essere accettabilePuò essere accettabile
Non ammesso!Non ammesso!
Alcuni campi non possono assumere valori nulli!Alcuni campi non possono assumere valori nulli!
STUDENTI
In generale, occorre che i valori assegnati agli attributi in ciascuna tupla soddisfino una serie di vincoli
Vincoli intrarelazionaliVincoli intrarelazionali
Sono vincoli che coinvolgono il valore degli attributi all’interno di una stessa relazione:
Studente Voto Lode CorsoA80198760 37 01A80293450 30 L 04A80198330 22 01A80198330 25 L 03
Valore non ammessoValore non ammesso
Combinazione non ammessaCombinazione non ammessa
Matricola Cognome Nome Data di nascita A80198760 Bianchi Anna 22/03/1977 A80293450 Rossi Andrea 13/04/1978 A80198760 Felici Lorenzo 25/02/1979 A80197456 Melli Mara 17/10/1976
Non ci possono Non ci possono essere due studenti essere due studenti con matricola uguale!con matricola uguale!
Vincoli interrelazionaliVincoli interrelazionali
Sono vincoli che coinvolgono più relazioni Garantiscono l’integrità dei riferimenti fra tabelle
Studente Voto CorsoA80198760 28 01A80293450 30 04A80198330 27 01A80198330 25 03A80197456 21 05
Codice Titolo Docente01 Analisi I Anna Verdi03 Geometria Andrea Pitagora04 Fisica I Luca Galileo??
ESAMI
CORSI
Vincoli di tuplaVincoli di tupla
Esprimono condizioni sui valori degli attributi di ciascuna tupla indipendentemente dalle altre (intrarelazionali)
Sono espressi con predicati che devono essere veri per tutte le tuple
(Voto18) AND (Voto30)
NOT((Lode=‘L’) AND (Voto30))
Possono anche essere definiti da espressioni aritmetiche che legano fra loro i valori degli attributi
PAGAMENTI(Data,Importo,Ritenute,Netto)
Netto = Importo – Ritenute
ChiaviChiavi
I vincoli di chiave sono fondamentali per il modello relazionale
Una chiavechiave è un insieme di attributi utilizzato per identificare univocamenteunivocamente le tuple di una relazione
Matricola Cognome Nome Data di nascita Luogo di Nascita Corso A80198760 Bianchi Anna 22/03/1977 Siena Lettere A80293450 Rossi Andrea 13/04/1978 Poggibonsi Fisica A80198777 Felici Lorenzo 25/02/1979 Montepulciano Ingegneria A80197456 Melli Mara 17/10/1976 Siena Lettere
MatricolaNome, Cognome, Data di Nascita, Luogo di Nascita
Nome, Cognome, CorsoNome, Cognome, Data di Nascita
SI
NO
Superchiavi e chiaviSuperchiavi e chiavi
Un insieme K di attributi è una superchiavesuperchiave per una relazione R se R non contiene due tuple distinte t1 e t2
con t1[K]=t2[K] Un insieme di attributi K è una chiavechiave per una relazione
R se è una superchiave minimalesuperchiave minimale (cioè non esiste una altra superchiave K’ che è contenuta in K)
{Matricola}{Nome, Cognome, Data di Nascita, Luogo di Nascita}
{Matricola, Nome}{Nome, Cognome, Data di Nascita, Luogo di Nascita, Corso}{Matricola, Corso}
CHIAVI (Superchiavi Minimali)
SUPERCHIAVI
Scelta delle chiaviScelta delle chiavi
La scelta della chiave deve tenere conto delle proprietà del mondo reale da cui provengono i dati
STUDENTI(Matricola,Cognome,Nome,Data di Nascita,Luogo di Nascita,Corso)
può essere una chiave nel caso che in un dato ateneo (e quindi nella base di dati) non ci siano due studenti con ugual Nome e Cognome iscritti allo stesso corso… ma niente vieta che possa accadere in futuro!
{Cognome,Nome,Corso}
Può essere aggiunto un campo ad hoccampo ad hoc (ad esempio la matricola) da usare come chiaveI campi corrispondenti alla I campi corrispondenti alla chiave primariachiave primaria non non possono assumere valori nullipossono assumere valori nulli
Integrità referenzialeIntegrità referenziale
Le corrispondenze fra i dati in relazioni diverse si stabiliscono per mezzo dei valori di chiavi delle tuple
Matricola Cognome Nome672 Rossi Mario223 Verdi Francesco532 Belli Carlo
AGENTI
AUTO
INFRAZIONI
MatricolaMatricola: chiave primaria per : chiave primaria per AGENTIAGENTI
chiave esterna per chiave esterna per INFRAZIONIINFRAZIONI
Prov, NumeroProv, Numero: chiave primaria per AUTO: chiave primaria per AUTO
chiave esterna per INFRAZIONIchiave esterna per INFRAZIONI
Codice Data Agente Art Prov Numero
174655 25-12-2002 672 44 FI M363521156732 13-05-2003 223 12 SI BC637ZY
Prov Numero Proprietario Indirizzo
456345 17-08-2002 672 44 GR ZA731CD
FI M363521 Gilli Luca Via OroSI BC637ZY Tilli Nedo Via AbeteGR ZA731CD Billi Aldo Via Sole
Vincoli di integrità referenzialeVincoli di integrità referenziale Un vincolo di integrità referenzialevincolo di integrità referenziale (foreign key,
chiave esterna) fra un insieme di attributi X di una relazione R1 e una relazione R2 è soddisfatto se i valori su X di ciascuna tupla in R1 compaiono come valori della chiave (primaria) dell’istanza di R2
Matricola Cognome Nome672 Rossi Mario223 Verdi Francesco532 Belli Carlo
??
INFRAZIONI
AGENTI
Occorre definire un vincolo di integrità referenziale fra l’attributo AgenteAgente dellarelazione INFRAZIONI e la relazione AGENTI (chiave primaria MatricolaMatricola).
Codice Data Agente Art Prov Numero
174655 25-12-2002 672 44 FI M363521156732 13-05-2003 223 12 SI BC637ZY456345 17-08-2002 345 44 GR ZA731CD
Un esempioUn esempio
Codice Targa1 Targa2 Luogo Danni
5434 BE370TZ AB234TV Siena Fari
5534 FIG04546 TV443AZ Monteroni Paraurti
Targa Proprietario Indirizzo
BE370TZ Fabio Rossi Via Abete 13 Siena
FIG04546 Giovanni Neri Via Moro 7 Firenze
AB234TV Michele Bessi Via Sila 4 Terni
TV443AZ Maria Bianchi Via Belli 4 Roma
INCIDENTI AUTOVEICOLI
1) vincolo di integrità referenziale fra l’attributo Targa1 della relazione INCIDENTI e la relazione AUTOVEICOLI
2) vincolo di integrità referenziale fra l’attributo Targa2 della relazione INCIDENTI e la relazione AUTOVEICOLI
Algebra relazionaleAlgebra relazionale
È basata su un insieme di operatori definiti su relazioni e che producono relazioni
Si possono combinare gli operatori di base per ottenere interrogazioni complesse
operatori insiemistici insiemistici (unione, intersezione, differenza) ridenominazioneridenominazione, selezioneselezione, proiezioneproiezione joinjoin (join naturale, prodotto cartesiano, theta–join)
Operatori insiemistici Operatori insiemistici 1 1 Hanno senso solo se si applicano a relazioni con lo
stesso schema (con gli stessi attributi) L’unioneunione di due relazioni R1(X) e R2(X) è la relazione R(X)= R1(X) U R2(X) che contiene le tuple che appartengono ad R1 oppure ad R2, oppure ad entrambe
Matricola Nome CognomeA80010012 Mario RossiA80010200 Gianni LonghiA80010111 Fabio Verdi
Matricola Nome CognomeA80010012 Mario RossiA80010200 Gianni LonghiA80010111 Fabio VerdiA82010007 Marco BeniA82010345 Anna Bianchi
Matricola Nome CognomeA82010007 Marco BeniA82010345 Anna Bianchi
Laurea 1° livelloLaurea 2° livello
STUDENTI
Operatori insiemistici Operatori insiemistici 2 2 L’intersezioneintersezione di due relazioni R1(X) e R2(X), definite su un insieme
di attributi X, è la relazione R(X)= R1(X) R2(X) contenente le tuple che appartengono sia a R1(X) che a R2(X)
La differenzadifferenza di due relazioni R1(X) e R2(X), definite su un insieme di attributi X, è la relazione R(X)= R1(X) – R2(X) contenente le tuple che appartengono a R1(X) ma non a R2(X)
Matricola Nome Cognome
3456575 Mario Rossi3432334 Gianni Longhi3223343 Fabio Verdi
Matricola Nome Cognome
3456576 Anna Verdi 3223342 Isa Belli 3432334 Gianni Longhi 3222122 Fabio Feltri
Matricola Nome Cognome
3432334 Gianni Longhi
Matricola Nome Cognome
3456575 Mario Rossi3223343 Fabio Verdi
SPECIALIZZATI LAUREATI
SPECIALIZZATI LAUREATI SPECIALIZZATI – LAUREATI
U
RidenominazioneRidenominazione Con l’operazione di ridenominazioneridenominazione si modifica il nome
degli attributi lasciando inalterato il contenuto delle relazioni
Matricola Cognome Agenzia Stipendio
2321112 Belli Milano 553432334 Longhi Roma 45
Matricola Cognome Sede Retribuzione
2321112 Belli Milano 553432334 Longhi Roma 45
Matricola Cognome Fabbrica Salario4434556 Sordi Monza 354568797 Bianchi Viterbo 33
Matricola Cognome Sede Retribuzione
4434556 Sordi Monza 354568797 Bianchi Viterbo 33
Matricola Cognome Sede Retribuzione
2321112 Belli Milano 553432334 Longhi Roma 454434556 Sordi Monza 354568797 Bianchi Viterbo 33
Sede,RetribuzioneAgenzia,Stipendio(IMPIEGATI) Sede,RetribuzioneFabbrica,Salario(OPERAI)
Sede,RetribuzioneAgenzia,Stipendio(IMPIEGATI) Sede,RetribuzioneFabbrica,Salario(OPERAI)
IMPIEGATI OPERAI
SelezioneSelezione L’operatore di selezione selezione condcond (R) produce una
relazione che contiene le tuple della relazione R che soddisfano la condizione cond.
Le condizioni di selezione possono prevedere confronti fra attributi e fra attributi e costanti e possono essere costruite combinando condizioni più semplici con i connettivi logici (or), (and) e (not)
IMPIEGATI(Cognome,Nome,Età,Stipendio)
Età<30 AND Stipendio>2.000(IMPIEGATI)
Vengono selezionati i record relativi ad impiegati con età minore di 30 anni e stipendio superiore a 2000€
Esempi di selezioneEsempi di selezione
Cognome Nome Età Stipendio Rossi Alberto 25 1.000 Verdi Luca 40 2.200 Billi Paolo 28 2.100 Luti Anna 29 2.500
Cognome Nome Età Stipendio Billi Paolo 28 2.100 Luti Anna 29 2.500
Età<30 AND Stipendio>2.000(IMPIEGATI)
IMPIEGATI
Cognome Nome Città di nascita
Residenza
Rossi Alberto Firenze FirenzeVerdi Luca Siena PisaBilli Paolo Pisa LuccaLuti Anna Prato Prato
Cognome Nome Città di nascita
Residenza
Rossi Alberto Firenze FirenzeLuti Anna Prato Prato
CITTADINI
Città di Nascita=Residenza(CITTADINI)
ProiezioneProiezione
Dati una relazione R(X) e un sottoinsieme Y degli attributi in X, la proiezioneproiezione di R su Y, YY(R), è l’insieme delle tuple su Y ottenute dalle tuple di R considerando solo i valori su Y
Cognome Nome Cat Stipendio Rossi Alberto Ric 1.000 Verdi Luca PA 1.750 Billi Paolo PA 1.750 Luti Anna PO 2.500
DOCENTI
Cognome NomeRossi AlbertoVerdi LucaBilli PaoloLuti Anna
Cognome,Nome(DOCENTI)
Cat Stipendio Ric 1.000 PA 1.750 PO 2.500
Cat,Stipendio(DOCENTI)
JoinJoin È l’operatore che permette di correlare dati contenuti in
relazioni diverse confrontando i valori contenuti in esse
join naturalejoin naturale è un operatore che correla dati in relazioni diverse sulla base di valori uguali in attributi con lo stesso nome; il risultato è una relazione che ha per attributi l’unione degli attributi delle relazioni di partenza e le tuple ottenute combinando quelle delle relazioni con valori uguali sugli attributi comuni
Impiegato Reparto Rossi Vendite Verdi Produzione Billi Produzione
Reparto CapoProduzione MoriVendite Bruni
Impiegato Reparto Capo Rossi Vendite Bruni Verdi Produzione Mori Billi Produzione Mori
IMPIEGATI
CAPOREPARTO
CAPOREPARTOIMPIEGATI
Join con tuple Join con tuple pendentipendenti
Impiegato RepartoRossi venditeNeri produzioneBianchi produzione
Reparto Capoproduzione Moriacquisti Bruni
Impiegato Reparto Capo Neri produzione Mori Bianchi produzione Mori
CAPOREPARTO
DIPENDENTI
CAPOREPARTODIPENDENTI
La prima tupla della relazione DIPENDENTI e la seconda della relazioneCAPOREPARTO non generano nessuna tupla nel join
Un esempio di joinUn esempio di join
Impiegato ProgettoRossi ANeri ABianchi A
Progetto CapoA MoriA Bruni
Impiegato Progetto CapoRossi A MoriRossi A BruniNeri A MoriNeri A BruniBianchi A MoriBianchi A Bruni
RICERCATORICOORDINATORI
RICERCATORI
COORDINATORI
Ciascuna tupla della prima relazione è combinabile con tutte le tuple dell’altra; il risultato contiene un numero di tuple pari al prodotto dei numeri di tuple nelle due relazioni originarie
Infrazioni e autoInfrazioni e autoCodice Data Agente Art Prov Numero343535 12/05/99 567 44 FI B04546343344 14/05/99 456 22 SI 345678342233 22/06/99 456 44 FI B04546332112 27/07/99 456 53 PI 768930334545 07/08/99 567 44 GR 546788
Prov Numero Proprietario IndirizzoFI B04546 Paolo Rossi Via Bixio 5 PratoSI 345678 Piero Berti Via Abete 6 SienaPI 768930 Luca Bianchi Piazza Po 16 PisaGR 546788 Anna Verdi Viale Europa 4 Firenze
Codice Data Agente Art Prov Numero Proprietario Indirizzo343535 12/05/99 567 44 FI B04546 Paolo Rossi Via Bixio 5 Prato343344 14/05/99 456 22 SI 345678 Piero Berti Via Abete 6 Siena342233 22/06/99 456 44 FI B04546 Paolo Rossi Via Bixio 5 Prato332112 27/07/99 456 53 PI 768930 Luca Bianchi Piazza Po 16 Pisa334545 07/08/99 567 44 GR 546788 Anna Verdi Viale Europa 4 Firenze
INFRAZIONI
AUTOVEICOLI
INFRAZIONI
AUTOVEICOLI
Theta–joinTheta–join
È un operatore derivato: corrisponde alla generazione di tutte le possibili combinazioni fra le tuple delle due relazioni seguita da una selezione basata su una condizione F
R1 F R2 = F( R1
R2)
È importante dal punto di vista pratico perché è molto utilizzato nei sistemi di basi di dati esistenti
Tutte le possibili combinazioni delle tuple
Selezione delle tuple che soddisfano F
Un esempio di theta–joinUn esempio di theta–joinImpiegato ProgettoRossi ANeri ANeri B
Codice NomeA VenereB Marte
Impiegato Progetto Codice NomeRossi A A VenereNeri A A VenereNeri B A VenereRossi A B MarteNeri A B MarteNeri B B Marte
Impiegato Progetto Codice NomeRossi A A VenereNeri A A VenereNeri B B Marte
RICERCATORIPROGETTI
RICERCATORI
PROGETTI
RICERCATORI
PROGETTI
Progetto=Codice
Interrogazioni in algebra relazionale Interrogazioni in algebra relazionale 1 1
Un’interrogazioneinterrogazione, o queryquery,, a una base di dati produce una serie di record che soddisfano i criteri richiesti
È una funzione che, applicata ad un’istanza di base di dati, produce una relazione, ovvero dei dati organizzati come tuple di una relazione
Le interrogazioni si possono rappresentare con gli operatori dell’algebra relazionale che forniscono una procedura per calcolarne il risultato
Interrogazioni in algebra relazionale Interrogazioni in algebra relazionale 2 2
Con le query è possibile recuperare i dati dalle tabelle e organizzarli in modo diverso
Le query permettono di utilizzare le tabelle in modo dinamico… …mettendo in relazione le informazioni …filtrando i dati di interesse …effettuando ricerche incrociate sui record che
rispondono a determinati criteri
Un esempio di interrogazioneUn esempio di interrogazioneMatricola Nome Età Stipendio101 Marco Rossi 23 1.500103 Paolo Bianchi 34 2.380105 Anna Falchi 33 1.700110 Gaia Belli 36 2.500134 Luca Forti 27 2.500145 Sonia Melli 23 1.500149 Mario Mori 33 1.800153 Bruno Bruni 35 1.500155 Filippo Mei 30 2.500
Capo Impiegato103 101103 105103 145110 103110 149134 153
Trovare nome e stipendio dei capi degli impiegati che guadagnano più di 1.700€
IMPIEGATI
SUPERVISIONE
I passi dell’interrogazione: 1I passi dell’interrogazione: 1
Si selezionano gli impiegati che guadagnano più di 1.700€
Stipendio>1.700(IMPIEGATI)
Matricola Nome Età Stipendio103 Paolo Bianchi 34 2.380110 Gaia Belli 36 2.500134 Luca Forti 27 2.500149 Mario Mori 33 1.800155 Filippo Mei 30 2.500
Si associano gli impiegati trovati con i rispettivi capi
Stipendio>1.700(IMPIEGATI) Impiegato=Matricola SUPERVISIONE
Matricola Nome Età Stipendio Capo Impiegato103 Paolo Bianchi 34 2.380 110 103149 Mario Mori 33 1.800 110 149
I passi dell’interrogazione: 2I passi dell’interrogazione: 2
Si estrae la matricola dei capi
Capo110
Si associa la matricola con la relazione IMPIEGATI per ottenere le informazioni sui capi e poi si proietta sugli attributi richiesti (Nome, Stipendio)
Nome,Stipendio (IMPIEGATI Matricola=Capo (
Nome StipendioGaia Belli 2.500
Capo( Stipendio>1.700(IMPIEGATI) Impiegato=Matricola SUPERVISIONE)))
Capo( Stipendio>1.700(IMPIEGATI) Impiegato=Matricola SUPERVISIONE)
Esempio: AziendaEsempio: Azienda
ID Nome Età Stipendio_orario
Ore
Stipendio
86 Giulia Invernizzi 51 16.60 € 94 1560.40 €
123 Francesca Perrera
18 8.50 € 185 1572.50 €
149 Franco Toccasana
43 12.35 € 250 3087.50 €
71 Gianni Calvini 53 17.80 € 245 4361.00 €
165 Bruno Ferri 17 6.70 € 53 355.10 €
Un DBMS, a differenza di un semplice gestore di file, lavora a Un DBMS, a differenza di un semplice gestore di file, lavora a livello dei singoli campi nei singoli record del file, ovvero livello dei singoli campi nei singoli record del file, ovvero agisce a livello dei singoli attributi sulle tuple della tabella agisce a livello dei singoli attributi sulle tuple della tabella relazionalerelazionale
Sia data la tabella IMPIEGATO:
Esempio: AziendaEsempio: Azienda Un DBMS può eseguire la seguente interrogazione:
select id, nome, età, stipendio_orario, ore, stipendio
from impiegato
where id = 123;
che recupera tutte le informazioni relative all’impiegato con ID uguale a 123; ID è la chiave primaria
Per localizzare invece tutte le informazioni riguardanti un impiegato con un dato nome…
select id, nome, età, stipendio_orario, ore, stipendio
from impiegato
where nome = ‘Gianni Calvini’;
L’attributo Nome può non identificare la tupla univocamente; se nella L’attributo Nome può non identificare la tupla univocamente; se nella tabella esistono più impiegati con lo stesso nome, vengono estratti tutti tabella esistono più impiegati con lo stesso nome, vengono estratti tutti gli elementi rilevantigli elementi rilevanti
Esempio: AziendaEsempio: Azienda
Se l’interrogazione presuppone l’estrazione solo di alcuni attributi, può essere formulata come…
select id, nome, stipendio
from impiegato
where nome = ‘Gianni calvini’;
che estra solo il nome e lo stipendio dell’impiegato/i con il nome specificato
select nome, stipendio
from impiegato
where nome = ‘Gianni Calvini’;
I linguaggi di interrogazioneI linguaggi di interrogazione
I DBMS richiedono l’uso di linguaggi di interrogazionelinguaggi di interrogazione specialistici, che permettono all’utente o ad altri programmi applicativi di interrogare la base di dati per recuperare informazioni
Gli esempi visti sono scritti in SQLSQL — Structured Query Language Gestire una tabella relazionale non significa solo effettuare
interrogazioni Si deve essere in grado di aggiungere nuove tuple, cancellarle da
una tabella o modificare informazioni in una tupla esistente SQL realizza questi compiti per mezzo dei comandi insertinsert, deletedelete
e updateupdate Soprattutto per le basi di dati sul Web, sono spesso disponibili
maschere user–friendly (capaci anche di verificare la correttezza dell’informazione immessa) atte a nascondere i dettagli della interrogazione
I linguaggi di interrogazioneI linguaggi di interrogazione
Esempio 1Esempio 1
Esempio 2Esempio 2
select *from impiegato
ordered by id;
specifica che occorre considerare tutti i valori degli attributi per tutte le tuple nella tabella IMPIEGATO, ordinata per ID
select *from impiegato
where età > 21;
seleziona tutte le tuple degli impiegati con età superiore a 21 anni
Esempio: AziendaEsempio: Azienda
Sia data la tabella ASSICURAZIONE:
con chiave primaria composta, costituita dagli attributi (ID,TipoDiPiano); l’attributo ID è una chiave esterna della tabella IMPIEGATO: stabilisce la relazione che gli impiegati possono avere piani assicurativi
ID TipoDiPiano
DataDiEmissione
86 A4 02/23/78
123 B2 12/03/91
149 A1 06/11/85
71 A4 10/01/72
149 B2 04/23/90
Poiché ID è solo una Poiché ID è solo una parte della chiave parte della chiave primariaprimaria per per ASSICURAZIONE, un dato ASSICURAZIONE, un dato impiegato potrebbe impiegato potrebbe avere più di avere più di un piano un piano assicurativo (es., 149), o assicurativo (es., 149), o nessunonessuno
Esempio: AziendaEsempio: Azienda
Il DBMS può mettere in relazione informazioni tra varie tabelle attraverso i valori della chiave, ad es. tra la chiave esterna ID nella tabella ASSICURAZIONE e la chiave primaria ID nella tabella IMPIEGATO
descrive il piano assicurativo di Franco Toccasana, il cui risultato sarà:
Franco Toccasana A1Franco Toccasana A1Franco Toccasana B2Franco Toccasana B2
select impiegato.nome, assicurazione.tipodipiano
from impiegato, assicurazione
where impiegato.nome = ‘Franco Toccasana’ and
impiegato.id = assicurazione.id;
NoteNote
La corrispondenza tra chiavi primarie e chiavi esterne è ciò che crea le associazioni tra le varie entità in una base di dati
Il comando SQL per creare una tabella richiede le specifiche dei vari attributi, ovvero nome e tipo di dato, l’identificazione della chiave primaria, l’identificazione di ogni chiave esterna con indicazione esplicita delle tabelle per le quali costituisce chiave primaria
Questa informazione è pertinente per la costruzione del file che memorizza i dati delle tuple
Esempio: AziendaEsempio: Azienda
ID Nome
Età
Stipendio_orario
Ore
Stipendio
IMPIEGATO
TipoDiPiano Descrizione
CostoMensile
POLIZZA
ID (FK)TipoDiPiano (FK)DataDiEmissione
PK PK
PK
ASSICURAZIONEhaha
usata dausata da
PK: Primary KeyPK: Primary Key
FK: Foreign KeyFK: Foreign Key
EsempioEsempio: si possono effettuare interrogazio-ni per trovare il costo mensile dell’assicurazio-ne di Franco Toccasana
Le basi di dati distribuiteLe basi di dati distribuite
Le basi di dati distribuitebasi di dati distribuite permettono ai dati di risiedere in varie locazioni collegate in rete
L’utente del sito A pone alla base di dati un’interrogazione che richiede l’accesso a dati che possono essere fisicamente memorizzati nel sito B
Il sistema di gestione della base di dati e la rete sottostante realizzano i collegamenti e le associazioni necessarie: l’utente non dovrebbe percepire di lavorare in remoto; tuttavia… … … il tempo aumenta per accessi in reteil tempo aumenta per accessi in rete … … un guasto della rete o di qualche nodo possono rendere i dati un guasto della rete o di qualche nodo possono rendere i dati
non disponibili agli altri sitinon disponibili agli altri siti … … la sicurezza delle informazioni e la protezione da accessi la sicurezza delle informazioni e la protezione da accessi
indesiderati sono fondamentali ed hanno pesanti implicazioni indesiderati sono fondamentali ed hanno pesanti implicazioni sociali, etiche e legalisociali, etiche e legali
I sistemi ipermedialiI sistemi ipermediali
Un sistema ipermedialesistema ipermediale è una particolare forma di gestore di basi di dati
I dati, in un sistema ipermediale, sono raccolti in una varietà di forme: informazione sonora e visuale, immagini fotografiche, grafica, testo
Un’applicazione ipermediale permette all’utente di navigare fra le varie fonti di informazione, in modo non strutturato
I “collegamenti” utilizzati fra le fonti di informazione sono simili ai collegamenti tra tabelle relazionali in una base di dati