Sei sulla pagina 1di 43

Progetto 1

Base dati di un ente turistico

SPECIFICHE DEL PROBLEMA

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. Definire lo schema Entità/Relazione.


2. Ricavare il dizionario dei dati.
3. Definire lo schema relazionale (omettere l'analisi quantitativa).
4. Modificare lo schema E-R supponendo che:
• interessino i ristoranti di più città e non di una sola: ogni città è suddivisa in zone,
ognuna con un codice che è unico solo nell'ambito della città stessa;
• ci possano essere ristoranti che non accettano carte di credito;
• interessino non solo i ristoranti ma anche gli alberghi, che hanno proprietà simili ai
ristoranti con eccezione del tipo di cucina ma hanno in più la categoria e il numero di
stanze.

1
Base dati di un ente turistico

ANALISI DELLE SPECIFICHE

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

Termine Descrizione Sinonimi Collegamenti


Ristorante Ristoranti convenzionati con Zona, carta di credito,
l'ente turistico. cucina
Zona Zone della città. Ristorante
Carta di credito Carte di credito con cui esistono Ristorante
convenzioni.
Cucina Tipi di cucina offerti. Ristorante
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

Frasi di carattere generale


Si vuole realizzare una base di dati per un ente turistico che fornisce informazioni sui ristoranti
delle diverse zone di una città. La base di dati deve mantenere informazioni sui ristoranti, sulle
zone della città, sui tipi di cucina offerti e sulle carte di credito convenzionate.

Frasi relative ai ristoranti


Per i ristoranti, identificati da un codice, rappresentiamo il nome, l'indirizzo, la zona della città,
le carte di credito convenzionate e il tipo di cucina offerto. Ogni ristorante deve essere
convenzionato con almeno una carta di credito.

Frasi relative alle zone


Per le zone, identificate da un codice, rappresentiamo il nome.

Frasi relative alle carte di credito


Per le carte di credito, identificate da un codice, rappresentiamo il nome.

Frasi relative alle cucine


Per le cucine, identificate da un tipo, rappresentiamo la descrizione.

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

DIZIONARIO DEI DATI

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.

Entità Descrizione Attributi Identificatore


Ristorante Ristoranti convenzionati con Codice, Nome, Indirizzo Codice
l'ente turistico.
Zona Zone della città. CodiceZona, Nome CodiceZona
Carta di credito Carte di credito con cui CodiceCarta, Nome CodiceCarta
esistono convenzioni.
Cucina Tipi di cucina offerti. Tipo, Descrizione Tipo

Relazione Descrizione Entità coinvolte Attributi


Convenzione Associa un ristorante alle Ristorante (1,N)
carte di credito con cui è Carta di credito (0,N)
convenzionato.
Ubicazione Associa un ristorante alla Ristorante (1,1)
zona della città in cui è Zona (0,N)
ubicato.
CucinaOfferta Associa un ristorante al tipo Ristorante (1,1)
di cucina da esso offerta. Cucina (0,N)
Tabella 2-3

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

RISTORANTE (Codice, Nome, Indirizzo)


CUCINA (Tipo, Descrizione)
CARTADICREDITO (CodiceCarta, Nome)
ZONA (CodiceZona, Nome)

Passiamo ora a tradurre le associazioni. Le due associazioni uno a molti CUCINAOFFERTA e


UBICAZIONE si traducono introducendo, con opportune ridenominazioni, gli identificatori
primari delle entità CUCINA e ZONA rispettivamente, tra gli attributi della relazione RISTORANTE:

RISTORANTE (Codice, Nome, Indirizzo, Cucina, Zona)

Allo schema bisogna aggiungere i 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
l’attributo Zona di RISTORANTE e l’attributo CodiceZona di ZONA.
Resta infine da tradurre l’associazione molti a molti CONVENZIONE. Essa viene tradotta con
una relazione avente come attributi gli identificatori delle entità coinvolte, RISTORANTE e
CARTADICREDITO, opportunamente ridenominati. Tale coppia di identificatori costituisce anche
l’identificatore primario della relazione CONVENZIONE:

CONVENZIONE (Ristorante, Carta)

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):

RISTORANTE (Codice, Nome, Indirizzo, Cucina, Zona)


CUCINA (Tipo, Descrizione)
CARTADICREDITO (CodiceCarta, Nome)
ZONA (CodiceZona, Nome)
CONVENZIONE (Ristorante, Carta)

6
Base dati di un ente turistico

Figura 2-2

MODIFICA DELLO SCHEMA ENTITÀ-RELAZIONE

Modifichiamo ora lo schema E-R precedentemente descritto, in maniera da soddisfare le


nuove specifiche sui dati. Ripercorriamo allo scopo tutti i passi precedentemente effettuati nella
progettazione della base di dati.
L’analisi delle nuove specifiche sui dati porta alla individuazione di tre nuovi termini:
albergo, esercizio, che comprende i termini ristorante ed albergo, e città. Il nuovo glossario dei
termini è quello riportato in Tabella 2-4.

Termine Descrizione Sinonimi Collegamenti


Esercizio Esercizi commerciali Zona, Carta di credito,
convenzionati con l'ente turistico. Albergo, Ristorante
Ristorante Ristoranti convenzionati con Esercizio, Cucina
l’ente.
Albergo Alberghi convenzionati con Esercizio
l’ente.
Città Città di interesse per l'ente. Zona
Zona Zone in cui sono divise le città. Città, Esercizio
Carta di credito Carte di credito con cui esistono Esercizio
convenzioni.
Cucina Tipi di cucina offerti. Ristorante
Tabella 2-4

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

