• Non ci sono risultati.

Progettazione logica

N/A
N/A
Protected

Academic year: 2021

Condividi "Progettazione logica"

Copied!
77
0
0

Testo completo

(1)

Basi di dati

Progettazione logica

(2)

Schema concettuale Requisiti della base di dati

Progettazione logica

Schema logico

Progettazione concettuale

(3)

Obiettivo della

progettazione logica

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

(4)

Dati di ingresso e uscita

•  Ingresso:

•  schema concettuale

•  informazioni sul carico applicativo

•  modello logico

•  Uscita:

•  schema logico

(5)

Non si tratta di una pura e semplice traduzione

•  alcuni aspetti non sono direttamente rappresentabili

•  è necessario considerare le prestazioni

(6)

Traduzione nel modello logico

Ristrutturazione dello schema E-R

Schema concettuale E-R

Carico applicativo

Schema E-R ristrutturato Modello

logico

(7)

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

(8)

Prestazioni?

•  Per ottimizzare il risultato abbiamo bisogno di analizzare le prestazioni a questo livello

•  Ma:

•  le prestazioni non sono valutabili con precisione su uno schema concettuale!

(9)

Prestazioni, approssimate

•  Consideriamo:

•  “indicatori” dei parametri che regolano le prestazioni

•  spazio:

•  numero di occorrenze previste

•  tempo:

•  numero di occorrenze (di entità e relationship) visitate durante un’operazione

(10)

Telefono

Partecipazione

Nome Cognome

Data

(1,1) (0,1)

(1,N) (0,1)

(0,1)

(1,1)

(1,N) (0,N)

(1,N)

(1,N)

Codice

Dipartimento

Composizione

Sede

Direzione

Afferenza

Impiegato

(11)

Tavola dei volumi

Concetto Tipo Volume

Sede E 10

Dipartimento E 80

Impiegato E 2000

Progetto E 500

Composizione R 80

Afferenza R 1900

Direzione R 80

Partecipazione R 6000

(12)

Esempio di valutazione di costo

•  Operazione:

•  trova tutti i dati di un impiegato, del

dipartimento nel quale lavora e dei progetti ai quali partecipa

•  Si costruisce una tavola degli accessi basata su uno schema di navigazione

(13)

Telefono Dipartimento

Afferenza

Impiegato

Partecipazione

Nome

Nome Cognome

Budget

Data

(1,N) (0,1)

(0,1)

(1,1) (0,N)

(1,N)

(1,N)

Codice

Progetto

(14)

Tavola degli accessi

Costrutto Entità

Relationship Entità

Relationship Entità

Accessi 1

1 1 3 3

Tipo L L L L L Concetto

Impiegato Afferenza Dipartimento Partecipazione

Progetto Concetto Impiegato Afferenza Dipartimento Partecipazione

Progetto Concetto Impiegato Afferenza Dipartimento Partecipazione

Progetto

(15)

Attività della ristrutturazione

•  Analisi delle ridondanze

•  Eliminazione delle generalizzazioni

•  Partizionamento/accorpamento di entità e relationship

•  Scelta degli identificatori primari

(16)

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 (o anche di introdurne di nuove)

(17)

Ridondanze

•  Vantaggi

•  semplificazione delle interrogazioni

•  Svantaggi

•  appesantimento degli aggiornamenti

•  maggiore occupazione di spazio

(18)

Forme di ridondanza in uno schema E-R

•  attributi derivabili:

•  da altri attributi della stessa entità (o relationship)

•  da attributi di altre entità (o relationship)

•  relationship derivabili dalla composizione di altre (più in generale: cicli di relationship)

(19)

Attributo derivabile

Importo netto

IVA

Importo lordo Fattura

(20)

Attributo derivabile da altra entità

Importo totale

Acquisto Prodotto

Prezzo (1,N) (0,N)

Quantità

Composizione

(21)

Corso Studente

Frequenza (0,N)

(1,N)

Professore

Insegnamento (1,1)

(0,N)

Docenza (0,N)

(0,N) Ridondanza dovuta a

ciclo

(22)

Analisi di una ridondanza

Residenza Persona

Numero abitanti

Città

(23)

•  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

(24)

Presenza di ridondanza

Operazione 1

Operazione 2

Concetto Costrutto Accessi Tipo

Persona Entità 1 S

Residenza Relazione 1 S

Città Entità 1 L

Città Entità 1 S

(25)

Assenza di ridondanza

Concetto Costrutto Accessi Tipo

Persona Entità 1 S

Residenza Relazione 1 S

Concetto Costrutto Accessi Tipo

Città Entità 1 L

Residenza Relazione 5000 L Operazione 1

Operazione 2

(26)

Presenza di ridondanza

•  Costi:

•  Operazione 1: 1500 accessi in scrittura e 500 accessi in lettura al giorno

•  Operazione 2: trascurabile.

•  Contiamo doppi gli accessi in scrittura

•  Totale di 3500 accessi al giorno

(27)

Assenza di ridondanza

•  Costi:

•  Operazione 1: 1000 accessi in scrittura

