Archivi e database - Corso RZ Informatica Giuridica

Archivi e database
Lezione n. 7
Dagli archivi ai database (1)
I dati non sempre sono stati considerati dall’informatica
oggetto separato di studio e di analisi
Nei primi tempi i dati erano parte integrante del
programma e venivano organizzati seguendo la logica
sia dell’algoritmo sia del supporto fisico di
memorizzazione. Si utilizzavano i modelli degli archivi
Se per esempio si aveva a disposizione un tape ossia un
nastro per archiviare i dati di una banca,
necessariamente i dati dovevano essere trattati con
algoritmi sequenziali a causa del mezzo fisico di
memorizzazione
Dagli archivi ai database (2)
Questo creava problemi di diversa natura e si è iniziato a
pensare a modellare i dati come oggetto indipendente
Nasce la disciplina dell’organizzazione dell’informazione
spesso chiamata “Sistemi informativi e database”
Scopo di questa disciplina è di organizzare
concettualmente e logicamente i dati per rappresentarli
così come ontologicamente sono, indipendentemente
dal supporto fisico di memorizzazione (memorie di
massa) o dalla funzione che devono assolvere
(programma)
Dagli archivi ai database (3)
La definizione dei dati era embedded nei programmi
applicativi piuttosto che essere memorizzaza
separatamente e indipendentemente
Nessun controllo sugli accessi e la manipolazione di
dati se non quella imposta dal programma applicativo
Database: un sistema di gestione dati integrato in cui
i dati sono mantenuti in modo non ridondante e in cui
l’utente può specificare con un comando unico una
richiesta (query) per una varietà di dati
DBMS - Data Base Management System
Un sistema software che consente all’utente di definire,
creare, e mantenere il database e fornisce accesso
controllato ad esso
Limiti dei sistemi di gestione di archivi - I
Separazione e isolamento dei dati
Ogni programma gestisce il proprio insieme di dati :
gli utenti di un programma non hanno possibilità di
accedere a dati utili gestiti da altri programmi
Duplicazione dei dati
Gli stessi dati sono gestiti da programmi diversi.
Spazio di memoria sprecato e talora valori e format
diversi per lo stesso dato
Limiti dei sistemi di gestione di archivi - II
Data dependence
La struttura dei file è definita nel codice del
programma
Format incompatibili per i dati
I programmi sono scritti in linguaggi diversi e non
possono accedere agli file altrui
Query fisse e proliferazione dei programmi applicativi
I programmi sono scritti per funzioni particolari; ogni
nuova esigenza richiede un nuovo programma
Dato come risorsa
Dato - la più piccola unità significativa atomica che
rappresenta un oggetto, un evento, un fatto,
un’astrazione, un concetto a senso compiuto
Il Dato ha un ciclo di vita, un valore, una necessità
per qualche unità organizzativa
Un dato si dice persistente quando spento il
calcolatore mantiene la sua integrità
Il dato è una risorsa preziosa
Il dato merita di essere rappresentato nel suo valore
intensionale e astratto indipendentemente dalle
attuali e contingenti applicazioni
Triangolo semiotico: intensione ed estensione
Intensione concetto astratto
Significante classe o entità
Estensione o istanza specifica oggetto
Gottlob Frege [1848 - 1925], Charles Sanders Peirce
[1839 - 1914], e Ferdinande de Saussure [1857 -1913]
Differenza fra archivi e database
Il dato può essere visto come valore (estensionale), come valore
del significante e come elemento di una classe (intensionale)
Es. La classe dei numeri primi
P = {x l x ∈ N e x non ha divisori diversi da 1 e da se stesso} –
definizione intensionale tramite le proprietà
P = {I numeri primi } - abbiamo dato un nome a questa classe –
definizione del significante tramite una categoria (primi)
P = {1,3,5,7, 11, 13, … } - abbiamo dato una definizione tramite i
dati oggettivi concreti ossia le istanze concrete dell’insieme dei
numeri primi, abbiamo elencato i membri dell’insieme che sono i
valori estensionali
Negli archivi hanno una struttura lineare e registrano la sola
rappresentazione entensionale, la rappresentazione intensionale è
modellata nei programmi applicativi
Nei DBMS poichè abbiamo la rappresentate delle relazioni e degli
attributi riespetto ad ogni entità riusciamo a catturare anche la
rappresentazione estensionale
Dato e gli archivi
Il dato persistente viene memorizzato in apposite
strutture dati dette ARCHIVI o file
Un archivio è una collezione di dati organizzati secondo
uno schema detto record logico- lung. fissa o lung.
variabile
Esempio: l’archivio AGENDA
NOME
COGN.
INDIRIZZO TELEFONO1
TELEFONO2
Record
logico
Operazioni sui dati in generale
Indipendentemente se usiamo archivi o database
abbiamo alcune operazioni di basilari da compiere con i
dati
lettura
scrittura - inserimento
modificazione
cancellazione
ricerca
Come è fatto un archivio - il record
Per comprendere come è formato un archivio occorre
partire dall’unità di base ossia il Record o registrazione:
unità logica minima di dati cui il computer può
accedere
negli archivi strutturati: suddiviso in campi,
ciascuno dei quali codifica una singola
informazione elementare, numerica o alfanumerica
negli archivi di testo: l’intero record è costituito da
una riga o paragrafo
Un formato di record
Nome:
Cognome:
Via:
Città:
CAP:
testo,
testo,
testo,
testo,
Numero
15 caratteri
20 caratteri
30 caratteri
20 caratteri
intero
Il contenuto di un record
Matricola:
Nome:
Cognome:
Via:
Città:
CAP:
00004356789
Mario
Rossi
Verdi, 30
Milano
204378
Archivio o file: definizione
File strutturato:
file destinato a contenere un insieme di record
dotati della medesima struttura (formato)
Viene creato o modificato mediante apposite
istruzione del linguaggio di programmazione
relativo (o mediante apposite interfacce grafiche)
Diversi tipi di file:
Sequenziale
Accesso diretto
Accesso con chiave
Inverted file
File sequenziali
I dati sono memorizzati in sequenza e si accedono in
sequenza
Per leggere l’ultimo record occorre scorrere tutto il file
Per poter scrivere un nuovo record occorre leggere
tutto il file, posizionarsi sull’ultimo record e poi
accodare il nuovo record
File ad accesso diretto
I dati sono memorizzati casualmente sul supporto di
memoria secondaria
La posizione dei dati viene calcolata sulla base di un
campo detto chiave. Tale campo serve da input ad
un algoritmo detto di hashing che calcola l’indirizzo
del dato
trasformazione
Hashing(dato) indirizzo dove il dato
è memorizzato fisicamente
Si accede al dato in modo diretto sia in lettura sia in
scrittura
File con chiave (I)
I dati sono memorizzati a blocchi sequenziali sul
supporto di memoria secondaria
I singoli record sono identificati mediante un campo
unico detto chiave primaria
Le chiavi sono inserite in un file a parte detto indice
(come un indice di libro)
Per accedere ai dati si utilizza il file indice che
rimanda al blocco di memoria dove sono memorizzati
i dati
File con chiave (II)
I
N
D
I
C
E
Chiave
Indirizzo
di blocco
0-99
99-199
200-299
300-399
400-499
500-599
600-699
699-800
1
2
3
4
5
6
7
8
hash
Blocco 1
Esempio: accedo ai dati del cliente mediante il suo
codice univoco
Chiave Denom.
P.I.
20
50
80
99
Chiave
Blocco 2
110
180
200
250
FIAT
BMW
ALFA
LANCIA
Denom.
ONDA
Mercedes
DUCATI
Ferrari
P.I.
File invertiti (I)
Tutti i dati del record sono chiavi di accesso ai dati
Si costruiscono delle tabelle accessorie per la
costruzione degli accessi ai dati
Poiché lo stesso dato può ricorrere in più record si
costruisce una tabella di valori associati agli indirizzi
dei record in cui questo valore si trova
La ricerca agisce sulle tabelle dei valori e recupera gli
indirizzi dei record in cui questi valori ricorrono
File invertiti (II)
F
i
l
e
_
i
n
v
e
r
t
i
t
o
Esempio: ricerco tutti i cittadini che abitano in via
Magenta Via
Indirizzo
Magenta
01110
10111
01111
10101
01010
Mitelli
11111
10000
Indirizzo Nome
01110
11111
11101
10111
01000
10000
01111
Rossi
Bianchi
Neri
Monti
Cava
Seta
Lelli
Via
Magenta
Mitelli
Cavur
Magenta
Italia
Mitelli
Magenta
Tel.1
Esempio di inverted file
Accesso tramite tabelle
Da Bettelli, Dati, relazioni & assoicazioni, Apogeo
Prova con Google (1)
locazione abuso violazione domicilio ergastolo intrusione
estranei
Google esegue una operazione in OR di tutti i termini
inseriti e la bilancia con un meccanismo a punteggio
(PageRank)
Il PageRank si basa sul numero di link in arrivo, più
link ci sono alla pagina in arrivo più il punteggio è alto
perché si suppone che più referenze la pagina ha
nella rete, più alta è la sua qualità (questo non è
valore sempre valido)
Successivamente Google conta le frequenze delle
parole ed esamina eventuali metadati abbinati al
documento testuale
Risultati 80 (data 13/11/2008)
Prova con Google (2)
locazione +abuso +violazione +domicilio +ergastolo+
intrusione + estranei
Uso il + per protegge la parola dal filtro dalla “stop list”
Risultati 1 (data 13/11/2008) – solo le pagine che
hanno tutti i termini
"violazione di domicilio" +locazione +ergastolo +estranei
+ abuso
Uso le “--” per i sintagmi, parole la cui vicinanza e
sequenza determina un concetto ben preciso diverso
dall’uso degli stessi termini in ordine diverso
Risultati 23 (data 13/11/2008)
locazione or abuso or violazione or domicilio or
ergastolo or intrusione or estranei – Risultati 146
Base di dati
In senso lato (giuridico) si intende per base di dati
una qualsiasi collezione di dati organizzata seguendo
uno schema logico che ne permette il reperimento
(possono essere anche documenti cartacei)
In senso stretto (informatico) una base di dati o
database è l’insieme di archivi memorizzati in modo
permanente nella memoria di massa e di relazioni fra
di essi
Attenzione non sempre le definizioni sono uniformi:
banca dati normativa = insieme dei testi normativi + relazioni fra le
norme (citazioni)
banca dati = contenuto + schema logico dei dati
database o base di dati = schema logico dei dati
DBMS
DBMS - database management system è il programma
specifico (software di base) che gestisce ed organizza basi
di dati
solitamente i DBMS consentono e gestiscono
l’aggiornamento e l’accesso dei dati da parte di più utenti
contemporaneamente
i DBMS contengono
i dati
le informazioni sulle strutture dei dati ovvero i metadati cataloghi
Caratteristiche di un DBMS
I DBMS consentono l’indipendenza dei dati dai programmi
persistenza - i dati persistono nel tempo
non ridondanza dei dati - i dati vengono memorizzati una
sola volta
sicurezza - meccanismi di accesso autorizzato ai dati
integrità - ad ogni dato vengono associati vincoli di
integrità e i programmi che non rispettano queste regole
vengono “bloccati”
utilizzo concorrente - i dati sono acceduti da più
programmi contemporaneamente
sistemi di backup e recovery dei dati in caso di errore
File vs. DBMS
Livelli di astrazione del DBMS
Livello fisico o schema interno: insieme di record
memorizzati nel dispositivo di memoria di massa
Livello logico: descrive l’organizzazione dei dati e
delle sue relazioni
Livello esterno o vista o livello concettuale: descrive i
dati così come vengono visti da un certo utente
Indipendenza fisica - si può ridefinire il livello fisico
senza modificare il modello logico
Indipendenza logica - si può estendere il modello
logico senza alterare il livello esterno
Livelli di un DBMS
Livelli di un DBMS
Livelli
Requisiti della base di dati
“CHE COSA”:
analisi
Progettazione
concettuale
Schema concettuale
Progettazione
logica
Schema logico
“COME”:
progettazione
Progettazione
fisica
Schema fisico
(da Atzeni e altri, Basi di dati, McGraw-Hill, 2002)
Esempio più concreto della divisione dei
livelli nella modellazione dei data base
Livello concettuale – Modellazione entità
relazione dei dati
Livello logico – Scelta del modello del DBMS
(es. relazionale) e modellazione delle tabelle
in terza forma normale sciogliendo anche le
relazioni N:M
Livello fisico – istruzioni SQL per gestire i
dischi
Componenti dell’ambiente DBMS - I
Hardware
da un pc a una rete di computer
Software
DBMS, sistema operativo, programmi applicativi, software di rete (se
necessario)
Dati
dell’organizzazione e una loro descrizione in schema e sottoschema
Procedure
istruzioni e regole da applicare al progetto e all’uso del database e
dal DBMS
Persone
Data Base Administrator - DBA
Data administrator, programmatori applicativi
Progettisti di database (sia logici che fisico)
Utenti
Componenti dell’ambiente DBMS - II
I dati sono il ponte fra i sistemi informativi e i sistemi informatici
I dati prodotti dall’attività del sistema informativo vengono gestiti e
archiviati nei sistemi informatici
Linguaggi di un DBMS
Data Definition Language (DDL)
Data Manipulation Language (DML)
Consente di specificare i tipi di dati, le strutture delle
tabelle e i vincoli
Strumento di ricerca (query) sui dati
Data Control Language (DCL)
Strumento controllo degli utenti e dei permessi
Vantaggi dei DBMS
Controllo della ridondanza
Data consistency
Più informazione dallo stesso insieme di dati
Condivisione di dati
Miglioramento della integrità dei dati
Miglioramento della sicurezza
Potenziamento di standard
Economie di scala
Punti critici
Complessità
Ampiezza
Costi del software e della conversione
Prestazioni
Le transazioni - ACID
Le transazioni sono operazioni di programma che agiscono
sulla banca dati e non alterano la sua integrità (commit e rollback)
commit – fine della transazione con esito positivo
roll-back – fine della transazione con esito negativo e quindi
ritorno allo stato precedente l’inizio della transazione
atomicità- l’operazione viene eseguita tutto o si torna indietro
ripristinando la situazione originale
consistenza - le operazioni non devono violare i vincoli di
l’integrità dei dati
isolamento - ogni transazione agisce in modo isolato
dall’altra per non creare sovrapposizioni
durabilità - l’operazione deve avere effetto duraturo nel
tempo
Modello entità relazione
LIVELLO CONCETTUALE
Lezione n. 7
Modello entità-relazione
Entità
Relationship (relazioni o associazioni)
Part-of (composizione)
Is-a (gerarchica)
Associazione funzionale (per un preciso
scopo diverso dai precedenti
Attributi
Entità
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Rappresentazione grafica di entità
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Relazione
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Rappresentazione grafica di relazione
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Nota sulle relazioni - I
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Nota sulle relazioni - II
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Attributi
• Proprietà elementare di un’entità o di una
relazione, di interesse ai fini
dell’applicazione
• Un attributo associa ad ogni occorrenza di
entità o relazione un valore appartenente a
un insieme detto dominio dell’attributo
Rappresentazione grafica di attributi
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Modello relazionale
LIVELLO LOGICO
Lezione n. 7
Modelli di dati
Un Modello di dati è un formalismo utilizzato per
descrivere la realtà che si intende modellare mediante
un DB
Modello gerarchico - IBM
Modello reticolare - Codasyl (Conference on Data System Language)
Modello relazionale - Egdar F. Codd anni 70
Modello a oggetti - anni 80-90
Ogni modello comprende entità, attributi, relazioni fra i
dati
Modello relazionale
Un data base relazionale è un insieme di relazioni
Una relazione è una tabella composta da un numero fisso di
colonne (attributi) e da un numero variabile di righe (tuple)
Ciascuna relazione ha un nome
Con le colonne si indicano gli attributi ed ogni attributo a un nome
Tutti gli elementi della stessa colonna sono omogenei
Ogni tupla deve essere unica all’interno della relazione
La relazione è definita come l’insieme delle sue tuple
Schema di una relazione=nome relazione+nome degli
attributi+dominio di ogni attributo (schema astratto)
Istanza di una relazione è uno schema di una relazione in un
determinato istante ovvero l’insieme dei valori delle tuple (valori)
LIBRO(codice isbn, autore, titolo, casa editrice, città, anno)
Elementi del modello relazionale
Tabelle o Entità - oggetti della realtà da descrivere e
modellare
Attributi Associazioni o relazioni
uno-a-uno - un cliente ha una sola sede legale
uno-a-molti - un cliente ha più sedi operative
molti-a-molti - un articolo è contenuto in più ordini e
un ordine contiene più articoli
Da relazione molti a molti
M-N
Studenti
Insegnamenti
Due relazioni uno a molti, mediante un
nodo intermedio
Studenti
Frequenta
Insegnamenti
La tabella Studenti
idStudente
nome
cognome
dataNascita
3456
Mario
Rossi
1/1/1985
6342
Lucia
Bianchi
1/1/1986
La tabella Insegnamenti
IdInsegn
CgnDocente
Materia
Semestre
Fd1
Chiari
FilDir
1
Pr2
Scuri
Privato
2
La tabella Frequenze
idStudente
idInsegnamento
6342
Fd1
6342
Pr2
3456
Fd1
Le associazioni tra tabelle
Studenti
Frequenta
Corsi
idStudente
nome
cognome
dataNascita
idStudente
idCorsi
idCorsi
docente
Materia
semestre
Esempio Studenti - Corsi
La chiave primaria
La chiave primaria di una tabella è il campo i cui valori
identificano univocamente ciascun record della tabella
Ad esempio, in un database di studenti, il numero di
matricola può costituire la chiave primaria
La chiave primaria deve essere:
Univoca
Persistente nel tempo
Non dipendere da nessun altro campo
Operatori relazionali e
Normalizzazione
Operazioni relazionali di base
Selezione - selezione di tuple o righe
Proiezione - selezione di colonne
Join - unione di due relazioni attraverso un attributo di
collegamento
Selezione
CLIENTI
Righe
selezionate
in base ad
una
condizione
Codice
Nome
Indirizzo
100
200
300
400
500
600
700
800
900
1000
1100
Rossi
Bianchi
Neri
Grigi
Seta
Lucchi
……..
……...
……...
……..
……...
via Magenta
pz. Matteotti
via Tosca
vicolo Luretta
……….
……...
……..
……...
……...
……..
……...
Citta
Roma
Roma
Roma
Roma
Roma
Bologna
Bologna
Milano
Milano
Roma
Roma
Proiezione
CLIENTI
Colonne
selezionate
Codice
Nome
Indirizzo
100
200
300
400
500
600
700
800
900
1000
1100
Rossi
Bianchi
Neri
Grigi
Seta
Lucchi
……..
……...
……...
……..
……...
via Magenta
pz. Matteotti
via Tosca
vicolo Luretta
……….
……...
……..
……...
……...
……..
……...
Citta
Roma
Roma
Roma
Roma
Roma
Bologna
Bologna
Milano
Milano
Roma
Roma
Join
CLIENTI
Codice
Nome
100
200
300
…...
Citta
Rossi
Bianchi
Neri
Indirizzo
via Magenta
pz. Matteotti
via Tosca
…...
…...
…...
Roma
Roma
Roma
SALDI
Codice
100
100
100
200
200
Fatturato
400000
600000
700000
300000
250000
Anno
1999
2000
2001
1999
2000
Saldo
50000
60000
20000
30000
50000
Join
TABELLA di JOIN
Fatturato
Codice
Nome
Indirizzo
Citta
100
100
100
200
200
Rossi
Rossi
Rossi
Bianchi
Bianchi
via Magenta
via Magenta
via Magenta
pz. Matteotti
pz. Matteotti
Roma
Roma
Roma
Roma
Roma
400000
600000
700000
300000
250000
……..
……..
……..
……..
……..
…...
…...
Il Join
Crea una tabella C che riunisce due tabelle A e B
pre-esistenti
Ogni record della tabella C unisce campi tratti da
una tupla di A e da una tupla di B
Di regola si tratta delle tuple che hanno il medesimo
valore in un certo campo comune:
se A contiene i campi α e β e B contiene i campi β
e γ, il join naturale conterrà i campi α, β e γ
Esempio di Join
id
Studente
nome
cognome
data
Nascita
idStudente
id
Insegnamento
3456
Mario
Rossi
1/1/1985
6342
Fd1
6342
Lucia
Bianchi
1/1/1986
6342
Pr2
3456
Fd1
id
Studente
nome
cognome
data
Nascita
id
Insegnamento
6342
Lucia
Bianchi
1/1/1986 Fd1
6342
Lucia
Bianchi
1/1/1986 Pr2
3456
Mario
Rossi
1/1/1985 Fd1
Le principali operazioni sui dabase
relazionali. Project o Proiezione
Data una tabella A, produce una tabella B
che contiene solo alcune colonne di A
Elimina le colonne che non sono rilevanti
Project o Proiezione
Partiamo dalla Join precedente e selezioniamo solo le colonne che ci interessano
id
Studente
nome
cognome
dataNascita id
Insegnamento
6342
Lucia
Bianchi
1/1/1986
Fd1
6342
Lucia
Bianchi
1/1/1986
Pr2
3456
Mario
Rossi
1/1/1985
Fd1
nome
cognome
id
Insegnamento
Lucia
Bianchi
Fd1
Lucia
Bianchi
Pr2
Mario
Rossi
Fd1
Le principali operazioni sui dabase
relazionali. Select
Data una tabella A, produce una tabella B
che contiene solo alcune tuple di A che
soddisfano una determinata condizione
Select o Selezione
Partiamo dalla project precedente e selezioniamo solo le tuple che ci interessano
id
Studente
nome
cognome
dataNascita id
Insegnamento
6342
Lucia
Bianchi
1/1/1986
Fd1
6342
Lucia
Bianchi
1/1/1986
Pr2
3456
Mario
Rossi
1/1/1985
Fd1
nome
cognome
id
Insegnamento
Lucia
Bianchi
Fd1
Lucia
Bianchi
Pr2
Join ancora
nome
cognome
idInsegna
mento
IdInsegn
amento
Cgn
Docente
Lucia
Bianchi
Fd1
Fd1
Chiari FilDir
Lucia
Bianchi
Pr2
Pr2
Scuri
Mario
Rossi
Fd1
Materia
Semestre
1
Privato 2
nome
cognome
id
Insegnamento
Cgn
Docente
Materia
Semestre
Lucia
Bianchi
Fd1
Chiari
FilDir
1
Lucia
Bianchi
Pr2
Scuri
Privato
2
Mario
Rossi
Fd1
Chiari
FilDir
1
Select ancora
nome
cognome
idInsegna
mento
CgnDocente
Materia
Semestre
Lucia
Bianchi
Fd1
Chiari
FilDir
1
Lucia
Bianchi
Pr2
Scuri
Privato
2
Mario
Rossi
Fd1
Chiari
FilDir
1
nome
cognome
CgnDocente Materia
Lucia
Bianchi
Chiari
FilDir
Mario
Rossi
Chiari
FilDir
Che cosa ho ottenuto?
Ho incrociato i dati, ottenendo nuove informazioni, non
attingibili (senza sforzi notevoli) dai dati di partenza
Il modello relazionale basato su un modello matriciale
consente operazioni insiemistiche potenti
Le informazioni non sono più lineari (record) ma
matriciali (tabella) e gli operatori selezionano avendo a
disposizione l’informazione estensionale (contenuto) ed
intensionale (concetti)
Il DBMS conosce il catalogo delle entità, delle relazioni e
delle colonne di ogni entità
SQL
SQL - structured query language
nato negli anni ‘70 - IBM- SEQUEL
primo standard riconosciuto dall’ANSI (American
National Standards Institute)- 1986
è il linguaggio standard di interrogazione ed
aggiornamento accettato dai RDBMS
Normalizzazione
La normalizzazione è la tecnica con la quale si progetta
uno schema logico-concettuale privo di ridondanze,
anomalie, inconsistenze
La normalizzazione garantisce una manutenzione nel
tempo dello schema logico, la sua consistenza, ed evita
la degenerazione dovuta all’utilizzo
Si possono avere diverse gradi di normalizzazione: i più
importanti sono tre
Dire che uno schema logico è in terza forma normale
significa che ha superato il vaglio di tre regole
fondamentali
Approfondimento:
Modello E-R esempi
Approfondimento Lezione n. 7
Due tipi di modelli: concettuale e logico
Ora che abbiamo visto i tre principali tipi di modelli di DBMS
possiamo comprendere meglio la suddivisione fra il livello
concettuale e quello logico nella modellazione dei dati
modelli concettuali: permettono di rappresentare i dati in
modo indipendente da ogni sistema di DBMS sia esso
gerarchico, reticolare o relazionale:
cercano di descrivere i concetti del mondo reale
sono utilizzati nelle fasi preliminari di progettazione
modelli logici: utilizzati nei DBMS esistenti per
l’organizzazione dei dati
utilizzati dai programmi
indipendenti dalle strutture fisiche
esempi: relazionale, reticolare, gerarchico, a oggetti
il più noto è il modello Entity-Relationship o entità realzione o
E-R
Livelli di progettazione di basi di dati
(da A. Lumini, luminiDB.pdf, [email protected])
Modello gerarchico
Il modello gerarchico rappresenta i dati come strutture ad
albero
gli alberi si dicono occorrenze gerarchiche
in un albero si possono identificare almeno due parti: una
struttura parent e più strutture child
puntatore padre, puntatore figlio, puntatore gemello
Azienda
Dipendenti
Puntatore al figlio
Clienti
Puntatore al padre
Ordini
Righe Ordine
Articoli
Puntatore al gemello
ossia all’istanza successiva
della stessa entità: es. Rossi
punta a Bianchi ed entrambi
sono nell’entità clienti
Modello gerarchico
Da Bettelli, Dati, relazioni & assoicazioni, Apogeo
Database gerarchico
Radice
Padre
Figlio
Figlio
Puntatore di interconnessione
Due gerarchie, con uno o più tipi di record, interconnesse
Caso di database gerarchico
Radice
• L’accesso avviene sempre via radice
• Per rappresentare una relazione molti-a-molti occorrono due unoa-molti e un segmento addizionale
Modello reticolare
Il modello reticolare consente più di una struttura padre
le associazioni fra record sono realizzate mediante
particolari record detti record connettori
Riga di ordine 1
RC1
RC3
Riga di bolla
RC2
Articoli
Modello reticolare
• Non ha nessuna radice
• Schema e subschema
• E’ navigazionale ossia si può accedere ad ogni nodo della
rete delle entità
Esempio di modello reticolare
Da Bettelli, Dati, relazioni & assoicazioni, Apogeo
Gli elementi del modello EntitàRelazioni
Entità
Relationship (relazioni o associazioni)
Part-of (composizione)
Is-a (gerarchica)
Associazione funzionale (per un preciso
scopo diverso dai precedenti
Attributi
Entità
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Rappresentazione grafica di entità
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Relazione
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Rappresentazione grafica di relazione
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Nota sulle relazioni - I
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Nota sulle relazioni - II
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Attributi
• Proprietà elementare di un’entità o di una
relazione, di interesse ai fini
dell’applicazione
• Un attributo associa ad ogni occorrenza di
entità o relazione un valore appartenente a
un insieme detto dominio dell’attributo
Rappresentazione grafica di attributi
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Attributi composti
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Rappresentazione grafica di un diagramma E-R
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Cardinalità o Molteplicità
Coppia di valori che si associa a ogni entità che partecipa a
una relazione che specificano il numero minimo e massimo
di occorrenze delle relazione cui ciascuna occorrenza di una
entità può partecipare
Un impiegato ha da zero a 50 incarichi
Un incarico è svolto da 1 fino ad un massimo di 5 impiegati
• Si noti la somiglianza con la molteplicità indicate nel diagramma di
classe nella rappresentazione UML
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Esempio – Cardinalità di residenza
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Relazioni uno-a-uno
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Relazioni uno-a-molti
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Relazioni molti-a-molti
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Generalizzazione
mette in relazione una o più entità E1, E2, ...,
En con una entità E, che le comprende come
casi particolari
padre-figlio, relazione is-a
si noti l’analogia con l’ereditarietà del paradigma
OO e con la relazione di gerarchia delle classi
E è generalizzazione di E1, E2, ..., En
E1, E2, ..., En sono specializzazioni (o sottotipi)
di E
(da Atzeni e altri, Basi di dati, McGraw-Hill, 2002)
Rappresentazione grafica
Dipendente
Impiegato
Funzionario
QUALIFICA
(da Atzeni e altri, Basi di dati, McGraw-Hill, 2002)
MATRICOLA
COGNOME
Dirigente
Esercizio
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Soluzione
chiave primaria
attributo
gerarchia
Esclusiva
Is-a
gerarchia non esclusiva
esistono altre categorie
(da www.cs.unibo.it/~montesi/Corso01/P2Progettazione/)
Domande possibili
Perché si è passati dagli archivi ai database?
Che differenza c’è fra il modello degli archivi e quello
del DBMS?
Che tipi di archivi possiamo avere?
Che cosa sono il livello concettuale, logico, fisico di
un DBMS?
Quali le caratteristiche del DBMS?
Quali modelli di DBMS?
Che rapporto esiste fra il modello ER e il diagramma
della classi UML?
Dove si colloca il modello ER nei livelli di
modellazione di un DBMS (concettuale, logico,
fisico)?
Approfondimento SQL
Operazioni di aggiornamento
Create table nome-tabella
(attributo1
attributo2
Insert INTO nome-tabella
values (valori)
Delete FROM nome-tabella
WHERE condizione
Update nome-tabella
SET lista attributi da modificare
WHERE condizione
dominio
dominio
vincoli)
Operazioni di query
SELECT nomi colonne
FROM nome-tabella
WHERE condizione
GROUP by condizione
ORDER by condizione
Selezione
SELECT ALL
FROM nome-tabella
WHERE condizione
SELECT ALL
FROM Clienti
WHERE Clienti.citta=“ROMA”
seleziona tutte le tuple della tabella Clienti che
soddisfano la condizione citta=“ROMA” ovvero seleziona
tutti i clienti romani
Proiezione
SELECT nome-attributo1, nome-attributo2
FROM nome-tabella
SELECT Clienti.nome, Clienti.indirizzo, Clienti.citta
FROM Clienti
seleziona le colonne nome, indirizzo, citta della tabella
Clienti
Join
SELECT nome-attributo1, nome-attributo2
FROM nome-tabella1, nome-tabella2
WHERE condizione AND condizione di unione sulle
chiavi
SELECT nome, indirizzo, citta, fatturato, anno
FROM Clienti, Saldo
WHERE Saldo.fatturato > 1.000.000 AND
Clienti.codice = Saldo.codice
unisce le tabelle Clienti e Saldo rispetto al campo chiave
codice
Altre operazioni
SELECT ….
UNION
SELECT ……
A
B
unisce i risultati di due select
SELECT ….
MINUS
SELECT ……
A
B
esegue la differenza fra i risultati di due select
SELECT ….
INTERSECTION
SELECT ……
A
B
esegue l’intersezione fra i risultati di due select
Normalizzazione
La normalizzazione è la tecnica con la quale si progetta
uno schema logico-concettuale privo di ridondanze,
anomalie, inconsistenze
La normalizzazione garantisce una manutenzione nel
tempo dello schema logico, la sua consistenza, ed evita
la degenerazione dovuta all’utilizzo
Si possono avere diverse gradi di normalizzazione: i più
importanti sono tre
Dire che uno schema logico è in terza forma normale
significa che ha superato il vaglio di tre regole
fondamentali
Scenario
Meccanici aggiustano macchinari nei negozi
Un meccanico ha in incarico un solo negozio, ma un
negozio è in incarico a più meccanici
Un negozio ha un indirizzo e un responsabile
Un meccanico ha degli skill ossia delle competenze, più
di una, con una gradazione delle stesse
Prima forma normale
Ogni campo non è decomponibile
Vi è un elemento chiave
(da Gilleson, Goldberg, Strategic planning, system analysis & database design, Wiley)
Seconda forma normale - I
Ridurre la ridondanza:
nessun campo non-chiave
è definito solo da una
parte della chiave
Ogni attributo dipende da
tutta la chiave
(da Gilleson, Goldberg, Strategic planning, system analysis & database design, Wiley)
Seconda forma normale - II
Duplicazioni: MechNo è in (a) e in (c)
(da Gilleson, Goldberg, Strategic planning, system analysis & database design, Wiley)
Terza forma normale - I
Ci sono campi non-chiave definiti in funzione di altri campi
non-chiave
Non esistono più
situazioni in cui un
campo non-chiave
definisce un altro
campo non-chiave
Ogni attributo
dipende solo dalla
chiave
(da Gilleson, Goldberg, Strategic planning, system analysis & database design, Wiley)
Terza forma normale - II
(da Gilleson, Goldberg, Strategic planning, system analysis & database design, Wiley)
Soluzione con il diagramma
entità-relazioni
(da Gilleson, Goldberg, Strategic planning, system analysis & database design, Wiley)
Esempio di normalizzazione
Una agenzia di viaggi organizza i suoi
cataloghi dei viaggi in un database
Esempio di normalizzazione
Tipo viaggio
costo
periodo
Crociera Grecia
2000
bassa
Crociera Grecia
3000
alta
Città Spagna
2100
bassa
Città Spagna
3300
alta
Crociera Caraibi
4000
bassa
Crociera Caraibi
5000
alta
Mare Italia
1900
bassa
Mare Italia
2300
alta
Anomalie:
Il tipo di viaggio e la destinazione vanno divise perché sono due campi atomici
Il campo periodo è ripetuto 2 volte
Manca il campo chiave
Esempio di normalizzazione – 1NF
Key
Tipo
viaggio
00120 crociera
costo
periodo
destinazio
ne
2000
bassa
Grecia
3000
alta
2100
bassa
3300
alta
00202 città
Spagna
00130 crociera
Caraibi
4000
bassa
00303 mare
Italia
5000
alta
1900
bassa
2300
alta
Esempio di normalizzazione – 2NF
Key
Tipo
viaggio
00120 crociera
00202 città
00130 crociera
00303 mare
destinazi
one
Key
cod
periodo
costo
disponibiltà
01
00120
bassa
2000
500
02
00120
alta
3000
540
03
00202
bassa
2100
200
04
00202
alta
3300
300
05
00130
bassa
4000
400
06
00130
alta
5000
200
07
00303
bassa
1900
150
08
00303
alta
2300
200
Grecia
Spagna
Caraibi
Italia
Anomalie: gli attributi in giallo non
dipendono dalla chiave
Esempio di normalizzazione – 3NF
Key
Tipo viaggio
destinazion
e
00120
A
Grecia
00202
B
Spagna
00130
A
Caraibi
00303
C
Italia
Key
Key
cod
periodo
costo
disponibiltà
01
00120
001
2000
500
02
00120
002
3000
540
03
00202
001
2100
200
04
00202
002
3300
300
05
00130
003
4000
400
06
00130
004
5000
200
07
00303
001
1900
150
08
00303
002
2300
200
Tipo
A
crociera
B
città
C
mare
D
montagna
Key
DataInizio
DataFine
001
1-10
30-05
002
01-06
30-09
003
01-05
30-10
004
1-11
30-04
Domande possibili
Quali sono le operazioni relazionali di base?
Cosa è l’SQL
Cosa sono la select, project, join
Come si implementano mediante l’SQL
Modello entità relazione: fare esempi
Normalizzazione dei dati e strutturazione di un data
base: fare un esempio