Frasi di carattere generale


Si vuole realizzare una base di dati per un ente turistico che fornisce informazioni sui ristoranti e
sugli alberghi delle diverse zone di alcune città. La base di dati deve mantenere informazioni sui
ristoranti e gli alberghi, sulle carte di credito convenzionate, sulle città e le loro zone e sui tipi di
cucina offerti dai ristoranti.

Frasi relative agli esercizi


Per gli esercizi, identificati da un codice, rappresentiamo il nome, l'indirizzo, la zona e le carte
di credito convenzionate

Frasi relative ai ristoranti


Per gli esercizi che siano ristoranti rappresentiamo il tipo di cucina offerto.

Frasi relative agli alberghi


Per gli esercizi che siano alberghi rappresentiamo la categoria ed il numero di stanze.

Frasi relative alle città


Per le città, identificate da un codice, rappresentiamo il nome.

Frasi relative alle zone


Per le zone, identificate da un codice unico nell’ambito di una città, rappresentiamo il nome.

Frasi relative alle carte di credito


Per le carte di credito, identificate da un codice, rappresentiamo il nome.

Frasi relative alle cucine


Per le cucine, identificate da un tipo, rappresentiamo la descrizione.

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)

Categoria NrStanze CUCINA


Tipo
Descrizione
Figura 2-3

NUOVO DIZIONARIO DEI DATI

In Tabella 2-6 si riporta il dizionario relativo al nuovo schema E-R.

Entità Descrizione Attributi Identificatore


Esercizio Esercizi commerciali Codice, Nome, Indirizzo Codice
convenzionati con l'ente
turistico.
Ristorante Ristoranti convenzionati con Codice
l'ente turistico.
Albergo Alberghi convenzionati con Categoria, NrStanze Codice
l'ente turistico.
Città Città di interesse per l'ente IdCittà, Nome IdCittà
Zona Zone in cui sono divise le CodiceZona, Nome CodiceZona, Città
città.

9
Base dati di un ente turistico

Carta di credito Carte di credito con cui CodiceCarta, Nome CodiceCarta


esistono convenzioni.
Cucina Tipi di cucina offerti. Tipo, Descrizione Tipo

Relazione Descrizione Entità coinvolte Attributi


Convenzione Associa un esercizio alle Esercizio (0,N)
carte di credito con cui è Carta di credito (0,N)
convenzionato.
Ubicazione Associa un esercizio alla Esercizio (1,1)
zona della città in cui è Zona (0,N)
ubicato.
CucinaOfferta Associa un ristorante al tipo Ristorante (1,1)
di cucina da esso offerta. Cucina (0,N)
Suddivisione Associa una città alle zone in Città (0,N)
cui è suddivisa Zona (1,1)
Tabella 2-6

NUOVO SCHEMA RELAZIONALE

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)

Categoria NrStanze CUCINA


Tipo
Descrizione
Figura 2-4

Passiamo quindi alla fase di traduzione vera e propria verso il modello relazionale, iniziando
dalle entità identificate internamente:

ESERCIZIO (Codice, Nome, Indirizzo)


CUCINA (Tipo, Descrizione)
CARTADICREDITO (CodiceCarta, Nome)
CITTÀ (IdCittà, Nome)

Traduciamo ora le entità con identificatore esterno. Questa operazione produce relazioni le
cui chiavi primarie includono gli identificatori primari delle entità identificanti:

ALBERGO (Codice, Categoria, NrStanze)


RISTORANTE (Codice)
ZONA (Città, CodiceZona, Nome)

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

Possiamo infine tradurre le associazioni. Si noti come le associazioni DATIALBERGO,


DATIRISTORANTE e SUDDIVISIONE siano già state tradotte per effetto della identificazione
esterna di ALBERGO, RISTORANTE e ZONA rispettivamente. Le associazioni uno a molti
CUCINAOFFERTA e UBICAZIONE si traducono, in maniera analoga a quanto visto in precedenza,
introducendo, con opportune ridenominazioni, gli identificatori primari delle entità CUCINA e
ZONA tra gli attributi delle relazioni RISTORANTE ed Esercizio rispettivamente.

RISTORANTE (Codice, Cucina)


ESERCIZIO (Codice, Nome, Indirizzo, Città, Zona)

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:

CONVENZIONE (Esercizio, Carta)

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):

ESERCIZIO (Codice, Nome, Indirizzo, Città, Zona)


ALBERGO (Codice, Categoria, NrStanze)
RISTORANTE (Codice, Cucina)
CUCINA (Tipo, Descrizione)
CARTADICREDITO (CodiceCarta, Nome)
CONVENZIONE (Esercizio, Carta)
ZONA (Città, CodiceZona, Nome)
CITTÀ (IdCittà, Nome)

12
Base dati di un ente turistico

Figura 2-5

INTERROGAZIONI SULLA BASE DI DATI

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.

Interrogazione 1: Estrarre i codici degli alberghi con più di 50 stanze.

select Codice
from Albergo
where NrStanze>50

SELECT Codice
FROM Albergo
WHERE NrStanze>50;

Codice
HICD1
JH787
R33AI
TY767

Interrogazione 2: Estrarre tutte le informazioni contenute nella tabella ALBERGO, relative ad


alberghi a tre o quattro stelle con più di 50 stanze.

select *
from Albergo
where (Categoria=3 or Categoria=4) and NrStanze>50

SELECT *
FROM Albergo
WHERE (Categoria=3 or Categoria=4) and NrStanze>50;

Codice Categoria NrStanze


JH787 3 52
R33AI 4 75

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

