62
Basi di dati Progettazione di basi di dati

Basi di dati Progettazione di basi di dati - di.unito.itmeo/DIDATTICA/aa05/DBESper/unita-progettazione... · • Un’occorrenza di un’entità è un oggetto della classe che l’entità

Embed Size (px)

Citation preview

Basi di dati

Progettazione di basi di dati

2

Progettazione di basi di dati

• La progettazione di una base di dati è una delle attività del processo di sviluppo di un sistema informativo

íva inquadrata nel contesto più ampio di ciclo di vita di un sistema informativo

Basi di dati

Modello E-R -

3

Ciclo di vita di un sistema informativoBasi di dati

Modello E-R -

Studio di fattibilità

Raccolta dei requisiti e analisi

Progettazione

Prototipazione Implementazione

Validazione e testing

Funzionamento

4

Ciclo di vita di un sistema informativo

Studio di fattibilità: determinazione dei costi delle diverse alternative e delle priorità di realizzazione delle componenti del sistema

Raccolta e analisi dei requisiti:definizione delle proprietà e delle funzionalità del sistema informativo

– richiede interazione con l’utente

– produce una descrizione completa, ma informale del sistema da realizzare

Basi di dati

Modello E-R -

5

Ciclo di vita di un sistema informativo

Progettazione: suddivisa in progettazione dei dati e delle applicazioni.

– produce descrizioni formali

Prototipazione: realizzazione rapida di una versione semplificata del sistema per valutarne le caratteristiche.

– può portare a modifica dei requisiti o revisione del progetto

Basi di dati

Modello E-R -

6

Ciclo di vita di un sistema informativo

Implementazione: realizzazione del sistema informativo secondo le caratteristiche definite nella fase di progettazione

Validazione e testing: verifica del corretto funzionamento e della qualità del sistema informativo

Funzionamento: operatività del sistema

– richiede operazioni di gestione e manutenzione

Basi di dati

Modello E-R -

7

Progettazione di una base di dati

• La base di dati costituisce un componente importante del sistema complessivo

ímetodologia di progettazione basata sui dati:

–la progettazione della base di dati precede la progettazione delle applicazioni che la utilizzano

–attenzione maggiore alla fase di progettazione rispetto alle altre fasi

Basi di dati

Modello E-R -

8

Metodologia di progettazione

• Una metodologia di progettazione consiste in

– decomposizione dell’attività di progetto in passi successivi indipendenti tra loro

– strategie da seguire nei vari passi e criteri per la scelta delle strategie

– modelli di riferimento per descrivere i dati d’ingresso e di uscita delle varie fasi

Basi di dati

Modello E-R -

9

Progettazione basata sui dati

• Per le basi di dati, metodologia basata sulla separazione delle decisioni

– cosa rappresentare nella base di dati

íprogettazione concettuale

– come rappresentarlo

íprogettazione logica e fisica

Basi di dati

Modello E-R -

10

Fasi della progettazione di basi di datiBasi di dati

Modello E-R -

Requisiti applicazione

Progettazioneconcettuale

Progettazionelogica

Progettazionefisica

Schema concettuale

Schema logico

Schema fisico

11

Progettazione concettuale

• Rappresentazione delle specifiche informali sotto forma di schema concettuale

– descrizione formale e completa, che fa riferimento ad un modello concettuale

– indipendenza dagli aspetti implementativi (modello dei dati)

– obiettivo è la rappresentazione del contenuto informativo della base di dati

Basi di dati

Modello E-R -

12

Progettazione logica

• Traduzione dello schema concettuale nello schema logico

– fa riferimento al modello logico dei dati prescelto

– si usano criteri di ottimizzazione delle operazioni da fare sui dati

– qualità dello schema verificata mediante tecniche formali (normalizzazione)

Basi di dati

Modello E-R -

13

Progettazione fisica

• Specifica dei parametri fisici di memorizzazione dei dati (organizzazione dei file e degli indici)

– produce un modello fisico, che dipende dal DBMS prescelto

Basi di dati

Modello E-R -

14

Il modello E-R (Entity-Relationship)

