Sei sulla pagina 1di 76
Principi di Progettazione del Software 
 a.a. 2015-2016"
Principi di Progettazione del Software 

a.a. 2015-2016"

Fondamenti di basi di dati: dal modello Entità-Relazioni al modello Relazionale!

Prof. Luca Mainetti!

Università del Salento!

di basi di dati: dal modello Entità-Relazioni al modello Relazionale ! Prof. Luca Mainetti ! Università
Obiettivi della lezione"
Obiettivi della lezione"

Trasformare uno schema Entità-Relazioni in uno schema Relazionale !

Per una presentazione completa P. Atzeni, S. Ceri, S. Paraboschi, R. Torlone Basi di dati: modelli e linguaggi di interrogazione McGraw-Hill Italia, terza edizione, 2009 !

Per apprendere i rudimenti di estrazione data di database seguire il corso online http://www.w3schools.com/sql/ default.asp !

Relazione matematica, esempio"
Relazione matematica, esempio"

D 1 ={a,b} D 2 ={x,y,z} prodotto cartesiano D 1 × D 2

Una relazione

r D 1 × D 2 !

a

x

a

y

a

z

b

x

b

y

b

z

a

x

a

z

b

y

Relazione matematica, proprietà"
Relazione matematica, proprietà"

Una relazione matematica è un insieme di "ennuple " (anche dette "tuple") ordinate:!

(d 1 , …, d n ) tali che d 1 D 1 , …, d n D n !

Una relazione è un insieme; quindi: !

non c'è ordinamento fra le ennuple; !

le ennuple sono distinte !

ciascuna ennupla è ordinata: l’ i-esimo valore proviene dall’ i-esimo dominio !

Relazione matematica, esempio "
Relazione matematica, esempio
"

Partite string × string × int × int

Juve

Lazio

3

1

Lazio

Milan

2

0

Juve

Roma

0

2

Roma

Milan

0

1

Ciascuno dei domini ha due ruoli diversi, distinguibili attraverso la posizione:!

La struttura è posizionale !

Struttura non posizionale "
Struttura non posizionale
"

A ciascun dominio si associa un nome (attributo), che ne descrive il "ruolo"

Casa

Fuori RetiCasa RetiFuori

Juve

Lazio

3

1

Lazio

Milan

2

0

Juve

Roma

0

2

Roma

Milan

0

1

Tabelle e relazioni"
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 !

Il modello è basato su valori !

i riferimenti fra dati in relazioni diverse sono rappresentati per mezzo di valori dei domini che compaiono nelle ennuple!

studenti

Matricola Cognome

Nome

Data di nascita

 

6554

Rossi

Mario

05/12/1978

8765

Neri

Paolo

03/11/1976

9283

Verdi

Luisa

12/11/1979

3456

Rossi

Maria

01/02/1978

esami

Studente

Voto

Corso

 
 

3456

30

04

3456

24

02

9283

28

01

6554

26

01

corsi

Codice

Titolo

Docente

01

Analisi

Mario

02

Chimica

Bruni

04

Chimica

Verdi

Il modello Relazionale "

8"

Luca Mainetti"

Mario 02 Chimica Bruni 04 Chimica Verdi Il modello Relazionale " 8 " Luca Mainetti "
studenti Matricola Cognome Nome Data di nascita 6554 Rossi Mario 05/12/1978 8765 Neri Paolo 03/11/1976
studenti
Matricola Cognome
Nome
Data di nascita
6554
Rossi
Mario
05/12/1978
8765
Neri
Paolo
03/11/1976
9283
Verdi
Luisa
12/11/1979
3456
Rossi
Maria
01/02/1978
esami
Studente
Voto
Corso
30
24
28
26
corsi
Codice
Titolo
Docente
01
Analisi
Mario
02
Chimica
Bruni
04
Chimica
Verdi
Il modello Relazionale "
9"
Luca Mainetti"
Vantaggi della struttura basata su valori"
Vantaggi della struttura basata su valori"

Indipendenza dalle strutture fisiche che possono cambiare dinamicamente !

Si rappresenta solo ciò che è rilevante dal punto di vista dell’applicazione !

L’utente finale vede gli stessi dati dei programmatori !

I dati sono portabili più facilmente da un sistema ad un altro !