Interrogazione 4: Realizzare l’interrogazione precedente mediante l’uso esplicito dell’operatore


di join e fornendo i risultati in ordine alfabetico.

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.

select R.Codice, E.Nome, E.Indirizzo, Z.Nome as Zona, T.Nome as Città,


C.Descrizione as Cucina
from Cucina C join Ristorante R on C.Tipo=R.Cucina join Esercizio E on
R.Codice=E.Codice join Zona Z on E.Zona=Z.CodiceZona and
E.Città=Z.Città join Città T on Z.Città=T.IdCittà

SELECT R.Codice, E.Nome, E.Indirizzo, Z.Nome AS Zona, T.Nome AS Città,


C.Descrizione AS Cucina
FROM (((Cucina AS C INNER JOIN Ristorante AS R ON C.Tipo=R.Cucina) INNER
JOIN Esercizio AS E ON R.Codice=E.Codice) INNER JOIN Zona AS Z ON
(E.Zona=Z.CodiceZona) AND (E.Città=Z.Città)) INNER JOIN Città AS
T ON Z.Città=T.IdCittà;

18
Base dati di un ente turistico

Codice Nome Indirizzo Zona Città Cucina


GMB33 Gambero Rosso Via Morosini Fuorigrotta Napoli Tradizionale
GV444 La Pignata Viale Tigli Centro Ariano Irpino Locale
DTN77 Da Tonino Via Lepanto Fuorigrotta Napoli Tradizionale
EU444 Oasi Viale Italia Eur Roma Tradizionale
PKT23 Pitagoras Via Giulio Cesare Fuorigrotta Napoli Greca
CH789 Cin Cian P.le Tecchio Fuorigrotta Napoli Cinese
PDM55 La gondola Piazza Duomo Centro Milano Francese
LCP66 Lucullo Via Marina Litorale Pozzuoli Pesce
PDR55 Paradise Via della Liberazione Parioli Roma Tradizionale
FG567 Trattoria Grasso Via S.Barbara Centro Montecalvo Irpino Casereccia

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.

select A.Codice, E.Nome, E.Indirizzo, Z.Nome as Zona, C.Nome as Città,


A.Categoria, A.NrStanze
from Albergo A join Esercizio E on A.Codice=E.Codice join Zona Z on
E.Zona=Z.CodiceZona and E.Città=Z.Città join Città C on
Z.Città=C.IdCittà
where A.Categoria>=3 and C.Nome<>'Roma'
order by A.Categoria, A.NrStanze

SELECT A.Codice, E.Nome, E.Indirizzo, Z.Nome AS Zona, C.Nome AS Città,


A.Categoria, A.NrStanze
FROM (Città AS C INNER JOIN Zona AS Z ON C.IdCittà = Z.Città) INNER JOIN
(Esercizio AS E INNER JOIN Albergo AS A ON E.Codice = A.Codice) ON
(Z.Città = E.Città) AND (Z.CodiceZona = E.Zona)
WHERE A.Categoria>=3 and C.Nome<>'Roma'
ORDER BY A.Categoria, A.NrStanze;

Codice Nome Indirizzo Zona Città Categoria NrStanze


JH787 Jolly Hotel Via Medina Centro storico Napoli 3 52
JK876 Hotel Vesuvio Via Marina Litorale Sorrento 4 34
R33AI Palace Hotel Via Roma Centro Milano 4 75
AGT44 Hotel Serius Viale Augusto Fuorigrotta Napoli 5 35
HICD1 Holyday Inn Isola E/6 Centro direzionale Napoli 5 100

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.

select R.Codice as Ristorante, C.Carta


from Ristorante R left join Convenzione C on R.Codice=C.Esercizio

SELECT R.Codice AS Ristorante, C.Carta


FROM Ristorante AS R LEFT JOIN Convenzione AS C ON R.Codice=C.Esercizio;

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.

select distinct C.Descrizione


from Cucina C join Ristorante R on C.Tipo=R.Cucina join Esercizio E on
E.Codice = R.Codice
where E.Nome Like 'O%' or E.Nome Like 'P%'

SELECT DISTINCT C.Descrizione


FROM Esercizio AS E INNER JOIN (Cucina AS C INNER JOIN Ristorante AS R ON
C.Tipo=R.Cucina) ON E.Codice = R.Codice
WHERE E.Nome Like 'O*' or E.Nome Like 'P*';

Descrizione
Greca
Tradizionale

Interrogazione 9: Estrarre il numero di alberghi ed il numero complessivo di stanze.

select count(*) as NumeroAlberghi, sum(NrStanze) as StanzeTotali


from Albergo

SELECT count(*) AS NumeroAlberghi, sum(NrStanze) AS StanzeTotali


FROM Albergo;

NumeroAlberghi StanzeTotali
10 432

Interrogazione 10: Estrarre codice, nome e numero di ristoranti delle città che hanno dei
ristoranti.

select C.IdCittà, C.Nome, count(*) as NrRistoranti


from Città C join Esercizio E on C.IdCittà=E.Città join Ristorante R on
E.Codice=R.Codice
group by C.IdCittà, C.Nome

20
Base dati di un ente turistico

SELECT C.IdCittà, C.Nome, count(*) AS NrRistoranti


FROM (Città AS C INNER JOIN Esercizio AS E ON C.IdCittà=E.Città) INNER JOIN
Ristorante AS R ON E.Codice=R.Codice;
GROUP BY C.IdCittà, C.Nome;

IdCittà Nome NrRistoranti


4 Napoli 4
5 Ariano Irpino 1
6 Roma 2
9 Pozzuoli 1
10 Milano 1
11 Montecalvo Irpino 1

