M8U3- Concettuale

Transcript

M8U3- Concettuale
Modulo 8 – I data base
Unità 3 – Modello
concetutale
Prof. Antonio Scanu
1 La progettazione concettuale
La progettazione concettuale consiste nel riorganizzare tutti gli elementi presenti nella documentazione sulle specifiche per rappresentare la realtà di interesse in termini di una
descrizione formale e completa, indipendentemente dai criteri di rappresentazione usati
nei DBMS.
Il prodotto di tale attività è lo schema concettuale, che rappresenta il documento ufficiale
di riferimento e di comunicazione per i progettisti della successiva fase di progettazione logica. Il termine concettuale si riferisce al fatto che si evita il più possibile di descrivere dettagli realizzativi. In particolare, si astrae dal tipo di sistema e dal linguaggio che verranno
utilizzati nella realizzazione e si cerca, invece, di attribuire una certa struttura ai dati.
2 Il modello concettuale ER
Tra i possibili modelli concettuali è molto diffuso il modello Entità/Associazioni (in inglese
ER, da Entity/Relationship), introdotto nel 1976 da Peter P. Chen. Si tratta di un modello
grafico per la descrizione dei dati e delle loro relazioni all’interno di una realtà di interesse. È uno strumento per l’analisi delle caratteristiche di una realtà indipendentemente dagli eventi che in essa accadono. Il risultato di questo lavoro è rappresentato dallo schema
ER o diagramma ER.
Per la costruzione di uno schema ER si parte dal semplice concetto che la realtà da rappresentare è composta da entità, ognuna delle quali è caratterizzata da specifiche proprietà (o attributi). Le varie entità che caratterizzano la realtà oggetto di studio sono con nesse tra loro attraverso specifiche associazioni che evolvono nel tempo.
2.1 Le entità
Le entità sono ciò che esiste all’interno della realtà che si vuole modellare e di cui interes sa rappresentare alcuni fatti (le proprietà).
Sono esempi di entità i cantanti “Lucio Dalla” o “Sting”, i libri “I promessi sposi” o “Lo Zibaldone” di una biblioteca che si vuole prendere in esame.
Le proprietà (o attributi) sono i fatti che si intende rappresentare e che interessano poiché
descrivono caratteristiche di specifiche entità.
Esempi di proprietà sono il cognome e il nome di alcuni cantanti oppure il titolo, il numero
di pagine e la casa editrice di un libro.
Il procedimento mentale che permette di evidenziare alcune proprietà, ritenute significative degli oggetti osservati, escludendone altre giudicate non rilevanti, prende il nome di
processo di astrazione. Attraverso questo processo, quindi, il progettista concettuale classifica le entità della realtà di interesse in base alle similitudini e alle proprietà comuni, definendo, in questo modo, il tipo di entità.
Un tipo di entità descrive la struttura di tutte le entità di una certa natura. Ad esempio, i
singoli cantanti (“Lucio Dalla”, “Sting” e così via) possono essere classificati nel tipo entità
Cantanti e i singoli libri di una biblioteca (“I promessi sposi”, “Lo Zibaldone” e così via) nel
tipo di entità Libri.
Ogni singolo esemplare che appartiene a un tipo di entità è detto istanza.
2
Ad esempio, il libro “I promessi sposi” è un’istanza del tipo di entità Libri, mentre il cantante “Sting” è un’istanza del tipo di entità Cantanti. Per adeguarsi al modello espositivo clas sico, nel seguito utilizzeremo il termine entità come sinonimo di tipo di entità.
2.2 Gli attributi
Le proprietà delle entità sono descritte attraverso gli attributi. Le proprietà elementari
(cioè non strutturabili in proprietà più atomiche) delle entità e delle associazioni vengono
descritte attraverso gli attributi semplici.
Esempi di attributi per l’entità Persona nel contesto di un ufficio anagrafico sono:
Nome, Comome, Età, Sesso
Attributi per l’entità BottigliaDiVino, nel contesto di un’enoteca, possono essere, ad esempio:
Nome, Produttore, Capacità, Prezzo, Vitigno
Ogni attributo è specificato da:
un nome, come abbiamo visto precedentemente;
un formato, che indica il tipo di valori che può assumere (ad esempio Stringa, Reale, Intero, Booleano, Data);
una dimensione (non vale per i tipi Data o Booleano), che indica la quantità massima di caratteri o cifre inseribili;
un valore; i diversi valori assunti dagli attributi determinano le diverse istanze dell’entità. L’insieme dei possibili valori assunti da un attributo si chiama dominio dell’attribu to;
Consideriando l’entità Persona possiamo dire che:
– il dominio dell’attributo Età è rappresentato dall’insieme di valori {1..120};
– il dominio dell’attributo Cognome è rappresentato da {tutte le possibili stringhe di
caratteri};
- il dominio dell’attributo Sesso è {uomo, donna};
una opzionalità, che indica la possibilità di non essere sempre valorizzato. Diremo
che un attributo è obbligatorio se deve avere valore non nullo (ad esempio il nome di una
persona in un’anagrafica), è facoltativo quando sono accettabili valori nulli (ad esempio il
titolo di studio di una persona). Il valore nullo, in inglese Null (da non confondere con la
stringa di caratteri blank o con un numero di valore zero), rappresenta un’informazione
mancante, inapplicabile o sconosciuta.
Gli attributi composti o aggregati sono costituiti mediante aggregazione di altri attributi,
che a loro volta possono essere semplici o frutto di altre aggregazioni di attributi. Con il
termine aggregato facciamo riferimento alla definizione di aggregazione precedentemente
utilizzata, relativa ad attributi che possono a loro volta considerarsi astrazioni di aggregazione di attributi semplici. La definizione è ricorsiva.
Abbiamo già visto che per l’entità Persona sono attributi semplici: Nome, Cognome, Età,
Sesso; se consideriamo l’attributo DataDiNascita, quest’ultimo è sicuramente un attributo
aggregato, in quanto è composto da altri attributi semplici che sono Giorno, Mese, Anno.
Un altro esempio è quello dell’attributo Indirizzo, composto dagli attributi Via, NumCivico,
Città, Cap.
Gli attributi multipli sono inseriti in un elenco di lunghezza variabile di attributi dello stesso
tipo. Se consideriamo l’entità Persona, un esempio di attributo multiplo è Hobby.
3
3 Modelli mediante un attributo e modelli mediante un’entità
Quando modelliamo una realtà di interesse, dobbiamo decidere se modellare un particolare concetto come entità o come attributo. Occorre scegliere:
•
a seconda del contesto;
•
a seconda dell’uso che ne vogliamo fare.
Vediamo subito un esempio chiarificatore. Consideriamo il concetto di “Comune” nei seguenti contesti:
Primo contesto
Per creare un’applicazione di gestione anagrafica siamo interessati a descrivere diverse
caratteristiche anagrafiche dell’entità Persona. In questo caso possiamo avere un’entità
Persona che ha un attributo Comune (inteso come “comune di nascita”):
entità Persona:
attributi: Nome, Cognome, Comune.
L’attributo Comune è una caratteristica dell’entità Persona e sarà di tipo stringa. Assumerà valori del tipo:
“Milano”, “Roma”, “Pescara”, “Palermo” e così via.
Secondo contesto
Per creare un’applicazione di gestione territoriale siamo interessati a descrivere diverse
caratteristiche dei comuni. In questo caso possiamo avere un’entità Comune con i seguenti attributi:
entità Comune:
attributi: Nome, Provincia, Regione.
La domanda da porsi è: dobbiamo descrivere un insieme di proprietà che caratterizzano
questo concetto? Se la risposta è affermativa creiamo un’entità, altrimenti creiamo un attributo.
3.1 Attributi chiave
Il concetto di chiave è particolarmente importante nell’ambito dei database, poiché le entità devono essere costruite in modo tale che ogni t-upla possa essere distinta per mezzo
di uno o più attributi. Scopo della chiave è, quindi, quello di identificare univocamente
queste t-uple, ma per ottenere ciò si vuole usare “la minima informazione possibile”, si
vuole cioè che la chiave sia la più piccola possibile.
Si definisce chiave candidata o superchiave una chiave che consente di distinguere un’istanza di entità dall’altra in modo univoco.
Ad esempio, se consideriamo il tipo di entità Persona, per distinguere in modo univoco
due persone possiamo utilizzare:
•un attributo CodiceFiscale, poiché sappiamo che i valori di tale attributo sono di
versi per ogni persona;
• gli attributi: Nome, Cognome e DataDiNascita di una persona.
4
Tra le chiavi candidate, quella con il minor numero di attributi prende il nome di chiave, o
meglio chiave primaria (primary key). Nell’esempio precedente l’attributo CodiceFiscale
funge da chiave primaria.
Nella progettazione di basi di dati, ove non sia possibile utilizzare come chiave primaria un
numero limitato di attributi, si ricorre all’aggiunta di un nuovo attributo (come ad esempio
un numero progressivo) che identifica univocamente le varie istanze.
3.2 Rappresentazione grafica di entità e attributi
Per rappresentare graficamente in un diagramma ER le entità e gli attributi si utilizza la
seguente notazione:
dove:
per le entità si utilizza un rettangolo, contenente all’interno il nome dell’entità;
per gli attributi non chiave si utilizza una linea che parte dal rettangolo dell’entità e
termina con un piccolo cerchio e il nome dell’attributo;
gli attributi chiave si rappresentano come gli attributi non chiave e in più si sottolinea il nome, oppure si cambia il colore del cerchio;
gli attributi multipli si rappresentano come gli attributi non chiave, ma la linea termina con una doppia freccia;
gli attributi composti si rappresentano come gli attributi non chiave, ma la linea termina con un quadrato.
Una possibile rappresentazione dell’entità Persona è la seguente:
5
4 Le associazioni
L’associazione (in inglese relationship) è un legame logico tra due o più entità rilevanti nella realtà che si sta considerando. Così come le entità sono classi di oggetti del mondo reale, le associazioni sono classi di fatti.
L’istanza di un’associazione è una combinazione (aggregazione) di istanze delle entità che
prendono parte all’associazione.
Tra l’entità Persona e l’entità Automobile esiste un’associazione che descrive, nel linguaggio naturale, il fatto per cui “una persona possiede una o più automobili” e viceversa
“un’automobile è posseduta da una persona”.
In italiano, associazione è sinonimo di relazione, di un legame di qualche tipo tra due o
più oggetti. Nella teoria delle basi di dati è opportuno prestare molta attenzione al termine
relazione, poiché può essere usato con diverse accezioni che non vanno confuse tra loro:
nella teoria degli insiemi denota una relazione matematica;
nel modello ER denota una classe di legami tra entità (associazione e correlazione
sono sinonimi);
nel modello relazionale (che vedremo nell’unità successiva) è una generalizzazione
della relazione matematica;
nei DBMS è usato spesso come sinonimo di tabella.
Per rappresentare graficamente in un diagramma ER un’associazione tra due tipi di entità
si utilizza la seguente notazione, dove per semplicità di esposizione non compaiono gli attributi delle due entità.
Il rombo posto a metà della linea che unisce le due entità rappresenta la loro associazione. Per gli eventuali attributi dell’associazione si seguono le stesse regole degli attributi di
un’entità. Per convenzione utilizzeremo iniziali minuscole per la descrizione dell’associazione. L’associazione possiede tra le due entità Persona e Automobile può essere rappresentata nel seguente modo:
Ogni associazione tra due entità ha due versi, quindi si può dire che tra l’entità Persona e
l’entità Automobile esiste l’associazione possiede; tra l’entità Automobile e l’entità Persona esiste l’associazione èPossedutaDa. Solitamente i sostantivi del linguaggio naturale
corrispondono alle entità, mentre i verbi corrispondono alle associazioni.
6
Come possiamo notare, DataAcquisto e Notaio sono attributi che caratterizzano l’associazione e non le entità in relazione. Nella seguente figura rappresentiamo alcuni possibili
collegamenti tra istanze dell’entità Persona e istanze dell’entità Automobile:
Si definisce grado il numero di entità che partecipano all’associazione. Ad esempio, l’associazione possiede tra le entità Persona e Automobile è di grado 2 e si dice binaria; natu ralmente esistono associazioni di grado 1, 3 e superiore.
Tra due tipi di entità possiamo definire più associazioni binarie, come nella figura seguente:
Le tre associazioni rappresentano rispettivamente i seguenti fatti:
“il comune dove le persone lavorano”;
“il comune dove le persone sono nate”;
“il comune dove le persone risiedono”.
Vediamo ora come si possono rappresentare
le associazioni multiple, ovvero quelle che collegano più di due entità. Consideriamo la realtà di un supermercato, in cui si vuole rappresentare il fatto che ogni reparto possa emettere fattura per i clienti. Di ogni reparto si vogliono conoscere alcuni dati riassuntivi e identificativi. Possiamo utilizzare l’associazione ternaria haFatturato.
7
Le associazioni multiple possono essere trasformate in associazioni binarie. La precedente associazione haFatturato può essere trasformata nel modo illustrato qui; in questo
esempio l’associazione haFatturato è stata trasformata in entità (Fattura) e sono state aggiunte tre associazioni necessarie per garantire il collegamento con le tre entità presenti.
4.1 Attributi di entità e attributi di associazione
Consideriamo la realtà di una classe di alunni in cui si vogliono rappresentare le interrogazioni. Possiamo utilizzare il diagramma ER
della figura a lato.
Se vogliamo avere informazioni sulle assenze, possiamo aggiungere al precedente diagramma un’altra associazione, ottenendo il
diagramma rappresentato nella figura qui sotto.
Un’altra possibile soluzione consiste nell’avere un’unica associazione composta nel modo riportato nella figura a lato.
L’attributo Tipo indicherà se si tratta di assenza o di interrogazione. Se si trattasse di assenza, l’attributo Voto rimarrebbe
non valorizzato; se invece si trattasse di interrogazione, rimarrebbe non valorizzato l’attributo Motivo. Come possiamo notare, data una realtà d’interesse, è possibile descriverla con diversi schemi del modello ER; l’importante è che abbiano lo
stesso contenuto informativo.
8
4.2 Attributo che passa dall’associazione all’entità
Consideriamo il diagramma ER rappresentato nella figura qui sotto a sinistra, in cui abbia mo tre attributi per specificare la data dell’interrogazione. Se ci stiamo riferendo alle inter rogazioni relative a uno stesso anno, ovvero se l’attributo Anno ha un valore fisso, il diagramma diventa quello della figura qui sotto a destra.
L’attributo Anno è diventato un attributo dell’entità Materia.
Per eliminare tutti gli attributi di un’associazione, introdurremo una nuova entità che li
contiene. Variando gli schemi appena visti otterremo:
4.3 Attributo che diventa un’entità
Analizziamo un diagramma ER in cui è presente l’entità Persona, caratterizzata tra l’altro dall’attributo
RagioneSocialeDitta che indica il nome della ditta
presso la quale lavora una persona.
Se siamo interessati a conoscere solo la ragione sociale della ditta presso cui è impiegata quella persona, allora l’attributo RagioneSocialeDitta è sufficiente. Ma se occorre conoscere anche altre informazioni relative a quella ditta, come, ad esempio, indirizzo, numero di dipendenti, numero di telefono, allora
occorrerà aggiungere altri attributi all’entità Persona.
Questa soluzione, però, non è conveniente poiché i
valori di tali attributi verrebbero duplicati in ogni altra
istanza di Persona che sia dipendente della stessa
ditta.
Inoltre, una modifica al numero di telefono di una particolare ditta dovrebbe essere ripor tata in tutte le istanze dove tale numero è duplicato.
9
Per evitare questi inconvenienti aggiungiamo un’altra entità che chiamiamo Ditta e la mettiamo in relazione con Persona, ottenendo il diagramma ER visibile qui a destra.
4.4 Rappresentazione di un’associazione sulla stessa entità: i ruoli
Quando un’associazione crea un legame tra due entità identiche, si ha il caso particolare
di un’associazione sulla stessa entità. Ad esempio, consideriamo l’entità Persona e supponiamo di voler rappresentare l’associazione èGenitoreDi. È questo un classico esempio di
associazione sulla stessa entità, che si rappresenta nel seguente modo:
Tuttavia, poiché l’associazione è una classe di fatti che collegano due o più entità, dobbiamo distinguere, in ogni fatto che costituisce un’istanza dell’entità Persona, chi è il genitore
e chi è il figlio. In termini grafici dobbiamo distinguere qual è il ramo che rappresenta il genitore e qual è il ramo che rappresenta il figlio. Possiamo allora scrivere:
dove genitoreDi e figlioDi sono anche chiamati ruolo dell’entità nell’ambito dell’associazione. In questo diagramma l’entità Persona ha due diversi ruoli nell’ambito dell’associazione genitoreDi: il ruolo di genitore e il ruolo di figlio.
5 Tipi e proprietà delle associazioni
Data un’associazione A tra le entità X e Y, si attribuisce un verso da X a Y che definisce
l’associazione diretta da X a Y. Definiamo inversa l’associazione da Y a X, che indichiamo
con A–1. Possiamo allora dire che la coppia (y, x) con y ∈ Y e x ∈ X appartiene ad A –1 se, e
solo se, la coppia (x, y) appartiene ad A.
Sottolineiamo che A e A–1 sono una l’inversa dell’altra. Sono quindi la stessa associazione,
salvo che per l’ordine delle coppie. La scelta del verso relativo all’associazione diretta e di
quello relativo all’inversa, quindi, è puramente arbitraria.
Possiamo indicare l’associazione diretta e inversa con i nomi dei ruoli. L’associazione guida ha quindi due versi: uno da Persona ad Automobile (relativo all’associazione diretta) e
l’altro da Automobile a Persona (relativo all’associazione inversa).
10
Un’associazione è caratterizzata da due proprietà strutturali: la partecipazione e la molteplicità.
Date due entità X e Y, la proprietà strutturale della partecipazione riguarda il numero minimo di elementi di Y che sono associati a ogni elemento di X. Il valore minimo assume, solitamente, uno dei due valori 0 e 1. Lo 0 indica che la partecipazione è facoltativa, mentre il
valore 1 indica che la partecipazione è obbligatoria. Più in dettaglio:
Un’associazione diretta A tra le entità X e Y è totale quando il legame tra le entità deve es sere sempre presente, cioè a ogni elemento di X deve corrispondere almeno un elemento
di Y, altrimenti si dice parziale. Lo stesso si può dire per l’associazione inversa.
L’associazione è, quindi, parziale quando il legame tra le entità può non essere presente,
cioè può esistere un elemento di X a cui non corrisponde alcun elemento di Y o, viceversa,
un elemento di Y a cui non corrisponde alcun elemento di X. Per rappresentare un’associazione parziale utilizzeremo una linea tratteggiata in base al suo verso.
Analizziamo il seguente diagramma:
Notiamo che:
l’associazione diretta, rappresentata con linea tratteggiata, indica la parzialità, nel
senso che un docente può dirigere un dipartimento;
l’associazione inversa, rappresentata con linea continua, indica la totalità, nel senso che ogni dipartimento deve essere diretto da almeno un docente.
La scelta alternativa delle parole deve piuttosto che può dipende dalla obbligatorietà o
meno della partecipazione dell’entità di partenza dell’associazione. Diremo, pertanto, che
l’associazione dirige è totale su Dipartimento e parziale su Docente.
Ad esempio, il Prof. Biondi non dirige nessun dipartimento, come è mostrato dalla seguente figura, quindi egli, presente nell’entità Docente, non ha alcun legame con l’entità Dipar timenti, pertanto l’associazione diretta è parziale. Invece, tutti gli elementi di Dipartimenti
hanno un legame con qualche elemento di Docente, pertanto l’associazione inversa è totale.
La molteplicità di un’associazione fra le entità X e Y indica il numero massimo di istanze
dell’entità Y che possono trovarsi in relazione con un’istanza dell’entità X e viceversa.
Si dice che l’associazione è univoca da X a Y se ogni istanza di X può trovarsi in relazione
con al più un’istanza di Y. Se tale vincolo non esiste, si dice che l’associazione è multivalore (o multipla).
11
Il vincolo di univocità da X a Y è indipendente da quello definito da Y a X; si hanno così
quattro possibili combinazioni di presenza e assenza dei due vincoli.
La cardinalità di un’associazione fra le entità X e Y descrive parallelamente la molteplicità
dell’associazione diretta e quella della sua inversa. La cardinalità può essere, quindi, a
uno o a molti; pertanto, le associazioni tra due entità si classificano nel modo seguente.
5.1 un’associazione 1:1 (uno a uno) o biunivoca
Si ha un’associazione 1:1 (uno a uno) o biunivoca quando a un’istanza di X corrisponde
una e una sola istanza di Y e viceversa; possiamo anche dire quando la diretta e l’inversa
sono univoche. Graficamente, l’associazione si rappresenta nel seguente modo:
Una tipica associazione uno a uno è quella che esiste tra il tipo di entità Capitale e il tipo
di entità Stato. Una capitale, infatti, appartiene a un solo stato; viceversa uno stato ha
solo una capitale.
Studiamo la molteplicità dell’associazione diretta e dell’inversa. La regola di lettura
è la seguente:
• per l’associazione diretta: “una capitale appartiene a uno stato”;
• per l’associazione inversa: “uno stato ha una capitale”.
La cardinalità è, quindi, 1:1.
5.2 Associazioni uno a molti
Nella figura seguente si evidenzia il legame esistente, in un’associazione uno a molti, tra
le istanze delle due entità. Ad esempio, il Prof. Rossi dispone di due cassetti, il C25 e il
C26.
Si ha un’associazione 1:N (uno a molti) o semplice, quando a un’istanza di X possono corrispondere una o più istanze di Y e a ogni istanza di Y deve corrispondere una sola istanza
di X (la scelta di X o di Y come entità di partenza è casuale). Possiamo anche dire che
un’associazione binaria è uno a molti se è multipla la diretta o l’inversa, ma non entrambe. La rappresentazione grafica è la seguente:
12
Un’associazione uno a molti è quella che esiste tra l’entità Docente e l’entità Cassetto che
rappresenta i cassetti presenti in sala professori dove i docenti depositano il loro registro
personale e altro materiale utile per le lezioni. Un docente, infatti, può disporre di più cas setti, mentre il cassetto è sempre intestato a un singolo docente.
Studiamo la molteplicità. La regola di lettura è la seguente:
• per la diretta: “un docente può disporre di più cassetti”;
• per l’inversa: “un cassetto è sempre intestato a un solo docente”.
La cardinalità è, quindi, 1:N.
Studiamo, ora, la partecipazione:
• per la diretta: “un docente deve disporre di almeno un cassetto”; l’associazione è, quin di, totale;
• per l’inversa: “un cassetto può non essere assegnato ad alcun docente”; l’associazione
è, quindi, parziale.
La rappresentazione finale è, pertanto, la seguente:
Nella figura seguente si evidenzia il legame esistente, in un’associazione uno a molti, tra
le istanze delle due entità. Ad esempio, il Prof. Rossi dispone di due cassetti, il C25 e il
C26.
13
5.3 Associazioni molti a molti
Si ha un’associazione N:N (molti a molti) o complessa, quando a ogni istanza di X possono
corrispondere una o più istanze di Y e, viceversa, a ogni istanza di Y possono corrisponde re una o più istanze di X. Possiamo anche dire che un’associazione è molti a molti se sono
multiple sia la diretta sia l’inversa. La rappresentazione grafica è la seguente:
Un’associazione molti a molti è quella che esiste tra docenti e classi. Un docente infatti
può insegnare in più classi e viceversa una classe ha più docenti che insegnano al suo in terno.
Studiamo la molteplicità. La regola di lettura è la seguente:
• per la diretta: “un docente insegna a più/molte classi”;
• per l’inversa: “in una classe insegnano più/molti docenti”.
La cardinalità è, quindi, N:N. Studiamo, ora, la partecipazione:
• per la diretta: “un docente deve insegnare in almeno una classe (tralasciamo il caso dei
docenti che sono assunti per sole disposizioni)”. L’associazione è, quindi, totale;
• per l’inversa: “una classe deve avere almeno un docente”. L’associazione è, quindi, totale.
Essendo diretta e inversa totali, la rappresentazione secondo il modello ER non cambia e
le due linee rimangono continue. Nella figura seguente si evidenzia il legame esistente, in
un’associazione molti a molti, tra le istanze delle due entità.
14
6 Esempio
Automatizzare la gestione del prestito di DVD in un negozio.
La videoteca gestisce il noleggio di DVD; ogni DVD è caratterizzato da alcune informazioni
generali e dai dati relativi agli attori (con i rispettivi ruoli) e ai registi, inoltre appartiene a
una o più categorie (film d’azione, romantico, dell’orrore e così via). I DVD vengono noleggiati dai clienti, i quali devono aver richiesto e ottenuto precedentemente una tessera valida fino al termine dell’anno solare di emissione e sono identificati dal numero di tale tessera. Quando un cliente richiede la tessera, non è obbligato a noleggiare subito un film,
ma nel momento in cui lo fa si apre un contratto di noleggio al quale sono associati il
cliente e il DVD (almeno uno) noleggiato. Vogliamo avere disponibile sia la situazione dello
stato di noleggio dei DVD, sia la descrizione completa di tutti i noleggi effettuati. Nota che
un cliente può restituire in date diverse i DVD noleggiati con un unico contratto.
ANALISI DEI DATI (ENTITÀ)
Dall’analisi del del problema si possono facilmente individuare le seguenti entità:
• Cliente, per rappresentare le informazioni riguardanti i clienti della videoteca;
• DVD, per memorizzare le informazioni inerenti le caratteristiche del DVD;
• Attore per le informazioni degli attori che interpretano il film registrato su
DVD;
• Regista per le informazioni dei registi che dirigono il film;
• Categoria per memorizzare i tipi di film (azione, giallo, storico e così via).
Gli attributi di Cliente sono numero della tessera, data di emissione della tessera, cognome, nome, indirizzo, città di residenza, telefono. Il numero della tessera è di tipo numeri co, mentre i restanti attributi sono di tipo stringa. Gli attributi di DVD sono codice, titolo e
durata; tutti sono di tipo stringa. Gli attributi di Noleggio sono numero, data di inizio del
noleggio, data di scadenza del noleggio e prezzo complessivo. La data di inizio e quella di
scadenza del noleggio sono di tipo data, mentre il numero e il prezzo complessivo sono di
tipo numerico.
Gli attributi di Attore sono codice, cognome e nome; tutti sono di tipo stringa.
Gli attributi di Regista sono codice, cognome e nome; tutti sono di tipo stringa.
Gli attributi di Categoria sono codice e nome, entrambi di tipo stringa.
ANALISI DELLE ASSOCIAZIONI
Tra l’entità Cliente e l’entità DVD esiste un’associazione noleggia di tipo (cardinalità) molti
a molti (N:N). Infatti, l’associazione diretta è multipla, poiché un cliente può noleggiare più
DVD, e anche l’associazione inversa è multipla, poiché un DVD può essere noleggiato da
più clienti. L’associazione diretta è parziale, poiché un cliente può non aver ancora noleggiato alcun DVD, mentre l’inversa è totale, poiché il noleggio di un DVD deve essere sempre riferito a un cliente.
Tra l’entità DVD e l’entità Attore esiste un’associazione interpretato di tipo molti a molti
(N:N). Infatti, l’associazione diretta e l’inversa sono entrambe multiple, poiché il film registrato su un DVD può essere interpretato da più attori e un attore può interpretare più di
un film. L’associazione diretta è totale, poiché il film registrato su un DVD deve essere interpretato da almeno un attore, mentre l’inversa è parziale, poiché un attore può non recitare in alcun film. L’associazione interpreta ha l’attributo Ruolo che identifica il ruolo dell’attore nell’ambito del film.
15
Tra l’entità DVD e l’entità Categoria esiste un’associazione appartiene di tipo molti a uno
(N:1). Infatti, l’associazione diretta è multipla, poiché un film può appartenere a una categoria, mentre l’inversa è multipla, poiché una categoria può avere più DVD di riferimento.
L’associazione diretta è totale, poiché il film registrato su un DVD deve appartenere ad almeno una categoria, mentre l’inversa è parziale, poiché a una categoria può anche non
appartenere alcun DVD. Siamo ora in grado di formalizzare lo schema concettuale secondo le regole del modello ER:
7 I vincoli di integrità
Finora abbiamo visto come modellare una realtà di interesse usando le entità, con le loro
proprietà, e le associazioni. Gran parte delle strutture che si vogliono modellare possono
essere espresse in una di queste due notazioni, ma esistono alcuni importanti aspetti del
mondo reale che non possono essere modellati con gli strumenti visti finora: i vincoli di integrità.
Possiamo definire vincolo di integrità una proprietà che deve essere soddisfatta dalle
istanze che rappresentano informazioni corrette per l’applicazione che utilizza la base di
dati.
16
In pratica, i vincoli di integrità sono costituiti da predicati che devono essere soddisfatti
dalle istanze delle varie entità che compongono la base di dati.
Consideriamo l’entità Studente, che contiene informazioni anagrafiche relative a uno stu dente. Supponiamo che l’attributo Matricola sia un numero progressivo che identifica
esattamente uno studente.
L’attributo Età, di tipo intero, potrebbe assumere un valore molto alto, ad esempio pari a
250 (cosa impossibile).
Dal punto di vista concettuale questa assegnazione è corretta (infatti 250 è un valore del
dominio intero) ma non ha molto senso in questa realtà: è del tutto irreale (anche se desiderabile!) vivere sino a 250 anni.
È necessario, quindi, specificare un vincolo di integrità che indichi che l’età deve essere
inferiore a 120.
Un altro vincolo imporrà che non possono esserci due studenti con lo stesso numero di
matricola.
Riprendiamo in esame il problema del noleggio dei DVD esaminato nelle lezioni precedenti. In base alle nostre conoscenze abbiamo potuto modellare la realtà di interesse individuando entità, associazioni e caratteristiche dei singoli attributi.
Per condurre una progettazione concettuale ampia e completa, però, occorre precisare alcune informazioni che non possono essere rappresentate con i simboli che abbiamo studiato. Riferendoci al problema del noleggio dei DVD, informazioni aggiuntive utili possono
essere le seguenti:
1. la data di emissione della tessera deve essere antecedente a quella odierna;
2. la data del noleggio deve essere successiva a quella di emissione della tessera;
3. la data di scadenza del contratto di noleggio deve essere successiva a quella di
stipula del contratto stesso.
Questi sono vincoli che la base di dati deve soddisfare per non compromettere l’integrità
dei dati.
In generale possiamo considerare ogni vincolo come un’asserzione che può essere, rispetto a un’istanza, vera o falsa. Se l’asserzione è vera diciamo che il vincolo è soddisfatto
dalla nostra istanza, altrimenti diremo che i dati violano il vincolo.
Noi accettiamo tutte e sole le istanze della base di dati per le quali tutti i vincoli di integri tà sono veri e diciamo che sono solo quelle le istanze che possono verificarsi nella realtà.
Si è soliti classificare i vincoli di integrità in impliciti ed espliciti.
I vincoli impliciti sono quelli imposti dalla stessa struttura dei dati e si dividono in:
• vincoli di chiave primaria; impongono che le istanze di una categoria debbano es
sere tutte diverse tra loro;
• vincoli referenziali; date due entità A e B e un’associazione tra loro, questi vincoli
impongono che non si possa inserire un elemento in A (o non esista un elemento in
A) che non sia associato a un elemento in B. Ciò può anche essere visto come un
vincolo sulla partecipazione delle associazioni.
17
I vincoli espliciti sono quelli che impongono delle restrizioni sul modo in cui i dati possono
cambiare. Un esempio di vincolo esplicito è: “il valore dell’attributo Età non può essere negativo né maggiore di 120”.
Si parla di vincoli di integrità perché devono essere rispettati, pena l’integrità stessa dei
dati. Se il valore dell’attributo Età assume valori superiori a 120, può causare problemi a
programmi che lo utilizzano e che suppongono che tali valori siano “legittimi”.
I vincoli impliciti si rappresentano direttamente con simboli del diagramma ER e precisamente:
• i vincoli di chiave primaria si rappresentano sottolineando i relativi attributi;
• i vincoli referenziali si rappresentano con le linee continue delle associazioni tra
entità (rappresentazione della partecipazione di un’associazione).
Per rappresentare i vincoli espliciti ricorriamo a una nostra sintassi, che possiamo definire
ricorrendo a uno pseudolinguaggio:
# V<NumProgressivo>: (<Espressione>)
dove:
• <NumProgressivo> è un numero progressivo del vincolo;
• <Espressione> è una qualsiasi espressione in pseudolinguaggio o in linguaggio naturale
che serve per specificare il vincolo.
Per esprimere il vincolo sull’Età scriveremo:
# V1: (0 < Età < 120)
Per esprimere il vincolo che “non si può assumere un dipendente di età inferiore a 16
anni” scriveremo:
# V2: (Anno(Dipendente.DataAssunzione) – Anno(Dipendente.DataNascita) > 16)
Come si può notare, per fare riferimento a un attributo di una particolare entità o associazione, utilizziamo la seguente sintassi:
# <NomeEntità>.<NomeAttributo>
oppure:
<nomeAssociazione>.<NomeAttributo>
8 Esempi
8.1 Esempi 1
Rappresenta tramite diagramma ER la realtà di interesse: prestiti di libri ai soci di una biblioteca (1)
La biblioteca fornisce i suoi servizi ai lettori attraverso il prestito dei libri. Ogni libro presente in biblioteca è individuato univocamente da un codice. Ogni libro appartiene a un genere specifico, in modo che la consultazione dei testi possa avvenire non solo per titolo e/o
nome dell’autore, ma anche attraverso il genere di appartenenza del libro stesso. I libri
vengono prestati per un certo numero di giorni, poi occorre sollecitare i loro possessori.
Ogni lettore (socio) ha infatti un recapito o eventualmente un numero telefonico.
18
V1: Noleggia.DataPrestito < Noleggia. DataRestituzione
V2: Libro.AnnoProduzione ≤ Anno in corso
V3: Noleggia.DataPrestito ≠ 0
9 Esempio 2
Rappresenta tramite diagramma ER la realtà di interesse: prestiti di libri ai soci di una biblioteca (2)
Modifichiamo lo schema realizzato nell’esercizio precedente. Se prestiamo molta attenzione al diagramma ER, notiamo che l’entità Socio presenta un attributo multiplo (Telefono).
In un certo senso è come se a 1 socio corrispondessero N numeri di telefono.
Anche nell’entità Libro è presente un attributo multiplo (Autore). Pertanto, è come se a 1
libro corrispondessero N autori. Inoltre è presente l’attributo CasaEditrice che non ci consente di memorizzare altri dati riferibili all’editore (l’indirizzo della sede, la città e così via).
Modifichiamo pertanto lo schema aggiungendo queste nuove informazioni.
V1: Noleggia.DataPrestito < Noleggia. DataRestituzione
19
10 Collezioni di entità e gerarchie
In fase di progettazione concettuale può accadere che, modellando la realtà, ci si accorga
che alcune entità possono avere delle istanze in comune, oppure può nascere l’esigenza
di voler particolareggiare o generalizzare un’entità.
In queste circostanze è utile organizzare le entità in gerarchie. Una gerarchia ha una struttura ad albero: la radice rappresenta l’entità che contiene le caratteristiche comuni (entità
padre), mentre i vari nodi (entità figlie) rappresentano le entità che contengono caratteristiche più specifiche.
Per creare una gerarchia si attua un processo di specializzazione, ossia si “specializza”
l’entità padre creando entità figlie sempre più specifiche (specializzate).
Percorrendo la gerarchia dal basso verso l’alto si attua automaticamente un processo di
generalizzazione, in quanto si risale l’albero passando dalle entità più specializzate a quelle più generiche.
Ad esempio, l’entità PersonaleScuola può essere pensata come una generalizzazione delle entità Docente e NonDocente. In questo modo è possibile rappresentare il fatto che
istanze di Docente e NonDocente possono anche essere classificate come istanze di PersonaleScuola; questo approccio consente di prescindere dalle proprietà che le rendono
semanticamente diverse (ad esempio la materia insegnata per i docenti e la mansione per
i non docenti) ed evidenziare, invece, le proprietà comuni, ad esempio cognome, nome, residenza e data di nascita.
Naturalmente il processo di specializzazione può proseguire, nel senso che un’entità figlia
può essere a sua volta una entità padre per altre entità modellando, così, gerarchie a più
livelli. Ad esempio, l’entità figlia NonDocente potrebbe essere specializzata in PersonaleSegreteria e Collaboratore divenendo, così, entità figlia di PersonaleScuola ed entità padre
di PersonaleSegreteria e Collaboratore.
Nel modello ER un’associazione di generalizzazione è nota anche con il termine associazione ISA (dall’inglese is a, cioè “è un”). Nella gerarchia è possibile distinguere i seguenti
tipi di entità figlie:
le entità sottoinsieme, specializzazioni della stessa entità padre, non sono, in genere, disgiunte fra loro. Ad esempio, un’istanza dell’entità padre PersonaleScuola può
essere contemporaneamente sia un’istanza dell’entità figlia Docente, sia di PersonaleMaschile. La rappresentazione è la seguente:
20
le entità sottoinsieme disgiunte, specializzazioni della stessa entità padre, sono caratterizzate da istanze disgiunte. Ad esempio, le entità figlie Docente e NonDocente
sono sottoinsiemi disgiunti dell’entità padre PersonaleScuola. La rappresentazione è
la seguente:
le entità copertura di una stessa entità non sono fra loro disgiunte, ma l’unione delle
loro istanze coincide con quelle dell’entità padre. Ad esempio, le entità figlie MenoDi20Anni e PiùDi15Anni sono entità copertura dell’entità padre Persona. Ovviamente, le persone che hanno 20 anni esatti sono inserite nell’entità PiùDi20Anni. La rappresentazione è la seguente:
le entità partizione di una stessa entità sono fra loro disgiunte, ma l’unione delle loro
istanze coincide con quelle dell’entità padre. Ad esempio, le entità figlie Maschio e
Femmina sono entità partizione dell’entità padre Persona. La rappresentazione è la
seguente:
Dalle precedenti figure si vede facilmente che la disgiunzione viene rappresentata con un
pallino pieno e la copertura con una doppia freccia rivolta verso l’entità padre. La partizio ne è rappresentata utilizzando entrambi i simboli appena descritti.
10.1 Esmepio :gestione delle attività di una concessionaria di automobili multimarca nuove e usate.
Vincoli
V1: (Automobile.Prezzo > 0)
V2: (AutoUsata.Immatr > 01/01/1990)
V3: (AutoUsata.KMPercorsi < 300.000)
21
V4: (AutoUsata.AnniGaranzia ≤ 5)
11 Esercizi sui diagrammi E/R
Per le seguenti proposte operative analizza la realtà di interesse proposta e descrivila sia
in forma discorsiva sia utilizzando un diagramma ER che riporti:
a) le entità e le associazioni;
b) gli attributi di ogni entità e di ogni associazione e le loro caratteristiche;
c) gli attributi chiave di ogni entità;
d) le associazioni totali e quelle parziali;
e) la cardinalità di ogni associazione;
f) i Vincoli d'integrità
1. Fattura
Rappresenta i dati e le relazioni tra dati necessari alla stesura di una fattura commerciale
che comprenda gli articoli venduti, il cliente e la data di vendita.
22
2. Prenotazioni a teatro
Rappresenta i dati e le relazioni tra dati necessari a gestire un sistema di prenotazione di
un teatro di 1000 posti suddivisi in 25 file di 40 poltrone l'una. Ogni poltrona è quindi indi viduata da una lettera e da un numero.
3. Autonoleggio
Rappresenta i dati e le relazioni tra dati relativi alla gestione di un autonoleggio.
4. Orario ferroviario
Rappresenta i dati e le relazioni tra dati relativi alla gestione dell'orario ferroviario.
5. Rilevazione presenze
Rappresenta i dati e le relazioni tra dati relativi a un sistema di rilevazione automatica delle presenze installato in una scuola.
6. Campionato di calcio
Rappresenta i dati e le relazioni tra dati relativi alle partite dell'ultimo campionato di calcio.
In particolare memorizza, per poi poterle rintracciare, le seguenti informazioni: ·
- il numero di goal segnati dai giocatori;
- il numero di goal segnati "in trasferta";
- il numero di goal segnati "in casa";
le date relative alle partite;
- i numeri di telefono dei giocatori;
- il nome del presidente della squadra di calcio alla quale appartiene un giocatore.
7. Ospedale
Rappresenta i dati e le relazioni tra dati relativi alla gestione dei reparti di un ospedale.
Suggerimento: un ospedale è composto da diversi reparti. Ogni reparto ha un nome, una
specialità, un primario, un numero di posti letto numerati. Ogni paziente ha un nome, una
data di arrivo, un insieme di diagnosi, una tariffa giornaliera e occupa un certo posto letto
in un reparto. l dottori dell'ospedale sono caratterizzati da un nome, una o più specialità;
ciascun dottore ha sotto cura diversi pazienti, situati anche in reparti diversi. A ogni paziente un dottore può prescrivere, di tanto in tanto, una serie di esami clinici i cui risultati
devono essere registrati. (cartella clinica del paziente). Prevedi le procedure per l'arrivo e
la partenza di un paziente, elenca tutti gli esami prescritti da un dottore per un certo pa ziente, elenca tutti i medici che visitano un certo reparto. Individua il numero di giorni di
permanenza di un paziente in un certo reparto.
8. Noleggio DVD
Rappresenta ì dati e le relazioni tra dati relativi a un sistema di noleggio di videocassette e
DVD, con le seguenti specifiche:
per ogni film sono rilevanti un codice identificativo, il titolo, il regista (supposto come unico), l'anno di produzione,gli interpreti (zero o più) e il costo del noleggio;possono esistere
film senza attori e film il cui regista sia anche attore;
vengono anche memorizzate informazioni riguardo ad attori e registi: data e luogo di nascita, cittadinanza attuale ed eventuali cittadinanze passate, con data di variazione;
per ogni film possono esistere più copie;
per ogni cassetta sono rilevanti la data di fabbricazione
23
e lo stato di conservazione;
per ogni DVD sono registrati i GB memorizzati;
per ogni noleggio sono rilevanti il cliente, la data di noleggio e la data di restituzione; non
viene tenuta traccia dei noleggi conclusi;
per ogni cliente vengono memorizzati il nome, l'indirizzo e il telefono.
9. Noleggio DVD 2
Modifica il diagramma dell'esercizio precedente affinché si tenga traccia anche dei noleggi conclusi e si consideri che ogni film può essere registrato su una o più videocassette.
10. Traffico aereo
La base di dati per il controllo del traffico aereo contiene le seguenti informazioni:
Per ogni volo si hanno la compagnia aerea, il numero del volo, tipo di aereo, numero di
passeggeri si conoscono gli aeroporti e gli orari di partenza e di arrivo.
L'aeroporto è caratterizzato da. nome, posizione geografica, servizi disponibili. Per tali servizi si ha l'indicazione di quali sono a pagamento.
Durante il volo l'aereo occupa una o più aerovie, caratterizzate ciascuna da un nome e da
alcune posizioni di riferimento (radiofari), anch'esse individuate da un proprio nome e dalle coordinate geografiche.
Il piano di volo, fatto prima della partenza, determina l'ora, la quota e la velocità di passaggio su ciascun punto di riferimento. ·
11. Tassisti
Descrivi con un diagramma ER la seguente realtà di interesse:
una cooperativa di tassisti dispone di un certo numero di automobili che vengono assegnate ai soci con turni di sei ore. Vengono mantenuti i dati delle assegnazioni dei parcheg gi (cioè dei luoghi in cui il taxi sosta in attesa di clienti) e delle corse cui ciascuna automobile fa riferimento, giorno per giorno in ciascuno dei turni.
12. compravendita
La base di dati per la gestione di compravendite immobiliari dovrà comprendere le seguenti informazioni:
Gli immobili, oggetto delle transazioni, sono distinti in abitazioni e uffici e sono caratterizzati da posizione, via e città. Le abitazioni sono caratterizzate dal numero di locali e gli uf fici dalla superficie in metri quadrati.
Gli enti (persone o aziende) possono acquistare, vendere o affittare gli immobili. Per le
persone si hanno il codice fiscale, il nome, la professione, l'indirizzo e il numero di telefono. Per le aziende si hanno il codice fiscale, l'indirizzo, il numero di telefono; l'ammontare
del capitale sociale e il numero di dipendenti.
Per le transazioni si hanno la data, il numero di contratto, il tipo di pagamento e il valore.
Le agenzie che effettuano le transazioni sono caratterizzate da codice fiscale, nome, indirizzo e numero di telefono.
13. Aule e seminari
Si vuole gestire l'allocazione di aule dedicate a seminari. Un seminario può essere tenuto
in più parti, che possono anche svolgersi in aule diverse. Di un seminario interessano Responsabile, Titolo e Codice (che lo identifica). Di un'aula interessano Nome (che la identifi24
ca) e Capienza. Interessa inoltre sapere per ogni parte di un seminario la data, l'ora di inizio e fine, e l'aula in cui si svolge. Si definisca uno schema concettuale grafico della base
di dati.
14. Tesi di laurea
Si vogliono rappresentare le seguenti informazioni relative alle tesi di un corso di laurea.
Di una tesi interessa il titolo, gli studenti che la svolgono (anche più di uno), i relatori (an che più di uno), il controrelatore, il tipo (ricerca, rassegna, progetto) e l'area (basi di dati,
programmazione logica, architettura, ecc.). Di uno studente interessa la matricola, il cognome, la data prevista di laurea. l relatori possono essere docenti universitari o dipendenti di altri enti, mentre i controrelatori sono sempre docenti. Di un relatore interessa il
cognome e l'ente di appartenenza, di un docente interessa anche il dipartimento di afferenza. Si dia uno schema grafico della base di dati. Si definisca uno schema concettuale
grafico della base di dati.
15. Circolo tennis
Un circolo del tennis vuole memorizzare le prenotazioni dei propri campi da tennis da par te dei propri soci. · Ogni prenotazione riguarda un singolo socio ed un singolo campo da
tennis, prenotato per una certa ora ed una certa data (per semplicità si rappresentino tanto la data che l'ora tramite una stringa). Un singolo campo può essere prenotato, ad una
certa ora di una certa data, da un solo socio; un singolo socio può effettuare più prenotazioni.
Di ogni socio interessano nome, cognome e recapito. Di un campo interessa ricordare se
sia coperto ò scoperto e se sia in cemento o in terra battuta. Ogni socio ha un codice numerico che lo identifica; similmente per ogni campo. Si definisca uno schema concettuale
grafico della, base di dati.
16. Grossista piante e fiori
Si vuole progettare la base di dati per la gestione degli ordini di un grossista di piante e
fiori. Gli articoli trattati dal grossista sono suddivisi in tre categorie: piante, fiori e accesso ri. Ogni articolo e caratterizzato da un codice, da una descrizione, dalla quantità disponibi le in magazzino e dalla scorta minima. Inoltre i fiori sono caratterizzati dal loro nome
scientifico e dalla durata media; mentre le piante sono caratterizzate dal nome scientifico
e dal fatto di essere o non essere sempreverdi. Il grossista, quando effettua un ordine a
un fornitore (caratterizzato da codice fiscale, ragione sociale, indirizzo, città e numero di
telefono), emette un ordine univocamente numerato che descrive quali articoli vengono
ordinati e in quali quantità.
Alla consegna della merce da parte del fornitore, una bolla di arrivo accompagna la merce
stessa. La bolla riporta un numero identificativo, è caratterizzata da una data di emissione
e riporta quali articoli vengono consegnati e in quali quantità. La consegna della merce
equivale a evadere uno o più ordini, ma ogni ordine può essere evaso al più da una bolla. l
dettaglianti, caratterizzati da codice fiscale, ragione sociale, indirizzo, città e numero di telefono, ordinano e ricevono articoli dal grossista in maniera simile a quanto avviene tra
grossista e fornitori. Ogni dettagliante emette ordini, numerati secondo una propria numerazione. Ogni ordine specifica quali articoli quali articoli vengono ordinati e in quali quanti tà. Quando il grossista consegna la merce, emette una bolla di consegna caratterizzata
dalla data di emissione e da un codice univoco. Nella bolla di consegna si specificano il
dettagliante destinatario, tutti gli articoli consegnati e la corrispondente
quantità consegnata. Una bolla di consegna può evadere più di un ordine, ma un ordine
può essere evaso al più da una bolla.
17. Elezioni
25
Un società di rilevazioni ha effettuato dei sondaggi relativi ai voti espressi dagli elettori in
una consultazione nazionale. Il territorio è diviso in circoscrizioni, in ogni circoscrizione si
presentano più partiti (ma non tutti i partiti si presentano in tutte le circoscrizioni). Ogni
elettore vota in una specifica circoscrizione. Di ogni elettore interrogato interessano l'età, il
sesso, il voto che ha dichiarato di avere espresso, e la circoscrizione in cui vota; per semplicità si supponga che tutti gli interrogati o non rispondono o dichiarano di avere votato
uno specifico partito. Di ogni partito interessa il nome che lo contraddistingue e l'anno di
fondazione. Di ogni circoscrizione interessano il nome, che la distingue, e la popolazione.
Si definisca uno schema concettuale grafico della base di dati.
18. Attori e registi
Si vogliono trattare informazioni relative a attori e registi di film. Di attori e registi interessa
il nome, che lo identifica, l'anno di nascita e la nazionalità. Un attore può essere anche un
regista. Di un film interessano il titolo, l'anno di produzione, gli attori e il regista. Due film
prodotti lo stesso anno hanno titolo diverso. Si definisca uno schema concettuale grafico
della base di dati.
19. Zoo
Si vuole automatizzare il sistema di gestione degli animali in uno zoo. Ogni esemplare di
animale ospitato è identificato dal suo genere (es. zebra) e da un codice unico all'interno
del genere di appartenenza. Per ogni esemplare si memorizzano la data di arrivo nello
zoo, il nome proprio, il sesso, il paese di provenienza e la data di nascita. Lo zoo è diviso in
aree; in ogni area c'è un insieme di case, ognuna destinata ad un determinato genere di
animali. Ogni casa contiene un insieme di gabbie, ognuna contenente un solo esemplare.
Ogni casa ha un addetto che pulisce ciascuna gabbia in un determinato giorno della settimana. Gli animali sono sottoposti periodicamente a controllo veterinario; in un controllo,
un veterinario rileva il peso degli esemplari, diagnostica un'eventuale malattia e prescrive
il tipo di dieta da seguire.
Concerti
Si vuole realizzare una base di dati per la gestione del programma di concerti di News Musica, tenendo conto delle seguenti informazioni:
• i concerti proposti nel programma sono identificati da un codice numerico e sono caratterizzati da titolo e descrizione
• ogni concerto è composto da un certo numero di pezzi musicali, ogni pezzo è caratterizzato da un titolo e uno o più autori; inoltre, per ogni concerto, si conosce l’ordine in cui
sono rappresentati i pezzi che fanno parte del programma
• l’esecutore di ogni concerto è identificato da una matricola ed è caratterizzato da nome
e stato di provenienza
• l’esecutore può essere un’orchestra oppure un solista
• nel caso delle orchestre si memorizzano il nome del direttore e il numero degli elementi
che ne fanno parte, mentre nel caso del solista si considera lo strumento suonato; per le
orchestre, inoltre, si memorizzano i componenti (un orchestrale può suonare
in una sola orchestra), identificati da una matricola univoca dell’orchestra di appartenenza e caratterizzati da nome, data di nascita e strumenti suonati
• i concerti sono tenuti in sale da concerto, identificate da un codice univoco e caratteriz zate da nome, indirizzo, capienza massima, numero di posti a sedere ed eventualmente
da uno o più numeri di telefono
26
• ogni concerto può essere programmato in una o più date, nella stessa sala oppure in
sale diverse
• per ogni programmazione di un concerto è noto il prezzo del biglietto, che può essere
diverso per programmazioni diverse dello stesso concerto
20 Calcio
Si vogliono rappresentare le informazioni relative a un campionato di calcio diviso in serie
eventualmente suddivise in gironi. Devono essere facilmente accessibili il calendario delle
partite di ogni serie o girone, i risultati di tutte le partite giocate e le classifiche complete
per ogni serie o girone. Occorre prevedere le procedure per aggiornare la base di dati con i
risultati di una domenica, per la stampa del calendario di una serie o girone, per le promozioni e le retrocessioni a fine campionato.
21 Comunità scientifica
Si vuole realizzare una base di dati per la comunità scientifica di ricerca paleontologica. Si
devono memorizzare i dati riguardanti i reperti fossili di vertebrati custoditi dai musei tenendo conto delle seguenti informazioni:
• i reperti sono caratterizzati dal luogo e dall’anno di ritrovamento, dal ricercatore responsabile della scoperta, dal museo e dalla sala in cui sono custoditi
• ogni reperto può essere attribuito a diverse specie, con diverso grado di probabilità
• a ogni specie possono essere associati più nomi, qualora diversi ricercatori abbiano assegnato lo stesso nome a specie diverse • i musei sono caratterizzati dalle sale, dai loro
ricercatori, dal loro direttore (che supponiamo sia un ricercatore)
• i ricercatori sono caratterizzati da un codice identificativo, un nome, un cognome e una
data di nascita
22 Gas metano
Si vuole realizzare una base di dati per una società di erogazione del gas metano, tenendo
conto delle seguenti informazioni:
• i contatori sono caratterizzati da un numero di matricola (univoco) e dal codice del modello
• ogni contatore appartiene a un lotto di fornitura, e ogni lotto è caratterizzato da un nu mero identificativo (univoco), dalla data e dal fornitore;
• i contatori sono installati presso le utenze, e per ogni utenza si conoscono il codice (univoco), la ragione sociale, l’indirizzo e la città
• le utenze sono suddivise in tipologie (abitazioni private, uffici, stabilimenti e negozi) e
per ciascuna tipologia si applica una tariffa diversa
• in una certa utenza può essere installato al più un contatore, ma non è escluso che altri
contatori siano stati installati in momenti passati; in particolare, per ogni utenza si vuole
conoscere sia il contatore installato al presente, caratterizzato dalla data di installazione,
sia l’elenco di eventuali contatori installati in passato, caratterizzati da una data di
installazione e una di dismissione
• ai fini della fatturazione si effettua una lettura periodica del contatore per ogni utente,
caratterizzata dal valore precedente, dal valore attuale e dalla data
• per ogni lettura si emette una bolletta caratterizzata da un numero univoco, la data di
emissione, l’importo e la data di scadenza
27
28