I riferimenti tra dati realizzati con link sono direzionali !

Schema di relazione e di base dati"
Schema di relazione e di base dati"

Schema di relazione: un nome R con un insieme di attributi A 1 ,

R(A 1 ,

,

A n )"

, A n :!

Schema di base di dati: insieme di schemi di relazione: !

R = {R 1 (X 1 ),

, R k (X k )}"

Vincoli di integrità"
Vincoli di integrità"

Esistono istanze di basi di dati che, pur sintatticamente corrette, non rappresentano informazioni possibili per l’applicazione di interesse !

Una base di dati "scorretta""
Una base di dati "scorretta""

Esami

Studente

Voto

Lode

Corso

276545

32

32

 

01

276545

30

e lode

02

787643

27

27

e

e

lode

lode

03

739430

739430

24

04

Studenti

Matricola

Cognome

Nome

276545

Rossi

Mario

787643

787643

Neri

Piero

787643

787643

Bianchi

Luca

Vincolo di integrità"
Vincolo di integrità"

Proprietà che deve essere soddisfatta dalle istanze che rappresentano informazioni corrette per l’applicazione !

Un vincolo può essere soddisfatto (vero) oppure non soddisfatto (falso) !

Vincoli di integrità, perché?"
Vincoli di integrità, perché?"

Descrizione più accurata della realtà ! Contributo alla “qualità dei dati” ! Utili nella progettazione (vedremo) ! Usati dai DBMS nella esecuzione delle interrogazioni!

Tipi di vincoli"
Tipi di vincoli"

Vincoli intrarelazionali !

vincoli su valori (o di dominio) ! vincoli di ennupla !

Vincoli interrelazionali !

Esempi di vari tipi di vincoli violati"
Esempi di vari tipi di vincoli violati"

Esami

Studente

Voto

Lode

Corso

276545

32

32

 

01

276545

30

e lode

02

787643

27

27

e

e

lode

lode

03

739430

739430

24

04

Studenti

Matricola

Cognome

Nome

276545

Rossi

Mario

787643

787643

Neri

Piero

787643

787643

Bianchi

Luca

Vincoli di ennupla "
Vincoli di ennupla "

Esprimono condizioni sui valori di ciascuna ennupla, indipendentemente dalle altre ennuple !

Caso particolare !

vincoli di dominio: coinvolgono un solo attributo !

Vincoli di ennupla, esempio"
Vincoli di ennupla, esempio"

Stipendi

Impiegato

Lordo

Ritenute

Netto

Rossi

55.000

12.500

42.500

Neri

45.000

10.000

35.000

Bruni

47.000

11.000

 

39.000

Lordo = (Ritenute + Netto)

Identificazione delle ennuple"
Identificazione delle ennuple"

Matricola

Cognome

Nome

Corso

Nascita

27655

Rossi

Mario

Ing Inf Ing Inf Ing Mecc Ing Inf Ing Mecc

5/12/78

78763

Rossi

Mario

3/11/76

65432

Neri

Piero

10/7/79

87654

Neri

Mario

3/11/76

67653

Rossi

Piero

5/12/78

Non ci sono due ennuple con lo stesso valore sull’attributo Matricola !

Non ci sono due ennuple uguali su tutti e tre gli attributi Cognome, Nome e Data di Nascita !

Chiave "
Chiave "

Insieme di attributi che identificano le ennuple di una relazione !

Formalmente !

un insieme K di attributi è superchiave per r se r non contiene

due ennuple distinte t 1 e t 2 con

t 1 [K] = t 2 [K]

!

K è chiave per r se è una superchiave minimale per r (cioè non contiene un’altra superchiave) !

Una chiave"
Una chiave"

Matricola

Cognome

Nome

Corso

Nascita

27655

Rossi

Mario

Ing Inf Ing Inf Ing Mecc Ing Inf Ing Mecc

5/12/78

78763

Rossi

Mario

3/11/76

65432

Neri

Piero

10/7/79

87654

Neri

Mario

3/11/76

67653

Rossi

Piero

5/12/78

Matricola è una chiave:!

è superchiave ! contiene un solo attributo e quindi è minimale !

Un'altra chiave"
Un'altra chiave"

Matricola

Cognome

Nome

Corso

Nascita

27655

78763

Rossi

Rossi