Interrogazione 11: Estrarre i codici e i nomi delle carte di credito che sono convenzionate con
più di 4 esercizi commerciali.

select D.CodiceCarta, D.Nome, Count(*) as NrConvenzioni


from Esercizio E join Convenzione C on E.Codice = C.Esercizio join
CartaDiCredito D on D.CodiceCarta = C.Carta
group by D.CodiceCarta, D.Nome
having Count(*)>4;

SELECT D.CodiceCarta, D.Nome, Count(*) AS NrConvenzioni


FROM Esercizio AS E INNER JOIN (CartaDiCredito AS D INNER JOIN Convenzione
AS C ON D.CodiceCarta = C.Carta) ON E.Codice = C.Esercizio
GROUP BY D.CodiceCarta, D.Nome
HAVING Count(*)>4;

CodiceCarta Nome NrConvenzioni


MC453 MasterCard 7
VS343 Visa 5

Interrogazione 12: Estrarre il codice e il numero di stanze dell'albergo con più stanze.

select Codice, NrStanze


from Albergo
where NrStanze = (select max(NrStanze)
from Albergo);

SELECT Codice, NrStanze


FROM Albergo
WHERE NrStanze=(select max(NrStanze) from Albergo);

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

where CodiceCarta not in (select C.Carta


from Ristorante R join Convenzione C on
R.Codice=C.Esercizio);

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

Interrogazione 14: Riformulare l'interrogazione precedente adoperando l'operatore exists.

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.

Questa interrogazione richiederebbe la valutazione in serie di due operatori aggregati, in


quanto dovrebbe prima contare gli alberghi per ogni città e poi valutare il massimo tra i valori
ottenuti. Poiché i due operatori intervengono a diversi livelli di aggregazione la sintassi di SQL
non permette di formulare questa interrogazione. Ricorriamo dunque alla definizione di una
vista che ci permetta di superare l'ostacolo.

create view VistaCittà(IdCittà, Nome, NrEsercizi) as


select C.IdCittà, C.Nome, count(*)
from Esercizio E join Città C on E.Città=C.IdCittà
group by C.IdCittà, C.Nome

L'interrogazione può in definitiva scriversi come:

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à

SELECT C.IdCittà, C.Nome, count(*) AS NrEsercizi


FROM Esercizio AS E INNER JOIN Città AS C ON E.Città=C.IdCittà
GROUP BY C.IdCittà, C.Nome;

22
Base dati di un ente turistico

SELECT Nome
FROM VistaCittà
WHERE NrEsercizi = (select max(NrEsercizi) from VistaCittà);

Nome
Napoli

REALIZZAZIONE DELL’APPLICAZIONE IN MICROSOFT ACCESS 97

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

Da tale maschera è possibile selezionare una delle seguenti alternative:

¾ 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

giovedì 25 gennaio 2001 Pagina 1 di 1

Figura 2-10

26
Progetto 2
Base dati del D.I.S.

SPECIFICHE DEL PROBLEMA

Le specifiche relative alla base di dati del D.I.S. sono le seguenti:

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.

ANALISI DELLE SPECIFICHE

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.

Termine Descrizione Sinonimi Collegamenti


Organico Persona che, a vario titolo, Struttura
opera all'interno del
dipartimento.
Struttura Laboratori, aule, uffici di cui Organico, sede
dispone il dipartimento.
Sede Luoghi in cui sono ubicate le Struttura
strutture della facoltà.
Personale non Membro dell'organico che opera Organico
docente nel dipartimento come tecnico o
come amministrativo.
Personale di ricerca Membro dell'organico Organico, filone di
impegnato in attività di ricerca. ricerca, pubblicazione,
gruppo di ricerca
Gruppo di ricerca Insieme di membri del Personale di ricerca
personale di ricerca che
partecipano ad attività comuni
di ricerca.

Filone di ricerca Insieme omogeneo di argomenti Pubblicazione,


oggetto di studio. personale di ricerca

28
Base dati del D.I.S.

Tema di ricerca Argomento di studio nell'ambito Filone di ricerca


di un filone di ricerca.
Pubblicazione Relazione pubblicata su una Filone di ricerca,
rivista nell'ambito di un filone personale di ricerca
di ricerca.
Tesi Tesi disponibile, in corso di Lavoro di tesi Personale di ricerca,
svolgimento o svolta presso il docente, tema di
dipartimento. ricerca
Docente Membro del personale di ricerca Professore Personale di ricerca,
impegnato in attività didattiche. corso
Corso Offerta didattica del Insegnamento, lezione
dipartimento.
Insegnamento Materie d'insegnamento di Corso
competenza del dipartimento.
Lezione Unità didattiche che Corso
compongono i corsi.
Tabella 4-1

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.

Frasi di carattere generale


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, di cui si vogliono mantenere
informazioni sull'organico, sui corsi offerti, sulle attività di ricerca, sulle tesi svolte e sulle
strutture a disposizione.

Frasi relative all'organico


Per i membri dell'organico, identificati da un numero di matricola, rappresentiamo i dati
personali (codice fiscale, cognome, nome, data e città di nascita, indirizzo, città di residenza,
numero di telefono), il recapito universitario (numero interno, indirizzo di posta elettronica), le
note sulla carriera, la struttura del dipartimento cui afferiscono e la data di afferenza. L'organico
è diviso in personale di ricerca e personale non docente.

Frasi relative alle strutture


Per le strutture, identificate da un codice, rappresentiamo il nome, i numeri di telefono e fax, la
sede in cui sono ubicate, il nome del responsabile e la tipologia di struttura.

