Atzeni, Ceri, Paraboschi, Torlone
Basi di dati
McGraw-Hill, 1999
Progettazione logica
Dati di ingresso e uscita
Obiettivo della
progettazione logica
• "tradurre" lo schema concettuale in uno
schema logico che rappresenti gli stessi dati
in maniera corretta ed efficiente
Non si tratta di una pura e semplice
traduzione
• Ingresso:
•
•
•
schema concettuale
informazioni sul carico applicativo
modello logico
• Uscita:
•
•
• alcuni aspetti non sono direttamente
rappresentabili
• è necessario considerare le prestazioni
schema logico
documentazione associata
Carico
applicativo
Schema E-R
Ristrutturazione dello
schema E-R
Modello
logico
Schema E-R
ristrutturato
Traduzione nel
modello logico
Schema
logico
Ristrutturazione schema E-R
• Motivazioni:
• semplificare la traduzione
• "ottimizzare" le prestazioni
• Osservazione:
• uno schema E-R ristrutturato non è (più) uno
schema concettuale nel senso stretto del
termine
1
Attività della ristrutturazione
•
•
•
•
Analisi delle ridondanze
Eliminazione delle generalizzazioni
Partizionamento/accorpamento di entità
e relationship
Scelta degli identificatori primari
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
Forme di ridondanza
in uno schema E-R
Ridondanze
• Vantaggi
• semplificazione delle interrogazioni
• Svantaggi
• appesantimento degli aggiornamenti
• maggiore occupazione di spazio
• 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 da
altra entità
Attributo derivabile
Importo netto
Importo totale
Prezzo
(1,N)
Impiegato
IVA
Acquisto
(1,N)
Composizione
Prodotto
Importo lordo
2
Analisi di una ridondanza
Studente
(0,N)
Ridondanza dovuta
a ciclo
Frequenza
(1,N)
Corso
(1,1)
Numero abitanti
(0,N)
Docenza
(1,N)
Persona
Residenza
Città
Insegnamento
(1,1)
Professore
Attività della ristrutturazione
•
•
•
•
Analisi delle ridondanze
Eliminazione delle generalizzazioni
Partizionamento/accorpamento di entità
e relazioni
Scelta degli identificatori primari
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
A01
A02
Tre possibilità
E0
1. accorpamento delle figlie della
generalizzazione nel genitore
2. accorpamento del genitore della
generalizzazione nelle figlie
3. sostituzione della generalizzazione con
relazioni
R1
E1
E2
A11
A21
E3
R2
E4
3
A01
A02
A01
A02
(0,1)
A11
E0
A21
E3
R1
E0
R1
E3
(0,1)
TIPO
(0,..)
R2
E4
E1
E2
A11
A21
A01
R2
E4
A02
R11
R12
E3
E1
E2
R2
A01 A11 A02
A01 A21 A02
A01
E4
E0
R1
E1
E2
A11
A21
E3
R2
E4
A02
E0
R1
(0,1)
(0,1)
(1,1)
(1,1)
RG1
E3
RG2
E1
E2
A11
A21
R2
• 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)
• è possibile seguire alcune semplici regole generali
E4
4
A01
1. conviene se gli accessi al padre e alle figlie sono
contestuali
2. conviene se gli accessi alle figlie sono distinti
3. conviene se gli accessi alle entità figlie sono separati
dagli accessi al padre
•
A02
(0,1)
A11
E0
TIPO
R1
(0,1)
RG2
(1,1)
sono anche possibili soluzioni “ibride”, soprattutto in
gerarchie a più livelli
E2
A21
Attività della ristrutturazione
•
•
•
•
Analisi delle ridondanze
Eliminazione delle generalizzazioni
Partizionamento/accorpamento di entità
e relazioni
Scelta degli identificatori primari
E3
R2
E4
• 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
Ristrutturazioni, casi principali
Cognome
Codice
Livello
• partizionamento verticale di entità
• partizionamento orizzontale di relationship
• eliminazione di attributi multivalore
• accorpamento di entità/ relationship
Indirizzo
Impiegato
Data
nascita
Stipendio
Ritenute
5
Stipendio
Cognome Codice
Indirizzo
(1,1)
(1,1)
Dati
anagrafici
Nome
Livello
Dati
lavorativi
R
Città
Agenzia
Telefono
(1,N)
Indirizzo Data
nascita
Città
Ritenute
Nome
Numero
(1,N)
Agenzia
Utenza
Interno Indirizzo
(0,1)
Telefono
Persona
Indirizzo
Codice
fiscale
(1,1)
Intestazione
Ruolo Cognome
(1,N)
Giocatore
Persona
Indirizzo
(0,1)
Appartamento
Data
nascita
Interno
(0,1)
Indirizzo
Data
nascita
Codice
fiscale
(1,1)
Indirizzo
Cognome
Cognome
Città
(1,N)
Composizione
Data
acquisto
Nome
Squadra
(0,1)
Data
cessione
6
Data
acquisto
Ruolo
(1,1)
Attività della ristrutturazione
Comp.
attuale
(1,N)
Giocatore
Cognome
Nome
Squadra
(1,N)
Comp.
passata
Data
acquisto
(1,N)
Città
• Analisi delle ridondanze
• Eliminazione delle generalizzazioni
• Partizionamento/accorpamento di entità e
relazioni
• Scelta degli identificatori primari
Data
cessione
Scelta degli identificatori principali
• operazione indispensabile per la traduzione nel
modello relazionale
• Criteri
• assenza di opzionalità
• semplicità
• utilizzo nelle operazioni più frequenti o
importanti
Traduzione verso il
modello relazionale
Se nessuno degli identificatori soddisfa i
requisiti visti?
Si introducono nuovi attributi (codici)
contenenti valori speciali generati
appositamente per questo scopo
Entità e relationship molti a molti
Cognome Matricola
• idea di base:
• le entità diventano relazioni sugli stessi
attributi
• le associazioni (ovvero le relazioni E-R)
diventano relazioni sugli identificatori delle
entità coinvolte (più gli attributi propri)
Data inizio
(0,N)
Impiegato
Codice
Nome
(1,N)
Partecipazione
Progetto
Stipendio
Budget
Impiegato(Matricola, Cognome, Stipendio)
Progetto(Codice, Nome, Budget)
Partecipazione(Matricola, Codice, DataInizio)
7
Entità e relationship molti a molti
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
•
Codice in Partecipazione e (la chiave di) Progetto
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)
Relationship n-arie
Relationship ricorsive
Quantità
(0,N)
Composizione
Nome
(0,N)
Fornitore
Composto
Componente
Prodotto
Quantità
Partita IVA
(0,N)
Nome
(1,N)
Codice
Composizione(Composto, Componente, Quantità)
Relationship uno a molti
Data
nascita
(1,1)
Giocatore
Ruolo
Ingaggio
Telefono
Fornitore(PartitaIVA, Nome)
Prodotto(Codice, Genere)
Dipartimento(Nome, Telefono)
Fornitura(Fornitore, Prodotto, Dipartimento, Quantità)
Soluzione più compatta
Città
Nome
(0,N)
Contratto
Prodotto
Nome
Prodotto(Codice, Nome, Costo)
Cognome
Codice
(1,N)
Fornitura
Dipartimento
Costo
Genere
Squadra
Colori sociali
Giocatore(Cognome, DataNascita, Ruolo)
Contratto(CognGiocatore, DataNascG, Squadra, Ingaggio)
Squadra(Nome, Città, ColoriSociali)
• corretto?
Giocatore(Cognome, DataNascita, Ruolo)
Contratto(CognGiocatore, DataNascG, Squadra, Ingaggio)
Squadra(Nome, Città, ColoriSociali)
Giocatore(Cognome, DataNasc, Ruolo, Squadra, Ingaggio)
Squadra(Nome, Città, ColoriSociali)
• con vincolo di integrità referenziale fra Squadra in Giocatore e la
chiave di Squadra
• se la cardinalità minima della relationship è 0, allora Squadra in
Giocatore deve ammettere valore nullo
8
Relationship uno a uno
Entità con identificazione esterna
Data inizio
Cognome
Matricola
Nome
(1,1)
Studente
Cognome
Città
(1,1)
(1,N)
Direttore
Università
Iscrizione
Indirizzo
AnnoDiCorso
Sede
Codice
(1,1)
Dipartimento
Direzione
Stipendio
Studente(Matricola, Università, Cognome, AnnoDiCorso)
Università(Nome, Città, Indirizzo)
Nome
Telefono
• varie possibilità:
• fondere da una parte o dall'altra
• fondere tutto?
• con vincolo …
Un altro caso
Una possibilità privilegiata
Data inizio
Cognome
Sede
Codice
(0,1)
Direttore
Nome
Data inizio
Cognome
(1,1)
Dipartimento
Direzione
Stipendio
Telefono
Sede
Codice
(0,1)
Direttore
Nome
(0,1)
Direzione
Dipartimento
Stipendio
Telefono
Direttore (Codice, Cognome, Stipendio)
Dipartimento (Nome, Sede, Telefono, Direttore, InizioD)
• con vincolo di integrità referenziale, senza valori nulli
(0,1)
Cognome
(1,1)
Telefono
Direzione
Impiegato
Codice
(0,N)
Partecipazione
(1,N)
Progetto
Budget
(1,N)
(0,1)
Nome
Afferenza
(0,1)
Data
Dipartimento
Nome
(1,1)
Composizione
Schema finale
Impiegato(Codice, Cognome, Dipartimento*, Data*)
Dipartimento(Nome, Città, Telefono, Direttore)
Sede(Città, Via, CAP)
Progetto(Nome, Budget)
(1,N)
Sede
Partecipazione(Impiegato, Progetto)
Via
Indirizzo
CAP
Città
9
Strumenti di supporto
• Esistono sul mercato prodotti CASE che
forniscono un supporto a tutte le fasi della
progettazione di basi di dati
10
Scarica

Slides - ICAR-CNR