Sei sulla pagina 1di 32

Esercizi di progettazione di Basi di Dati Relazionali

Sbagliando simpara!

Andrea Turati
andrea.turati@cefriel.it

2007 Andrea Turati

Introduzione

Questa presentazione include alcuni esercizi di progettazione svolti passo-passo La soluzione proposta soltanto una fra le possibili, che rispetta tre principi
Completezza Correttezza Semplicit

Informatica Applicata per Ingegneria Biomedica Progettazione/1

2007 Andrea Turati

Esercizio 1 Archivio fotografico


Si vuole rappresentare la base di dati di un archivio fotografico distribuito in varie sedi. Le fotografie sono catalogate in base ad un catalogo di soggetti possibili, ciascun soggetto ha una propria chiave. Le foto hanno una dimensione ed uno stato di conservazione; per le foto a colori, noto il tipo di stampa (chiaro o opaco). Le foto come detto sono reperibili in sedi diverse dellarchivio, di cui noto il responsabile, lindirizzo, il numero telefonico e lorario di apertura. Le foto possono descrivere personaggi, luoghi o oggetti. I personaggi hanno un nome ed un sesso; alcuni sono deceduti. Per i personaggi politici, si indica il partito di appartenenza e leventuale carica governativa ricoperta. Per gli artisti, si indica la loro attivit prevalente (pittura, scultura, ...). Quando le foto descrivono opere artistiche, noto il nome dellopera darte, lartista che lha realizzata, il luogo dove lopera risiede e lanno di realizzazione. Quando le foto descrivono luoghi o oggetti, noto nome e descrizione.
3
2007 Andrea Turati

Informatica Applicata per Ingegneria Biomedica Progettazione/1

Esercizio 1 Archivio fotografico


Si vuole rappresentare la base di dati di un archivio fotografico distribuito in varie sedi. Introduzione Descrizione Le fotografie sono catalogate in base ad un catalogo di soggetti delle foto soggetto ha una propria chiave. Le foto hanno una possibili, ciascun dimensione ed uno stato di conservazione; per le foto a colori, noto Descrizione delle il tipo di stampa (chiaro o opaco). sedi degli archivi Le foto come detto sono reperibili in sedi diverse dellarchivio, di cui noto il responsabile, lindirizzo, il numero telefonico e lorario di apertura. Le foto possono descrivere personaggi, luoghi o oggetti. I personaggi hanno un nome ed un sesso; alcuni sono deceduti. Per i personaggi politici, si indica il partito di appartenenza e leventuale carica Descrizione governativa ricoperta. Per gli artisti, si indica la loro attivit dei soggetti prevalente (pittura, scultura, ...). Quando le foto descrivono opere delle foto artistiche, noto il nome dellopera darte, lartista che lha realizzata, il luogo dove lopera risiede e lanno di realizzazione. Quando le foto descrivono luoghi o oggetti, noto nome e descrizione.
4
2007 Andrea Turati

Informatica Applicata per Ingegneria Biomedica Progettazione/1

Progettazione Concettuale
Definizione dello scheletro

Da una prima lettura del testo individuiamo che le entit fondamentali sono
Le fotografie Gli archivi I soggetti

Queste entit sono in relazione fra loro ed facilmente individuabile il seguente scheletro di base
Le fotografie sono catalogate in base ad un catalogo di soggetti possibili

Archivio

Reperibilit

Foto

Rappresentazione

Soggetti

Le foto come detto sono reperibili in sedi diverse dellarchivio

Passiamo ora ad esaminare i singoli elementi dello scheletro...

Informatica Applicata per Ingegneria Biomedica Progettazione/1

2007 Andrea Turati

Progettazione concettuale
Analisi dello scheletro (1)

Archivio
Dal testo si ricavano facilmente le caratteristiche dellentit

Indirizzo Responsabile Codice

Telefono Orario di apertura Orario di chiusura

Archivio

Orario

Le foto come detto sono reperibili in sedi diverse dellarchivio, di cui noto il responsabile, lindirizzo, il numero telefonico e lorario di apertura.

Come identificatore stato aggiunto un campo univoco Codice

Informatica Applicata per Ingegneria Biomedica Progettazione/1