29
Base dati del D.I.S.

Frasi relative alle sedi


Per le sedi, identificate da un codice, rappresentiamo l'indirizzo e il C.A.P.

Frasi relative al personale non docente


Per il personale non docente rappresentiamo il livello. Il personale non docente può essere
personale tecnico o personale amministrativo.

Frasi relative al personale di ricerca


Per i membri del personale di ricerca rappresentiamo 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.

Frasi relative ai gruppi ricerca


Per i gruppi di ricerca, identificati da un codice, rappresentiamo il nome.

Frasi relative ai filoni di ricerca


Per i filoni di ricerca, identificati da un codice, rappresentiamo il nome, il settore di ricerca, le
note su eventuali altre caratteristiche (enti coinvolti e finanziatori), il nome del responsabile e le
pubblicazioni ad essi associate.

Frasi relative ai temi di ricerca


Per i temi di ricerca, identificati da un codice unico solo nell'ambito dello stesso filone,
rappresentiamo il filone di appartenenza, il nome e la descrizione.

Frasi relative alle pubblicazioni


Per le pubblicazioni, identificate da un codice, rappresentiamo il titolo, la data di pubblicazione,
la rivista su cui sono stata pubblicate, il contenuto e i nomi degli autori.

Frasi relative alle tesi


Per le tesi, identificate da un codice, rappresentiamo il titolo, una descrizione ed eventualmente
il tema di ricerca cui fanno riferimento. Per le tesi assegnate rappresentiamo i dati dello studente
(nome, cognome e numero di matricola) ed i nomi di relatore e correlatore, i quali fanno parte
del personale di ricerca. Per le di tesi concluse rappresentiamo l'anno accademico in cui sono
state presentate.

Frasi relative ai docenti


Per i docenti rappresentiamo i corsi che essi insegnano.

30
Base dati del D.I.S.

Frasi relative agli insegnamenti


Per gli insegnamenti, identificati da un codice comprensivo del codice di corso di laurea,
rappresentiamo il nome e la descrizione.

Frasi relative ai corsi


Per i corsi, identificati dall'insegnamento e dall'anno accademico, rappresentiamo le date di
inizio e fine, il nome del docente e l'orario delle lezioni.

Frasi relative alle lezioni


Per le lezioni, identificate da giorno della settimana, ora ed aula, rappresentiamo il corso di cui
fanno parte.

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.

Procedendo secondo l'approccio descritto, individuiamo inizialmente l'entità ORGANICO con


tutti i suoi attributi. Partendo da questa entità rappresentiamo l'afferenza dell'organico alle
strutture e dunque individuiamo l'entità STRUTTURA, con i relativi attributi, e le relazioni
AFFERENZA e RESPONSABILE STRUTTURA tra ORGANICO e STRUTTURA. Rappresentiamo poi le
relazioni tra le strutture e le tipologie ed ubicazioni delle stesse individuando le entità TIPO
STRUTTURA e SEDE e le rispettive relazioni, TIPO e UBICAZIONE, con STRUTTURA.
Ritornando all'entità ORGANICO individuiamo la sua specializzazione in PERSONALE DI
RICERCA e PERSONALE NON DOCENTE, quest'ultimo a sua volta specializzato in TECNICO ed
AMMINISTRATIVO. Rappresentiamo poi l'appartenenza ai gruppi di ricerca del personale di
ricerca, individuando l'entità GRUPPO, con i suoi attributi, e la relazione APPARTENENZA tra
GRUPPO e PERSONALE DI RICERCA. A questo punto individuiamo l'entità FILONE DI RICERCA,
con tutti i suoi attributi, e le relazioni PARTECIPAZIONE e RESPONSABILE tra essa e PERSONALE
DI RICERCA. Aggiungiamo quindi l'entità TEMA e la sua relazione SVILUPPO con FILONE DI
RICERCA. Individuiamo quindi l'entità PUBBLICAZIONE e le relazioni STESURA ed AUTORE tra
PUBBLICAZIONE e le entità FILONE DI RICERCA e PERSONALE DI RICERCA rispettivamente.
Ritornando all'entità PERSONALE DI RICERCA individuiamo la sua specializzazione in
DOTTORANDO e DOCENTE, quest'ultimo a sua volta specializzato in ORDINARIO, ASSOCIATO,
STRAORDINARIO e RICERCATORE. Rappresentiamo a questo punto i legami tra i docenti e i
corsi introducendo l'entità CORSO e la relazione DOCENZA di questo con DOCENTE.
Individuiamo quindi le entità INSEGNAMENTO e LEZIONE e le rispettive relazioni, MATERIA e

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

Id Titolo Descrizione Id Indirizzo CAP


(0,1)
Laureando
(0,1) Anno accademico
TESI SEDE
(0,1) (0,1) (0,1)
(0,N)
ARGOMENTO
UBICAZIONE
Nome Descrizione RELATORE CORRELATORE (1,1)

(0,N)
TEMA Id Descrizione

(1,1) Id Nome

Codice TIPO STRUTTURA


SVILUPPO GRUPPO (0,N)
(0,N)
Settore
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

Data inizio (0,N)


(1,1) (0,N)
CORSO DOCENZA DOCENTE DOTTORANDO TECNICO AMMINISTRATIVO
Data fine
(1,1)
Anno accademico
MATERIA ORDINARIO ASSOCIATO RICERCATORE STRAORDINARIO

(0,N)
Codice
INSEGNAMENTO Nome
Descrizione
Figura 4-1

33
Base dati del D.I.S.

DIZIONARIO DEI DATI