Rossi

Rossi Rossi

Mario Mario

Mario

Mario

Mario

Ing Inf Ing Inf Ing Mecc Ing Inf Ing Mecc

5/12/78 5/12/78

3/11/76

3/11/76

65432

Neri

Piero

10/7/79

87654

Neri

 

3/11/76

3/11/76

67653

Rossi Rossi

Piero

5/12/78 5/12/78

Cognome, Nome, Nascita è un’altra chiave:!

è superchiave ! minimale !

Esistenza delle chiavi"
Esistenza delle chiavi"

Una relazione non può contenere ennuple distinte ma uguali !

Ogni relazione ha come superchiave l’insieme degli attributi su cui è definita !

Quindi ha (almeno) una chiave !

Importanza delle chiavi"
Importanza delle chiavi"

L’esistenza delle chiavi garantisce l’accessibilità a ciascun dato della base di dati !

Le chiavi permettono di correlare i dati in relazioni diverse !

Questa è una conseguenza del fatto che il modello relazionale è basato su valori !

Chiave primaria"
Chiave primaria"

Chiave su cui non sono ammessi valori nulli ! Notazione: sottolineatura !

Matricola Cognome Nome

Corso

Nascita

86765

NULL

Mario

Ing Inf

5/12/78

78763

Rossi

Mario

Ing Civile

3/11/76

65432

Neri

Piero

Ing Mecc

10/7/79

87654

Neri

Mario

Ing Inf

NULL

43289

Neri

Mario

NULL

5/12/78

Il modello Relazionale "

26"

Luca Mainetti"

Inf NULL 43289 Neri Mario NULL 5/12/78 Il modello Relazionale " 2 6 " Luca Mainetti
Integrità referenziale"
Integrità referenziale"

Informazioni in relazioni diverse sono correlate attraverso valori comuni !

In particolare, valori delle chiavi (primarie) !

Le correlazioni devono essere "coerenti" !

Infrazioni

Codice

Data

Vigile

Prov

Numero

34321

53524

64521

73321

1/2/95

4/3/95

5/4/96

5/2/98

3987

3987

3987

3295

3295

3295

3295

3295

3295

9345

9345

9345

MI

TO

PR

PR

39548K

E39548

839548

839548

Vigili

Matricola

Cognome

Nome

 
 
 

3987

3987

Rossi

Luca

3295

3295

Neri

Piero

9345

9345

Neri

Mario

7543

Mori

Gino

   
   

Il modello Relazionale "

28"

Luca Mainetti"

Infrazioni

Codice

Data

Vigile

Prov

Numero

34321

53524

64521

73321

1/2/95

4/3/95

5/4/96

5/2/98

3987

3295

3295

9345

MI

MI

TO

TO

PR

PR

PR

PR

39548K

39548K

E39548

E39548

839548

839548

839548

839548

Auto

Prov

Numero

Cognome

Nome

MI

MI

TO

TO

PR

PR

39548K

39548K

E39548

E39548

839548

839548

Rossi

Rossi

Neri

Mario

Mario

Luca

Requisiti della base di dati

Progettazione concettuale
Progettazione concettuale
Progettazione concettuale
Progettazione concettuale

Progettazione

concettuale

Progettazione concettuale
Progettazione concettuale
Progettazione concettuale

Schema concettuale

Progettazione

logica

Dove si posiziona la progettazione logica nel processo di sviluppo di una base dati !

logica nel processo di sviluppo di una base dati ! Schema logico Progettazione fisica Schema fisico

Schema logico

Progettazione

fisica

Schema fisico

Il modello Relazionale "

30"

Luca Mainetti"

dati ! Schema logico Progettazione fisica Schema fisico Il modello Relazionale " 3 0 " Luca
Progettazione logica"
Progettazione logica"

Obiettivo della progettazione logica !

"tradurre" lo schema concettuale in uno schema logico che rappresenti gli stessi dati in maniera corretta ed efficiente !

Ingresso !

schema concettuale !

(informazioni sul carico applicativo) !

Uscita !

schema logico !

Osservazione!

uno schema E-R ristrutturato non è (più) uno schema concettuale nel senso stretto del termine !

Carico applicativo Schema E-R Ristrutturazione dello schema E-R Schema E-R ristrutturato Traduzione nel modello logico