2007 Andrea Turati

Progettazione concettuale
Analisi dello scheletro (2)

Fotografie

Dal testo si nota che esistono due tipologie di fotografie: quelle a colori e le altre (in bianco e nero). Si ha cio una gerarchia totale ed esclusiva.
Stato di conservazione Dimensione

Codice

Foto

Tipo Stampa

Foto BN

Foto Colori

Le foto hanno una dimensione ed uno stato di conservazione; per le foto a colori, noto il tipo di stampa (chiaro o opaco).

Informatica Applicata per Ingegneria Biomedica Progettazione/1

2007 Andrea Turati

Progettazione concettuale
Analisi dello scheletro (3)

Soggetto

Dal testo si ricava una gerarchia abbastanza complessa


Le foto possono descrivere personaggi, luoghi o oggetti.
Nome Sesso Deceduto

Quando le foto descrivono luoghi o oggetti, noto nome e descrizione.

I personaggi hanno un nome ed un sesso; alcuni sono deceduti. Per i personaggi politici, si indica il partito di appartenenza e leventuale carica governativa ricoperta. Per gli artisti, si indica la loro attivit prevalente (pittura, scultura, ...).

Soggetto
(T,E)

Nome

Nome

Personaggio

Luogo
Descrizione Nome Descrizione Anno realizzazione Luogo Conservazione Artista

Oggetto
Partito Carica

Uomo Politico

Artista

Attivit Prevalente

Opera darte

Quando le foto descrivono opere artistiche, noto il nome dellopera darte, lartista che lha realizzata, il luogo dove lopera risiede e lanno di realizzazione.
Informatica Applicata per Ingegneria Biomedica Progettazione/1

2007 Andrea Turati

Progettazione concettuale
Analisi dello scheletro (3)

Soggetto
NOTA1: fare bene attenzione a dove si mettono gli attributi
Fare attenzione allattributo Nome: ricordare che i figli ereditano dai padri

NOTA2: mettere bene in evidenza il tipo di gerarchia (Totale, Esclusiva)


Soggetto
(T,E) Sesso Deceduto Nome

Personaggio Oggetto

Luogo

Descrizione

Descrizione Anno realizzazione Luogo Conservazione Artista

Partito Carica

Uomo Politico

Artista

Attivit Prevalente

Opera darte

Approfondimento: il testo non lo esplicitava ma, volendo, era possibile aggiungere alcune associazioni fra le tipologie di foto
Opera darte Artista che lha realizzata Opera darte Luogo di conservazione
Informatica Applicata per Ingegneria Biomedica Progettazione/1

2007 Andrea Turati

Progettazione concettuale
Schema finale
Stato di conservazione Dimensione Codice Codice Responsabile

Indirizzo Telefono

Orario di apertura

Archivio
(1,N)

Orario

Orario di chiusura

Foto

Reperibilit
(1,1) (1,N)

Rappresentazione Foto BN Foto Colori


(1,N) Tipo Stampa Sesso Deceduto

Soggetto
(T,E)

Nome

Personaggio

Luogo

Descrizione

Oggetto
Partito Carica

Descrizione Anno realizzazione

Uomo Politico

Artista

Attivit Prevalente

Opera darte

Luogo Conservazione Artista

Progettazione logica

Passo 1 Eliminazione gerarchie Passo 1: Fotografie


Il progetto fa poca distinzione fra le tipologie, conveniente far collassare le entit nel padre

Stato di conservazione Dimensione Codice Stato di conservazione

Foto
Tipo Stampa

Dimensione Codice

Tipo di foto Tipo Stampa

Foto

(0,1)

Foto BN

Foto Colori

Informatica Applicata per Ingegneria Biomedica Progettazione/1

11

2007 Andrea Turati

Progettazione logica

Passo 1 Eliminazione gerarchie Passo 1: Soggetto


Il progetto non d indicazioni sulluso che verr fatto del sistema da parte del fotografo, comunque ipotizzabile che le sue operazioni siano fatte sulla base delle tre tipologie di base dei soggetti: personaggi, oggetti e luoghi. Si decide pertanto di collassare le gerarchie a livello intermedio (sfruttando il fatto che la gerarchia Totale ed Esclusiva)

