Appunti Docente

24/04/14 Database
Intro
Tipi di entità
Mapping ER/EER à Relazionale
Ing. Lucia Vaira
PhD Student @ University of Salento
[email protected]
Cos’è un database?
1 24/04/14 Cos’è un database?
— 
È una struttura di dati composta da una serie di matrici chiamate
tabelle a loro volta composte da campi
— 
Nasce quindi il concetto di record: insieme di dati composto da
tutti i campi di una tabella
— 
Es. sistema di gestione di una libreria
Una prima tabella necessaria al database è sicuramente quella
relativa agli autori dei libri disponibili
— 
— 
Id
Autore
1
E. A. Poe
2
J. R. R. Tolkien
3
B. Stocker
Abbiamo una tabella i cui campi sono id e autore e abbiamo tre
record con tre nomi di autori differenti
Concetti principali
— 
Database: collezione di dati eterogenei ma correlati tra loro
— 
Dato: è un fatto che può essere memorizzato e che ha un significato
implicito per qualcuno
Minimondo: parte del mondo reale in cui è contestualizzato il dato
DBMS (DataBase Management System) è un software che supporta
la creazione e la gestione dei database
— 
— 
◦ 
◦ 
◦ 
◦ 
Microsoft Access
Microsoft SQL Server
MySQL
Oracle
2 24/04/14 Architettura a tre livelli
— 
La progettazione di un database avviene su tre livelli:
◦  Livello concettuale: di alto livello, semantico, non riporta
dettagli di livello fisico o implementativo, serve per intendersi
con il committente
◦  Livello logico: rappresentazione che considera i dettagli tecnici
relativi al modo in cui i dati sono memorizzati
◦  Livello fisico: fornisce concetti che possono essere compresi
dagli utenti finali ma che sono troppo lontani dal modo in cui i
dati sono organizzati nel database
Architettura a tre livelli
— 
Per ogni livello si costruisce un modello che contiene le
informazioni da rappresentare e che è rivolto agli attori che
partecipano alla progettazione
3 24/04/14 La rappresentazione dei dati
— 
Il modello dei dati à schemi concettuali o schemi logici
◦  Modello concettuale: diagrammi ER (Entity/Relationship)
–  Rappresentazione grafica degli oggetti gestiti dal sistema e
delle relazioni tra di essi
◦  Modello logico: modello relazionale
–  Rappresentazione dei dati tramite la descrizione della loro
organizzazione (che in questo caso è tabellare)
Il modello Entità-Relazione
— 
Il modello ER è uno dei più diffusi modelli
concettuali
— 
I costrutti principali del modello ER sono:
◦  Entità
◦  Relazioni
◦  Attributi
◦  Identificatori
◦  Specializzazioni
4 24/04/14 Un classico diagramma ER
— 
I rettangoli rappresentano un tipo di entità, i rombi un tipo di
relazione
— 
Ad entrambi sono associati specifici attributi
Entità
— 
Entità
Classe di oggetti (reali o concettuali) che hanno
proprietà comuni ed esistenza autonoma
◦  Es. Studente, Docente, Corso, Facoltà,…
— 
Istanza di un’entità: oggetto contenuto nel tipo di entità
◦  Es. Facoltà di Ingegneria
— 
Ogni entità ha un nome e un attributo che la identifica
univocamente nello schema concettuale
◦  Uso di nomi significativi ed espressivi
◦  Rispetto di alcune convenzioni (es. usare il singolare)
5 24/04/14 Entità deboli
Entità
debole
— 
Sono tipi di entità che non hanno propri attributi chiave
— 
Un’entità debole è tale perché la sua esistenza dipende da un’altra
entità, si tratta cioè di entità che contengono istanze la cui presenza
nel sistema è accettata solo se sono presenti determinate istanze di
entità da cui queste dipendono
— 
Es: reparto di un negozio, non ha un’esistenza indipendente dal
negozio nel quale è contenuto
In caso di eliminazione dell’istanza di riferimento, le istanze di
entità deboli collegate devono essere eliminate
— 
Entità deboli
— 
— 
Entità
debole
Un tipo di entità debole ha sempre un vincolo di partecipazione
totale (dipendenza di esistenza) relativo alla sua relazione
identificante, perché essa non può essere identificata senza un’entità
proprietaria
Altro es: familiari a carico di un impiegato
IMPIEGATO
1
Persone a
carico di
N
SSN
Nome
Nascita
Indirizzo
Tipo_lavoro
PERSONA A
CARICO
Nome
Data_nascita
Sesso
Parentela
Chiave parziale
6 24/04/14 Entità deboli
Entità
debole
— 
Chiave parziale: non si tratta di una chiave primaria di un tipo di
entità forte, ma di un attributo usato come distintivo all’interno
della classe di appartenenza à dovrà esserci unicità all’interno
della classe di appartenenza, al di fuori invece, può esserci anche
ridondanza
— 
Quando ad essere doppiamente cerchiato non è soltanto il ramo di
collegamento ma anche il tipo di relazione e il tipo di entità, si dice
che persona a carico è un tipo di entità debole che viene
univocamente identificata non in modo assoluto con la chiave
primaria, ma in relazione all’appartenenza ad un tipo entità forte,
che è detta proprietario del tipo di entità debole.
Vincolo di partecipazione
— 
— 
— 
Specifica se l’esistenza di un’entità dipende dal suo essere correlata
a un’altra entità attraverso una relazione
Può essere parziale o totale
Es. totale: la politica di un’azienda stabilisce che ogni impiegato
deve lavorare per un dipartimento
N
Impiegato — 
— 
lavora per 1
Dipar8mento L’entità “impiegato” può esistere solo se partecipa a un’istanza di
relazione “lavora per”
à la partecipazione dell’impiegato alla relazione “lavora per” è
detta partecipazione totale
7 24/04/14 Vincolo di partecipazione
— 
Es. parziale: la politica di un’azienda stabilisce che per ogni
dipartimento ci sia uno e un solo direttore
Impiegato Dipar8mento 1
1
dirige — 
La partecipazione dell’entità “impiegato” al tipo di relazione
“dirige” è parziale, nel senso che alcune tuple dell’entità
“impiegato” sono correlate a un’entità “dipartimento” attraverso la
relazione “dirige”, ma non tutte
Relazione
Relazione
— 
Legame logico fra due o più entità con uno specifico significato
— 
Grado della relazione: numero dei tipi di entità che vi partecipano
(relazioni binarie, ternarie, quaternarie,…)
— 
Istanza di relazione: n-upla di istanze di entità, una per ciascuna
entità coinvolta. La coppia (Mario Rossi, Basi di Dati) è un’istanza
della relazione Esame se:
–  Mario Rossi è un’istanza dell’entità Studente
–  Basi di Dati è un’istanza dell’entità Corso
8 24/04/14 Relazioni ricorsive
— 
Una relazione può essere ricorsiva, ovvero una relazione fra
un’entità e se stessa
Ruoli di partecipazione
dipendente
dirige
N
IMPIEGATO
1
dirigente
— 
Se la relazione non è simmetrica, occorre definire i due ruoli
dell’entità
— 
Il nome di ruolo indica il ruolo che un’entità partecipante facente
parte del tipo di entità, recita in ciascuna istanza della relazione e
aiuta a spiegare cosa indica quella relazione
Attributi
— 
— 
Descrivono proprietà elementari di entità e relazioni
Ogni attributo associa a ciascuna istanza un valore appartenente al
dominio dell’attributo
IMPIEGATO
— 
SSN
Nome
Data_nascita
Indirizzo
Tipo_lavoro
Attributi:
◦  Semplice (es. nome, cognome,…)
◦  Multivalore (es. telefono,…)
◦  Composto (es. indirizzo,…)
◦  Calcolato (es. incasso totale,…)
9 24/04/14 Cardinalità delle relazioni
— 
Per ogni partecipazione di un’entità ad una relazione si
specificano il numero minimo e il massimo cui
un’istanza dell’entità può partecipare
— 
Rappresenta un vincolo
E1
(m, M)
R
(p, P)
E2
◦  Ogni istanza di E1 partecipa ad almeno m e al più a M istanze di R
◦  Ogni istanza di E2 partecipa ad almeno p e al più P istanze di R
Esempio di cardinalità
IMPIEGATO
— 
— 
— 
— 
(1, 5)
(0,50)
assegnazione
INCARICO
Ad ogni impiegato è assegnato almeno 1 incarico
Ogni impiegato ha al più 5 incarichi
Un incarico può anche non essere ricoperto
Ad un incarico possono essere assegnati al massimo 50
impiegati
10 24/04/14 Tipi di cardinalità
— 
Cardinalità minima
◦  0 – la partecipazione alla relazione è opzionale (parziale)
◦  1 – la partecipazione alla relazione è obbligatoria (totale)
— 
Cardinalità massima
◦  1 – rappresenta una funzione che associa una sola istanza
dell’altra entità
◦  N – rappresenta un’associazione con un numero arbitrario di
istanze dell’altra entità
Notazione alternativa
— 
— 
— 
— 
1:1 à (0,1) : (1,1)
1:N à (1,1) : (0,N)
N:1 à (0,N) : (1,1)
N:M à (1,N) : (0,M)
11 24/04/14 Identificatori delle entità
— 
— 
Permettono di identificare in modo univoco le istanze di
entità
Identificatore interno (chiave primaria)
–  Si tratta di una chiave su cui sono vietati i valori nulli
–  Si può utilizzare un attributo dell’entità come chiave primaria o essa
può essere generata in modo automatico all’atto dell’inserimento (es.
codice progressivo)
— 
Ogni entità deve avere almeno un identificatore
Vincolo di chiave esterna
— 
— 
Date due relazioni:
◦  A con chiave primaria a1
◦  B con chiave primaria b1
il vincolo di integrità referenziale b3 ad a1 indica che b3
può assumere solo valori compresi nel dominio degli
elementi di a1
A
a1
B
a2
a3
b1
b2
b3
12 24/04/14 Vincolo di chiave esterna
— 
Più in generale, il vincolo di integrità referenziale è
specificato tra due relazioni ed è usato per mantenere la
consistenza fra tuple delle due relazioni
— 
Informalmente il vincolo di integrità referenziale
stabilisce che una tupla in una relazione cha fa
riferimento a un’altra relazione deve far riferimento a
una tupla esistente in quella relazione
Specializzazione
IMPIEGATO
SEGRETARIO
— 
— 
— 
TECNICO
C
C
d
INGEGNERE
d: disjoint, vincolo di specializzazione, o l’una o l’altra
o: overlapping (sovrapposizione), l’una e/o l’altra
C: simbolo di inclusione che rappresenta il fatto che l’entità
sottostante è inclusa in quella sovrastante e quindi oltre a possedere
i suoi attributi, eredita anche quelli dell’entità sovrastante
13 24/04/14 Il modello relazionale
— 
— 
Adottato dalla maggior parte dei DBMS in commercio
Definisce come sono organizzati i dati e non come sono
poi memorizzati e gestiti dal sistema informatico
Mapping ER à Relazionale
— 
Si traduce lo schema ER in uno schema relazionale
Traduzione di tipi di entità
— 
I tipi di entità si trasformano in una relazione (tabella)
che contiene come colonne tutti gli attributi semplici del
tipo di entità e come chiave primaria una delle chiavi
candidate.
IMPIEGATO
SSN
Nome
Data_nascita
Indirizzo
Tipo_lavoro
Impiegato
SSN
Nome
Data_nascita indirizzo Tipo_lavoro
14 24/04/14 Traduzione di tipi di entità debole
— 
Per ogni tipo di entità debole si costruisce una tabella avente gli
attributi dell’entità debole e quelli della relazione di possesso. La
chiave primaria sarà la combinazione della chiave parziale del tipo
di entità debole e la chiave primaria del tipo di entità proprietario.
1
IMPIEGATO
N
Persone a
carico di
PERSONA A
CARICO
SSN
Nome
Nascita
Indirizzo
Tipo_lavoro
Nome
Data_nascita
Sesso
Parentela
Impiegato
SSN
Nome
Nascita
indirizzo Tipo_lavoro
Persona a carico
SSN_I Nome
Data_nascita Sesso
Parentela
Traduzione di relazioni 1:1
— 
Ci sono tre possibili approcci:
1. 
Approccio basato su chiavi esterne: si sceglie una delle due
relazioni (quella con partecipazione totale) e si mette la chiave
esterna di una nell’altra
1
IMPIEGATO
dirige
1
DIPARTIMENTO
SSN
Nome
Nascita
Indirizzo
Tipo_lavoro
Numero
Nome
Sede
Impiegato
SSN
Nome
Nascita Indirizzo
Tipo_lavoro
num_dip
Dipartimento
Numero
Nome
Sede
15 24/04/14 Traduzione di relazioni 1:1
2.  Approccio basato sull’unica relazione fusione: si
fondono due tipi di entità e la relazione in una sola
relazione (quando entrambe le partecipazioni sono
totali)
3.  Approccio basato su relazione associazione: si crea
una relazione che contiene sia la chiave esterna
della relazione di dx sia quella della relazione di sx
(quando ci sono poche istanze della relazione 1:1
perché la partecipazione non è totale né a dx né a
sx)
Traduzione di relazioni 1:N
— 
Vengono inglobate dal lato N e si inserisce come chiave esterna la
chiave primaria della relazione dal lato 1
REGISTA
1
N
dirige
FILM
SSN
Nome
Cognome
Indirizzo
Codice
Titolo
Anno_prod
Genere
Regista
SSN
Film
Codice
Nome
Cognome
Indirizzo
Titolo Anno_prod
Genere
ID_Reg
16 24/04/14 Traduzione di relazioni N:M
— 
Si costruisce una relazione avente come chiavi esterne le chiavi
primarie delle relazioni che rappresentano i tipi di entità
partecipanti
N
IMPIEGATO
M
Lavora
su
SSN
Nome
Nascita
Indirizzo
Tipo_lavoro
PROGETTO
Ore
Codice
Nome
Sede
Impiegato
SSN
Nome
Nascita Indirizzo
Tipo_lavoro
Lavora su
SSN_I
Num_Pro
Ore
Progetto
Codice Nome
Sede
Traduzione di relazioni ternarie
— 
Si costruisce una nuova relazione avente come chiave esterna le
chiavi primarie delle relazioni che rappresentano i tipi di entità
partecipanti.
FORNITORE
Quantità
N
fornisce
PROGETTO
M
Nome
Nome_prog
P
Num_parte
PARTE
Fornitore
Nome …
Progetto
Parte
Nome_prog
…
Num_parte
…
Fornisce
Nome_F
Nome_P
Num_P
Quantità
17 24/04/14 Traduzione di specializzazione
— 
Vi sono 4 possibilità distinte
SSN
Nome
Data_nascita
Indirizzo
Tipo_lavoro
IMPIEGATO
SEGRETARIO
TECNICO
velocità_dattilografica
C
C
d
INGEGNERE
tipo
grado
Traduzione di specializzazione
1. 
L’informazione è divisa in 4 tabelle e come chiave
primaria delle tabelle relative alla specializzazione c’è
la chiave primaria di impiegato
Impiegato
SSN
Nome
Data_nascita indirizzo Tipo_lavoro
Segretario
SSN velocità_dattilografica
Tecnico
SSN grado
Ingegnere
SSN tipo
18 24/04/14 Traduzione di specializzazione
2. 
L’informazione è divisa in 3 tabelle aventi come
chiave primaria quella di impiegato e come attributi
sia i propri sia quelli di impiegato
Segretario
SSN
Nome
Data_nascita
indirizzo
Tipo_lavoro
Data_nascita
indirizzo
Tipo_lavoro
Data_nascita
indirizzo
Tipo_lavoro
velocità_dattilografica
Tecnico
SSN
Nome
grado
Ingegnere
SSN
Nome
tipo
Traduzione di specializzazione
3. 
Unica tabella impiegato avente oltre ai suoi attributi
anche quelli delle entità figlie
Impiegato
SSN
Nome
Data_nascita
indirizzo
Tipo_lavoro
grado
tipo
velocità_dattilografica
In questo modo però potrebbero esserci molti valori pari a NULL!
Però c’è solo una tabella à migliori performance
19 24/04/14 Traduzione di specializzazione
4. 
Unica tabella impiegato avente oltre ai suoi attributi
anche quelli delle entità figlie e un flag che specifica il
tipo di sottoclasse a cui si riferisce
Impiegato
SSN
Nome
…
Flag T
grado
Flag I
tipo
Flag S
velocità_dattilografica
20