Allo schema E-R appena costruito affianchiamo a scopo documentativo il dizionario dei dati
illustrato in Tabella 4-3.

Entità Descrizione Attributi Identificatore


Organico Persona che, a vario Matricola, Dati personali Matricola
titolo, opera all'interno (C.F., Cognome, Nome, Data
del dipartimento. nascita, Città nascita,
Indirizzo, Città residenza,
Telefono), Recapito (Interno,
Email ), Note
Struttura Struttura della facoltà a Id, Nome, Telefono, Fax Id
disposizione del
dipartimento.
Tipo struttura Tipologia funzionale di Id, Descrizione Id
struttura.
Sede Luogo in cui sono Id, Indirizzo, CAP Id
ubicate delle strutture
della facoltà.
Personale non Membro dell'organico Livello Matricola
docente che opera nel
dipartimento come
tecnico o come
amministrativo.
Tecnico Membro del personale Matricola
non docente con incarico
tecnico.
Amministrativo Membro del personale Matricola
non docente con incarico
amministrativo.
Personale di Membro dell'organico Settore Matricola
ricerca impegnato in attività di
ricerca
Gruppo Id, Nome Id
Filone di ricerca Insieme omogeneo di Codice, Nome, Settore, Note Codice
temi oggetto di studio.
Tema Argomento di studio Codice, Nome, Descrizione Codice, Filone di
nell'ambito di un filone ricerca
di ricerca.
Pubblicazione Relazione pubblicata su Id, Titolo, Data, Rivista, Id
una rivista nell'ambito di Contenuto
un filone di ricerca.
Tesi Tesi disponibile, in via Id, Titolo, Descrizione, Anno Id
di sviluppo o svolta accademico, Laureando
presso il dipartimento. (Matricola, Cognome, Nome)

34
Base dati del D.I.S.

Dottorando Membro del personale di Matricola


ricerca che sta
svolgendo il dottorato di
ricerca presso il
dipartimento.
Docente Membro del personale di Matricola
ricerca impegnato in
attività didattiche.
Ordinario Docente con qualifica Matricola
di professore ordinario.
Associato Docente con qualifica Matricola
di professore associato.
Straordinario Docente con qualifica Matricola
di straordinario.
Ricercatore Docente con qualifica Matricola
di ricercatore.
Corso Offerta didattica del Anno accademico, Data inizio, Insegnamento,
dipartimento. Data fine Anno accademico
Insegnamento Materie d'insegnamento Codice, Nome, Descrizione Codice
di competenza del
dipartimento.
Lezione Unità didattica di cui è Giorno, Ora, Aula Giorno, Ora, Aula
composto un corso.

Relazione Descrizione Entità coinvolte Attributi


Afferenza Associa un membro Organico (1,1) Data
dell’organico alla Struttura (0,N)
struttura in cui opera o
in cui ha il suo ufficio.
Responsabile Associa una struttura al Struttura (1,1)
struttura membro dell’organico Organico (0,N)
che ne è responsabile.
Ubicazione Associa una struttura Struttura (1,1)
alla sede in cui è Sede (0,N)
ubicata.
Tipo Associa una struttura Struttura (1,1)
alla tipologia cui Tipo struttura (0,N)
appartiene.
Appartenenza Associa il personale di Personale di ricerca (0,N)
ricerca ai gruppi di cui Gruppo (0,N)
fa parte.
Partecipazione Associa un membro del Filone di ricerca (0,N)
personale di ricerca ai Personale di ricerca (0,N)
filoni di ricerca a cui
partecipa.

35
Base dati del D.I.S.

Responsabile Associa un filone di Filone di ricerca (1,1)


ricerca al membro del Personale di ricerca (0,N)
personale di ricerca che
ne è responsabile.
Stesura Associa un filone di Filone di ricerca (0,N)
ricerca alle Pubblicazione (1,1)
pubblicazioni su di esso.
Autore Associa le pubblicazioni Pubblicazione (1,N)
ai membri del personale Personale di ricerca (0,N)
di ricerca che ne sono
autori.
Sviluppo Associa un tema di Tema (1,1)
ricerca al filone a cui Filone di ricerca (0,N)
appartiene.
Relatore Associa una tesi al Tesi (0,1)
docente che ne è il Docente (0,N)
relatore.
Correlatore Associa una tesi al Tesi (0,1)
membro del personale di Personale di ricerca (0,N)
ricerca che ne è il
relatore.
Docenza Associa un corso al Corso (1,1)
docente che lo tiene. Docente (0,N)
Materia Associa un corso ad un Corso (1,1)
insegnamento. Insegnamento (0,N)
Orario Associa un corso alle Corso (0,N)
lezioni settimanali di cui Lezione (1,1)
è composto.
Tabella 4-3

RISTRUTTURAZIONE DELLO SHEMA E-R E SCHEMA RELAZIONALE

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

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

Matricola Nome Cognome

Id TitoloDescrizione
Matricola Nome Cognome STUDENTE

Id Titolo Descrizione (1,1) (0,1)


(0,1) LAUREANDO TESI
Laureando
(0,1) Anno accademico (0,1)
TESI
Anno accademico
Figura 4-3

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

PERSONALE DI Settore PERSONALE NON Livello


RICERCA DOCENTE

DOCENTE DOTTORANDO TECNICO AMMINISTRATIVO

ORDINARIO ASSOCIATO RICERCATORE STRAORDINARIO

Figura 4-4

37
Base dati del D.I.S.

Iniziamo ad osservare che le due gerarchie aventi rispettivamente DOCENTE e PERSONALE