•  Operazione 2: 10000 accessi in lettura al giorno

•  Contiamo doppi gli accessi in scrittura

•  Totale di 12000 accessi al giorno

(28)

Attività della ristrutturazione

•  Analisi delle ridondanze

•  Eliminazione delle generalizzazioni

•  Partizionamento/accorpamento di entità e relationship

•  Scelta degli identificatori primari

(29)

Eliminazione delle gerarchie

•  il modello relazionale non può rappresentare direttamente le generalizzazioni

•  entità e relationship sono invece direttamente rappresentabili

•  si eliminano perciò le gerarchie, sostituendole con entità e relationship

(30)

Tre possibilità

1.  accorpamento delle figlie della generalizzazione nel genitore

2.  accorpamento del genitore della generalizzazione nelle figlie

3.  sostituzione della generalizzazione con

relationship

(31)

E0 R1 A01 A02

E3

R2

E4 E1 E2

A11 A21

(32)

A11 A21

TIPO

(0,1)

(0,1)

(0,..)

E0

A01 A02

R1 E3

R2

(33)

E0 R1 A01 A02

E3

R2

E4 E1 E2

A11 A21

(34)

E3

E2 R2

E1

R12 R11

(35)

E0 R1 A01 A02

E3

R2

E4 E1 E2

A11 A21

(36)

RG1 RG2

(1,1) (0,1) (1,1)

(0,1)

E0

A01 A02

E1 E2 R2

R1 E3

(37)

•  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

Osservazioni (1)

(38)

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

•  sono anche possibili soluzioni “ibride”,

Osservazioni (2)

(39)

E0 R1 A01 A02

E3

R2

E4 E1 E2

A11 A21

(40)

E0

A01 A02

E2 R2

R1 E3

RG2 (1,1)

(0,1)

A11

TIPO

(0,1)

(41)

Attività della ristrutturazione

•  Analisi delle ridondanze

•  Eliminazione delle generalizzazioni

•  Partizionamento/accorpamento di entità e relationship

•  Scelta degli identificatori primari

(42)

•  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

(43)

Ristrutturazioni, casi principali

•  partizionamento verticale di entità

•  partizionamento orizzontale di relationship

•  eliminazione di attributi multivalore

•  accorpamento di entità/relationship

(44)

Livello

Stipendio Ritenute

Cognome Indirizzo

Data nascita

Codice

Impiegato

(45)

Livello Stipendio

Ritenute Cognome

Indirizzo Data nascita

Codice

Dati R anagrafici

Dati lavorativi (1,1) (1,1)

(46)

Agenzia

Indirizzo Città

Telefono Nome

(1,N)

(47)

Numero

Indirizzo

Nome

Utenza

Agenzia Telefono

(1,N) (1,1) Città

(48)

Indirizzo Interno

Cognome

Codice fiscale

Intestazione

Persona Appartamento

(0,1) (1,1)

(49)

Interno

Indirizzo Cognome

Indirizzo

Data nascita

Codice fiscale

(0,1)

(0,1) Persona

(50)

Cognome

(1,N) (1,N)

Ruolo Città Nome

(0,1)

Squadra Giocatore Composizione

(51)

Cognome (1,N) (1,N)

Ruolo Nome

Città Data Data

Data acquisto

(1,1) (1,N)

Comp.

passata

Giocatore Squadra

Comp.

attuale

(52)

Attività della ristrutturazione

•  Analisi delle ridondanze

•  Eliminazione delle generalizzazioni

•  Partizionamento/accorpamento di entità e relationship

•  Scelta degli identificatori principali

(53)

Scelta degli identificatori principali (1)

•  operazione indispensabile per la traduzione nel modello relazionale

•  Criteri

•  assenza di opzionalità

•  semplicità

•  utilizzo nelle operazioni più frequenti o importanti

(54)

Se nessuno degli identificatori soddisfa i requisiti visti?

Si introducono nuovi attributi (codici) contenenti valori speciali generati appositamente per

questo scopo

Scelta degli identificatori principali (2)

(55)

Traduzione verso il modello relazionale

•  idea di base:

•  le entità diventano relazioni sugli stessi attributi

•  le relationship diventano relazioni sugli identificatori delle entità coinvolte (più gli attributi propri)

(56)

(0,N) (1,N) Cognome

Stipendio

Matricola Codice Nome

Budget Data inizio

Partecipazione

Impiegato Progetto

Entità e relationship molti a molti

(57)

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

(58)

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)

(59)

Nota

•  La traduzione non riesce a tener conto delle

cardinalità minime delle relationship molti a molti (se non con vincoli di CHECK complessi e poco usati)

(60)

Composizione

Composto Componente

Costo Nome Codice

(0,N) (0,N)

Relationship ricorsive

Quantità

Prodotto

(61)

Nome Partita IVA Quantità Genere Codice

Nome Telefono (0,N) (1,N)

(1,N)

Relationship n-arie

Fornitore(PartitaIVA, Nome) Prodotto(Codice, Genere) Dipartimento(Nome, Telefono)

Fornitura(Fornitore, Prodotto, Dipartimento, Quantità)