Carico applicativo

Schema E-R

Ristrutturazione dello schema E-R

applicativo Schema E-R Ristrutturazione dello schema E-R Schema E-R ristrutturato Traduzione nel modello logico

Schema E-R ristrutturato

Traduzione nel modello logico

E-R Schema E-R ristrutturato Traduzione nel modello logico Schema logico Il modello Relazionale " 32 "

Schema

logico

Cognome

Cognome (0,1) Direzione (0,1) (1,N) Afferenza (0,1) Data (1,1) Telefono (1,N) Dipartimento (1,1) Composizione (1,N)

(0,1)

Direzione
Direzione
(0,1) (1,N) Afferenza (0,1)
(0,1)
(1,N)
Afferenza
(0,1)

Data

(1,1)

Telefono

Direzione (0,1) (1,N) Afferenza (0,1) Data (1,1) Telefono (1,N) Dipartimento (1,1) Composizione (1,N) Sede Città

(1,N)

Dipartimento

(1,1) Composizione (1,N)
(1,1)
Composizione
(1,N)

Sede

Telefono (1,N) Dipartimento (1,1) Composizione (1,N) Sede Città Via Indirizzo CAP Impiegato Nome Codice (0,N)

Città

Via

Indirizzo
Indirizzo

CAP

Impiegato

Composizione (1,N) Sede Città Via Indirizzo CAP Impiegato Nome Codice (0,N) Partecipazione (1,N) Progetto Budget Nome

Nome

Codice

(0,N)

Partecipazione
Partecipazione

(1,N)

Progetto

Impiegato Nome Codice (0,N) Partecipazione (1,N) Progetto Budget Nome Il modello Relazionale " 3 3 "
Impiegato Nome Codice (0,N) Partecipazione (1,N) Progetto Budget Nome Il modello Relazionale " 3 3 "

Budget

Nome

Il modello Relazionale "

33"

Luca Mainetti"

Nome Codice (0,N) Partecipazione (1,N) Progetto Budget Nome Il modello Relazionale " 3 3 " Luca
Attività della ristrutturazione"
Attività della ristrutturazione"

Analisi delle ridondanze ! Eliminazione delle generalizzazioni ! Partizionamento/accorpamento di entità e relazioni ! Scelta degli identificatori primari !

Analisi delle ridondanze"
Analisi delle ridondanze"

Una ridondanza in uno schema E-R è una informazione significativa ma derivabile da altre !

In questa fase si decide se eliminare le ridondanze eventualmente presenti o mantenerle !

Ridondanze !

vantaggi !

semplificazione delle interrogazioni !

svantaggi !

appesantimento degli aggiornamenti ! maggiore occupazione di spazio fisico !

Forme di ridondanza in uno schema E-R"
Forme di ridondanza in uno schema E-R"

Attributi derivabili !

da altri attributi della stessa entità (o relazione) ! da attributi di altre entità (o relazioni)!

Relazioni derivabili dalla composizione di altre relazioni in presenza di cicli !

Attributo derivabile"
Attributo derivabile"

Importo netto

Impiegato Il modello Relazionale " 37"
Impiegato
Il modello Relazionale "
37"

IVA

Importo lordo

Luca Mainetti"

derivabile" Importo netto Impiegato Il modello Relazionale " 37" IVA Importo lordo Luca Mainetti "
Attributo derivabile da altra entità"
Attributo derivabile da altra entità"

Importo totale

Prezzo

(1,N) (1,N) Acquisto Composizione Prodotto
(1,N)
(1,N)
Acquisto
Composizione
Prodotto
Ridondanza dovuta a ciclo"
Ridondanza dovuta a ciclo"

Studente

(0,N)

Frequenza
Frequenza

(1,N)

Corso

Insegnamento
Insegnamento

(1,1)

(1,1)

Professore

39"

(0,N)

Docenza
Docenza

(1,N)

Il modello Relazionale "

Luca Mainetti"

Insegnamento (1,1) (1,1) Professore 3 9 " (0,N) Docenza (1,N) Il modello Relazionale " Luca Mainetti
Analisi di una ridondanza"
Analisi di una ridondanza"

Numero abitanti

Persona Residenza Città
Persona
Residenza
Città
Analisi di una ridondanza (cont.)"
Analisi di una ridondanza (cont.)"