• E` il modello concettuale più diffuso

• Fornisce costrutti per descrivere le specifiche sulla struttura dei dati

– in modo semplice e comprensibile

– con un formalismo grafico

– in modo indipendente dal modello dei dati, che può essere scelto in seguito

• Ne esistono numerose varianti

Basi di dati

Modello E-R -

15

Costrutti principali del modello E-R

• Entità

• Relationship

• Attributi

• Identificatori

• Generalizzazioni e sottoinsiemi

Basi di dati

Modello E-R -

16

Entità

• Rappresenta classi di oggetti del mondo reale (persone, cose, eventi, ...), che hanno

– proprietà comuni

– esistenza autonoma

• Esempi: dipendente, vendita, articolo

• Un’occorrenza di un’entità è un oggetto della classe che l’entità rappresenta

Basi di dati

Modello E-R -

Nome entità

17

Relationship

• Rappresenta un legame logico tra due o più entità

• Esempi: esame tra studente e corso, residenza tra persona e città

• Da non confondere con la relazione del modello relazionale

– a volte tradotto con il termine associazione

Basi di dati

Modello E-R -

Nome relationship

18

Esempi di relationshipBasi di dati

Modello E-R -

Esame

Studente Corso

Residenza

Persona Comune

Nascita

19

Occorrenze di relationship• Un’occorrenza di una relationship è una n-upla

(coppia nel caso di relazione binaria) costituita da occorrenze di entità, una per ciascuna delle entità coinvolte

• Non vi possono essere n-uple identiche

Basi di dati

Modello E-R -

s2

s3

s1

e1

c1

c2

c3c4

e2

e3

e4

e5

íNon è possibile che uno studente sostenga due volte lo stesso esame

Studente Corso

20

Relationship ternariaBasi di dati

Modello E-R -

Esame

Studente Corso

Tempo

• Uno studente può ripetere lo stesso esame in tempi diversi

• Esempio di istanza di esames1 c1 t1s1 c1 t2

...

21

Occorrenze di relationship ternariaBasi di dati

Modello E-R -

Studente Corso

s1

e1

c1

c2

e2e3

e4

s2

t1

t2Tempo

22

Relationship ricorsivaBasi di dati

Modello E-R -

• Relationship di un’entità con se stessa

• Se la relationship non è simmetrica, occorre definire i due ruoli dell’entità

Genitore

Persona

Incrocio

Via FiglioPadre

23

Attributo

• Descrive una proprietà elementare di un’entità o di una relazione

• Esempi:

– cognome, nome, matricola sono attributi che descrivono l’entità studente

– voto è un attributo che descrive la relationshipesame

• Ogni attributo è caratterizzato dal dominio, l’insieme dei valori ammissibili per l’attributo

Basi di dati

Modello E-R -

Nome attributo

24

Esempi di attributiBasi di dati

Modello E-R -

Esame

Studente Corso

Tempo

Residenza

Persona Comune

Nascita

Nome

Cognome

Codice Fiscale

Nome

Provincia

Data Nascita

Data Trasferimento

Nome

Cognome

Matricola

Data

Voto

Codice

Nome

Nome Docente

25

Attributo composto

• Raggruppamento di attributi affini per significato o per uso

• Esempio

Basi di dati

Modello E-R -

Nome attr.composto

Nome attr. 1

Nome attr. 2

Nome attr. i

Indirizzo

Via

Numero Civico

CAP

26

Cardinalità delle relationship

• Sono specificate per ogni entità che partecipa ad una relationship

• Descrivono numero minimo e massimo di occorrenze di una relationship a cui può partecipare una occorrenza di un’entità

– minimo assume i valori 0 (partecipazione opzionale) o 1 (partecipazione obbligatoria)

– massimo varia tra 1 (al più una occorrenza) e N (numero arbitrario di occorrenze)

Basi di dati

Modello E-R -

27

Cardinalità delle relationship

• Corrispondenza 1 a 1

Basi di dati

Modello E-R -

Rettore

Professore Università(0,1) (1,1)

p4

p1

r1

u1

p2

u2

p3

r2

Professore Università

28

Cardinalità delle relationship

• Corrispondenza 1 a N

Basi di dati

Modello E-R -

Residenza

Persona Comune(1,1) (1,N)

p4

p1

r1

c1

p2

c2

p3

r2

r3

r4

Persona Comune

29

Cardinalità delle relationship

• Corrispondenza molti a molti

Basi di dati

Modello E-R -

Esame Superato

Studente Corso(0,N) (0,N)

s4

s1

e1

c1

s2

c3

s3

e2

e3

e4

c2

Studente Corso

30

Relationship ternariaBasi di dati

Modello E-R -

Esame

Studente Corso

Tempo

(0,N)

(1,N)

(0,N)

31

Osservazioni

• Le cardinalità minime raramente sono 1 per tutte le entità coinvolte in una relationship

• Le cardinalità massime di una relationship n-aria sono (praticamente) sempre N

íse la partecipazione di un’entità E hacardinalità massima 1, è possibile eliminare larelationship n-aria e legare l’entità E con le altre mediante relationship binarie

Basi di dati

Modello E-R -

32

Esempio

neonato parto ostetrica

madre

neonato in_cura ostetrica

madrenascita

(1,1) (1,n)

(1,n)

(1,n)

(1,n)

(1,1)

(1,1)

33

Cardinalità di un attributo

• Può essere specificata per gli attributi di entità orelationship

• Descrive numero minimo e massimo di valori dell’attributo associati ad una occorrenza di un’entità o di una relationship– se è omessa corrisponde ad (1,1)– minima 0 corrisponde ad attributo che e’ opzionale– massima N corrisponde ad attributo che può

assumere più di un valore per la stessa occorrenza (attributo multivalore)

Basi di dati

Modello E-R -

34

Cardinalità di un attributoBasi di dati

Modello E-R -

PersonaNome

Cognome

Codice Fiscale

Titolo Studio(0,N)

Professione(0,1)

35

Identificatore

• E` specificato per ogni entità