Fornitore Prodotto

Dipartimento Fornitura

(62)

Cognome Data

nascita Ingaggio Città Nome

(1,1) (0,N)

Ruolo Colori sociali

Giocatore Contratto Squadra

Relationship uno a molti

Giocatore(Cognome, DataNascita, Ruolo)

(63)

Soluzione più compatta

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

(64)

Nota

•  La traduzione riesce a rappresentare

efficacemente la cardinalità minima della partecipazione che ha 1 come cardinalità massima:

•  0 : valore nullo ammesso

•  1 : valore nullo non ammesso

(65)

Entità con identificazione esterna

Studente(Matricola, Università, Cognome, AnnoDiCorso) Università(Nome, Città, Indirizzo)

•  con vincolo: ogni studente è scritto esattamente e solo

Cognome Matricola

AnnoDiCorso

Nome

Indirizzo (1,1) (1,N)

Città

Iscrizione

Studente Università

(66)

Direttore Direzione

Cognome Codice Sede Nome

Data inizio

(1,1) (1,1)

Stipendio Telefono

Dipartimento

Relationship uno a uno

(67)

Una possibilità privilegiata

Impiegato (Codice, Cognome, Stipendio)

Dipartimento (Nome, Sede, Telefono, Direttore, InizioD)

•  con vincolo di integrità referenziale, senza valori nulli

Cognome Codice Sede Nome

Data inizio

(0,1) (1,1)

Stipendio Telefono

Impiegato Direzione Dipartimento

(68)

Un altro caso

Cognome Codice Sede Nome

Data inizio

(0,1) (0,1)

Stipendio Telefono

Impiegato Direzione Dipartimento

Impiegato (Codice, Cognome, Stipendio)

(69)

(1,1) (0,1)

(1,N) (0,1)

(1,1)

(1,N) (0,N)

(1,N)

(1,1)

Città

Telefono

Nome

Nome Cognome

Budget

Data

Via Codice

Dipartimento

Composizione

Sede

Direzione

Afferenza

Impiegato

Progetto

Partecipazione

Indirizzo

(70)

Schema finale

Dipartimento(Nome, Città, Telefono, Direttore*) Impiegato(Codice, Cognome,

Dipartimento,Sede, Data*)

Progetto(Nome, Budget) Sede(Città, Via, CAP)

(71)

Attenzione

•  Differenze apparentemente piccole in cardinalità e identificatori possono cambiare di molto il

significato …

(72)

(1,1) (0,1)

(1,N) (0,1)

(0,N)

(1,N)

(1,1)

Città Telefono

Nome Cognome

Data Codice

Dipartimento

Composizione

Sede

Direzione

Afferenza

Impiegato

Partecipazione

(1,1)

(1,N)

(73)

(1,1) (0,1)

(1,N) (0,1)

(1,N)

(1,1) (0,N)

(1,N)

(1,1)

Città Telefono

Nome

Nome Cognome

Budget

Data

Via Codice

Dipartimento

Composizione

Sede

Direzione

Afferenza

Impiegato

Progetto

Partecipazione

Indirizzo

(74)

Secondo schema finale

Dipartimento(Nome, Città, Telefono, Direttore*) Impiegato(Codice, Cognome,

Dipartimento,Sede, Data*)

Progetto(Nome, Budget)

Sede(Città, Dipartimento, Via, CAP)

(75)

Strumenti di supporto

•  Esistono sul mercato prodotti CASE che forniscono un supporto a tutte le fasi della progettazione di basi di dati

(76)
(77)

Riferimenti

Documenti correlati

• l’entità padre partecipa con cardinalità (0, 1), anche se la generalizzazione è totale (perché, comunque, un’istanza del padre potrebbe essere associata solo ad alcune

 le relationship diventano relazioni sulle chiavi delle relazioni che rappresentano le entita coinvolte (piu gli

«Oggi questa compagnia fa parte di me ogni giorno». Un’affermazione del genere non dipende dal fatto che le nostre emozioni durino; il punto è che certi fatti sono testardi e non

Io sono con voi tutti i giorni, fino alla fine del mondo (Mt 28,20) Quanto più una persona è potente, come certezza di coscienza, tanto più il suo sguardo, anche nel modo abituale

‣ GIOCATORE(Codice Fiscale, Cognome, Nome, Ruolo, Città di Nascita, Squadra) con vincolo di integrità referenziale tra Squadra e la relazione SQUADRA. ‣ PARTITA(Numero,

• ORARIOFERMATE(NumeroTreno, Stazione, Arrivo, Partenza) con il vincolo di integrità referenziale tra l’attributo numero treno e la relazione OrarioTreni e tra l’attributo Stazione

Ristrutturazione dello schema Entita’- Relazione: e’ una fase indipendente dal modello logico e si basa su criteri di ottimizzazione dello schema.. Traduzione verso il modello

In uno studio di coorte 6 che ha coinvolto oltre 12.000 bambini di età 12aa per lo screening della celiachia (ETICS study - Explo- ring the Iceberg of Celiacs in Sweden),