ATTENZIONE: chiaro che la relazione Rappresentazione deve essere modificata di conseguenza...

Informatica Applicata per Ingegneria Biomedica Progettazione/1

12

2007 Andrea Turati

Progettazione logica

Passo 1 Eliminazione gerarchie Passo 1: Soggetto Soggetto


(T,E) Sesso Deceduto

Nome

Personaggio

Luogo

Descrizione

Oggetto
Partito Carica

Descrizione Anno realizzazione

Uomo Politico

Artista

Attivit Prevalente

Opera darte

Luogo Conservazione Artista

Nome Nome Sesso Deceduto (0,1) Partito Carica (0,1)

Descrizione (0,1) Anno realizzazione Luogo Conservazione Artista

Nome Descrizione

Personaggio
(0,1) Attivit Prevalente

Oggetto

(0,1) (0,1)

Luogo

Informatica Applicata per Ingegneria Biomedica Progettazione/1

13

2007 Andrea Turati

Progettazione logica
Passi 2 e 3: attributi e chiavi

Passo 2:
Lunico attributo da ristrutturare lorario dellarchivio: deve essere trasformato in due attributi semplici

Responsabile

Indirizzo Telefono

Orario di apertura

Indirizzo Responsabile

Telefono

Orario di apertura Codice

Archivio

Orario

Orario di chiusura

Codice

Archivio
Orario di chiusura

Passo 3:
Tutte le entit hanno una chiave soddisfacente

Informatica Applicata per Ingegneria Biomedica Progettazione/1

14

2007 Andrea Turati

Progettazione logica
Schema ristrutturato
Stato di conservazione Dimensione Codice Tipo di foto (0,1) Tipo Stampa (1,1) Indirizzo Responsabile Telefono Codice Orario di apertura (1,N)

Foto
(0,N) (0,N)

Reperibilit

Archivio
Orario di chiusura

(0,N)

Rapp. Pers. Rapp. Ogg.


(1,N) (1,N) Sesso

Rapp. Luoghi

(1,N)

Luogo

Descrizione (0,1) Anno realizzazione Luogo Conservazione Artista

Nome

Descrizione

Nome (0,1) Partito Carica

Personaggio
Deceduto (0,1) (0,1) Attivit Prevalente

Oggetto

(0,1) (0,1)

Nome

Informatica Applicata per Ingegneria Biomedica Progettazione/1

15

2007 Andrea Turati

Progettazione logica
Passi 4 e 5 Tabelle

Stato di conservazione Dimensione Codice Tipo di foto (0,1) Tipo Stampa (1,1)

Indirizzo Responsabile

Telefono Codice Orario di apertura

Foto

Reperibilit

(1,N)

Archivio
Orario di chiusura

Foto (Codice, Dimensione, Stato, TipoFoto, TipoStampa, CodiceArchivio)

Archivio (Codice, Responsabile, Indirizzo, Telefono, OrarioAper, OrarioChiu)

Informatica Applicata per Ingegneria Biomedica Progettazione/1

16

2007 Andrea Turati

Progettazione logica
Passi 4 e 5 Tabelle
Stato di conservazione Dimensione Codice Tipo di foto (0,1) Tipo Stampa

Foto
(0,N)

Foto (Codice, Dimensione, Stato, TipoFoto, TipoStampa, CodiceArchivio)

Rapp. Pers.

RappPers (Codice, Nome)

Nome (0,1) Partito Carica

(1,N)

Sesso

Personaggio
Deceduto (0,1) (0,1) Attivit Prevalente

Personaggio (Nome, Sesso, Deceduto, Partito, Carica, Attivit)

Informatica Applicata per Ingegneria Biomedica Progettazione/1

17

2007 Andrea Turati

Progettazione logica
Passi 4 e 5 Tabelle
Luogo (Nome, Descrizione) Oggetto (Nome, Descrizione, Anno, Luogo, Artista) Personaggio (Nome, Sesso, Deceduto, Partito, Carica, Attivit) RappLuoghi (Codice, Nome) RappOgg (Codice, Nome) RappPers (Codice, Nome)

Foto (Codice, Dimensione, Stato, TipoFoto, TipoStampa, CodiceArchivio)

