Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25...
Transcript of Introduzione Basi di Dati - CORSO TECNICO DI RETI · Introduzione basi di dati ... 276545 27 04 25...
Introduzione Basi di Dati
Orazio Battaglia
Introduzione basi di dati Ogni organizzazione è dotata di un sistema informativo che
organizza e gestisce le informazioni necessarie per perseguire gli scopi dell’organizzazione stessa
Per indicare la porzione automatizzata del sistema informativo viene di solito utilizzato il termine sistema informatico
Un sistema di gestione di basi di dati (DBMS, Data Base Management System) è un sistema software in grado di gestire collezioni di dati che siano grandi, condivise e persistenti, assicurando la loro affidabilità e privatezza. Come ogni prodotto informatico, un DBMS deve essere efficiente ed efficace. Una base di dati è una collezione di dati gestita da un DBMS
2 Tecnico di Reti Informatiche, modulo 2
Introduzione basi di dati
Un modello dei dati è un insieme di concetti utilizzati per organizzare i dati di interesse e descriverne la struttura in modo che essa risulti comprensibile ad un elaboratore.
Il modello attualmente più diffuso è quello relazionale.
Evoluzione storica dei modelli dei dati:
Modello gerarchico: basato su strutture ad albero e quindi gerarchiche, da cui il nome (limite: uso dei puntatori e mancanza dell’indipendenza dei dati)
Modello reticolare: basato sull’uso di grafi (limite: uso dei puntatori e mancanza dell’indipendenza dei dati)
Modello relazione: basato sul concetto di relazione (primo modello che realizza l’indipendenza dei dati)
Modello a oggetti: estende alle basi di dati il paradigma di programmazione ad oggetti
3 Tecnico di Reti Informatiche, modulo 2
Introduzione basi di dati
Il modello relazionale dei dati, attualmente il più
diffuso, permette di definire tipi per mezzo del
costruttore relazione, che consente di organizzare i
dati in insiemi di record a struttura fissa.
Una relazione viene rappresentata in genere come
una tabella le cui righe rappresentano specifici record
e le cui colonne corrispondono ai campi del record.
L’ordine delle righe e delle colonne è sostanzialmente
irrilevante.
4 Tecnico di Reti Informatiche, modulo 2
Introduzione basi di dati
Esempio di base di dati relazionale
5
Matricola Cognome Nome Data di
nascita
276545 Rossi Maria 25/11/1971
485745 Neri Anna 23/04/1972
200768 Verdi Fabio 12/02/1972
587614 Rossi Luca 10/10/1971
937653 Bruni Mario 01/12/1971
Studente Voto Corso
276545 28 01
276545 27 04
937653 25 01
200768 24 04
Codice Titolo Docente
01 Analisi Giani
03 Chimica Melli
04 Chimica Belli
STUDENTI
ESAMI
CORSI
Tecnico di Reti Informatiche, modulo 2
Introduzione basi di dati La base di dati nell’esempio mostra una delle caratteristiche fondamentali del modello relazionale, che viene spesso indicata dicendo che esso è «basato su valori»: i riferimenti fra dati in relazioni diverse sono rappresentati per mezzo di valori dei campi (domini) che compaiono nei record (tuple).
Negli altri modelli, gerarchico e reticolare, i riferimenti fra dati sono definiti in modo esplicito attraverso puntatori.
Il modello relazione presenta quindi due vantaggi rispetto agli altri modelli, gerarchico e reticolare:
1. La rappresentazione logica dei dati non fa alcun riferimento a quella fisica e così si ottiene l’indipendenza fisica dei dati
2. Essendo tutta l’informazione contenuta nei valori è relativamente semplice trasferire i dati da un contesto ad un altro. In presenza di puntatori l’operazione è più complessa poiché i puntatori hanno un significato locale al singolo sistema
6 Tecnico di Reti Informatiche, modulo 2
Introduzione basi di dati
Altro esempio base di dati (1/2).
Supponiamo di avere le ricevute e di doverle rappresentare in una base di dati.
7
«DA MARIO»
Ricevuta n. 1357
Del 5/5/92
3 Coperti 6000
2 Antipasti 12000
3 Primi 27000
2 Bistecche 36000
Totale 81000
«DA MARIO»
Ricevuta n. 2334
Del 4/7/92
2 Coperti 4000
1 Antipasti 6000
2 Primi 15000
2 Orate 50000
2 Caffè 3000
Totale 78000
Tecnico di Reti Informatiche, modulo 2
Introduzione basi di dati
Altro esempio base di dati (2/2).
Una rappresentazione può essere quella riportata.
8
Num Data Totale
1357 5/5/92 81000
2334 4/7/92 78000
Num Riga Q.Tà Descr. Importo
1357 1 3 Coperti 6000
1357 2 2 Antipasti 12000
1357 3 3 Primi 27000
1357 4 2 Bistecche 36000
2334 1 2 Coperti 4000
2334 2 1 Antipasti 6000
2334 3 2 Primi 15000
2334 4 2 Orate 50000
2334 5 2 Caffè 3000
RICEVUTE DETTAGLIO
Tecnico di Reti Informatiche, modulo 2
Introduzione basi di dati
9
Chiavi e vincoli di integrità referenziale
Una chiave è un insieme di attributi utilizzato per identificare univocamente le tuple di una relazione. Si può dimostrare che su ogni relazione si può definire almeno una chiave. Questo garantisce la accessibilità a tutti i valori di una base di dati e la loro univoca identificabilità. Inoltre permette di stabilire efficacemente le corrispondenze tra i dati contenuti nelle relazioni diverse che è proprio la caratteristica del modello relazione «basato su valori».
Un vincolo di integrità referenziale (foreign key) definito su un attributo di una tabella impone che il valore dell’attributo compaia come valore della chiave primaria in un’altra tabella.
Tecnico di Reti Informatiche, modulo 2
Introduzione basi di dati
10
Esempio di Chiavi e vincoli di integrità referenziale.
Codice Data Agente Articolo Prov Numero
143256 25-10-92 567 44 RM 4E5432
987554 26-10-92 456 34 RM 4E5432
987557 26-10-92 456 34 RM 2F7643
630876 15-10-92 456 53 MI 2F7643
539856 12-10-92 567 44 MI 2F7643
INFRAZIONI
Matricola CF Cognome Nome
567 RSSM... Rossi Mario
456 NREL... Neri Luigi
638 NREP... Neri Piero
AGENTI
Prov Numero Proprietari
o
Indirizzo
RM 2F7643 Verdi Piero Via Tigli
RM 1A2396 Verdi Piero Via Tigli
RM 4E5432 Bini Luca Via Aceri
MI 2F7643 Luci Gino Via Aceri
AUTO
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
11
SQL è l’acronimo di Structured Query Language.
SQL è un linguaggio standardizzato per l’interazione
con le basi di dati relazionali
SQL contiene al suo interno le funzionalità di
DDL (Data Definition Language): comandi per la
definizione dello schema di una base di dati
DML (Data Manipulation Language): comandi per la
modifica e l’interrogazione dell’istanza di una base di dati
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
12
Domini Elementari (1/2)
Si distinguono 5 tipi di dati (domini elementari):
Carattere. Il tipo carattere rappresenta un singolo carattere o una stringa. Può essere a lunghezza fissa o variabile e può limitarsi ad un determinato set di caratteri. character [varying] [(Lunghezza)] [character set NomeFamigliaCaratteri] La lunghezza indica la lunghezza della stringa. Se si usa il varying la lunghezza indica la lunghezza massima della stringa. Se omessa la lunghezza massima è quella definita nella configurazione del DBMS.
Tipi numerici esatti. Sono domini che permettono di rappresentare valori interi o decimali in virgola fissa. I tipi sono:
numeric [(precisione[, scala])]
decimal [(precisione[, scala])]
integer
smallint
Il tipo decimal differisce da numeric in quanto in base alle esigenze può scegliere una rappresentazione diversa che rispecchi di più la realtà. Sostanzialmente è più preciso. Gli ultimi 2 tipi sono interi e dipendono dalla macchina in uso. Per specificare la scala bisogna anche specificare la precisione ad esempio numeric(6,4) permette di rappresentare i valori compresi tra -99,9999 e +99,9999.
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
13
Domini Elementari (2/2)
Tipi numerici approssimati. Permettono di rappresentare valori in virgola mobile. A ciascun valore corrispondono una Mantissa e un Esponente. Es: 0,17E16 (= 1,7 x 1015). I valori sono:
float [(precisione)]
real
double precision
Nel dominio float può essere specificata la precisione della Mantissa. Il tipo double precision ha una rappresentazione doppia rispetto al tipo real.
Data e ora. I domini di questo tipo difficilmente riscontrabili nei linguaggi di programmazione sono:
date
time [(precisione)] [with time zone]
timestamp [(precisione)] [with time zone]
Date è formato dai campi year, month e day Time è formato dai campi hour, minute e second Timestamp è formato da tutti i campi precedenti Negli ultimi 2 se è presente l’opzione ‘with time zone’ vengono aggiunti 2 campi che sono rispettivamente ore e minuti dall’ora universale
Intervalli temporali. E’ un unico dominio che permette di rappresentare un intervallo di tempo:
interval PrimaUnitàTempo [ to UltimaUnitàTempo]
I parametri che possono essere usati sono dei 2 insiemi: da year a month
da day a second
Esempi: interval year(5) to month permette di rappresentare intervalli fino a 99.999 anni e 11 mesi
Interval day(4) to second(6) permette di rappresentare intervalli fino a 9.999 giorni, 23 ore, 59 minuti e 59,999999 secondi
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
14
Comandi SQL per la definizione dello schema.
La prima operazione da fare per la creazione di un database in un DBMS relazionale tramite SQL è la creazione dello schema del database.
Create schema [NomeSchema] [ [authorization] Autorizzazione]
{DefElementoSchema}
NomeSchema è il nome del database
Autorizzazione è l’utente proprietario del database, se omesso viene assegnato l’utente che sta eseguendo l’istruzione
DefElementoSchema rappresenta l’insieme delle istruzioni necessarie alla creazione degli elementi del database. Elementi del database sono:
Domini (tipi base dei dati)
Tabelle
Asserzioni (vincoli associati a nessuna tabella)
Viste
Privilegi
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
15
Comandi SQL per la definizione dello schema.
Le tabelle sono definite mediante l’istruzione:
create table NomeTabella
( NomeAttributo Dominio [ValoreDiDefault] [Vincoli],
……
……
AltriVincoli
)
Ad ogni attributo possono essere assegnati un valore di default e dei vincoli
AltriVincoli sono i vincoli che riguardano più attributi della tabella
ValoriDiDefault. Il valore di default predefinito è sempre NULL. Se ne possono stabilire altri. La sintassi è:
default GenericoValore | user | null
User e null sono prestabiliti e rappresentano rispettivamente il nome utente e il valore nullo. GenericoValore è quello stabilito dall’utente.
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
16
Comandi SQL per la definizione dello schema.
E’ possibile definire dei nuovi tipi di dati a partire da
quelli base in modo meno flessibile rispetto ai
linguaggi di programmazione tradizionali.
Create domain NomeDominio as TipoDiDato
[ValoreDiDefault]
[Vincolo]
La definizione dei domini è necessaria quando tipi
particolari di dati devono essere usati in più tabelle
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
17
Comandi SQL per la definizione dello schema.
Vincoli intrarelazionali
I vincoli intrarelazionali sono:
Not null: l’attributo non può assumere valore nullo.
Unique: l’attributo deve essere unico nella relazione
Primary Key: l’attributo è chiave primaria quindi unico
e non nullo
Il vincolo può essere specificato per singolo attributo o
per più attributi, in questo caso la sintassi è:
Vincolo (attributo1, attributo2, ..., attributoN)
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
18
Comandi SQL per la definizione dello schema.
Vincoli interrelazionali (1/2)
Il principale vincolo interrelazionale è il vincolo di integrità referenziale. Se riguarda un singolo attributo la sintassi è:
NomeAttributo Dominio [ValoreDiDefault] references Tabella(Attributo)
Se riguarda più attributi la sintassi è:
foreign key(attributo1, attributo2) references Tabella(attributo1,attributo2)
La tabella in cui definisco la foreign key è detta slave. La tabella in cui il valore della foreign key è la chiave è detta master.
Il vincolo non consente di inserire nella tabella slave delle tuple che non abbiano uno o più attributi corrispondenti nella tabella master.
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
19
Comandi SQL per la definizione dello schema.
Vincoli interrelazionali (2/2)
Alla modifica o cancellazione di tuple nella tabella master si può reagire in uno dei seguenti modi:
cascade: vengono modificate o cancellate tutte le tuple nella tabella slave;
set null: agli attributi della tabella slave che sono in relazione con altri attributi della tabella master viene assegnato il valore null
set default: agli attributi della tabella slave che sono in relazione con altri attributi della tabella master viene assegnato il valore di default
no action: non viene effettuata nessuna modifica
La sintassi è la seguente:
foreign key(Attributo1,Attributo2,...,AttributoN) references Tabella(Attributo1, Attributo2,..., AttributoN)
on delete set null
on update cascade
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
20
Comandi SQL per la modifica dello schema (1/2).
E’ possibile modificare ed eliminare elementi di un database (e il database stesso) mediante , rispettivamente , i seguenti comandi alter e drop.
Sintassi del comando alter:
alter domain NomeDominio < set default ValoreDefault |
drop default |
add constraint DefVincolo |
drop constraint NomeVincolo >
alter table NomeTabella <
alter column NomeAttributo <set default NuovoDefault |
drop default> |
add constraint DefVincolo |
drop constraint NomeVincolo |
add column DefAttributo |
drop column NomeAttributo >
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
21
Comandi SQL per la modifica dello schema (2/2).
Sintassi del comando drop:
drop < schema | domain | table | view | assertion>
NomeElemento [ restrict | cascade ]
L’opzione restrict elimina l’elemento solamente se è vuoto.
L’opzione cascade elimina l’elemento in ogni caso e in
modo ricorsivo cioè elimina pure gli elementi da esso
discendenti.
Quando non specificata l’opzione predefinita è restrict.
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
22
Interrogazioni in SQL
La sintassi dell’interrogazione è la seguente:
select AttrExpr1 [ [as] Alias1], AttrExprN [ [as] AliasN]
from Tabella1 [ [as] Alias1 ] , TabellaN [ [as] AliasN ]
[ where Condizione ]
E’ possibile definire degli alias per gli attributi e per le tabelle. I primi vengono usati come Attributi della tabella risultante dalla interrogazione.
Nelle condizioni è possibile usare i simboli =, <>, >, <, >=, <= e gli operatori and, or not. E’ possibile usare anche la clausola like che è un uguale con i caratteri jolly _ e %:
_ è l’equivalente del carattere jolly ? (cioè un carattere qualunque)
% è l’equivalente dell’* (cioè un numero qualunque di caratteri qualunque).
Il risultato di una interrogazione è un sottoinsieme del prodotto cartesiano delle tabelle che riguardano l’interrogazione. Gli insiemi sono le tabelle e gli elementi degli insiemi sono le tuple delle relazioni.
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
23
Interrogazioni in SQL, Join (1/2)
L’operazione di Join permette a partire da 2 tabelle di generarne una terza con tuple uguali alla combinazione di tuple della prima e tuple della seconda che hanno valori uguali in attributi con lo stesso nome.
Sintassi: select AttrExpr1[ [as] Alias1], AttrExpr2 [as] Alias2, ..., AttrExprN [as] AliasN
from Tabella [ [as] Alias ]
, TipoJoin join Tabella [ [as] Alias ] on CondizioneDiJoin
where AltraCondizione
Esistono 2 tipi di Join:
interno (inner)
esterno (outer)
Il join interno estrae un sottoinsieme del prodotto cartesiano fra le 2 tabelle di partenza che contiene solo le tuple che rispettano la condizione.
Nel join esterno invece oltre alle tuple che rispettano la condizione vengono estratte pure quelle che non hanno corrispondenti, inserendo nei valori mancanti il valore null.
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
24
Interrogazioni in SQL, Join (2/2)
In particolare il join esterno (outer) può essere:
left [outer] join
right [outer] join
full [outer] join
Il left include nella tabella risultante oltre alle tuple che soddisfano la condizione anche quelle che non la soddisfano della tabella di sinistra
Il right include nella tabella risultante oltre alle tuple che soddisfano la condizione anche quelle che non la soddisfano della tabella di destra
Il full include nella tabella risultante oltre alle tuple che soddisfano la condizione anche quelle che non la soddisfano di entrambe le tabelle
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
25
Ordinamento
La sintassi per ordinare il risultato di na interrogazione
è la seguente:
order by AttrDiOrdinamento1 [asc|desc],
AttrDiOrdinamento2 [asc|desc], ... ,
AttrDiOrdinamentoN [asc|desc]
L’ordinamento viene effettuato prima per il rpimo
campo poi per il secondo ecc.
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
26
Operatori Aggregati
Servono ad effettuare dei calcoli su più tuple. Si dividono, in base alla sintassi, in due gruppi e sono:
count
sum, max, min, avg
Sintassi:
count ( * | [distinct | all] ListaAttributi )
L’opzione * restituisce il numero di righe, distinct il numero di valori diversi non nulli degli attributi specificati e all il numero di valori non nulli degli attributi specificati.
sum | max | min | avg ( [distinct | all ] AttrEspr )
L’opzione distinct esegue l’operatore aggregato su valori non duplicati degli attributi, mentre all lo esegue su tutti i valori non nulli. Gli operatori hanno il seguente significato:
sum esegue la somma dei valori dell’ attributo
max calcola il valore massimo fra quelli dell’ attributo
min calcola il valore minimo fra quelli dell’ attributo
avg calcola la media dei valori dell’ attributo
Importante: quando si usano gli operatori aggregati nella select non è possibile includere degli attributi. Quindi una interrogazione del genere:
select Nome, max(Stipendio)
from Impiegato
è errata.
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
27
Interrogazioni con Raggruppamento
Gli operatori aggregati visti prima permettono di eseguire calcoli su tutte le tuple di una relazione o su un sottoinsieme di esse. Per effettuare calcoli su più sottoinsiemi di tuple di una relazione è necessario usare i raggruppamenti. Es:
select Dipart, sum(Stipendio)
from Impiegato
group by Dipart
questa interrogazione permette di estrarre la somma degli stipendi elargiti per ogni dipartimento. La tabella risultante contiene tante righe quanti sono i Dipartimenti in Impiegato e per ogni riga il dipartimento e la somma degli stipendi.
Importante: quando si usano i raggruppamenti nella select possono essere messi solo gli attributi che compaiono nel group by (non necessariamente tutti) e gli operatori aggregati.
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
28
Predicati sui gruppi
I predicati sui gruppi permettono di effettuare delle selezioni sui raggruppamenti. Ad es:
select Dipart, sum(Stipendio)
from Impiegato
group by Dipart
having sum(Stipendio) > 100
In questo modo viene generata una tabella che per ogni riga mostra i dipartimenti (dipartimento, stipendio) che hanno elargito stipendi per un importo maggiore di 100 (milioni).
Importante: possono essere argomento della clausola having solo gli operatori aggregati
Tecnico di Reti Informatiche, modulo 2
Introduzione al linguaggio SQL
29
Manipolazione dei dati in SQL
Inserimento di righe
La sintassi è la seguente:
insert into NomeTabella [ListaAttributi] values ListaDiValori | SelectSQL
Cancellazione di righe
La sintassi è la seguente:
delete from NomeTabella [where Condizione]
Modifica delle righe
La sintassi è la seguente:
Update NomeTabella
set Attributo1 = Espressione | SelectSQL | null | default
set Attributo2 = Espressione | SelectSQL | null | default
...
set AttributoN = Espressione | SelectSQL | null | default
[where Condizione]
Tecnico di Reti Informatiche, modulo 2
Introduzione progettazione basi di dati Ciclo di vita di un sistema informativo.
30
• Studio di fattibilità: serve a definire, in maniera per quanto possibile precisa, i costi delle varie alternative possibili e a stabilire le priorità di realizzazione delle varie componenti del sistema.
• Raccolta e analisi dei requisiti: consiste nella individuazione e nello studio delle proprietà e delle funzionalità che il sistema informativo dovrà avere. Questa fase richiede una interazione con gli utenti del sistema e produce una descrizione completa, ma generalmente informale, dei dati coinvolti e delle operazioni su di essi. Vengono inoltre stabiliti i requisiti hw e sw del sistema informativo.
• Progettazione: si divide generalmente in progettazione dei dati e progettazione delle applicazioni. Nella prima si individua la struttura e l’organizzazione che i dati dovranno avere, nella seconda si definiscono le caratteristiche dei programmi applicativi. Le descrizioni dei dati e delle applicazioni prodotte in questa fase sono formali e fanno riferimento a specifici modelli.
• Implementazione: consiste nella realizzazione del sistema informativo. Viene costruita e popolata la base di dati e viene prodotto il codice dei programmi.
• Validazione e collaudo: serve a verificare il corretto funzionamento e la qualità del sistema informativo. La sperimentazione dovrebbe prevedere tutte le condizioni operative.
• Funzionamento: In questa fase il sistema informativo diventa operativo ed esegue i compiti per i quali era stato originariamente progettato
Tecnico di Reti Informatiche, modulo 2
Introduzione progettazione basi di dati
Fase di progettazione. Progettazione dei dati.
Nel diagramma vengono mostrare le fasi della progettazione dei dati
della fase di progettazione del ciclo di vita del sistema informativo.
31
Progettazione Logica
Progettazione Concettuale
Progettazione Fisica
Schema
Concettuale
Schema Logico
Schema Fisico
Prodotto della progettazione
Tecnico di Reti Informatiche, modulo 2
Introduzione progettazione basi di dati Fase di progettazione. Progettazione dei dati.
Nella progettazione concettuale viene data una descrizione formale e completa della realtà di interesse senza tenere conto del modello logico della base di dati da usare né degli aspetti di implementazione pratica (uso di un determinato DBMS software). Il prodotto di questa fase è lo schema concettuale. La creazione dello schema concettuale viene fatta tramite il modello Entità-Relazione (che è quello che si è diffuso maggiormente per questo scopo).
Nella fase della progettazione logica il risultato del passo precedente viene adattato al tipo logico di DBMS a disposizione. In genere viene adattato al modello relazionale visto che è, al momento, il modello di DBMS più diffuso. Il prodotto di questa fase è lo schema logico. In questa fase viene inoltre eseguita una ottimizzazione dello schema logico. Lo strumento di ottimizzazione che si è maggiormente diffuso (nel modello relazionale dei DBMS) è la tecnica della normalizzazione.
Infine la fase della progettazione fisica prevede la implementazione dello schema logico risultante dal passo precedente su un determinato DBMS relazionale (quale Oracle, Microsoft SQL Server, ecc.). Il risultato è lo schema fisico.
32 Tecnico di Reti Informatiche, modulo 2
Introduzione progettazione basi di dati
Progettazione dei dati.
33 Tecnico di Reti Informatiche, modulo 2