Operazione 1 !

memorizza una nuova persona con la relativa città di residenza (500 volte al giorno)!

Operazione 2 !

stampa tutti i dati di una città (incluso il numero di abitanti) (2 volte al giorno) !

Concetto

Tipo

Volume

Città

E

200

Persona

E

1000000

Residenza

R

1000000

E = entità

"R = relazione "

Presenza di ridondanza"
Presenza di ridondanza"

Operazione 1

Concetto

Costrutto

Accessi

Tipo

Persona

Entità

1

S

Residenza

Relazione

1

S

Città

Entità

1

L

Città

Entità

1

S

Operazione 2

Concetto

Costrutto

Accessi

Tipo

Città

Entità

1

L

S = operazione di scrittura

"L = operazione di lettura "

Assenza di ridondanza"
Assenza di ridondanza"

Operazione 1

Concetto

Costrutto

Accessi

Tipo

Persona

Entità

1

S

Residenza

Relazione

1

S

Operazione 2

Concetto

Costrutto

Accessi

Tipo

Città

Entità

1

L

Residenza

Relazione

5000

L

Analisi di una ridondanza (cont.)"
Analisi di una ridondanza (cont.)"

Presenza di ridondanza !

costi !

operazione 1: 1.500 accessi in scrittura e 500 accessi in lettura al giorno ! operazione 2: trascurabile !

contiamo doppi gli accessi in scrittura !

totale di 3.500 accessi al giorno !

Assenza di ridondanza !

costi !

operazione 1: 1.000 accessi in scrittura ! operazione 2: 10.000 accessi in lettura al giorno !

contiamo doppi gli accessi in scrittura !

totale di 12.000 accessi al giorno !

Eliminazione delle gerarchie"
Eliminazione delle gerarchie"

Il modello relazionale non può rappresentare direttamente le generalizzazioni !

Entità e relazioni sono invece direttamente rappresentabili !

Si eliminano perciò le gerarchie, sostituendole con entità e relazioni !

Ci sono tre differenti possibilità !

accorpamento delle figlie della generalizzazione nel genitore ! accorpamento del genitore della generalizzazione nelle figlie ! sostituzione della generalizzazione con relazioni !

A01 A02 E0 R1 E3 E1 E2 R2 A11 A21 E4
A01
A02
E0
R1
E3
E1
E2
R2
A11
A21
E4
A01 A02 (0,1) A11 E0 R1 E3 A21 (0,1) TIPO (0, ) R2 E4
A01
A02
(0,1)
A11
E0
R1
E3
A21
(0,1)
TIPO
(0, )
R2
E4

Accorpamento delle figlie della generalizzazione nel genitore "

A01 A02 E0 R1 E3 E1 E2 R2 A11 A21 E4
A01
A02
E0
R1
E3
E1
E2
R2
A11
A21
E4
R11 R12 E3 E1 E2 R2 A01 A11 A02 A01 A21 A02 E4
R11
R12
E3
E1
E2
R2
A01
A11
A02
A01
A21
A02
E4

Accorpamento del genitore della generalizzazione nelle figlie "

A01 A02 E0 R1 E3 E1 E2 R2 A11 A21 E4
A01
A02
E0
R1
E3
E1
E2
R2
A11
A21
E4
A01 A02 E0 R1 E3 (0,1) (0,1) RG1 RG2 (1,1) (1,1) E1 E2 R2 A11
A01
A02
E0
R1
E3
(0,1)
(0,1)
RG1
RG2
(1,1)
(1,1)
E1
E2
R2
A11
A21
E4

Sostituzione della generalizzazione con relazioni"

Eliminazione delle gerarchie"
Eliminazione delle gerarchie"

La scelta fra le alternative si può fare con metodo simile a quello visto per l'analisi delle ridondanze (però non basato solo sul numero degli accessi) !

E’ possibile seguire alcune semplici regole generali !

soluzione 1: conviene se gli accessi al padre e alle figlie sono contestuali !

soluzione 2: conviene se gli accessi alle figlie sono distinti !

soluzione 3: conviene se gli accessi alle entità figlie sono separati dagli accessi al padre !

Partizionamento/accorpamento di entità e relazioni"
Partizionamento/accorpamento di entità e relazioni"