Archivio (Codice, Responsabile, Indirizzo, Telefono, OrarioAper, OrarioChius)

Informatica Applicata per Ingegneria Biomedica Progettazione/1

18

2007 Andrea Turati

Esercizio 2 Compagnia aerea

Elemento principale dellattivit di una compagnia aerea sono i voli di linea. Ogni volo di linea caratterizzato da un numero, lorario di partenza ed arrivo, la durata. Si ha anche un elenco di tutti gli aeroporti toccati dalla compagnia; questi sono caratterizzati da un codice, un nome, dalla citt e dalla nazione. Per ogni volo si vuole tenere traccia degli aeroporti di partenza e arrivo. Per ogni volo si devono conoscere i viaggi effettuati, previsti o soppressi. In particolare, ogni viaggio identificato dalla data e da un attributo che indica se il viaggio effettuato, previsto o soppresso. I viaggi sono effettuati con velivoli identificati da n di matricola e caratterizzati da modello, marca e anno di acquisto. Ogni viaggio viene effettuato con uno e un solo velivolo. Ad ogni viaggio partecipa il personale viaggiante identificato dal n di matricola e caratterizzato da nome, cognome e data di nascita. Il personale viaggiante costituito da piloti e assistenti; dei piloti, si conosce il grado. Di ogni viaggio si conosce il comandante, il vicepilota e gli assistenti di viaggio (minimo uno).
19
2007 Andrea Turati

Informatica Applicata per Ingegneria Biomedica Progettazione/1

Esercizio 2 Compagnia aerea

Elemento Voli principale dellattivit di una compagnia aerea sono i voli di linea. Ogni volo di linea caratterizzato da un numero, lorario di partenza ed arrivo, la durata. Aeroporti Si ha anche un elenco di tutti gli aeroporti toccati dalla compagnia; questi sono caratterizzati da un codice, un nome, dalla citt e dalla nazione. Per ogni volo si vuole tenere traccia degli aeroporti di partenza e Viaggi arrivo. Per ogni volo si devono conoscere i viaggi effettuati, previsti o soppressi. In particolare, ogni viaggio identificato dalla data e da un attributo che indica se il viaggio effettuato, previsto o soppresso. I viaggi sono effettuati con velivoli identificati da n di matricola e caratterizzati da modello, marca e anno di acquisto. Ogni viaggio Velivoli viene effettuato con uno e un solo velivolo. Ad ogni viaggio partecipa il personale viaggiante identificato dal n di matricola e caratterizzato da nome, cognome e data di nascita. Il Personale personale viaggiante costituito da piloti e assistenti; dei piloti, si conosce il grado. Di ogni viaggio si conosce il comandante, il vicepilota e gli assistenti di viaggio (minimo uno).
20
2007 Andrea Turati

Informatica Applicata per Ingegneria Biomedica Progettazione/1

Progettazione Concettuale

Individuazione delle entit principali Dallanalisi del testo si individuano le seguenti entit fondamentali
Volo, Aeroporto, Viaggio, Aeromobile, Persone

Procediamo ad analizzare le varie entit e come si relazionano fra loro


Volo e Aeroporto
Ad una analisi superficiale si potrebbe pensare di rappresentarli cos:
Per ogni volo si vuole tenere traccia degli aeroporti di partenza e arrivo

Volo

(2,2)

Partenze e Arrivi

Aereoporto
P/A

Questa soluzione E ERRATA!!!


Informatica Applicata per Ingegneria Biomedica Progettazione/1

21

2007 Andrea Turati

Progettazione Concettuale
Individuazione delle entit principali
Volo e Aeroporto (continua)
La soluzione precedente non corretta perch non possibile distinguere i due ruoli in modo corretto
Infatti mi dice che DEVO associare due aeroporti ad un volo, ma non mi vincola sul fatto che uno deve essere di partenza e uno di arrivo: potrei avere anche due arrivi (?) o due partenze (?). Per il modello anche queste possibilit sarebbero lecite.

La soluzione corretta la seguente:


(1,1)

Parte da Arriva a

(1,N)

Volo
(1,1) (1,N)

Aereoporto