NON DOCENTE come entità padre possono essere ristrutturate eliminando le entità figlie, che nel
caso in esame non hanno alcuna proprietà specifica e non vengono distinte nelle operazioni sulla
base dati, e aggiungendo un attributo al padre per identificare il tipo di occorrenza. Allo scopo
aggiungiamo l'attributo Qualifica all'entità DOCENTE e l'attributo Incarico ALL'ENTITÀ
PERSONALE NON DOCENTE. Per quanto riguarda invece le due generalizzazioni aventi
rispettivamente PERSONALE DI RICERCA ed ORGANICO come padre, possiamo notare che in
entrambi i casi le figlie hanno proprietà (attributi e partecipazioni a relazioni ) molto diverse e le
operazioni sulla base dati in genere potrebbero fare distinzioni tra le figlie e tra le figlie e il
padre. In questo caso sostituiamo dunque ognuna delle due generalizzazioni con due relazioni
uno ad uno tra le figlie e il padre, con le entità figlie identificate esternamente dall'entità padre
tramite tali relazioni. Il risultato di questa ristrutturazione è illustrato in Figura 4-5.

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

Un ulteriore ristrutturazione che si potrebbe realizzare sarebbe lo sdoppiamento della


relazione AFFERENZA tra ORGANICO e STRUTTURA in due relazioni AFFERENZA CORRENTE e
AFFERENZA PASSATA. Poiché però le due relazioni differirebbero solo per un aspetto temporale
preferiamo mantenere una sola relazione e sostituire all'attributo Data di Afferenza i due
attributi Data inizio e Data fine, cambiando inoltre la cardinalità di partecipazione di ORGANICO
ad AFFERENZA da (1,1) ad (1,N); dobbiamo però a questo punto introdurre il seguente vincolo:
ogni membro dell'organico non può afferire a più strutture nello stesso periodo di tempo. Le
afferenze correnti saranno riconosciute in base al valore nullo dell'attributo Data fine.
Osserviamo che l'introduzione di valori nulli per l'attributo Data fine non comporta particolari
problemi, in quanto a regime il numero di afferenze correnti sarà certamente molto inferiore a
quello delle afferenze passate e dunque la perdita di spazio sarà trascurabile.
Notiamo che l'entità STUDENTE può essere identificata sia internamente dall'attributo
Matricola che esternamente dall'entità TESI. Scegliamo come identificatore primario il secondo
poiché nella base dati in esame gli studenti interessano solo in quanto assegnatari di una tesi.
Per concludere osserviamo che l'attributo Anno accademico di CORSO appare ridondante in
quanto deducibile dagli attributi Data inizio e Data fine; tuttavia poiché tale attributo
costituisce, insieme all'entità INSEGNAMENTO, l'identificatore di CORSO, decidiamo di mantenere
la ridondanza. Lo schema E-R ristrutturato è infine mostrato in Figura 4-6.

38
Base dati del D.I.S.
Matricola Nome Cognome

Id TitoloDescrizione STUDENTE Id Indirizzo CAP


(1,1)
TESI (0,1)
LAUREANDO SEDE
(0,1) (0,1) (0,1)
(0,1) (0,N)
ARGOMENTO
Anno accademico
UBICAZIONE
Nome Descrizione RELATORE CORRELATORE (1,1)

(0,N)
TEMA Id Descrizione

(1,1) Id Nome

Codice TIPO STRUTTURA


SVILUPPO GRUPPO (0,N)
(0,N)
Settore
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:

ORGANICO (Matricola, Email, Interno, Note)


STRUTTURA (Id, Nome, Telefono, Fax)
TIPOSTRUTTURA (Id, Descrizione)
SEDE (Id, Indirizzo, CAP)
GRUPPO (Id, Nome)
FILONEDIRICERCA (Codice, Nome, Settore, Note)
PUBBLICAZIONE (Id, Titolo, Data, Rivista, Contenuto)
TESI (Id, Titolo, Descrizione, AnnoAccademico)
LEZIONE (Giorno, Ora, Aula)
INSEGNAMENTO (Codice, Nome, Descrizione)

Traduciamo ora le entità con identificatore esterno. Questa operazione produce relazioni le
cui chiavi primarie includono gli identificatori primari delle entità identificanti, eventualmente
rinominati:

DATIPERSONALI (Matricola, CF, Cognome, Nome, DataNascita, CittàNascita,


Indirizzo, CittàResidenza, Telefono)
PERSONALEDIRICERCA (Matricola, Settore)
PERSONALENONDOCENTE (Matricola, Livello, Incarico)
DOCENTE (Matricola, Qualifica)
DOTTORANDO (Matricola)
TEMA (Codice, Filone, Nome, Descrizione)
STUDENTE (Tesi, Matricola, Cognome, Nome)
CORSO (Insegnamento, AnnoAccademico, DataInizio, DataFine)

Per le relazioni introdotte allo schema bisogna aggiungere i seguenti vincoli di integrità
referenziale:

¾ tra l'attributo Matricola di DATIPERSONALI e l'attributo Matricola di ORGANICO;


¾ tra l'attributo Matricola di PERSONALEDIRICERCA e l'attributo Matricola di ORGANICO;
¾ tra l'attributo Matricola di PERSONALENONDOCENTE e l'attributo Matricola di ORGANICO;
¾ tra l'attributo Matricola di DOCENTE e l'attributo Matricola di PERSONALEDIRICERCA;
¾ tra l'attributo Matricola di DOTTORANDO e l'attributo Matricola di PERSONALEDIRICERCA;

40
Base dati del D.I.S.

¾ tra l'attributo Filone di TEMA e l'attributo Codice di FILONEDIRICERCA;


