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