Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Le specifiche relative a una base di dati di un ente turistico che fornisce le informazioni sui
ristoranti di una città sono le seguenti:
Si vuole rappresentare una base di dati di un ente turistico che fornisce informazioni sui
ristoranti delle varie zone di una città fornendo i tipi di cucina offerti e le carte di credito
convenzionate.
Per i ristoranti, identificati da un codice, descrivere il nome e l'indirizzo.
Per le zone rappresentare il codice della zona e il relativo nome.
Ciascun ristorante è convenzionato con almeno una carta di credito di cui occorre descrivere il
codice e il nome.
Per ciascuna cucina rappresentare il tipo e la relativa descrizione.
1
Base dati di un ente turistico
Nella progettazione di una base di dati la fase di raccolta delle specifiche sui dati viene in
genere realizzata sulla base di interviste ai futuri utenti della base di dati stessa. Questa fase
produce una descrizione informale delle specifiche che può presentare un certo numero di
ambiguità ed imprecisioni.
La fase di analisi delle specifiche ha appunto lo scopo di risolvere dette ambiguità ed
imprecisioni, ricorrendo, se necessario, ad ulteriori interviste alle persone che hanno fornito le
informazioni. Durante l'analisi delle specifiche potrebbe essere necessario specificare meglio
termini troppo generici, accorpare i sinonimi e distinguere i termini omonimi. Buona norma è
quella di standardizzare la struttura delle frasi, eliminando le frasi contorte, e costruire un
glossario dei termini che precisi i termini adoperati fornendone una breve descrizione e
indicandone i sinonimi e gli altri termini del glossario con cui esiste un legame logico.
Nel nostro caso la fase di analisi delle specifiche è semplificata dalla struttura
particolarmente semplice del problema in esame e dal fatto che le specifiche sono già fornite in
una forma priva di ambiguità ed imprecisioni. Il glossario dei termini per la nostra applicazione
è riportato in Tabella 2-1
Sulla base delle osservazioni fatte si possono riscrivere le specifiche tenendo conto dei criteri
esposti e decomponendo il testo che descrive le specifiche in gruppi di frasi relative agli stessi
concetti. Nel nostro caso, per i motivi già esposti, questa operazione è banale essendo già
abbastanza netta la suddivisione delle frasi in base ai termini. Il risultato è mostrato in Tabella
2-2.
2
Base dati di un ente turistico
Tabella 2-2
SCHEMA ENTITÀ-RELAZIONE
Dopo aver completato la fase di analisi delle specifiche sui dati è possibile passare alla
costruzione del modello concettuale della base di dati. Allo scopo tutti i concetti individuati
nella realtà di interesse vengono rappresentati tramite i costrutti del modello Entità-Relazione.
In particolare tutti i concetti aventi proprietà significative ed esistenza autonoma, quali nel
nostro caso i concetti di ristorante, zona, carta di credito e cucina, vengono rappresentati da
entità del modello, mentre i concetti che legano le entità individuate, quali nel nostro caso le
convenzioni tra un ristorante ed una carta di credito, l'ubicazione di un ristorante in una zona
della città e la cucina offerta da un ristorante, sono rappresentati da relazioni del modello.
A questo punto, sulla base di tutti gli elementi raccolti, possiamo rappresentare il modello
Entità-Relazione della nostra base di dati, mostrato in Figura 2-1. Nello schema sono esplicitati
gli attributi di tutte le entità ed i rispettivi identificatori e sono indicate le cardinalità delle
relazioni.
In particolare si noti come la condizione che ciascun ristorante sia convenzionato con almeno
una carta di credito si traduce in una cardinalità minima pari ad 1 per la partecipazione
dell'entità RISTORANTE alla relazione CONVENZIONE, mentre la cardinalità massima è N perché
un ristorante può avere più convenzioni. La motivazione delle cardinalità assegnate alle altre
relazioni è ovvia: un ristorante è ubicato in una ed una sola zona, ma ogni zona può ospitare
3
Base dati di un ente turistico
zero, uno o più ristoranti; ogni ristorante offre uno ed un sol tipo di cucina, mentre ogni tipo di
cucina è offerta da zero, uno o più ristoranti.
CARTA DI CREDITO
CodiceCarta
Nome
(0,N)
CONVENZIONE
Tipo Descrizione
(1,N)
Codice
(1,1) (0,N)
Nome RISTORANTE CUCINAOFFERTA. CUCINA
Indirizzo
(1,1)
UBICAZIONE
(0,N)
ZONA
CodiceZona
Nome
Figura 2-1
Uno schema E-R non è in genere sufficiente a rappresentare in dettaglio tutti i concetti della
realtà di interesse ed è per questo che esso va corredato di una opportuna documentazione. Tale
documentazione è costituita essenzialmente da un dizionario dei dati e dalla descrizione delle
regole di vincolo e delle regole di derivazione.
Il dizionario dei dati descrive tutti i concetti, entità e relazioni, presenti nello schema. Esso è
composto di due tabelle: la prima descrive le entità, con il loro nome, una descrizione informale,
l'elenco di tutti gli attributi (con eventuali descrizioni) ed i possibili identificatori; la seconda
tabella descrive le relazioni, con il loro nome, una descrizione informale, l'elenco degli attributi
(con eventuali descrizioni) e l'elenco delle entità coinvolte insieme alle loro cardinalità di
partecipazione. Il dizionario dei dati per la nostra applicazione è riportato in Tabella 2-3
Le regole di vincolo esprimono vincoli di integrità sui dati, rappresentabili o non tramite i
costrutti del modello E-R. Tali regole debbono essere espresse sotto forma di asserzioni, ovvero
di affermazioni che debbono essere sempre verificate dalla base di dati. Ad esempio nella nostra
applicazione la regola “Ogni ristorante deve essere convenzionato con almeno una carta di
credito” esprime un vincolo sui dati rappresentato nel modello dalla cardinalità minima di
partecipazione dell’entità RISTORANTE alla relazione CONVENZIONE. Per concludere, nella nostra
applicazione non ci sono ulteriori vincoli sui dati oltre quelli deducibili dallo schema E-R.
4
Base dati di un ente turistico
Infine le regole di derivazione specificano come ricavare concetti non presenti nello schema a
partire da altri concetti in esso già contenuti. Nella nostra applicazione non individuiamo la
necessità di tali regole.
SCHEMA RELAZIONALE
Procediamo a questo punto alla traduzione dello schema Entità-Relazione verso il modello
relazionale. La fase di traduzione vera e propria va preceduta da una ristrutturazione dello
schema E-R. La ristrutturazione si rende necessaria sia perché vi sono costrutti del modello
concettuale non direttamente esprimibili tramite costrutti del modello logico, sia perché la
progettazione logica, essendo la base per la effettiva realizzazione dell’applicazione, deve tenere
conto delle sue prestazioni, in base al carico applicativo previsto.
Durante la fase di ristrutturazione bisogna decidere se mantenere o meno eventuali
ridondanze, eliminare tutte le gerarchie di generalizzazione, decidere se è opportuno partizionare
o accorpare concetti dello schema, selezionare gli identificatori primari per le entità che ne
hanno più di uno, eliminare eventuali attributi multivalore o composti.
Nel seguito indicheremo con il termine di associazione le relazioni del modello E-R per non
confonderle con le relazioni del modello relazionale.
Nello schema E-R della nostra applicazione non individuiamo situazioni che rendano
necessarie delle trasformazioni dello schema stesso, mentre, per quanto riguarda la scelta degli
identificatori principali, essa è scontata in quanto ogni entità ha un solo identificatore, costituito
per di più da un solo attributo.
Procediamo quindi alla traduzione vera e propria verso il modello relazionale, cominciando
dalle entità, che nel nostro caso sono identificate tutte internamente. Ogni entità viene tradotta
con un relazione ed il risultato è il seguente:
5
Base dati di un ente turistico
Altri due vicoli di integrità referenziale sussistono tra l’attributo Ristorante di CONVENZIONE
e l’attributo Codice di RISTORANTE, ed un altro fra l’attributo Carta di CONVENZIONE e
l’attributo CodiceCarta di CARTADICREDITO.
In definitiva lo schema relazionale della nostra base dati è il seguente (in Figura 2-2 è
mostrato lo stesso schema descritto in Microsoft Access):
6
Base dati di un ente turistico
Figura 2-2
Sulla base del glossario dei termini così costruito le specifiche di Tabella 2-2 possono
riscriversi come indicato in Tabella 2-5.
7
Base dati di un ente turistico
Tabella 2-5
Sulla base delle specifiche analizzate si perviene allo schema Entità-Relazione di Figura 2-3.
Esaminiamo in particolare come le nuove specifiche hanno modificato lo schema introdotto in
precedenza.
Innanzitutto l’introduzione del concetto di albergo, che ha proprietà analoghe al concetto di
ristorante, porta alla introduzione di una gerarchia di generalizzazione con ESERCIZIO quale
entità padre e ALBERGO e RISTORANTE quali entità figlie: tale generalizzazione è totale ed
esclusiva. Tutte le proprietà comuni alle due entità figlie, attributi e relazioni, diventano
proprietà dell’entità padre.
Il fatto che interessino i ristoranti, e quindi in genere gli esercizi, di più città e che ogni città
sia suddivisa in zone con un codice unico solo nell’ambito di una città, porta all’introduzione di
8
Base dati di un ente turistico
una relazione uno a molti SUDDIVISIONE tra le entità ZONA e CITTÀ, con l’entità ZONA
identificata dal suo codice e dalla città correlata.
Infine la possibilità che ci siano ristoranti, e dunque esercizi, che non accettano carte di
credito si traduce in una cardinalità minima pari a zero per la partecipazione dell’entità
ESERCIZIO alla relazione CONVENZIONE.
IdCittà CITTÀ
CodiceCarta Nome
CARTA DI CREDITO
Nome (0,N)
(0,N)
SUDDIVISIONE
CONVENZIONE
CodiceZona Nome
(0,N) (1,1)
Codice (1,1) (0,N)
Nome ESERCIZIO UBICAZIONE ZONA
Indirizzo
(1,1)
ALBERGO RISTORANTE CUCINAOFFERTA.
(0,N)
9
Base dati di un ente turistico
Per passare alla traduzione verso il modello relazionale dobbiamo procedere alla
ristrutturazione dello schema E-R: nel caso specifico l’unica ristrutturazione consiste
nell’eliminazione della gerarchia di generalizzazione. Scegliamo allo scopo di sostituire la
generalizzazione con due associazioni uno ad uno tra l’entità padre e le entità figlie,
rispettivamente DATIALBERGO e DATIRISTORANTE. Le entità figlie saranno identificate
esternamente dall’entità padre tramite tali relazioni.
Alternativamente avremmo potuto accorpare le figlie nel padre, aggiungendo a questo le
proprietà (attributi e partecipazioni ad associazioni) delle figlie oltre ad un attributo per
distinguere le occorrenze; poiché nel nostro caso le entità figlie, oltre al fatto che l’applicazione
farà distinzione tra le occorrenze delle une e delle altre, hanno proprietà specifiche, questa scelta
avrebbe portato all’introduzione di molti valori nulli. Un’ulteriore possibilità sarebbe stata
quella di accorpare il padre nelle figlie facendo ereditare a queste ultime le proprietà del padre;
nel nostro caso però questa scelta avrebbe comportato la duplicazione delle due associazioni che
coinvolgono l’entità padre. Lo schema E-R ristrutturato è riportato in Figura 2-4.
10
Base dati di un ente turistico
IdCittà CITTÀ
CodiceCarta Nome
CARTA DI CREDITO
Nome (0,N)
(0,N)
SUDDIVISIONE
CONVENZIONE
CodiceZona Nome
(0,N) (1,1)
Codice (1,1) (0,N)
Nome ESERCIZIO UBICAZIONE ZONA
Indirizzo
(0,1) (0,1)
DATI DATI
ALBERGO RISTORANTE
(1,1) (1,1)
(1,1)
ALBERGO RISTORANTE CUCINAOFFERTA.
(0,N)
Passiamo quindi alla fase di traduzione vera e propria verso il modello relazionale, iniziando
dalle entità identificate internamente:
Traduciamo ora le entità con identificatore esterno. Questa operazione produce relazioni le
cui chiavi primarie includono gli identificatori primari delle entità identificanti:
Per le relazioni appena individuate bisogna specificare alcuni vincoli di integrità: esiste un
vincolo di integrità referenziale tra l’attributo Codice di ALBERGO e l’attributo Codice di
ESERCIZIO, un altro tra l’attributo Codice di RISTORANTE e l’attributo Codice di ESERCIZIO ed
un ultimo tra l’attributo Città di ZONA e l’attributo IdCittà di CITTÀ.
11
Base dati di un ente turistico
Allo schema bisogna aggiungere altri due vincoli di integrità: esiste un vincolo di integrità
referenziale tra l’attributo Cucina di RISTORANTE e l’attributo Tipo di CUCINA, ed un altro fra la
coppia di attributi (Città, Zona) di ESERCIZIO e la coppia di attributi (Città, CodiceZona) di
ZONA.
Resta infine da tradurre l’associazione molti a molti CONVENZIONE. Come già visto essa
viene tradotta con una relazione avente come attributi gli identificatori delle entità coinvolte,
questa volta ESERCIZIO e CARTADICREDITO, opportunamente ridenominati. Tale coppia di
identificatori costituisce anche l’identificatore primario della relazione CONVENZIONE:
Altri due vicoli di integrità referenziale sussistono tra l’attributo Esercizio di CONVENZIONE e
l’attributo Codice di ESERCIZIO, ed un altro fra l’attributo Carta di CONVENZIONE e l’attributo
CodiceCarta di CARTADICREDITO.
In definitiva lo schema relazionale della nostra base dati è il seguente (in Figura 2-5 è
mostrato lo stesso schema descritto in Microsoft Access):
12
Base dati di un ente turistico
Figura 2-5
Una volta definito lo schema relazionale della nostra base di dati e popolate le tabelle
possiamo passare alla formulazione di alcune interrogazioni sulla base dati stessa. Innanzitutto
popoliamo la nostra base di dati come illustrato nelle pagine seguenti.
Si precisa che si sono fatte le seguenti scelte riguardo i codici identificati delle diverse entità:
¾ l'attributo Codice di ESERCIZIO è un codice alfanumerico di 5 caratteri;
¾ l'attributo CodiceCarta di CARTADICREDITO è un codice alfanumerico di 5 caratteri;
¾ l'attributo Tipo di CUCINA è un codice costituito da un singolo carattere;
¾ l'attributo CodiceZona di ZONA è un codice costituito da un singolo carattere.
13
Base dati di un ente turistico
ESERCIZIO
Codice Nome Indirizzo Città Zona
AGT44 Hotel Serius Viale Augusto 4 A
CH789 Cin Cian P.le Tecchio 4 A
CRG68 Terrazze Hotel Giorgione Via D'Afflitto 5 B
DIA55 Hotel Diana Via degli Scipioni 4 A
DTN77 Da Tonino Via Lepanto 4 A
EU444 Oasi Viale Italia 6 A
FG567 Trattoria Grasso Via S.Barbara 11 C
GMB33 Gambero Rosso Via Morosini 4 A
GV444 La Pignata Viale Tigli 5 B
HICD1 Holyday Inn Isola E/6 4 D
JH787 Jolly Hotel Via Medina 4 C
JK876 Hotel Vesuvio Via Marina 7 L
LCP66 Lucullo Via Marina 9 L
LEO34 Hotel Leopardi Via Giulio Cesare 4 A
PDM55 La gondola Piazza Duomo 10 A
PDR55 Paradise Via della Liberazione 6 B
PKT23 Pitagoras Via Giulio Cesare 4 A
R33AI Palace Hotel Via Roma 10 A
RTY67 Hotel Minarda Via Bosco 8 C
TY767 Hotel Excelsior Via della Repubblica 6 C
CARTADICREDITO
CodiceCarta Nome
AE112 American Express
DC332 Diners Club
GH656 VipCard
MC453 MasterCard
TC565 Top Card
VS343 Visa
ALBERGO
Codice Categoria NrStanze
AGT44 5 35
CRG68 2 25
DIA55 1 8
HICD1 5 100
JH787 3 52
JK876 4 34
LEO34 2 10
R33AI 4 75
RTY67 2 15
TY767 5 78
14
Base dati di un ente turistico
RISTORANTE
Codice Cucina
CH789 H
DTN77 T
EU444 T
FG567 C
GMB33 T
GV444 L
LCP66 P
PDM55 F
PDR55 T
PKT23 G
CONVENZIONE
Esercizio Carta
AGT44 AE112
AGT44 DC332
CH789 GH656
CRG68 VS343
EU444 MC453
GMB33 AE112
GMB33 MC453
GMB33 VS343
GV444 MC453
GV444 VS343
HICD1 AE112
HICD1 DC332
HICD1 MC453
HICD1 TC565
HICD1 VS343
JH787 MC453
JK876 GH656
PKT23 DC332
R33AI GH656
R33AI MC453
TY767 AE112
TY767 DC332
TY767 GH656
TY767 MC453
TY767 TC565
TY767 VS343
15
Base dati di un ente turistico
CUCINA
Tipo Descrizione
A Araba
C Casereccia
F Francese
G Greca
H Cinese
L Locale
P Pesce
T Tradizionale
CITTÀ
IdCittà Nome
4 Napoli
5 Ariano Irpino
6 Roma
7 Sorrento
8 Grottaminarda
9 Pozzuoli
10 Milano
11 Montecalvo Irpino
ZONA
Città CodiceZona Nome
4 A Fuorigrotta
4 B Bagnoli
4 C Centro storico
4 D Centro direzionale
4 E Barra
4 F Ponticelli
5 A Rione Cardito
5 B Centro
5 D Camporeale
5 M Rione Martiri
6 A Eur
6 B Parioli
6 C Centro
7 C Centro
7 L Litorale
8 C Centro
9 C Centro
9 L Litorale
10 A Centro
10 B Cento direzionale
11 C Centro
16
Base dati di un ente turistico
Formuliamo ora sull’istanza appena descritta della nostra base di dati una serie di
interrogazioni SQL di complessità crescente, introducendo man mano i vari operatori e le varie
clausole che il linguaggio di interrogazione mette a disposizione (si fa riferimento allo standard
SQL-2). Per ogni interrogazione verrà mostrato il risultato e la corrispondente traduzione nel
dialetto SQL adoperato da Access.
select Codice
from Albergo
where NrStanze>50
SELECT Codice
FROM Albergo
WHERE NrStanze>50;
Codice
HICD1
JH787
R33AI
TY767
select *
from Albergo
where (Categoria=3 or Categoria=4) and NrStanze>50
SELECT *
FROM Albergo
WHERE (Categoria=3 or Categoria=4) and NrStanze>50;
Interrogazione 3:Estrarre i nomi delle zone in cui è divisa la città di Napoli (senza adoperare
esplicitamente l’operatore di join).
select Zona.Nome
from Città, Zona
where Città.Nome='Napoli' and Città.IdCittà=Zona.Città
SELECT Zona.Nome
FROM Città, Zona
WHERE Città.Nome='Napoli' and Città.IdCittà=Zona.Città;
17
Base dati di un ente turistico
Nome
Fuorigrotta
Bagnoli
Centro direzionale
Centro storico
Barra
Ponticelli
select Z.Nome
from Città C join Zona Z on C.IdCittà=Z.Città
where C.Nome='Napoli'
order by Z.Nome
SELECT Z.Nome
FROM Città AS C INNER JOIN Zona AS Z ON C.IdCittà=Z.Città
WHERE C.Nome='Napoli'
ORDER BY Z.Nome;
Nome
Bagnoli
Barra
Centro direzionale
Centro storico
Fuorigrotta
Ponticelli
Interrogazione 5: Estrarre per ogni ristorante codice, nome, indirizzo, nome della zona e della
città e descrizione della cucina offerta.
18
Base dati di un ente turistico
Interrogazione 6: Estrarre per ogni albergo, con almeno tre stelle e che non si trovi a Roma,
codice, nome, indirizzo, nome della zona e della città, categoria e numero di stanze, fornendo
le righe del risultato ordinate per categoria e, a parità di questa, per numero di stanze.
Interrogazione 7: Estrarre i codici dei ristoranti e delle carte di credito con cui sono
convenzionati, mantenendo nel risultato anche i ristoranti che non hanno alcuna convenzione.
19
Base dati di un ente turistico
Ristorante Carta
GMB33 AE112
GMB33 VS343
GMB33 MC453
GV444 MC453
GV444 VS343
DTN77
EU444 MC453
PKT23 DC332
CH789 GH656
PDM55
LCP66
PDR55
FG567
Interrogazione 8: Estrarre le descrizioni delle cucine offerte dai ristoranti il cui nome inizi con
la lettera O o con la lettera P, eliminando eventuali duplicati.
Descrizione
Greca
Tradizionale
NumeroAlberghi StanzeTotali
10 432
Interrogazione 10: Estrarre codice, nome e numero di ristoranti delle città che hanno dei
ristoranti.
20
Base dati di un ente turistico
Interrogazione 11: Estrarre i codici e i nomi delle carte di credito che sono convenzionate con
più di 4 esercizi commerciali.
Interrogazione 12: Estrarre il codice e il numero di stanze dell'albergo con più stanze.
Codice NrStanze
HICD1 100
Interrogazione 13: Estrarre i codici e i nomi delle carte di credito che non sono convenzionate
con alcun ristorante.
select *
from CartaDiCredito
21
Base dati di un ente turistico
SELECT *
FROM CartaDiCredito
WHERE CodiceCarta not in (select C.Carta from Ristorante R inner join
Convenzione C on R.Codice=C.Esercizio);
CodiceCarta Nome
TC565 Top Card
select *
from CartaDiCredito D
where not exists (select *
from Ristorante R join Convenzione C on
R.Codice=C.Esercizio
where C.Carta=D.CodiceCarta)
SELECT *
FROM CartaDiCredito AS D
WHERE (((Exists (select * from Ristorante R inner join Convenzione C on
R.Codice=C.Esercizio where C.Carta=D.CodiceCarta))=False));
Interrogazione 15: Estrarre il nome della città in cui è presente il maggior numero di esercizi
commerciali.
select Nome
from VistaCittà
where NrEsercizi = ( select max(NrEsercizi)
from VistaCittà)
Nell'implementazione con Access definiamo due query, di cui la prima coincide con la vista
VistaCittà
22
Base dati di un ente turistico
SELECT Nome
FROM VistaCittà
WHERE NrEsercizi = (select max(NrEsercizi) from VistaCittà);
Nome
Napoli
Sullo schema relazionale della base dati in esame, già definito in Microsoft Access 97, è stata
realizzata un'applicazione di interfaccia per l'utente finale. All'avvio l'applicazione presenta la
maschera-menu mostrata in Figura 2-6.
Figura 2-6
¾ Inserimento dati
Apre un menu simile che consente la scelta del tipo di dati da inserire:
¾ Inserimento alberghi
¾ Inserimento ristoranti
¾ Inserimento città
¾ Inserimento zone
¾ Inserimento carte di credito
¾ Inserimento cucine
¾ Inserimento convenzioni
Selezionata una di queste opzioni, viene aperta una maschera per l'inserimento del
corrispondente tipo di dati. In Figura 2-7 è ad esempio mostrata la maschera per
l'inserimento dei dati relativi agli alberghi.
23
Base dati di un ente turistico
Figura 2-7
¾ Visualizzazione dati
Apre un menu simile che consente la scelta di una delle modalità previste di visualizzazione
dei dati contenuti nel database. Al momento sono possibili le seguenti opzioni:
¾ Visualizza città con relative
Per ogni città visualizza i suoi dati e l'elenco delle zone in cui è divisa (vedi Figura 2-8).
¾ Visualizza esercizi con relative convenzioni
Per ogni esercizio commerciale visualizza i suoi dati e l'elenco delle carte di credito con
cui è convenzionato.
¾ Distribuzione degli esercizi per città
Visualizza un grafico a torta che mostra come sono distribuiti gli esercizi commerciali
tra le diverse città (vedi Figura 2-9).
Figura 2-8
24
Base dati di un ente turistico
Figura 2-9
¾ Esempi di interrogazioni
Apre un menu simile che permette di selezionare una delle interrogazioni d'esempio
formulate nel paragrafo precedente. Selezionata una interrogazione ne viene visualizzato il
risultato.
¾ Stampa
Permette di selezionare un report per la stampa: al momento è stato realizzato un solo report
che stampa un elenco dei ristoranti divisi per città e per zone (vedi Figura 2-10).
¾ Esci dall'applicazione
Chiude l'applicazione ma rimane nell'ambiente di Microsoft Access 97
¾ Esci da Microsoft Access 97
Chiude Microsoft Access 97.
25
Base dati di un ente turistico
Elenco ristoranti
Città Zona Nome Codice Indirizzo Cucina
Ariano Irpino
Centro
La Pignata GV444 Viale Tigli Locale
Milano
Centro
La gondola PDM55 Piazza Duomo Francese
Montecalvo Irpino
Centro
Trattoria Grasso FG567 Via S.Barbara Casereccia
Napoli
Fuorigrotta
Cin Chan CH789 P.le Tecchio Cinese
Da Tonino DTN77 Via Lepanto Tradizionale
Gambero Rosso GMB33 Via Morosini Tradizionale
Pitagoras PKT23 Via Giulio Cesare Greca
Pozzuoli
Litorale
Lucullo LCP66 Via Marina Pesce
Roma
Eur
Oasi EU444 Viale Italia Tradizionale
Parioli
Paradise PDR55 Via della Tradizionale
Liberazione
Figura 2-10
26
Progetto 2
Base dati del D.I.S.
Si vuole realizzare una base dati per il Dipartimento di Informatica e Sistemistica della Facoltà
di Ingegneria della Università degli studi di Napoli Federico II, in cui si vogliono mantenere
informazioni sull'organico del dipartimento, sui corsi offerti, sulle attività di ricerca, sulle tesi
svolte e sulle strutture a disposizione.
Per i membri dell'organico, identificati da un numero di matricola, si vogliono memorizzare i
dati personali, ovvero codice fiscale, cognome, nome, data e città di nascita, indirizzo, città di
residenza e numero di telefono, il recapito universitario, costituito da numero interno e indirizzo
di posta elettronica, ed infine le note sulla carriera e la struttura del dipartimento cui afferiscono,
insieme alla data di afferenza. Per le strutture, identificate da un codice, si vuole memorizzare
il nome, i numeri di telefono e fax, la sede in cui sono ubicate, il nome del responsabile e la
tipologia di struttura. Per le sedi, identificate da un codice, si vuole memorizzare l'indirizzo e il
C.A.P.
L'organico è diviso in personale di ricerca e personale non docente. Il personale non docente è
caratterizzato da un livello e può essere personale tecnico o personale amministrativo. Per
coloro che fanno parte del personale di ricerca si vuole rappresentare il settore di ricerca, il
gruppo di ricerca di cui fanno parte, i filoni di ricerca a cui partecipano e le pubblicazioni di cui
sono autori. Per i gruppi di ricerca, identificati da un codice, si rappresenta il nome. Per i filoni
di ricerca, identificati da un codice, si vuole memorizzare il nome, il settore di ricerca, le note
su eventuali altre caratteristiche, quali enti coinvolti e finanziatori, il nome del responsabile e le
pubblicazioni ad essi associate. Di ogni pubblicazione, identificata da un codice, interessano il
titolo, la data di pubblicazione, la rivista su cui è stata pubblicata, il contenuto e i nomi degli
autori. All'interno di ogni filone di ricerca si distinguono diversi temi di ricerca, caratterizzati
da un nome, una descrizione ed un codice unico solo all'interno di quel particolare filone di
ricerca. Per quanto riguarda le tesi, identificate da un codice, si vuole memorizzare il titolo, una
27
Base dati del D.I.S.
descrizione ed eventualmente il tema di ricerca cui fanno riferimento. Per le tesi che siano state
assegnate si vogliono memorizzare i dati dello studente, ovvero nome, cognome e numero di
matricola, ed i nomi di relatore e correlatore, i quali fanno parte del personale di ricerca. Infine
per i lavori di tesi che siano stati conclusi si vuole memorizzare l'anno accademico in cui sono
stati presentati.
Il personale di ricerca si divide in docenti e dottorandi. Per ogni docente si vogliono
rappresentare i corsi che esso insegna. I docenti possono essere professori ordinari, associati,
straordinari o ricercatori. Per i corsi si vuole memorizzare l'anno accademico, le date di inizio e
fine, il nome del professore, l'orario delle lezioni e l'insegnamento offerto, caratterizzato da un
codice comprensivo del codice di corso di laurea, un nome e una descrizione. Per ogni
insegnamento è previsto al più un corso per anno accademico. Per le lezioni si vuole
memorizzare il giorno della settimana. l'ora, l'aula ed il corso di cui fanno parte.
Da una prima analisi delle specifiche del problema in esame possiamo ricavare un glossario
dei termini che chiarisca il significato dei termini adoperati. Tale glossario è illustrato in Tabella
4-1.
28
Base dati del D.I.S.
Sulla base del glossario dei termini appena ricavato e dei criteri generali per l'analisi delle
specifiche già illustrati nel capitolo precedente, si possono riscrivere le specifiche
decomponendo il testo che le descrive in gruppi di frasi relative agli stessi concetti. Il risultato di
questa operazione è mostrato in Tabella 4-2.
29
Base dati del D.I.S.
30
Base dati del D.I.S.
Tabella 4-2
SCHEMA ENTITÀ-RELAZIONE
Definite ed analizzate le specifiche sui dati possiamo passare alla costruzione dello schema
E-R della base dati. Data la complessità del problema è opportuno scegliere una conveniente
strategia di progetto. Scegliamo ad esempio un approccio di tipo inside-out, che può essere visto
come un caso particolare della strategia bottom-up. Secondo questo approccio si individuano
inizialmente i concetti più importanti e si procede poi a macchia d'olio aggiungendo allo schema
ad ogni passo i concetti più vicini a quelli già individuati. Questa scelta ci consente di costruire
lo schema E-R in modo molto naturale introducendo i vari concetti così come essi si presentano
nella versione “ristrutturata” delle specifiche.
31
Base dati del D.I.S.
ORARIO, con CORSO. Per concludere introduciamo l'entità TESI, con tutti i suoi attributi, e le
relazioni ARGOMENTO, RELATORE e CORRELATORE tra essa e le entità TEMA, DOCENTE e
PERSONALE DI RICERCA rispettivamente. Lo schema E-R risultante da questa fase di
progettazione è mostrato in Figura 4-1.
32
Base dati del D.I.S.
Matricola Nome Cognome
(0,N)
TEMA Id Descrizione
(1,1) Id Nome
Note
Codice TIPO
RESPONSABILE APPARTENENZA
(0,N) (1,1)
FILONE DI RICERCA (1,1)
(0,N) Id
(0,N) Nome
STRUTTURA
(1,1) Telefono
STESURA (0,N) Fax
RESPONSABILE
PARTECIPAZIONE STRUTTURA
Data
(1,1) AFFERENZA
Città residenza
Città nascita
Data nascita
PUBBLICAZIONE
(1,N)
Cognome
Indirizzo
Interno
Nome
Email
C.F.
Rivista
Data
Id
Titolo
Contenuto
(1,1)
(0,N) Telefono
Recapito Dati personali
Giorno AUTORE (0,N) (0,N)
Ora ORGANICO Matricola
Aula LEZIONE (0,N)
Note
(1,1)
(0,N) (0,N) Livello
PERSONALE DI Settore PERSONALE NON
ORARIO (0,N)
RICERCA DOCENTE
(0,N)
Codice
INSEGNAMENTO Nome
Descrizione
Figura 4-1
33
Base dati del D.I.S.
Allo schema E-R appena costruito affianchiamo a scopo documentativo il dizionario dei dati
illustrato in Tabella 4-3.
34
Base dati del D.I.S.
35
Base dati del D.I.S.
Lo schema E-R che abbiamo costruito necessita di alcune ristrutturazioni prima di poter
essere tradotto verso il modello relazionale. Essenzialmente bisogna eliminare le gerarchie di
generalizzazione e gli attributi composti.
Analizziamo prima di tutto come eliminare gli attributi composti. Consideriamo per iniziare
gli attributi Dati personali e Recapito di ORGANICO. Partendo dalla considerazione che i dati
personali, intesi come dati anagrafici, possono essere gestiti separatamente dai dati attinenti al
ruolo ricoperto all'interno del dipartimento, e che le operazioni sulla base di dati accedono più
frequentemente a questi ultimi che non ai primi, decidiamo di eliminare l'attributo composto
Dati personali come indicato in Figura 4-2, ovvero introduciamo una entità DATI PERSONALI
legata ad ORGANICO da una relazione uno ad uno ed identificata esternamente tramite tale
relazione. Per le stesse motivazioni decidiamo di trasformare gli attributi componenti di
Recapito in attributi di ORGANICO. Per quanto riguarda infine l'attributo Laureando di TESI
facciamo la stessa scelta che abbiamo fatto per l'attributo Dati personali di ORGANICO, ovvero
36
Base dati del D.I.S.
introduciamo una nuova entità, STUDENTE, legata a TESI da una relazione uno ad uno ed
identificata esternamente tramite tale relazione. Il risultato di questa ristrutturazione è mostrato
in Figura 4-3.
Città residenza
Città nascita
Data nascita
Città residenza
Città nascita
Data nascita
Cognome
Indirizzo
Matricola
Cognome
Indirizzo
Interno
Telefono
Interno
Nome
Email
Nome
C.F.
Note
C.F.
Telefono
Recapito Dati personali (1,1) (1,1)
ORGANICO DATI DATI PERSONALI
ORGANICO Matricola
Note Figura 4-2
Id TitoloDescrizione
Matricola Nome Cognome STUDENTE
Resta ora da ristrutturare la gerarchia di specializzazione su più livelli avente Organico quale
radice. Tale gerarchia viene riportata in Figura 4-4, tenendo conto della ristrutturazione già
effettuata sugli attributi di ORGANICO. In tale figura per semplicità non sono state riportate le
relazioni che coinvolgono le entità presenti nella gerarchia; si faccia riferimento per esse alla
Figura 4-1.
Matricola
Interno
Email
Note
ORGANICO
Figura 4-4
37
Base dati del D.I.S.
Matricola
Interno
Email
ORGANICONote
(0,1) (0,1)
S1 S2
(1,1) (1,1) Livello
PERSONALE DI Settore PERSONALE NON
RICERCA DOCENTE Incarico
(0,1) (0,1)
S3 S4
(1,1) (1,1)
DOCENTE DOTTORANDO
Qualifica
Figura 4-5
38
Base dati del D.I.S.
Matricola Nome Cognome
(0,N)
TEMA Id Descrizione
(1,1) Id Nome
Note
Codice TIPO
RESPONSABILE APPARTENENZA
(0,N) (1,1)
FILONE DI RICERCA (1,1)
(0,N) Id
(0,N) Nome
STRUTTURA
(1,1) Telefono
STESURA (0,N) Fax
RESPONSABILE
PARTECIPAZIONE STRUTTURA Data inizio
Città residenza
Città nascita
Data nascita
(1,1) AFFERENZA
Cognome
Indirizzo
Telefono
PUBBLICAZIONE Data fine
(1,N)
Nome
C.F.
Matricola
Interno
Email
Note
Rivista
Data
Id
Titolo
Contenuto
DATI PERSONALI
(0,N)
(1,1) (1,1)
Giorno AUTORE (0,N) ORGANICO
(0,N) DATI
Ora (1,1)
(0,1) (0,1)
Aula LEZIONE (0,N) S1 S2
(1,1) (1,1) (1,1) Livello
(0,N) (0,N)
(0,N) PERSONALE DI Settore PERSONALE NON
ORARIO Incarico
RICERCA DOCENTE
(0,1) (0,1)
Data inizio (0,N)
(1,1) S3 S4
CORSO DOCENZA
Data fine (1,1)
(1,1) (0,N) (1,1)
Anno accademico DOCENTE DOTTORANDO
MATERIA
(0,N) Qualifica
Codice
INSEGNAMENTO Nome
Descrizione
Figura 4-6
39
Base dati del D.I.S.
Dopo aver ristrutturato lo schema E-R possiamo finalmente passare alla fase di traduzione
vera e propria, traducendo per prime le entità identificate internamente:
Traduciamo ora le entità con identificatore esterno. Questa operazione produce relazioni le
cui chiavi primarie includono gli identificatori primari delle entità identificanti, eventualmente
rinominati:
Per le relazioni introdotte allo schema bisogna aggiungere i seguenti vincoli di integrità
referenziale:
40
Base dati del D.I.S.
Passiamo ora alla traduzione delle associazioni (indichiamo con questo termine le relazioni
del modello E-R per non confonderle con le relazioni del modello relazionale). Si noti
innanzitutto come le associazioni DATI, S1, S2, S3, S4, SVILUPPO, LAUREANDO e MATERIA siano
già state tradotte per effetto della traduzione delle entità identificate esternamente proprio
tramite tali associazioni. Traduciamo quindi le associazioni uno a molti cercando per quanto
possibile di accorpare le relazioni e quindi di tradurre le associazioni dal lato di cardinalità uno.
Allo schema bisogna aggiungere gli ulteriori seguenti vincoli di integrità referenziale:
41
Base dati del D.I.S.
Traduciamo infine le associazioni molti a molti. Come già visto nel capitolo precedente esse
vengono tradotte con relazioni aventi come attributi, oltre naturalmente ad eventuali attributi
delle associazioni stesse, gli identificatori delle entità coinvolte, i quali costituiscono anche la
chiave della relazione.
42
Base dati del D.I.S.
43