Ristrutturazioni effettuate per rendere più efficienti le operazioni in base a un semplice principio !

Gli accessi si riducono !

separando attributi di un concetto che vengono acceduti separatamente !

raggruppando attributi di concetti diversi acceduti insieme !

Casi principali !

partizionamento di entità !

partizionamento di relazioni !

eliminazione di attributi multivalore !

accorpamento di entità/relazioni !

Codice

Codice Impiegato Cognome Livello Indirizzo Stipendio Data nascita Ritenute Il modello Relazionale " 54 " Luca
Impiegato
Impiegato
Impiegato

Impiegato

Cognome

Codice Impiegato Cognome Livello Indirizzo Stipendio Data nascita Ritenute Il modello Relazionale " 54 " Luca
Codice Impiegato Cognome Livello Indirizzo Stipendio Data nascita Ritenute Il modello Relazionale " 54 " Luca

Livello

Indirizzo

Codice Impiegato Cognome Livello Indirizzo Stipendio Data nascita Ritenute Il modello Relazionale " 54 " Luca
Codice Impiegato Cognome Livello Indirizzo Stipendio Data nascita Ritenute Il modello Relazionale " 54 " Luca
Codice Impiegato Cognome Livello Indirizzo Stipendio Data nascita Ritenute Il modello Relazionale " 54 " Luca
Codice Impiegato Cognome Livello Indirizzo Stipendio Data nascita Ritenute Il modello Relazionale " 54 " Luca

Stipendio

Data

nascita

Ritenute

Cognome Codice Stipendio Livello (1,1) (1,1) Dati Dati R anagrafici lavorativi
Cognome
Codice
Stipendio
Livello
(1,1)
(1,1)
Dati
Dati
R
anagrafici
lavorativi

Indirizzo

Data

nascita

Ritenute

Partizionamento di un’entità "

Nome

Nome Agenzia Indirizzo Città (1,N) Telefono Il modello Relazionale " 56 " Luca Mainetti "
Agenzia
Agenzia
Agenzia

Agenzia

Nome Agenzia Indirizzo Città (1,N) Telefono Il modello Relazionale " 56 " Luca Mainetti "

Indirizzo

Nome Agenzia Indirizzo Città (1,N) Telefono Il modello Relazionale " 56 " Luca Mainetti "
Nome Agenzia Indirizzo Città (1,N) Telefono Il modello Relazionale " 56 " Luca Mainetti "

Città

(1,N)

Telefono

Città Nome Numero (1,N) (1,1) Agenzia Utenza Telefono
Città
Nome
Numero
(1,N)
(1,1)
Agenzia
Utenza
Telefono

Indirizzo

Partizionamento di un’entità "

Codice

Cognome fiscale Interno Indirizzo (0,1) (1,1) Persona Intestazione Appartamento
Cognome
fiscale
Interno
Indirizzo
(0,1)
(1,1)
Persona
Intestazione
Appartamento

Indirizzo

Data

nascita

Codice

fiscale

Codice fiscale Persona Cognome Interno Indirizzo (0,1) Data nascita Indirizzo (0,1) Accorpamento di un’entità "
Persona
Persona
Persona

Persona

Cognome

Codice fiscale Persona Cognome Interno Indirizzo (0,1) Data nascita Indirizzo (0,1) Accorpamento di un’entità "
Codice fiscale Persona Cognome Interno Indirizzo (0,1) Data nascita Indirizzo (0,1) Accorpamento di un’entità "
Codice fiscale Persona Cognome Interno Indirizzo (0,1) Data nascita Indirizzo (0,1) Accorpamento di un’entità "

Interno

Indirizzo

(0,1)

Codice fiscale Persona Cognome Interno Indirizzo (0,1) Data nascita Indirizzo (0,1) Accorpamento di un’entità "
Codice fiscale Persona Cognome Interno Indirizzo (0,1) Data nascita Indirizzo (0,1) Accorpamento di un’entità "

Data

nascita

Indirizzo

(0,1)

Accorpamento di un’entità "

Ruolo Cognome Città Nome (1,N) (1,N) Giocatore Composizione Squadra (0,1) Data Data
Ruolo
Cognome
Città
Nome
(1,N)
(1,N)
Giocatore
Composizione
Squadra
(0,1)
Data
Data