Approfondimento: avremmo potuto aggiungere anche una terza relazione per indicare gli scali di ogni volo

Informatica Applicata per Ingegneria Biomedica Progettazione/1

22

2007 Andrea Turati

Progettazione Concettuale
Individuazione delle entit principali
Volo, Viaggio e Aeromobile
Dal testo si capisce che il volo il servizio erogato dalla compagnia, mentre il viaggio la realizzazione di questo servizio
Attenzione: non devo pensare ad una gerarchia, stiamo parlando di concetti differenti. Servir invece una associazione
Elemento principale dellattivit di una compagnia aerea sono i voli di linea. Per ogni volo si devono conoscere i viaggi effettuati, previsti o soppressi. Ogni viaggio viene effettuato con uno e un solo velivolo.

LAeromobile non sar associato al Volo, ma al Viaggio (in quanto serve per la sua realizzazione) Si ottiene perci
(1,1)

Volo
(1,M)

Esecuzione

Viaggio

(1,1)

Utilizza

(0,N)

Aereomobile

Data

Stato

Informatica Applicata per Ingegneria Biomedica Progettazione/1

23

2007 Andrea Turati

Progettazione Concettuale
Individuazione delle entit principali
Personale
Dal testo evidente la possibilit di creare una gerarchia fra le tipologie di personale Ad ogni viaggio partecipa il personale viaggiante identificato dal n di matricola e caratterizzato da nome, cognome e data di nascita.

Nome Cognome Matricola

Data Nascita

Personale
(T,E)

Il personale viaggiante costituito da piloti e assistenti; dei piloti, si conosce il grado.

Pilota

Assistente

Grado

Informatica Applicata per Ingegneria Biomedica Progettazione/1

24

2007 Andrea Turati

Progettazione Concettuale
Individuazione delle entit principali
Personale
Cognome Matricola Nome Data Nascita

Personale
(T,E)

Di ogni viaggio si conosce il comandante, il vicepilota e gli assistenti di viaggio (minimo uno).
Comando

(0,N)

Pilota
(0,N) Grado

Assistente

(0,N)

Vice
(1,1) (1,1)

Assiste

Viaggio

(1,N)

Possiamo ora procedere alla fusione degli schemi...


25
2007 Andrea Turati

Informatica Applicata per Ingegneria Biomedica Progettazione/1

Progettazione Concettuale
Schema Finale
Numero OraP OraA Durata (1,M) Data (1,1) (1,1) (1,N) Codice Nome

Volo
(1,1)

Parte da Arriva a
Stato (1,1)

Aereoporto
(1,N)

Citt Nazione

Esecuzione

Viaggio

Utilizza

(0,N)

Aereo mobile

Matricola Marca Modello Anno Acq.

(1,N)

(1,1)

(1,1) Cognome

Nome

Data Nadcita

Assiste

Comando

Vice
Matricola Grado

Personale
(T,E)

(0,N)

(0,N)

Pilota
(0,N)

Assistente
2007 Andrea Turati

Informatica Applicata per Ingegneria Biomedica Progettazione/1

26

Progettazione Logica

Ristrutturazione Passo 1 Eliminazione gerarchie


Lunica gerarchia presente (Personale) collassabile sui figli
E totale ed esclusiva I figli (Pilota e Assistente) sono coinvolti in relazioni (con Viaggio)

Passo 2 Attributi multivalore


Non sono presenti

Passo 3 Chiavi
Lentit Aeroporto presenta due possibili chiavi (Codice e Nome)
si sceglie la chiave Codice

Si ottiene perci il seguente schema ristrutturato...

Informatica Applicata per Ingegneria Biomedica Progettazione/1

27

2007 Andrea Turati

Progettazione Logica
Schema Ristrutturato
Numero OraP OraA Durata (1,M) Data (1,1) (1,1) Codice Nome

Volo
(1,1)

Parte da Arriva a
Stato (1,1)

(1,N)

Aereoporto
(1,N)

Citt Nazione

Esecuzione

Viaggio

Utilizza

(0,N)

Aereo mobile
Data Nascita Grado

Matricola Marca Modello Anno Acq.

(1,N)

(1,1)

(1,1)

Nome Cognome Matricola

