29
Progettazione di una base di dati Progettazione logica (modello relazionale)

Progettazione di una base di dati Progettazione logica (modello relazionale)

Embed Size (px)

Citation preview

Page 1: Progettazione di una base di dati Progettazione logica (modello relazionale)

Progettazione di una base di dati

Progettazione logica

(modello relazionale)

Page 2: Progettazione di una base di dati Progettazione logica (modello relazionale)

studente

corsoesame(0,n) (0,n)

matricola

cognome

voto data

indirizzopersona

docente affidamento(1,n)

modalità

(1,n)

nascita comune

com provdata-nasc

CF

nome

qualifica

(1,1) (1,n)

C# titolo

Page 3: Progettazione di una base di dati Progettazione logica (modello relazionale)

Eliminazione delle gerarchie

Il modello relazionale non permette di rappresentare

direttamente le gerarchie ISA

E E3R1

E4R2E2E1

K A

A2A1

Page 4: Progettazione di una base di dati Progettazione logica (modello relazionale)

Eliminazione delle gerarchiemetodo 1: quando le operazioni non fanno distinzione tra le occorrenze delle diverse entità

E E3R1

E4R2

K A

A2

A1

Page 5: Progettazione di una base di dati Progettazione logica (modello relazionale)

Eliminazione delle gerarchiemetodo 2: quando la generalizzazione è totale (ogni occorrenza dell'entita` padre e` occorrenza di una delle entita` figlie) o ci sono operazioni che si riferiscono a occorrenze di una sola delle entità

E3R12

E4R2E2E1

K A

A2A1K

A

R12

Page 6: Progettazione di una base di dati Progettazione logica (modello relazionale)

Eliminazione delle gerarchie

metodo 3: quando la generalizzazione non è totale e/o ci sono operazioni che si riferiscono a occorrenze di una sola delle entità figlie

E E3R1

E4R2E2E1

K A

A2A1 R11 R12

Page 7: Progettazione di una base di dati Progettazione logica (modello relazionale)

studente

corsoesame(0,n) (0,n)

matricola

cognome

voto data

indirizzopersona

docente affidamento(1,n)

modalità

(1,n)

nascita comune

com provdata-nasc

CF

nome

qualifica

(1,1) (1,n)

C# titolo

Page 8: Progettazione di una base di dati Progettazione logica (modello relazionale)

studente

corsoesame

(0,n)

(0,n)

matricola

cognome

voto data

indirizzo

docente

affidamento

(1,n)

modalità

(1,n)

nascita-s comune

com prov

data-nasc CF

nome

qualifica

(1,1) (1,n)

C# titolo

cognome

indirizzo

nome

nascita-d

(1,n)

(1,1)

data-nasc

CF

Page 9: Progettazione di una base di dati Progettazione logica (modello relazionale)

Entità

Ad ogni entità corrisponde una relazione.

Gli attributi semplici (a singolo valore) dell’entità diventano attributi della relazione. L’identificatore dell’entità diventa chiave primaria della relazione

Page 10: Progettazione di una base di dati Progettazione logica (modello relazionale)

Entità… Per gli attributi composti (multivalore):

studente

giorno-nasc

mese-nasc

anno-nasc

studentegiorno-nasc

mese-nasc

anno-nasc

studente data-nasc

data-nasc

Page 11: Progettazione di una base di dati Progettazione logica (modello relazionale)

Entità

… Per gli attributi composti (multivalore):

impiegatocodice figli

impiegato

codice

figlio

nome

ha

ENTITA’ DEBOLE

Page 12: Progettazione di una base di dati Progettazione logica (modello relazionale)

Relazioni corrispondenti ad entità

• Studente(CF,Matr,Cogn,Nome,Indir,Data-nasc)

oppure

Studente(CF,Matr,Cogn,Nome,Indir,Data-nasc)• Docente(CF,Qualifica,Cogn,Nome,Indir,Data-nasc)• Corso(C#,Titolo)• Comune(Com,Prov)

Page 13: Progettazione di una base di dati Progettazione logica (modello relazionale)

Associazioni binarie one-to-one

se entrambe le entità hanno partecipazione totale

E1K1 E2R K2

(1) E1(K1, attributi di E1, attributi di E2, attibuti di R)

(1,1) (1,1)

(2) E1(K1, attributi di E1)E2(K2, K1, attributi di E2, attributi di R)

Page 14: Progettazione di una base di dati Progettazione logica (modello relazionale)

esempio

studentematr

documentoriconosc numero

(1) studente(matr, cognome, nome, tipo-doc,numero-doc, ente-ril)

(1,1) (1,1)

(2) studente(matr, cognome, nome) documento(tipo, numero, matr, ente-ril)

tipo

ente-rilcognome

nome

Page 15: Progettazione di una base di dati Progettazione logica (modello relazionale)

Associazioni binarie one-to-one

se una sola delle entità ha partecipazione totale

E1K1 E2R K2

E1(K1, attributi di E1)E2(K2, K1, attributi di E2, attributi di R)

(0,1) (1,1)

Page 16: Progettazione di una base di dati Progettazione logica (modello relazionale)

esempio

studentematr

tesiassegn

argomento

(0,1) (1,1)

studente(matr, cognome, nome) tesi(titolo, matr, argomento, data)

titolo

datacognome

nome

Page 17: Progettazione di una base di dati Progettazione logica (modello relazionale)

Associazioni binarie one-to-one

se entrambe le entità hanno partecipazione parziale

E1K1 E2R K2

E1(K1, attributi di E1)E2(K2, attributi di E2)R(K1, K2, attributi di R)

(0,1) (0,1)

Page 18: Progettazione di una base di dati Progettazione logica (modello relazionale)

esempio

studentematr

tesi disponassegn

argomento

(0,1) (0,1)

studente(matr, cognome, nome) tesidispon(titolo, argomento)

assegn(matr, titolo, data)

titolo

datacognome

nome

Page 19: Progettazione di una base di dati Progettazione logica (modello relazionale)

Associazioni binarie one-to-many

se l'entità dalla parte "many" ha partecipazione totale

E1K1 E2R K2

E1(K1, K2, attributi di E1, attributi di R)E2(K2, attributi di E2)

(1,1) (min,n)

Page 20: Progettazione di una base di dati Progettazione logica (modello relazionale)

esempio

studentematr

cittànasc

prov

(1,1) (min,1)

studente(matr, cognome, nome, città-nasc) città(nome, prov)

nome

cognomenome

Page 21: Progettazione di una base di dati Progettazione logica (modello relazionale)

Associazioni binarie one-to-many

se l'entità dalla parte "many" ha partecipazione parziale

E1K1 E2R K2(0,1) (min,n)

E1(K1, attributi di E1)E2(K2, attributi di E2)R(K1, K2, attributi di R)

Page 22: Progettazione di una base di dati Progettazione logica (modello relazionale)

esempio

studentematr

docenterelatore

cognome

(0,1) (1,n)

studente(matr, cognome, nome) relatore(matr, CF)

docente(CF, cognome)

CF

cognomenome

Page 23: Progettazione di una base di dati Progettazione logica (modello relazionale)

Associazioni binarie many-to-many

E1K1 E2R K2

E1(K1, attributi di E1)E2(K2, attributi di E2)R(K1, K2, attributi di R)

(min,n)(min,n)

Page 24: Progettazione di una base di dati Progettazione logica (modello relazionale)

esempio

studentematr

corsoesame

nome

(0,n) (0,n)

studente(matr, cognome, nome) corso(cod, nome)

esame(matr, cod, data, voto)

Cod

cognomenome datavoto

Page 25: Progettazione di una base di dati Progettazione logica (modello relazionale)

Associazioni n-arie

E1K1 E2R K2

E1(K1, attributi di E1)E2(K2, attributi di E2)E3(K3, attributi di E3)R(K1,K2,K3, attributi di R)

(min,n)(min,n)

E3 K3

(min,n)

Page 26: Progettazione di una base di dati Progettazione logica (modello relazionale)

esempio

branonome

direttoreesecuzione

cognome

orchestra(nome, num-comp)brano(nome, autore)direttore(cognome, nazionalità)esecuzione(nome-orch,nome-brano,cognome, luogo, data)

(min,n)(min,n)

orchestranome

(min,n)

autore

num-comp

nazionalitàdataluogo

Page 27: Progettazione di una base di dati Progettazione logica (modello relazionale)

Relazioni corrispondenti ad associazioni

studente corsoesame(0,n) (0,n)

matricola

cognome

voto data

indirizzo

nome

C# titolodata-nasc CF

Studente(CF,Matr,Cogn,Nome,Indir,Data-nasc,Com)Corso(C#,Titolo)Esame(Matr,C#,Data,Voto)

Page 28: Progettazione di una base di dati Progettazione logica (modello relazionale)

Relazioni corrispondenti ad associazioni

corsodocente affidamento(1,n)

modalità

(1,n)

data-nasc CF

qualifica C# titolo

cognome

indirizzo

nome

Docente(CF,Qualifica,Cogn,Nome,Indir,Data-nasc,Com)Corso(C#,Titolo)Affidamento(CF,C#,Modalità)

Page 29: Progettazione di una base di dati Progettazione logica (modello relazionale)

Schema relazionale

Studente(CF,Matr,Cogn,Nome,Indir,Data-nasc,Com)Docente(CF,Qualifica,Cogn,Nome,Indir,Data-nasc,Com)Corso(C#,Titolo)Comune(Com,Prov)

Esame(Matr,C#,Data,Voto)Affidamento(CF,C#,Modalità)