acquisto

cessione

Data

acquisto (1,1) Ruolo (1,N) Comp. Nome attuale Giocatore Squadra Comp. passata (1,N) (1,N) Cognome Città
acquisto
(1,1)
Ruolo
(1,N)
Comp.
Nome
attuale
Giocatore
Squadra
Comp.
passata
(1,N)
(1,N)
Cognome
Città
Data
Data
Partizionamento di"
una relazione "
acquisto
cessione
Scelta degli identificatori primari"
Scelta degli identificatori primari"

Operazione indispensabile per la traduzione nel modello relazionale !

Criteri !

assenza di opzionalità !

semplicità !

utilizzo nelle operazioni più frequenti o importanti !

Se nessuno degli identificatori soddisfa i requisiti visti? !

si introducono nuovi attributi (codici) contenenti valori speciali generati appositamente per questo scopo !

Traduzione verso il modello relazionale"
Traduzione verso il modello relazionale"

Idea di base !

le entità diventano relazioni sugli stessi attributi (mapping delle entità) !

le relazioni diventano relazioni sugli identificatori delle entità coinvolte, più gli attributi propri (mapping delle relazioni) !

Durante il mapping delle relazioni bisogna distinguere tra distinguere tra !

relazioni molti a molti ! relazioni ricorsive ! relazioni n-arie ! relazioni uno a molti ! relazioni uno a uno !

Mapping delle entità"
Mapping delle entità"

Conviene inserire in ogni tabella un campo chiave apposito (un identificatore, tipicamente numerico, gestito dal DBMS) ! E’ preferibile non utilizzare i campi applicativi per la chiave primaria, ma utilizzarli come meccanismi secondari di identificazione delle informazioni ! Attributi BLOB (Binary Long Object) !

contengono valori di grandi dimensioni (immagini, video, ecc.) ! possono essere memorizzati internamente alla base dati oppure esternamente (cioè nel file system)!

internamente ! nella stessa tabella o in una tabella separata ! esternamente ! con memorizzazione esplicita del percorso nella tabella o con un legame implicito basato su convenzioni nei nomi dei file !

Il modello Relazionale "

64"

Luca Mainetti"

legame implicito basato su convenzioni nei nomi dei file ! Il modello Relazionale " 6 4
Mapping delle entità (cont.)"
Mapping delle entità (cont.)"

Nome

Mapping delle entità (cont.)" Nome Giocatore Ruolo VideoPres Giocatore( Nome , Ruolo) VideoPres(NomeGiocatore ,
Giocatore
Giocatore
Giocatore
Giocatore
Giocatore
Giocatore
Giocatore

Giocatore

Giocatore
Giocatore
Giocatore
Giocatore
Giocatore
Giocatore
Giocatore
Mapping delle entità (cont.)" Nome Giocatore Ruolo VideoPres Giocatore( Nome , Ruolo) VideoPres(NomeGiocatore ,
Mapping delle entità (cont.)" Nome Giocatore Ruolo VideoPres Giocatore( Nome , Ruolo) VideoPres(NomeGiocatore ,

Ruolo

VideoPres

Giocatore(Nome, Ruolo) VideoPres(NomeGiocatore, Video)

Mapping delle relazioni molti a molti"
Mapping delle relazioni molti a molti"

Si introduce una tabella dedicata che rappresenta la relazione (tabella ponte) !

La tabella ponte contiene gli attributi chiave delle due entità che partecipano alla relazione, più gli attributi propri !

La chiave primaria della tabella ponte è composta dalle colonne con le chiavi primarie delle due entità che partecipano alla relazione !

Mapping delle relazioni molti a molti (cont.)"
Mapping delle relazioni molti a molti (cont.)"
Cognome Matricola Data inizio Codice Nome (0,N) (1,N) Impiegato Partecipazione Progetto
Cognome
Matricola
Data inizio
Codice
Nome
(0,N)
(1,N)
Impiegato
Partecipazione
Progetto

Stipendio

Budget