• Descrive i concetti (attributi e/o entità) dello schema che permettono di individuare in modo univoco le occorrenze delle entità

– ogni entità deve avere almeno unidentificatore

– può esistere più di un identificatoreappropriato per un’entità

Basi di dati

Modello E-R -

36

Identificatore interno

• Semplice: costituito da un solo attributo

Basi di dati

Modello E-R -

PersonaNome

Cognome

Codice Fiscale

• Composto: costituito da più attributi

PersonaNome

Cognome

Data Nascita

Professione

37

Identificatore esternoBasi di dati

Modello E-R -

• L’entità che non dispone internamente di attributi sufficienti per definire un identificatore è denominata entità debole

• L’entità debole deve partecipare con cardinalità(1,1) in ognuna delle relationship che forniscono parte dell’identificatore

Nome

CognomeIscrizione

Studente Università(1,1) (0,N)

Matricola

Nome Città

38

Identificatore esternoBasi di dati

Modello E-R -

• E` possibile rappresentare nello stesso ordine più linee ordine per lo stesso prodotto?

Numero

Data Ordine Prodotto

(1,1)

Descrizione

Quantità

CodiceProdotto

Linea Ordine(1,1)

(0,N)

PerIn

(0,N)Prezzo

39

OsservazioniBasi di dati

Modello E-R -

• Un identificatore esterno può coinvolgere un’entità a sua volta identificata esternamente

ínon si devono generare cicli di identificazione

• Le relationship non hanno identificatori

40

Generalizzazione

• Descrive un collegamento logico tra un’entità E, e una o più entità E1, E2,…, En, in cui E comprende come caso particolare E1, E2,…, En

– E, detta entità padre, è una generalizzazione di E1, E2,…, En

– E1, E2,…, En , dette entità figlie, sono una specializzazione di E

Basi di dati

Modello E-R -

E

E1 E2 En...

41

Generalizzazione: esempioBasi di dati

Modello E-R -

PersonaNome

Cognome

Codice Fiscale

Uomo DonnaSituazioneMilitare

Persona Uomo

Donna

42

Generalizzazione: esempioBasi di dati

Modello E-R -

SportivoNome

Cognome

Numero Tessera

Sciatore VelistaSpecialitàRuolo

SportivoSciatore

Velista

sia sciatore, sia velistané sciatore,

né velista

43

Generalizzazione: proprietà

• Ogni occorrenza di un’entità figlia è anche un’occorrenza dell’entità padre

• Ogni proprietà dell’entità padre (attributi,identificatori, relationship, altre generalizzazioni) è anche una proprietà di ogni entità figlia

íproprietà nota come ereditarietà• Un’entità può essere coinvolta in più

generalizzazioni diverse

Basi di dati

Modello E-R -

44

Generalizzazione: esempio non correttoBasi di dati

Modello E-R -

PersonaNome

Cognome

Codice Fiscale

Uomo Donna

SituazioneMilitare (0,1)

Cognome

45

Generalizzazione: proprietà

• Caratteristiche ortogonali:

– generalizzazione totale se ogni occorrenza dell’entità padre è un’occorrenza di almeno una delle entità figlie, parziale altrimenti

– esclusiva se ogni occorrenza dell’entità padre è al più un’occorrenza di una delle entità figlie, sovrapposta altrimenti

Basi di dati

Modello E-R -

46

Generalizzazione: esempioBasi di dati

Modello E-R -

PersonaNome

Cognome

Codice Fiscale

Uomo DonnaSituazioneMilitare

Persona Uomo

Donna

(t,e)

47

Generalizzazione: esempioBasi di dati

Modello E-R -

SportivoSciatore

Velista

sia sciatore, sia velistané sciatore,

né velista

SportivoNome

Cognome

Numero Tessera

Sciatore VelistaSpecialitàRuolo

(p,s)

48

Sottoinsieme

• Caso particolare di generalizzazione con una sola entità figlia

– la generalizzazione è sempre parziale e esclusiva

Basi di dati

Modello E-R -

Dipendente

A Termine Data Fine Contratto

49

Documentazione di schemi E-R

• Dizionario dei dati: permette di arricchire lo schema E-R con descrizioni in linguaggio naturale di entità, relationship ed attributi

• Vincoli d’integrità sui dati: non sempre possono essere indicati esplicitamente in uno schema E-R; possono essere descritti in linguaggio naturale

• Regole di derivazione dei dati: permettono di esplicitare che un concetto dello schema può essere ottenuto (mediante inferenza o calcolo aritmetico) da altri concetti dello schema

Basi di dati

Modello E-R -

50

Strategia top-down: trasformazioni

• Concetto iniziale • Concetto risultante

51

Strategia bottom-up: trasformazioni

• Concetto iniziale • Concetto risultante

52

Esercizio 1• Si vuole realizzare una base di dati per una societa’ che eroga corsi, di

cui vogliamo rappresentare i dati dei partecipanti ai corsi e dei docenti.Per i partecipanti (circa 5000), identificati da un codice, si vuole memorizzare il codice fiscale, il cognome, l’eta’, il sesso, il luogo di nascita, il nome dei loro attuali datori di lavoro, i posti dove hanno lavorato in precedenza insieme al periodo, l’indirizzo e il numero telefonico, i corsi che hanno frequentato (i corsi sono in tutto 200) e il giudizio finale. Si vuole rappresentare anche i seminari che stanno attualmente frequentando, e per ogni giorno, i luoghi e le ore dove sono tenute le varie lezioni. I corsi hanno un codice, un titolo e possono avere varie edizioni, con le date di inizio e fine, e numero dei partecipanti. Se gli studenti sono liberi professionisti, vogliamo conoscere l’area di interesse e, se lo possiedono, il titolo. Per coloro che lavorano alle dipendenze di altri, vogliamo conoscere il livello ricoperto e la posizione.Per gli insegnanti (circa 300) rappresentiamo il cognome, l’eta’ il posto dove sono nati, il nome del corso che insegnano e di quelli che hanno gia’ insegnato e che possono insegnare. Rappresentiamo anche tutti i loro recapiti telefonici. Inoltre, i docenti possono essere dipendenti interni della societa’ o collaboratori esterni.

53

partecipante corso docente

partecipazione docenza

schema scheletro

54

partecipante

partecipante

CFcognome

sessocodice

eta’ citta’_nascita

dipendente professionista

area titolo_professionaleposizione livello

(t,e)

55

datore di lavoro

datore_di_lavoro

nomeindirizzo

telefono

partecipante

dipendente professionista

(p,e)

occupazione_attuale

occupazione_passata

data_inizio

data_inizio data_fine

(1,1)

(0,n)

(0,n)(0,n)

56

corso

corso

edizione_corso

lezione

partecipante

partecipazione_corrente

partecipazione_passata

votazione

titolo

codice

appartenenza

composizione

data_inizio

data_fine

(1,1)

(0,n)

(1,n)

(1,1)orarioaulagiorno

(0,n) (0,n)

(0,n)(0,n)

57

docente

corso

edizione_corso

appartenenza

(1,1)

(0,n)

docente

collaboratore interno

(t,e)

abilitazione(1,n) (1,n)

docenza_corrente

docenza_passata

(0,1)

(0,1) (0,n)

(0,n)

CFcognome

eta’citta’_nascita

telefono

58

Esercizio 2• Si vuole realizzare una base di dati per la gestione degli ordini di un

grossista che tratta articoli di tre categorie: fiori, piante e accessori. Ogni articolo e’ caratterizzato da un codice, da una descrizione, dalla quantita’ disponibile in magazzino e dalla scorta minima. Inoltre, i fiori e le piante sono caratterizzati dal loro nome scientifico, ma mentre i fiori hanno una durata media le piante possono essere o non essere sempreverdi.Il grossista emette ordini per i fornitori che sono caratterizzati da codice fiscale, ragione sociale, indirizzo, citta’ e numero di telefono. Gli ordini sono univocamente numerati e descrivono gli articoli ordinati e la quantita’. Alla consegna della merce da parte del fornitore, una bollaaccompagna la merce e riporta un numero d’ordine (che dipende dal fornitore stesso), la data, gli articoli e la relativa quantita’. La bolla corrisponde ad evadere uno o piu’ ordini, ma un ordine viene evaso al piu’ da una bolla.I dettaglianti, caratterizzati da un codice fiscale, ragione sociale, indirizzo, citta’, e numero di telefono, ordinano e ricevono articoli a loro volta dal grossista. Gli ordini emessi dai dettaglianti sono numeratisecondo una numerazione che dipende dal dettagliante stesso e specifica gli articoli ordinati e la relativa quantita’. Alla consegna della merce il grossista emette una bolla con la data, un codice univoco, ilnome del dettagliante, gli articoli consegnati e la relativa quantita’. Ogni bolla puo’ evadere piu’ di un ordine, ma ogni ordine e’ evaso da una sola bolla.

59

Esercizio 3• Si vuole realizzare una base di dati per una videoteca che gestisce il

noleggio di videocassette. Ciascuna videocassetta e’ caratterizzata da un codice interno, un codice internazionale, un titolo, un regista, un insieme di interpreti con i rispettivi ruoli. Per gli interpreti si memorizza solo il nome, il cognome e un codice identificativo. Ogni videocassetta appartiene a una o piu’ categorie (d’azione, d’orrore, rosa, drammatico…).Le cassette vengono noleggiate dai clienti che devono aver chiesto precedentemente una tessera la cui validita’ e’ l’anno solare e serve anche per identificare i clienti (ma un cliente con la tessera non e’ obbligato a noleggiare una videocassetta). Inoltre un cliente e’ caratterizzato dal cognome, nome, indirizzo, citta’ di residenza, numero di telefono. Inoltre si vogliono memorizzare i clienti morosi, cioe’ quei clienti che restituiscono per almeno tre volte consecutive una videocassetta in ritardo. Dei clienti morosi si vogliono memorizzare anche la data dell’ultimo noleggio in cui il cliente ha consegnato in ritardo.Ogni volta che un cliente noleggia una o piu’ videocassette si apre un contratto di noleggio che e’ caratterizzato da un numero, data d’inizio e di scadenza, dal prezzo complessivo e dalle videocassette noleggiate. Per evitare che una cassetta venga noleggiata contemporaneamente da piu’ di un cliente si tiene conto se e’ attualmente disponibile. Inoltre le cassette noleggiate con un unico contratto possono essere restituite in date diverse. Infine si vuole tenere traccia anche di tutti i noleggi passati.

60

Esercizio 4

• Si vuole realizzare una base di dati per il sistema informativo di una sala di concerti. Ciascun concerto in programma e’ identificato da un codice numerico, dal titolo e dalla descrizione. Ogni concerto e’ composto da una serie di pezzi musicali caratterizzati da un titolo e da uno o piu’ autori.L’esecutore del concerto e’ identificato da una matricola, ha unnome e uno stato d’origine e puo’ essere un solista o un’orchestra. Per le orchestre si memorizzano il direttore e i componenti (chepossono suonare in una sola orchestra) con il loro numero totale. Inoltre di ciascun componente si memorizza la matricola (che dipende dall’orchestra), il nome, la data di nascita e l’insieme di strumenti usati. Invece per i solisti si memorizza solo lo strumento.I concerti si tengono in sale caratterizzate da un codice univoco, dal nome, indirizzo, capienza massima, numero di posti a sedere e uno o piu’ numeri di telefono. Un concerto puo’ essere programmato in date diverse e sale diverse ed avere un prezzo di biglietto diverso a seconda della programmazione.

61

Esercizio 5• Si vuole realizzare una base di dati per il sistema informativo che gestisce

le legislature del Parlamento Italiano. Ad ogni elezione viene generata una nuova legislatura che ha un numero progressivo, una data d’inizio e fine.I parlamentari si dividono in deputati e senatori che sono caratterizzati dal codice fiscale, cognome, nome, data di nascita, partito di appartenenza e l’eta’. Inoltre i senatori si distinguono in senatori eletti e a vita (dei quali si deve memorizzare il Presidente della Repubblica che li ha nominati, la data e la legislatura). Per i parlamentari eletti e’ necessario memorizzare le legislature delle quali hanno fatto parte (una stessa persona puo’ diventare sia senatore che deputato) tenendo presente che della Camera fanno parte 630 deputati, mentre del Senato, 315 senatori. Inoltre per ogni parlamentare eletto in una legislatura si vuole tenere traccia del collegio che li ha eletti che e’ caratterizzato da un codice, denominazione, regione di appartenenza e tipo (per senatori o deputati). Un collegio per senatori puo’ eleggere al massimo 1 senatore, mentre un collegio per deputati al massimo 4 deputati. Si noti che l’insieme dei collegi puo’ variare da legislatura a legislatura. Infine si vogliono memorizzare le leggi approvate, dove ciascuna legge e’ identificata da un codice, possiede un titolo, una data di approvazione con voti a favore e contro alla Camera e analogamente in Senato. Nel caso di voto palese si vuole sapere come hanno votato i parlamentari (a favore, contro, astensione, scheda bianca o assenza).

62

Esercizio 6

• Si vuole realizzare una base di dati per la gestione di un consorzio di campeggi. Ogni campeggio e’ caratterizzato da un codice univoco, un indirizzo, una descrizione, il numero dei posti disponibili, e il numero totale di servizi e docce calde disponibili.I posti sono numerati in modo univoco per ciascun campeggio, e sono suddivisi in posti per tenda (di cui sono note le dimensioni), per camper o roulotte (di cui e’ nota la posizione dell’attacco alla corrente elettrica, e il numero di posti per auto o moto).I clienti sono caratterizzati dal codice fiscale, nome e documento di identita’ (tipo, numero e data di scadenza) consegnato all’arrivo. Per ogni cliente si memorizza il posto occupato e il periodo di permanenza. Inoltre, le prenotazioni di un posto si effettuano memorizzando il nome del cliente, il posto e le date di inizio e fine prenotazione.