Assiste

Comando
(0,N)

Vice
(0,N)

Pilota
Nome Cognome Matricola (0,N) Data Nascita

Assistente
2007 Andrea Turati

Informatica Applicata per Ingegneria Biomedica Progettazione/1

28

Progettazione Logica
Passi 4 e 5 Tabelle
Assistente (Matricola, Cognome, Nome, Nascita)

Assiste (Data, VoloID, Matricola) Pilota (Matricola, Cognome, Nome, Nascita, Grado)

Viaggio (Data, VoloID, Stato, MatricolaAereo, Comandante, ViceComandante)

Aeromobile (Matricola, Marca, Modello, AnnoAcquisto) Volo (Numero, OraP, OraA, Durata, ParteDa, ArrivaA)

Aeroporto (Codice, Nome, Citt, Nazione)

Informatica Applicata per Ingegneria Biomedica Progettazione/1

29

2007 Andrea Turati

Interrogazioni

Assistente (Matricola, Cognome, Nome, Nascita) Assiste (Data, VoloID, Matricola) Pilota (Matricola, Cognome, Nome, Nascita, Grado) Viaggio (Data, VoloID, Stato, MatricolaAereo,Comandante, ViceComandante) Aeromobile (Matricola, Marca, Modello, AnnoAcquisto) Volo (Numero, OraP, OraA, Durata, ParteDa, ArrivaA) Aeroporto (Codice, Nome, Citt, Nazione) Quanti voli sono previsti in partenza per ogni nazione Quali modelli di aeromobili sono stati pilotati da Andrea Congedo A quanti viaggi ha preso parte come assistente Stefano Seveso Quali aeromobili sono utilizzati per voli interni Quanti viaggi svolti nel 2000 sono partiti da aeroporti italiani

1. 2. 3. 4. 5.

Informatica Applicata per Ingegneria Biomedica Progettazione/1

30

2007 Andrea Turati

Interrogazioni/soluz.
Quanti voli sono previsti in partenza per ogni nazione SELECT COUNT(DISTINCT Volo.Numero), Aeroporto.Nazione FROM Volo JOIN Aeroporto ON Aeroporto.Codice = Volo.ParteDa GROUP BY Aeroporto.Nazione;
1.

Quali modelli di aeromobili sono stati pilotati da Andrea Turati SELECT DISTINCT(Aeromobile.Modello) FROM (Aeromobile JOIN Viaggio ON MatricolaAereo = Matricola) JOIN Pilota ON (Viaggio.Comandante = Pilota.Matricola OR Viaggio.ViceComandante = Pilota.Matricola) WHERE Pilota.Nome = Andrea AND Pilota.Cognome = Turati;
2.

A quanti viaggi ha preso parte come assistente Francesco Corcoglioniti SELECT COUNT(*) FROM (Viaggio JOIN Assiste ON Viaggio.Data = Assiste.Data AND Viaggio.VoloID = Assiste.VoloID) JOIN Assistente ON Assiste.Matricola = Assistent.Matricola WHERE Assistente.Nome = Francesco AND Assistente.Cognome = Corcoglioniti;
3.
Informatica Applicata per Ingegneria Biomedica Progettazione/1

31

2007 Andrea Turati

Interrogazioni/soluz.
4.

Quanti voli interni sono previsti per ogni nazione

SELECT COUNT(DISTINCT Volo.Numero), A.Nazione FROM (Aeroporto AS A JOIN Volo ON Volo.ArrivaA = A.Codice) JOIN Aeroporto AS P ON Volo.ParteDa = P.Codice WHERE P.Nazione = A.Nazione AND ParteDa <> ArrivaA GROUP BY A.Nazione;

5.

Quanti viaggi svolti nel 2000 sono partiti da aeroporti italiani

SELECT COUNT(*) FROM (Viaggio JOIN Volo ON Viaggio.VoloID = Volo.Numero) JOIN Aeroporto AS P ON Volo.ParteDa = P.Codice WHERE P.Nazione = Italia AND YEAR(Viaggio.Data) = 2000;

Informatica Applicata per Ingegneria Biomedica Progettazione/1

32

2007 Andrea Turati

Potrebbero piacerti anche