1
Governo Digitalea.a. 2007/08
Lezioni 21/5
Titolare: Salvatore [email protected]://www.ce.uniroma2.it/people/tucci.html
Corso integrativo: Mariateresa [email protected]
Gli strumenti Tecnologici
• Basi di dati e sistemi documentali• Protocollo informatico Sistemi di workflow• Sicurezza & Privacy • Firma digitale – marche temporali • Carte multiservizi – certificati di firma e di cifra• Posta certificata• I sistemi web-based• Il ruolo dell’OSS• Metodologie di progettazione
2
Sistema Informativo
• Un Sistema Informativo (SI) è un insieme di persone, apparecchiature, applicazioni, procedure e dati che permettono all’azienda di disporre delle informazioni necessarie nel posto giusto e al momento giusto.
• Un SI non necessariamente fa ricorso a strumenti propri delle tecnologie dell’informazione e delle comunicazioni (ICT, Information andCommunication Technology). Il SI è, infatti, concettualmente indipendente da qualsiasi automatizzazione.
Informazioni e dati
informazione: notizia, dato o elemento che consentedi avere conoscenza più o meno esatta di fatti, situazioni, modi di essere.
dato: ciò che è immediatamente presente alla conoscenza, prima di ogni elaborazione; (in informatica: elementi di informazione costituitida simboli che debbono essere elaborati)
3
Dati e Informazioni
• Dati – fatti grezzi che descrivono un particolare fenomeno.
• Informazioni – dati che hanno un significato particolare in uno specifico contesto.
Esempio:• Dato: la temperatura dell' atmosfera• Informazione: se dovete decidere cosa indossare,
la temperatura esterna rappresenta un'informazione, poiché è pertinente alla decisione immediata (cosa indossare)
L’INFORMAZIONE• Le informazioni si distinguono dai dati gestiti da un
sistema informativo per le differenti finalità che vengono loro attribuite dai diversi utenti.
• Es: “l’80% dei prodotti venduti sono stati sviluppati da meno di 2 anni” – informa l’imprenditore che la sua impresa per poter
continuamente proporre prodotti innovativi, dovrà puntare su una competenza flessibile, evolutiva e orientata al mercato.
– informa il fornitore che ci sono stati repentini cambiamenti chepossono essere una minaccia alla sua posizione
4
Informazioni: una risorsa chiave
Informazione• dimensione temporale
– Tempestività: accesso alle informazioni solo quando è necessario ( una informazione può diventare obsoleta e in tal caso non essere più utile )
– disporre di informazioni che descrivono il periodo temporalepreso in considerazione.
• dimensione spaziale– Indipendenza dal luogo: consultare le informazioni desiderate
indipendentemente dal luogo in cui ci si trova
• formato:– formato, comprensibile e semplice da utilizzare (audio, testo,
video, animazione, grafica e altro),– accuratezza: le informazioni devono essere prive di errori.
5
Gestione delle informazioni
• Raccolta, acquisizione• Archiviazione, conservazione• Elaborazione, trasformazione, produzione• Distribuzione, comunicazione, scambio
• le informazioni vengono rappresentate in modo essenziale attraverso i dati
Base di dati
• Insieme organizzato di dati utilizzati per il supporto allo svolgimento delle attività di un ente (azienda/amministrazione, ufficio, persona)
• insieme di dati gestito da un DBMS
6
Sistema di gestione di basi di datiDataBase Management System (DBMS)
• Sistema che gestisce collezioni di dati:– grandi : dimensioni maggiori della memoria centrale dei sistemi
di calcolo utilizzati– persistenti : tempo di vita indipendente dalle singole esecuzioni
dei programmi che le utilizzano– condivise: Attivita' diverse su dati condivisi (concorrenza)
• garantendo– privacy: meccanismi di autorizzazione– affidabilità : resistenza a malfunzionamenti hardware e software– efficienza : utilizzare al meglio le risorse di spazio di memoria
(principale e secondaria) e tempo (di esecuzione e di risposta)– efficacia : offrendo funzionalità articolate, potenti e flessibili per
rendere produttive le attività dei loro utilizzatori,
Affidabilità e gestione delle transazioni
• Affidabilità :resistenza a malfunzionamenti hardware e software
• Tecnica fondamentale: – gestione delle transazioni
• Transazione: insieme di operazioni da considerare indivisibile ("atomico"), corretto anche in presenza di concorrenza e con effetti definitivi
7
Le transazioni sono … atomiche
• La sequenza di operazioni sulla base di dati viene eseguita per intero o per niente:– trasferimento di fondi da un conto A ad un conto B: o
si fanno il prelevamento da A e il versamento su B o nessuno dei due
Le transazioni sono … concorrenti
• L'effetto di transazioni concorrenti deve essere coerente (ad esempio "equivalente" all'esecuzione separata)– se due assegni emessi sullo stesso conto corrente
vengono incassati contemporaneamente si deve evitare di trascurarne uno
8
I risultati delle transazioni sono permanenti
• La conclusione positiva di una transazione corrisponde ad un impegno (in inglese commit) a mantenere traccia del risultato in modo definitivo, anche in presenza di guasti e di esecuzione concorrente
Organizzazione dei dati in database
• Permette di rendere i dati indipendenti dai singoli programmi che vi accedono e dal supporto fisico sul quale sono memorizzati, grazie alla netta separazione tra la strutturazione logica e la memorizzazione fisica
9
Organizzazione dei dati orientato ai file
• Fino all’avvento dei linguaggi di programmazione di terza generazione gli archivi di una qualsiasi procedura informatica erano costituiti da insiemi di file sequenziali in cui l’organizzazione fisica dei dati ricalcava in modo molto rigoroso quella logica
• La struttura dei file fisici era strettamente correlata al tipo di problema che la procedura automatizzata intendeva risolvere e possedeva una ridotta flessibilità nei confronti di nuove applicazioni
Organizzazione dei dati orientato ai file: svantaggi
• ridondanza indesiderata: gli stessi dati sono ripetuti più volte in più archivi;
• aggiornamento dei dati: ogni volta che un record in un archivio viene aggiornato, è necessario apportare coerentemente la stessa modifica in tutti gli altri archivi che lo contengono. In caso contrario si rischia di generare dati inconsistenti, vale a dire contradditori dal punto di vista logico;
• dipendenza dei dati dai processi: ogni procedura automatizzata “vede” i dati in una precisa forma che può essere diversa rispetto a quella adottata in altre applicazioni.
10
L’indipendenza dal supporto fisico
• Uno degli obiettivi principali dell’organizzazione dei dati, è la creazione di una struttura che renda indipendente il livello logico da quello fisico. In modo che le modifiche alla struttura logica non comportino cambiamenti nelle modalità di accesso e di memorizzazione e viceversa
• organizzazione logica: la strutturazione sistematica e logica dei dati e delle loro relazioni;
• organizzazione fisica: la memorizzazione fisica di determinate strutture di dati su supporti di memoria di massa
Organizzazione dei dati
11
Architettura standard (ANSI/SPARC)a tre livelli per DBMS
BD
Schema logico
Schemaesterno
Schema fisico
Schemaesterno
Schemaesterno
utenteutente utente utente utente
Una vista
Corso AulaDocenteRossiBasi di dati DS3
BruniReti N3NeriSistemi N3
BruniControlli G
Corsi
Nome PianoEdificioOMIDS1 Terra
PincherleG PrimoOMIN3 Terra
Aule
CorsiSedi Corso Aula
Reti N3Sistemi N3
Controlli G
PianoEdificioOMI Terra
Pincherle PrimoOMI Terra
12
Indipendenza logica
• il livello esterno è indipendente da quello logico
• aggiunte o modifiche alle viste non richiedono modifiche al livello logico
• modifiche allo schema logico che lascino inalterato lo schema esterno sono trasparenti
Modello concettuale
• È un insieme di regole atte a costruire uno schema di rappresentazione della realtà di interesse in modo indipendente dalla tecnologia informatica utilizzata.
• Lo schema concettuale fornisce una descrizione dei tipi delle informazioni e delle corrispondenze che costituiscono il database, in modo indipendente dal modello di dati.
13
Modello logico
• È un modello per la costruzione degli schemi attraverso i quali il singolo utente “vede” i dati
• Al livello logico si ha una descrizione dei dati e dei loro rapporti secondo il punto di osservazione dell’utente
• Il linguaggio di manipolazione dati viene utilizzato per creare connessioni tra il sistema di database, gli utenti e le applicazioni impiegate
Modello fisico
• Il modello fisico comprende una descrizione formale, detta anche modello o schema fisico, di come devono essere archiviati i dati e delle modalità con cui sarà possibile accedervi.
• L’implementazione informatica della struttura dei dati con l’aiuto del linguaggio di descrizione per la memorizzazione dei dati (data storage description language).
• Le regole di trasformazione stabiliscono le modalità con cui un determinato oggetto appartenente a un modello può essere rappresentato attraverso uno o più oggetti di un modello di livello inferiore
14
Modelli logici• Gerarchico e reticolare
– utilizzano riferimenti espliciti (puntatori) fra record
• Relazionale "è basato su valori"– anche i riferimenti fra dati in strutture (relazioni)
diverse sono rappresentati per mezzo dei valori stessi
• Ad oggetti– Una base di dati a oggetti è una collezione di
oggetti; ciascun oggetto ha un identificatore, uno stato, e un comportamento
Linguaggi per le basi di dati
• Linguaggio di Definizione dei Dati (DDLDDLData Definition Language )– Per la definizione di schemi (logici, esterni, fisici)
e altre operazioni generali• Linguaggio per la Manipolazione dei Dati
(DMLDML Data Manipulation Language )– Per l’interrogazione e l’aggiornamento di (istanze
di) basi di dati
15
Linguaggi per le basi di dati
• Linguaggio per il controllo dei Dati (DCLDCLData Control Language )– Per definire i diritti di accesso ai dati, i profili
degli utenti che accedono alla base di dati• Linguaggio di descrizione per la
memorizzazione dei dati (DSDLDSDL Data Storage Description Language).
SQL
•• SQLSQL è un acronimo per Structured Query Language. Fu sviluppato originalmente come linguaggio per il DBMS System R dall’IBM Research Laboratory (San Jose, California) nei tardi anni settanta.
• oggi è ormai considerato uno standard per i database relazionali.
16
SQL• L’ANSI (American National Standards Institute) e
l’ISO (International Standardization Organization) hanno provveduto a definire una versione di riferimento di SQL fin dal 1986. Da allora vi sono le seguenti versioni:
• SQL-89 (1989): obsoleta con funzionalità minimali• SQL-2 (1992): versione di riferimento per i sistemi
commerciali• SQL-3 (1999): include nuove caratteristiche • SQL permette di interagire con un database relazionale
in modo indipendente dalle particolarità dell’interfaccia di quest’ultimo
SQL
17
Personaggi e interpreti • progettisti e realizzatori di DBMS• progettisti della base di dati e amministratori della base di
dati– DBA: Persona o gruppo di persone responsabile del controllo
centralizzato e della gestione del sistema, delle prestazioni, dell’affidabilità, delle autorizzazioni (anche progettazione)
• progettisti e programmatori di applicazioni• utenti
– utenti finali (terminalisti): eseguono applicazioni predefinite(transazioni)
– utenti casuali: eseguono operazioni non previste a priori, usando linguaggi interattivi
Proprietà dei DBMS
• Indipendenza logica e fisica dei dati• Ridondanza dei dati pianificata e controllata• Consistenza dei dati• Integrità semantica e operazionale del
database (esattezza e completezza dei dati)• Sicurezza dei dati
18
Progettazione del Data Base
Progettazioneconcettuale
Progettazione logica
RequisitiRequisiti
Diagramma E/RDiagramma E/R
Modello relazionaleModello relazionaleRealizzazione Realizzazione nel DBMSnel DBMS
Implementazione
19
•• Schema concettualeSchema concettuale: risultato della fase di analisi della realtà da rappresentare (diagramma Entità/Relazione)
• È indipendente dalla Base dati utilizzata•• Schema logicoSchema logico: insieme di informazioni così come
sono viste dall’utente• È dipendente dal modello logico della base dati che si
vuole utilizzare (modello relazionale)•• Realizzazione della base dati: Realizzazione della base dati: attività per la creazione
della base dati nel DBMS utilizzato• Occorre utilizzare linguaggi del DBMS con l’eventuale
ausilio di strumenti visuali
I prodotti della varie fasi
Analisi dei requisiti
• Comprende attività (interconnesse) di– acquisizione dei requisiti– analisi dei requisiti– costruzione del glossario
20
Fonti di Requisiti• Possibili fonti:
–– utentiutenti, attraverso:• interviste• documentazione apposita
–– documentazione esistentedocumentazione esistente:• normative (leggi, regolamenti di settore)• regolamenti interni, procedure aziendali• realizzazioni preesistenti
–– modulisticamodulistica
Acquisizione per interviste
– utenti diversi possono fornire informazioni diverse
– utenti a livello più alto hanno spesso una visione più ampia ma meno dettagliata
– le interviste portano spesso ad una acquisizione dei requisiti “per raffinamenti successivi”
21
Interazione con gli utenti
• Spunti:– effettuare spesso verifiche di comprensione
e coerenza– verificare anche per mezzo di esempi
(generali e relativi a casi limite)– richiedere definizioni e classificazioni – far evidenziare gli aspetti essenziali rispetto
a quelli marginali
Progettazioneconcettuale
Progettazione logica
RequisitiRequisiti
Diagramma E/RDiagramma E/R
Modello relazionaleModello relazionaleRealizzazione Realizzazione nel DBMSnel DBMS
Implementazione
22
Modello concettuale dei dati
Modello EntitàModello Entità--RelazioniRelazioni
Il modello Entità-Relazioni: le entità• Entità “una qualsiasi cosa che può essere distintamente
identificata” e che abbia rilevanza per il sistema considerato. Fatti, persone, cose della applicazione di interesse con proprietà comuni e con esistenza “autonoma”– impiegato, città, conto corrente, ordine, fattura
• Gli Attributi sono le proprietà delle entità. I valori che possono assumere servono a descrivere le singole entità es nome, cognome
• Occorrenza (o istanza) è un elemento dell’entità– Mario Rossi
• Attributi Identificatori: attributi che permettono di identificare in modo univoco una occorrenza
23
Rappresentazione grafica entità
Persona
Data Nascita
Cognome
Nome
Automobile
Targa
Modello
Indirizzo
Il modello Entità-Relazioni:le relazioni
• Relazione: legame logico fra due o più entità, rilevante nell’applicazione di interesse
• Ogni relazione ha un nome che la identifica univocamente nello schema:
– nomi espressivi
– opportune convenzioni
• singolare
• sostantivi invece che verbi (se possibile)
24
Il modello Entità-Relazioni:le relazioni
• Cardinalità: specifica il numero massimo di occorrenze delle relazioni cui ciascuna occorrenza di una entità può partecipare
CardinalitàDire che tra le entità A e B esiste una relazione R con
cardinalità
1:1 indica che ad ogni istanza di A corrisponde 0 o 1 istanza di B e viceversa
1:n indica che ad ogni istanza di A possono corrispondere più istanze di B ed ad ogni istanza di B può corrispondere al più una istanza di A
n:m ad ogni istanza di A possono corrispondere più istanze di B
e viceversa
25
Esempi di occorrenze
C1
C2
C4
C3
Cliente
O1
O2
O3
Ordine
O4
Ad ogni istanza di cliente corrispondono n istanze di ordini
Esempio ER
26
Terminologia e notazioni• La terminologia e le notazioni del diagramma ER non sono standard• Entità (istanza entità), tipo di entità (entità), tipo di relazione
(relazione), relazione (istanza di relazione)
• Notazione cardinalità
1ordineimpartiscecliente
n
(1,1)ordineimpartiscecliente
(0,n)
C1
C2
C4
C3
Cliente
O1
O2
O3
OrdineO4
1:n indica che ad ogni istanza di cliente possono corrispondere più istanze di ordini ed ad ogni istanza di Ordine può corrispondere al più una istanza di Cliente
Terminologia e notazionin
ordineimpartiscecliente1
(0,n)ordineimpartiscecliente
(1,1)
C1
C2
C4
C3
Cliente
O1
O2
O3
OrdineO4
La cardinalità indica quante volte in una relazione un’occorrenza dell’entità cliente può essere legata a occorrenze dell’entità ordiniIl cliente può fare (è legato a) n ordiniUn ordine è di un solo cliente
Quindi in tal caso il numero accanto alla entità indica il numero di istanze partecipanti alla relazione
27
Esercizio Cardinalità
viaggioprenotacliente
scaffaleripostolibro
Carta diidentitàpossiedecittadino
mn
11
1n
pezzocompostopuzzlen1
Progettazioneconcettuale
RequisitiRequisiti
Diagramma E/RDiagramma E/R
28
EsercizioRappresentare le seguenti realtà con il modello E-R:• Uno studente è iscritto ad un corso di laurea e
deve sostenere la tesi con un relatore• Un professore può avere più tesisti ed afferisce
ad un dipartimento dell’università
Disegnare solo le entità le relazioni e le cardinalitàsenza attributi
n1studentetesiProfessore
iscrizione
Corso dilaurea
n
1
afferenza
Dipartimento
n
1
29
EsercizioRappresentare le seguenti realtà con il modello E-R:• Un’azienda di noleggio auto ha un insieme di
veicoli. Ogni auto ha un numero di registrazione, un colore e appartiene ad una certa categoria. Ogni categoria è associata ad una tariffa di noleggio identificata da un codice ed avente un determinato costo
1categoriaprezzotariffa
appartenenza
auto
Codice
Nome
NumeroRegistrazione
1
n
Colore
Costo
1
30
Modello logico dei dati
Modello RelazionaleModello Relazionale
Modello relazionale• Proposto da E. F. Codd nel 1970 per favorire
l’indipendenza dei dati • Disponibile in DBMS reali nel 1981 (difficoltà ad
implementare l’indipendenza con efficienza e affidabilità)
IL MODELLO:• I dati sono rappresentati tramite tabelle, chiamate
relazioni (da non confondere con le “relazioni” del modello E/R)
• Ogni relazione è definita dalle colonne (campi) e da una serie di righe (record)
31
Modello relazionale
• L’ordine dei record e dei campi non è importante
• Ogni record ha lo stesso numero di informazioni
• Non possono esistere record identici
• Per ogni tabella deve esistere una chiave primaria: insieme di campi che identificano le ennuple di una relazione
Tabelle e relazioni
• Una tabella rappresenta una relazione se– i valori di ogni colonna sono fra loro omogenei – le righe sono diverse fra loro– le intestazioni delle colonne sono diverse tra loro
• In una tabella che rappresenta una relazione– l’ordinamento tra le righe è irrilevante– l’ordinamento tra le colonne è irrilevante
32
Schema e istanza
• In ogni base di dati esistono:– lo schema, sostanzialmente invariante nel tempo, che
ne descrive la struttura• es.: le intestazioni delle tabelle
– l’istanza, i valori attuali, che possono cambiare anche molto rapidamente
• es.: il “corpo” di ciascuna tabella
L'istanza della base di dati
Analisi matem. I Luigi Neri N1 8:00
Basi di dati Piero Rossi N2 9:45
Chimica Nicola Mori N1 9:45
Fisica I Mario Bruni N1 11:45
Fisica II Mario Bruni N3 9:45
Sistemi inform. Piero Rossi N3 8:00
Basi di dati: schema e istanzaLo schema della base di dati
OrarioInsegnamento Docente Aula Ora
33
Modello ER e modello Relazionale• Il modello ER usa 2 costrutti diversi entità e
relazioni• Il modello relazionale usa un solo costrutto la
relazione• Le relazioni nel modello ER sono espresse nel
modello relazionale tramite l’uguaglianza dei valori di attributi corrispondenti a 2 relazioni(tabelle) diverse
Matricola Cognome Nome Data di nascita6554 Rossi Mario 05/12/19788765 Neri Paolo 03/11/1976
3456 Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979
studenti
Codice Titolo Docente01 Analisi Mario02 Chimica Bruni04 Chimica Verdi
corsi
Studente Voto Corso3456 30 043456 24 029283 28 01
esami
6554 26 01
34
Importanza delle chiavi• L’esistenza delle chiavi garantisce l’accessibilità a
ciascun dato della base di dati• Una relazione non può contenere ennuple distinte ma
uguali (le chiavi devono assumere valori distinti)• Le chiavi permettono di correlare i dati in relazioni
diverse (il modello relazionale è basato su valori)
• In presenza di valori nulli, i valori della chiave non permettono– di identificare le ennuple – di realizzare facilmente i riferimenti da altre relazioni
Chiavi esterne
• Si dice che un campo Fk di una relazione R è una chiave esterna rispetto ad un’altra relazione S, con riferimento ad una sua chiave, se , in qualunque stato del DB e per ogni tupla di R, il valore di Fk, a meno di non essere null, coincide con il valore della chiave di qualche tupla di S
• Si dice che la relazione S è riferita o referenziata dalla relazione R tramite la chiave esterna Fk
35
Matricola Cognome Nome Data di nascita6554 Rossi Mario 05/12/19788765 Neri Paolo 03/11/1976
3456 Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979
studenti
Codice Titolo Docente01 Analisi Mario02 Chimica Bruni04 Chimica Verdi
corsi
Studente Voto Corso3456 30 043456 24 029283 28 01
esami
6554 26 01
Chiave esterna rispetto la relazione studenti
Chiave esterna rispetto la relazione corsi
• Un vincolo di integrità referenziale(“foreign key”) fra gli attributi X di una relazione R1 e un’altra relazione R2 impone ai valori su X in R1di comparire come valori della chiave primaria di R2
Integrità referenziale:• informazioni in relazioni diverse sono correlate
attraverso valori comuni• in particolare, valori delle chiavi (primarie)• le correlazioni debbono essere coerenti
Vincolo di integrità referenziale
36
Vincoli di integrità referenziale
È opportuno fissare 2 vincoli sulle chiavi esterne:
• Non è possibile inserire una chiave esterna di un record di una tabella se non esiste il relativo valore tra i record della tabella correlata
• Non è possibile cancellare un record di una tabella se esistono in altre tabelle chiavi esterne che fanno riferimento e tale record
Matricola Cognome Nome Data di nascita6554 Rossi Mario 05/12/19788765 Neri Paolo 03/11/1976
3456 Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979
studenti
Codice Titolo Docente01 Analisi Mario02 Chimica Bruni04 Chimica Verdi
corsi
Studente Voto Corso3456 30 043456 24 029283 28 01
esami
6554 26 01
Chiave esterna rispetto la relazione studenti
Chiave esterna rispetto la relazione corsi
37
Azioni compensative
• Esempio:– Viene eliminata una ennupla causando una violazione
• Comportamento “standard”:– Rifiuto dell'operazione
• Azioni compensative:– Eliminazione in cascata– Introduzione di valori nulli
Vincoli semantici
• Vincoli che pongono restrizioni sui possibili valori che gli attributi possono assumere nell’ambito del tipo di dati specifico del loro dominio
• Esempio: – Il voto è un numero compreso tra 18 e 30– Matricola è di tipo alfanumerico con il vincolo di non
utilizzare caratteri speciali e di iniziare cono 2 lettere
38
Progettazione logica
Progettazioneconcettuale
RequisitiRequisiti
Diagramma E/RDiagramma E/R
Modello relazionaleModello relazionale
Diagramma E/R Modello relazionale•• EntitàEntità TabelleTabelle•• AttributiAttributi Colonne tabelle (campicampi)•• DominioDominio: insieme di valori che il campo può assumere
– Fisico: tipo di dato che può essere accolto in un campo (nome= testo di 40 caratteri)
– Logico: insieme di informazioni associabili a quel campo (20052 è un CAP valido se di 5 cifre e cap esistente)
•• OccorrenzeOccorrenze Record Record (tuple): righe della tabella•• IdentificatoriIdentificatori Chiavi primarieChiavi primarie: insiemi di campi il
cui valore identifica univocamente il record– No valori ripetuti– No valori nulli
39
Diagramma E/R Modello relazionale•• Relazioni Relazioni (E/R) Tabelle + chiavi esterneTabelle + chiavi esterne
•• Relazioni 1 a 1Relazioni 1 a 1: si inserisce tra i campi di una entità la chiave primaria dell’entità ad essa collegata e viceversa
•• Relazioni 1 a nRelazioni 1 a n: si inserisce nella tabella relativa all’entità della parte molti il campo chiave primaria della tabella relativa all’entità della parte 1
•• Relazioni n a mRelazioni n a m: si divide la relazione in 2 relazioni più semplici di tipo 1 a n introducendo una entità associativa
Esempio relazione 1 a 1
StudenteStudente
TesseraTessera
40
Diagramma E/R Modello relazionale•• Relazioni Relazioni (E/R) Tabelle + chiavi esterneTabelle + chiavi esterne
•• Relazioni 1 a 1Relazioni 1 a 1: si inserisce tra i campi di una entità la chiave primaria dell’entità ad essa collegata e viceversa
•• Relazioni 1 a nRelazioni 1 a n: si inserisce nella tabella relativa all’entità della parte molti il campo chiave primaria della tabella relativa all’entità della parte 1
•• Relazioni n a mRelazioni n a m: si divide la relazione in 2 relazioni più semplici di tipo 1 a n introducendo una entità associativa
Esempio relazione 1 a n
StudenteStudente
ProfessoreProfessore
41
Diagramma E/R Modello relazionale•• Relazioni Relazioni (E/R) Tabelle + chiavi esterneTabelle + chiavi esterne
•• Relazioni 1 a 1Relazioni 1 a 1: si inserisce tra i campi di una entità la chiave primaria dell’entità ad essa collegata e viceversa
•• Relazioni 1 a nRelazioni 1 a n: si inserisce nella tabella relativa all’entità della parte molti il campo chiave primaria della tabella relativa all’entità della parte 1
•• Relazioni n a mRelazioni n a m: si divide la relazione in 2 relazioni più semplici di tipo 1 a n introducendo una entità associativa
Esempio relazione n a m
42
Esempio relazione n a m
Esempio relazione n a m
PasseggeriPasseggeri
VoliVoli
PrenotazionePrenotazione
43
Matricola Cognome Nome Data di nascita6554 Rossi Mario 05/12/19788765 Neri Paolo 03/11/1976
3456 Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979
studenti
Codice Titolo Docente01 Analisi Mario02 Chimica Bruni04 Chimica Verdi
corsi
Studente Voto Corso3456 30 043456 24 029283 28 01
esami
6554 26 01
Matricola Cognome Nome Data di nascita6554 Rossi Mario 05/12/19788765 Neri Paolo 03/11/1976
3456 Rossi Maria 01/02/19789283 Verdi Luisa 12/11/1979
studenti
Codice Titolo Docente01 Analisi Mario02 Chimica Bruni04 Chimica Verdi
corsi
Studente Voto Corso302428
esami
26
44
Esercizio
Cognome
Giocatore SquadraContratto
Datanascita Città NomeIngaggio
n 1
Ruolo Colori sociali
Relationship uno a molti
Giocatore(Cognome, DataNascita, Ruolo, Squadra, Ingaggio)Squadra(Nome, Città, ColoriSociali)
• con vincolo di integrità referenziale fra Squadra in Giocatoree la chiave di Squadra
• se la cardinalità minima della relationship è 0, allora Squadra in Giocatore deve ammettere valore nullo
45
Impiegato(Matricola, Cognome, Stipendio)
Progetto(Codice, Nome, Budget)
Partecipazione(Matricola, Codice, DataInizio)
Partecipazione
n m
Cognome
Stipendio
Matricola
Impiegato
NomeCodice
Budget
Progetto
Data inizio
Entità e relationship molti a molti
Entità e Relazioni molti a moltiImpiegato(Matricola, Cognome, Stipendio)
Progetto(Codice, Nome, Budget)Partecipazione(Matricola, Codice, DataInizio)
• con vincoli di integrità referenziale fra – Matricola in Partecipazione e (la chiave di)
Impiegato – Codice in Partecipazione e (la chiave di) Progetto
46
Nomi più espressivi per gli attributi della chiave della relazione che
rappresenta la relationship
Impiegato(Matricola, Cognome, Stipendio)
Progetto(Codice, Nome, Budget)
Partecipazione(Matricola, Codice, DataInizio)
Partecipazione(Impiegato, Progetto, DataInizio)
Composizione
ProdottoComposto Componente
Costo Nome Codice
(0,N) (0,N)
Prodotto(Codice, Nome, Costo)
Composizione(Composto, Componente, Quantità)
Relationship ricorsiveQuantità
47
Nome
Fornitore Prodotto
Dipartimento
Fornitura
Partita IVA Genere CodiceQuantità
Nome
Telefono
(0,N) (1,N)
(1,N)
Relationship n-arie
Fornitore(PartitaIVA, Nome)Prodotto(Codice, Genere)
Dipartimento(Nome, Telefono)Fornitura(Fornitore, Prodotto, Dipartimento, Quantità)
Un buon progetto•• Definire il diagramma E/RDefinire il diagramma E/R
– Definire le entità del modello E/R– Definire gli attributi delle singole entità– Determinare le relazioni tra entità nel modello E/R
•• Definire il modello relazionaleDefinire il modello relazionale– Convertire le entità e gli attributi in tabelle e campi– Definire le chiavi primarie– Convertire le relazioni del modello E/R (i campi di
collegamento)
•• Definire i vincoliDefinire i vincoli di integrità referenziale e i vincoli semantici
• Valutare lo schema relazionale realizzato
48
Anomalie e normalizzazione
Un buon progetto
• I passi visti per la progettazione permettono di costruire lo schema logico di un data base (modello relazionale) consistente:– riducendo la ridondanza dei dati – Assenza di anomalie
• Cancellazione• Inserimento• Aggiornamento
49
Anomalie
•• Anomalia di cancellazioneAnomalia di cancellazione: comporta la perdita non voluta di dati
•• Anomalia di inserimentoAnomalia di inserimento: comporta la presenza di record non coerenti
•• Anomalia di aggiornamentoAnomalia di aggiornamento: comporta la ripetizione delle operazioni di aggiornamento a causa della ridondanza dei dati o la presenza di incoerenze qualora l’aggiornamento non viene fatto per tutti i record interessati dall’aggiornamento
Esempio ridondanza dei dati
Ogni volta che uno studente sostiene un esame vengono ripetuti i dati relativi (Matricola cognome nome indirizzo)
50
Anomalia di cancellazione
i dati dell’esame di economia sono presenti solo in tale record lacancellazione implica la perdita di informazione sull’esame
Anomalia di aggiornamento
Se il nome dell’esame di Inglese2 diventa Inglese finaleOccorre modificare tutti i record in cui compare Inglese2
51
Anomalia di inserimento
Per inserire un nuovo corso occorre inserire i dati di un esame
Esempio dipendenza funzionale
Anomalia di inserimento e di aggiornamento:Persona( Cognome, Nome, DataNascita, Onomastico)
Rossi, Giuseppe, 3/7/83, 2 aprile
• Errore: S.Giuseppe è il 19 marzoPersona( Cognome, Nome, DataNascita, CittàNascita,
Regione)Rossi Giuseppe 3/7/83 Roma LazioMolla Alberto 23/8/77 Roma Campania
• Errore Roma non è in Campania
52
Dipendenza Funzionale
Data una relazione R e due suoi campi X e Y si dice che Y dipende funzionalmente da X se i valori di X determinano univocamente i valori di Y
EsempioPersona( Cognome, Nome, DataNascita, Onomastico)
Dipendenza funzionale tra Nome ed OnomasticoPersona( Cognome, Nome, DataNascita,
CittàNascita, Regione)Dipendenza funzionale tra CittàNascita e Regione
Normalizzazione
• Processo suddiviso in fasi denominate forme normali con l’obbiettivo di ottimizzare la struttura della Base Dati ottenendo:– Modello dei dati consistente– Eliminazione delle anomalie di cancellazione,
inserimento, aggiornamento– Riduzione della ridondanza
53
Normalizzazione
Prima forma normale Occorre eliminare i gruppi di dati ripetitivi.
I passi da seguire:
1. Individuare gli attributi che si ripetono per valore in record differenti all’interno della stessa tabella
2. Creare una tabella con i campi non ripetitivi3. Creare una tabella usando gli attributi che si
ripetono + il campo di collegamento con la prima tabella (chiave esterna)
54
NormalizzazioneSeconda forma normale: Occorre verificare che i
campi non chiave primaria dipendono dall’intera chiave primaria e non da parte di essa
1. Identificare dipendenze parziali2. Creare una tabella usando i campi collegati in
modo parziale3. Creare una tabella togliendo dalla tabella di
partenza i campi che dipendevano in modo parziale
55
NormalizzazioneTerza forma normale Occorre verificare che i campi
non chiave primaria dipendono direttamente dalla chiave primaria e non da qualche altro campo all’interno della tabella
1. Identificare le dipendenze transitive2. Creare una tabella usando i campi in dipendenza
transitiva3. Creare una tabella con i campi rimanentiIterare i passi fino ad eliminare tutte le dipendenze
transitive
56
Implementazione DB SQL
57
Linguaggi per le basi di dati
• Linguaggi di Definizione dei Dati (DDL DDL Data Definition Language )– Per la definizione di schemi (logici, esterni, fisici) e altre
operazioni generali
• Linguaggi per la Manipolazione dei Dati (DML DML Data Manipulation Language )– Per l’interrogazione e l’aggiornamento di (istanze di) basi di dati
• Linguaggi per il controllo dei Dati (DCL DCL Data Control Language )– Per definire i diritti di accesso ai dati, i profili degli utenti che
accedono alla base di dati
SQL
– Linguaggio testuale interattivo
58
Linguaggi per basi di dati
• Un altro contributo all’efficacia: disponibilità di vari linguaggi e interfacce
linguaggi testuali interattivi (SQL)comandi (SQL) immersi in un linguaggio ospite(Pascal, Java, C ...) comandi (SQL) immersi in un linguaggio ad hoc, con anche altre funzionalità (p.es. per grafici o stampe strutturate) con interfacce amichevoli (senza linguaggio testuale)
SQL, un linguaggio interattivo
• "Trovare i corsi tenuti in aule a piano terra"
Nome PianoEdificioOMIDS1 Terra
PincherleG PrimoOMIN3 Terra
Aule
RossiBasi di dati DS3
BruniReti N3NeriSistemi N3
BruniControlli G
CorsiAulaDocenteCorso
59
SQL, un linguaggio interattivo
SELECT Corso, Aula, PianoFROM Aule, CorsiWHERE Nome = AulaAND Piano = "Terra"
Corso Aula
Reti N3Sistemi N3
PianoTerraTerra
SQL immerso in linguaggio ospitewrite('nome della citta''?'); readln(citta); EXEC SQL DECLARE P CURSOR FOR
SELECT NOME, REDDITOFROM PERSONEWHERE CITTA = :citta ;
EXEC SQL OPEN P ; EXEC SQL FETCH P INTO :nome, :reddito ; while SQLCODE = 0 do begin
write('nome della persona:', nome, 'aumento?');readln(aumento);EXEC SQL UPDATE PERSONE
SET REDDITO = REDDITO + :aumentoWHERE CURRENT OF P
EXEC SQL FETCH P INTO :nome, :redditoend;
EXEC SQL CLOSE CURSOR P
60
SQL in linguaggio ad hoc (Oracle PL/SQL)
declare Stip number;begin
select Stipendio into Stip from Impiegatowhere Matricola = '575488' for update of Stipendio;if Stip > 30 then
update Impiegato set Stipendio = Stipendio * 1.1 where Matricola = '575488';
elseupdate Impiegato set Stipendio = Stipendio * 1.15
where Matricola = '575488';end if;commit;
exceptionwhen no_data_found theninsert into Errori values('Matricola inesistente',sysdate);
end;
Interazione non testuale (Access)
61
SQL come DDL
Definizione dello schema
CREATE TABLE, esempio
CREATE TABLE Studente(Matricola CHAR(6) PRIMARY KEY, Nome CHAR(20) NOT NULL, Cognome CHAR(20) NOT NULL,
)
62
Domini elementari
• Carattere: singoli caratteri o stringhe, anche di lunghezza variabile
• Bit: singoli booleani o stringhe• Numerici, esatti e approssimati• Data, ora, intervalli di tempo• Introdotti in SQL:1999:
– Boolean– BLOB, CLOB (binary/character large object): per
grandi immagini e testi
Definizione di domini
• Istruzione CREATE DOMAIN: – definisce un dominio (semplice), utilizzabile in
definizioni di relazioni, anche con vincoli e valori di default
• Esempio
CREATE DOMAIN Voto AS SMALLINT DEFAULT NULLCHECK ( value >=18 AND value <= 30 )
63
Si possono utilizzare due sintassi equivalenti:
Matricola CHAR(6) PRIMARY KEY,
Matricola CHAR(6),…,PRIMARY KEY (Matricola)
Chiave primaria
Vincoli intrarelazionali
• NOT NULL• UNIQUE definisce chiavi• PRIMARY KEY: chiave primaria (una sola,
implica NOT NULL)
64
Vincoli interrelazionaliREFERENCES e FOREIGN KEY permettono di definire
vincoli di integrità referenziale • di nuovo due sintassi
– per singoli attributi– su più attributi
• E' possibile definire politiche di reazione alla violazione
Matricola398732959345
Vigili CognomeRossiNeriNeri
NomeLucaPieroMario
Mori Gino7543
InfrazioniCodice34321
733216452153524
Data1/2/954/3/955/4/965/2/98
Vigile3987329532959345
Prov NumeroMITOPRPR
39548KE39548839548839548
65
InfrazioniCodice34321
733216452153524
Data1/2/954/3/955/4/965/2/98
Vigile3987329532959345
Prov NumeroMITOPRPR
39548KE39548839548839548
Auto Prov NumeroMITOPR
39548KE39548839548
CognomeRossiRossiNeri
NomeMarioMarioLuca
CREATE TABLE, esempioCREATE TABLE Infrazioni(
Codice CHAR(6) NOT NULL PRIMARY KEY, Data DATE NOT NULL, Vigile INTEGER NOT NULL
REFERENCES Vigili(Matricola),Provincia CHAR(2), Numero CHAR(6) ,FOREIGN KEY(Provincia, Numero)
REFERENCES Auto(Provincia, Numero))
66
Modifiche degli schemi
ALTER DOMAINALTER TABLEDROP DOMAINDROP TABLE...
SQL come DML
Inserimenti modifiche cancellazioni di dati
Variazione dell’istanza del DB
67
SQL, operazioni sui dati (DML)
• interrogazione: SELECT ListaAttributiFROM ListaTabelle[ WHERE Condizione ]
• modifica:– INSERT, DELETE, UPDATE
Nome EtàPersone
RedditoAndrea 27
Maria 55Anna 50
Filippo 26Luigi 50
Franco 60Olga 30
Sergio 85Luisa 75
Aldo 2521
4235304020413587
15
MadreMaternità FiglioLuisa
AnnaAnnaMariaMaria
LuisaMaria
OlgaFilippoAndrea
Aldo
Luigi
PadrePaternità Figlio
LuigiLuigi
FrancoFranco
SergioOlga
FilippoAndrea
Aldo
Franco
68
Nome EtàPersone
RedditoAndrea 27 21
Maria 55 42Anna 50 35
Filippo 26 30Luigi 50 40
Franco 60 20Olga 30 41
Sergio 85 35Luisa 75 87
Aldo 25 15Andrea 27 21
Aldo 25 15
Filippo 26 30
Andrea 27 21Aldo 25 15
Filippo 26 30
211530
Reddito
Nome e reddito delle personecon meno di trenta anni
select nome, reddito
from personewhere eta <= 30
Condizione complessaselect *from personewhere reddito > 25
and (eta < 30 or eta > 60)Seleziona le persone che hanno un reddito maggiore di 25 ed
un’età minore di 30 o maggiore di 60
select *from personewhere nome like 'A_d%'
Seleziona le persone che hanno un nome che inizia per 'A' e ha una 'd' come terza lettera
69
Operazioni di aggiornamento• operazioni di
– inserimento: INSERT INTO Tabella [ ( Attributi ) ] VALUES( Valori )
– eliminazione:DELETE FROM Tabella [ WHERE Condizione ]
– modifica: update• di una o più ennuple di una relazione• sulla base di una condizione che può coinvolgere anche
altre relazioni
Esempi
• INSERT INTO Persone VALUES ('Mario',25,52)
• INSERT INTO Persone(Nome, Eta, Reddito)VALUES('Pino',25,52)
• INSERT INTO Persone(Nome, Reddito) VALUES('Lino',55)
70
Eliminazione di ennupleDELETE FROM Tabella
[ WHERE Condizione ]
DELETE FROM PersoneWHERE Eta < 35
SQL come DCL
Come definire i privilegi
71
Controllo dell'accesso
• In SQL è possibile specificare chi (utente) e come (lettura, scrittura, …) può utilizzare la base di dati (o parte di essa)
• Oggetto dei privilegi (diritti di accesso) sono di solito le tabelle, ma anche altri tipi di risorse, quali ad esempio singoli attributi, domini, ...
• Un utente predefinito _system (amministratore della base di dati) ha tutti i privilegi
• Il creatore di una risorsa ha tutti i privilegi su di essa
Privilegi
• Un privilegio è caratterizzato da:– la risorsa cui si riferisce– l'utente che concede il privilegio– l'utente che riceve il privilegio– l'azione che viene permessa– la trasmissibilità del privilegio
72
Tipi di privilegi offerti da SQL• insert: permette di inserire nuovi oggetti (ennuple)• update: permette di modificare il contenuto• delete: permette di eliminare oggetti • select: permette di leggere la risorsa • references: permette la definizione di vincoli di integrità
referenziale verso la risorsa (può limitare la possibilità di modificare la risorsa)
• usage: permette l'utilizzo in una definizione (per esempio, di un dominio)
grant e revoke
• Concessione di privilegi:grant < Privileges | all privileges > on
Resource to Users [ with grant option ]
– grant option specifica se il privilegio può essere trasmesso ad altri utentigrant select on Department to Stefano
• Revoca di privilegirevoke Privileges on Resource from Users
[ restrict | cascade ]
73
Transazione
• Insieme di operazioni da considerare indivisibile ("atomico"), corretto anche in presenza di concorrenza e con effetti definitivi
• Proprietà ("acide"):– Atomicità– Consistenza– Isolamento– Durabilità (persistenza)
Transazioni in SQL
• Istruzioni fondamentali– begin transaction: specifica l'inizio della transazione
(le operazioni non vengono eseguite sulla base di dati)– commit work: le operazioni specificate a partire dal
begin transaction vengono eseguite– rollback work: si rinuncia all'esecuzione delle
operazioni specificate dopo l'ultimo begin transaction
74
Una transazione in SQLbegin transaction;update ContoCorrente
set Saldo = Saldo – 10where NumeroConto = 12345 ;
update ContoCorrenteset Saldo = Saldo + 10where NumeroConto = 55555 ;
commit work;