Impiegato(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, e fra Codice in Partecipazione e (la chiave di) Progetto !

Mapping delle relazioni ricorsive"
Mapping delle relazioni ricorsive"

Si introduce una tabella che rappresenta la relazione !

In tale tabella vengono inseriti attributi che permettono di memorizzare esplicitamente i ruoli della relazione, più gli attributi propri !

La chiave primaria di questa tabella è composta dagli attributi che rappresentano i ruoli !

Mapping delle relazioni ricorsive (cont.)"
Mapping delle relazioni ricorsive (cont.)"
Quantità (0,N) (0,N) Composizione Composto Componente Prodotto Costo Nome Codice
Quantità
(0,N)
(0,N)
Composizione
Composto
Componente
Prodotto
Costo
Nome
Codice

Prodotto(Codice, Nome, Costo) Composizione(Composto, Componente, Quantità)

Mapping delle relazioni n-arie"
Mapping delle relazioni n-arie"

Si introduce una tabella dedicata che rappresenta la relazione n-aria !

Tale tabella contiene gli attributi chiave delle n entità che partecipano alla relazione, più gli attributi propri !

La chiave primaria di questa tabella può essere composta dalle colonne con le chiavi primarie delle n entità che partecipano alla relazione !

Mapping delle relazioni n-arie (cont.)"
Mapping delle relazioni n-arie (cont.)"
Quantità Partita IVA Genere Codice Nome (0,N) (1,N) Fornitore Fornitura Prodotto (1,N) Nome Dipartimento
Quantità
Partita IVA
Genere
Codice
Nome
(0,N)
(1,N)
Fornitore
Fornitura
Prodotto
(1,N)
Nome
Dipartimento
Telefono

Fornitore(PartitaIVA, Nome) Prodotto(Codice, Genere) Dipartimento(Nome, Telefono) Fornitura(Fornitore, Prodotto, Dipartimento, Quantità)

Mapping delle relazioni uno a molti"
Mapping delle relazioni uno a molti"

Si introduce una colonna alla tabella dell’entità che partecipa alla relazione con molteplicità massima pari a 1. In tale colonna si inserisce l’attributo chiave dell’altra tabella (molteplicità massima pari a n). Inoltre si aggiungono gli attributi propri della relazione !

Come nel caso del mapping di relazioni molti a molti, può essere aggiunto un vincolo di integrità referenziale tra le due tabelle !

Mapping delle relazioni uno a molti (cont.)"
Mapping delle relazioni uno a molti (cont.)"
Data Cognome Ingaggio nascita Nome Città (1,1) (0,N) Giocatore Contratto Squadra
Data
Cognome
Ingaggio
nascita
Nome
Città
(1,1)
(0,N)
Giocatore
Contratto
Squadra

Ruolo

Colori sociali

Giocatore(Cognome, DataNasc, Ruolo, Squadra, Ingaggio) Squadra(Nome, Città, ColoriSociali)

Con vincolo di integrità referenziale fra Squadra in Giocatore e (la chiave di) Squadra !

Mapping delle relazioni uno a uno"
Mapping delle relazioni uno a uno"

Esistono le seguenti possibilità !

fondere tutto in un’unica tabella !

eseguire il mapping come se fosse un caso particolare di relazione uno a molti, fondendo quindi la relazione (i suoi attributi propri) verso una delle due entità che vi partecipano !

Mapping delle relazioni uno a uno (cont.)"
Mapping delle relazioni uno a uno (cont.)"
Data inizio Cognome Codice Sede Nome (0,1) (1,1) Direttore Direzione Dipartimento
Data inizio
Cognome
Codice
Sede
Nome
(0,1)
(1,1)
Direttore
Direzione
Dipartimento

Stipendio

Telefono

Direttore (Codice, Cognome, Stipendio) Dipartimento (Nome, Sede, Telefono, CodDir, InizioD)

Con vincoli di integrità referenziale fra CodDir in Dipartimento e (la chiave di) Direttore !

Documento di progetto"
Documento di progetto"

Con l’aggiunta del modello logico, il documento di progetto ora può assumere la sua forma finale !

Indice del documento di progetto !

1. Descrizione del dominio ! 2. Requisiti della base dati e dell’applicazione ! 3. Schema concettuale della base dati !

3.1 Diagramma E-R (opportunamente descritto e commentato) ! 3.2 Dizionario dei dati !

4. Schema logico della base dati !

4.1 Schemi di relazione (opportunamente descritti e commentati) ! 4.2 Report della struttura delle tabelle implementate nel DBMS prescelto !