¾ tra l'attributo Tesi di STUDENTE e l'attributo Id di TESI;
¾ tra l'attributo Insegnamento di CORSO e l'attributo Codice di CORSO.

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.

RESPONSABILESTRUTTURA Æ STRUTTURA (Id, Nome, Telefono, Fax, Responsabile)


TIPO Æ STRUTTURA (Id, Nome, Telefono, Fax, Responsabile, Tipo)
UBICAZIONE Æ STRUTTURA (Id, Nome, Telefono, Fax, Responsabile, Tipo, Sede)
STESURA Æ PUBBLICAZIONE (Id, Titolo, Data, Rivista, Contenuto, Filone)
RESPONSABILE Æ FILONEDIRICERCA (Codice, Nome, Settore, Note, Responsabile)
ARGOMENTO Æ TESI (Id, Titolo, Descrizione, AnnoAccademico, Argomento, Filone)
RELATORE Æ TESI (Id, Titolo, Descrizione, AnnoAccademico, Argomento, Filone,
Relatore)
CORRELATORE Æ TESI (Id, Titolo, Descrizione, AnnoAccademico, Argomento,
Filone, Relatore, Correlatore)
DOCENZA Æ CORSO (Insegnamento, AnnoAccademico, DataInizio, DataFine,
Docente)
ORARIO Æ LEZIONE (Giorno, Ora, Aula, Insegnamento, Anno)

Allo schema bisogna aggiungere gli ulteriori seguenti vincoli di integrità referenziale:

¾ tra l'attributo Responsabile di STRUTTURA e l'attributo Matricola di ORGANICO;


¾ tra l'attributo Tipo di STRUTTURA e l'attributo Id di TIPOSTRUTTURA;
¾ tra l'attributo Sede di STRUTTURA e l'attributo Id di SEDE;
¾ tra l'attributo Filone di PUBBLICAZIONE e l'attributo Codice di FILONEDIRICERCA;
¾ tra l'attributo Responsabile di FILONEDIRICERCA e l'attributo Matricola di
PERSONALEDIRICERCA;
¾ tra gli attributi (Argomento, Filone) di TESI e gli attributi (Codice, Filone) di TEMA;
¾ tra l'attributo Relatore di TESI e l'attributo Matricola di DOCENTE;
¾ tra l'attributo Correlatore di TESI e l'attributo Matricola di PERSONALEDIRICERCA;
¾ tra l'attributo Docente di CORSO e l'attributo Matricola di DOCENTE;
¾ tra gli attributi (Insegnamento, Anno) di LEZIONE e gli attributi (Insegnamento,
AnnoAccademico) di CORSO;

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.

AFFERENZA (Persona, Struttura, DataInizio, DataFine)


APPARTENENZA (Persona, Gruppo)
PARTECIPAZIONE (Persona, Filone)
AUTORE (Persona, Pubblicazione)

Aggiungiamo allo schema gli ultimi vincoli di integrità referenziale:

¾ tra l'attributo Persona di AFFERENZA e l'attributo Matricola di ORGANICO;


¾ tra l'attributo Struttura di AFFERENZA e l'attributo Id di STRUTTURA;
¾ tra l'attributo Persona di APPARTENENZA e l'attributo Matricola di PERSONALEDIRICERCA;
¾ tra l'attributo Gruppo di APPARTENENZA e l'attributo Id di GRUPPO;
¾ tra l'attributo Persona di PARTECIPAZIONE e l'attributo Matricola di PERSONALEDIRICERCA;
¾ tra l'attributo Filone di PARTECIPAZIONE e l'attributo Codice di FILONEDIRICERCA;
¾ tra l'attributo Persona di AUTORE e l'attributo Matricola di PERSONALEDIRICERCA;
¾ tra l'attributo Pubblicazione di AUTORE e l'attributo Id di PUBBLICAZIONE;

In definitiva lo schema relazionale completo della base di dati in esame è il seguente:

ORGANICO (Matricola, Email, Interno, Note)


DATIPERSONALI (Matricola, CF, Cognome, Nome, DataNascita, CittàNascita,
Indirizzo, CittàResidenza, Telefono)
PERSONALEDIRICERCA (Matricola, Settore)
PERSONALENONDOCENTE (Matricola, Livello, Incarico)
DOCENTE (Matricola, Qualifica)
DOTTORANDO (Matricola)
AFFERENZA (Persona, Struttura, DataInizio, DataFine)
STRUTTURA (Id, Nome, Telefono, Fax, Responsabile, Tipo, Sede)
TIPOSTRUTTURA (Id, Descrizione)
SEDE (Id, Indirizzo, CAP)
APPARTENENZA (Persona, Gruppo)
GRUPPO (Id, Nome)
PARTECIPAZIONE (Persona, Filone)

42
Base dati del D.I.S.

FILONEDIRICERCA (Codice, Nome, Settore, Note, Responsabile)


TEMA (Codice, Filone, Nome, Descrizione)
PUBBLICAZIONE (Id, Titolo, Data, Rivista, Contenuto, Filone)
AUTORE (Persona, Pubblicazione)
TESI (Id, Titolo, Descrizione, AnnoAccademico, Argomento, Filone, Relatore,
Correlatore)
STUDENTE (Tesi, Matricola, Cognome, Nome)
INSEGNAMENTO (Codice, Nome, Descrizione)
CORSO (Insegnamento, AnnoAccademico, DataInizio, DataFine, Docente)
LEZIONE (Giorno, Ora, Aula, Insegnamento, Anno)

43

Potrebbero piacerti anche