Trentacinque esercizi raccolti dai tre eserciziari in un'unica progressione per difficoltà —
Base, Media e Alta — selezionabile dai filtri in cima alla lista.
Ogni esercizio ha modello E-R, svolgimento commentato e verifica automatica della tua traduzione:
il correttore controlla tabelle, chiavi primarie, chiavi esterne e l’ordine degli attributi.
Come si traduce — le tre regole, in ordine
La traduzione si affronta in tre passi, e l’ordine non è una preferenza di stile: prima si toglie dal
modello E-R ciò che il modello logico non sa rappresentare, poi si traducono le entità, infine le associazioni.
Invertire i passi è l’errore più frequente.
Passo 1 — Ristrutturare (Regola 1). Si eliminano i costrutti senza corrispondenza diretta:
l’attributo composto si spezza negli attributi semplici che lo compongono; l’attributo multivalore
genera una nuova entità: l’associazione di collegamento è 1:n se ogni valore
appartiene a una sola istanza (l’email, il numero di telefono), n:n se i valori sono condivisi
fra più istanze (una lingua parlata da più persone). La nuova entità ha come PK il valore stesso
dell’attributo e come FK la PK dell’ente proprietario; la generalizzazione si risolve con uno dei
tre metodi della tabella qui sotto.
Passo 2 — Da ogni entità una tabella. Gli attributi diventano colonne; l’identificatore diventa la
chiave primaria (PK). L’entità debole prende come PK la PK dell’entità forte più la propria
chiave parziale.
Passo 3 — Da ogni associazione, una collocazione per la chiave esterna.1:n → la FK sta nella tabella che è dal lato con massimo 1. n:n → una
tabella nuova con PK = coppia delle PK. 1:1 → (1,1) da entrambi i lati: una sola tabella;
(1,1) da un solo lato: FK nella tabella con cardinalità (1,1); (0,1) da entrambi i lati: terza tabella col nome dell’associazione.
Se l’associazione è identificante, la FK entra nella PK composta dell’entità debole (prima la chiave del forte,
poi la chiave parziale) e si può ripetere in coda come in un 1:n normale: il correttore accetta entrambe le grafie, che sono la stessa cosa. Se l’associazione ha
attributi propri, finiscono nella tabella generata dall’n:n, nella tabella fusa o — nel caso 1:1 con la FK
in una delle due tabelle — nella tabella che contiene la FK, prima della FK (che resta l’ultimo attributo).
Attenzione alla PK: decide il testo, non tu. La regola «PK = coppia delle PK» vale finché il testo non
prevede che la stessa coppia possa ricorrere più volte: rileggi il testo prima di scegliere la PK. Se la
stessa coppia ricorre, l’associazione ha occorrenze con vita propria e non è più una semplice tabella n:n:
diventa un’entità, con un identificatore proprio e le FK verso le entità collegate. Se invece la coppia non può ripetersi,
la PK = coppia delle PK va bene — e non si inventa nessun attributo che il modello non preveda.
La generalizzazione: tre modi di risolverla
Metodo
Che cosa fa
Sceglilo quando…
In cambio accetti…
1 — Elimina il padre
Il padre sparisce. Ogni figlia diventa una tabella che ripete gli attributi comuni e le
associazioni del padre. L’identificatore va rinominato per distinguere le figlie (es. codiceC / codiceG); se la copertura è anche esclusiva, il correttore accetta anche lo stesso nome nelle due tabelle.
Copertura totale (è obbligatorio); meglio se anche esclusiva. Figlie «ricche», con molti
attributi propri.
Le associazioni del padre duplicate verso ogni figlia; le interrogazioni «su tutti i padri»
diventano un’unione di tabelle.
2 — Elimina le figlie
Le figlie rientrano nel padre: un’unica tabella con gli attributi specifici di tutte, più un
attributo di controllo che dice a quale figlia appartiene l’istanza
(tipoFiglia; nel manuale compare anche con nomi concreti come razza o
ruolo). In questo eserciziario l’attributo di controllo si chiama con un nome che comincia con
«tipo» (tipoFiglia, ma anche tipo,
tipoCorso…): il correttore accetta qualunque di queste grafie.
Sempre possibile, salvo il caso di un’associazione che riguarda una sola figlia (vedi la nota qui sotto). È la scelta naturale se la copertura è parziale o sovrapposta, o se le
figlie sono «povere»: pochi attributi propri e nessuna associazione propria.
Molti valori NULL: su ogni riga restano vuoti gli attributi delle figlie diverse.
3 — Tieni tutti: associazioni 1:1
La generalizzazione diventa un’associazione 1:1 tra il padre e ciascuna figlia
(es. Is_C, Is_I): il padre resta, e ogni figlia ha PK = PK del padre, che è anche FK.
Sempre possibile. Figlie con associazioni proprie da tenere separate (es. solo
i medici seguono i ricoveri); vuoi evitare sia i nulli del Metodo 2 sia le duplicazioni del Metodo 1.
Più tabelle: per rileggere una figlia insieme al padre servono più join.
L’ordine in cui decidere: 1) la copertura scritta nel testo — se è parziale, il Metodo 1 è
vietato, perché perderesti chi sta solo nel padre; 2) le figlie hanno vita propria, cioè attributi specifici
numerosi o associazioni proprie? (sì → 1 o 3; figlie povere → 2); 3) che cosa vuoi evitare nello schema logico?
(valori nulli → non il 2; associazioni duplicate e interrogazioni a unione → non l’1; tabelle e join in più → non il 3).
Motiva sempre la scelta in una riga.
Quando il Metodo 2 non basta. Se un’associazione riguarda una sola figlia (per esempio «solo i medici seguono i ricoveri»), fondere le figlie nel padre fa perdere questo vincolo: la FK punterebbe al padre e potrebbe riferirsi anche all’altra figlia. In quel caso scegli il Metodo 1 o il Metodo 3.
Notazione usata in tutto l’eserciziario. Le tabelle si scrivono
Nome (attributo(PK), altro, chiaveEsterna(FK)). La chiave primaria si può indicare in due modi
equivalenti: codice(PK) oppure PK(codice); per la chiave esterna
codice(FK) oppure FK(codice).
Una chiave esterna composta si scrive FK(codice, numInventario).
La chiave esterna è sempre l’ultimo attributo elencato: prima la PK, poi gli attributi propri, infine la o le FK.
Come si legge il modello E-R
Simbolo
Che cosa significa
Rettangolo
Entità: ha un identificatore proprio.
Rombo
Associazione fra due entità.
Cerchio pieno
Chiave primaria (identificatore).
Cerchio vuoto
Attributo semplice.
Cerchio doppio
Attributo multivalore (va trasformato in una nuova entità).
Pallino nero pieno (●) con il tratto che lo collega
Segnala l’entità debole: il pallino chiude il tratto che collega la chiave parziale al
rombo dell’associazione identificante — è questo che distingue la debole da un’entità forte.
Il tratto passa sotto l’attributo chiave parziale (quello che il testo indica come «numero
progressivo interno»). L’entità debole non ha un identificatore proprio: la sua chiave è la PK dell’entità
forte più la chiave parziale.
Albero con (t,e) o (p,e)
Generalizzazione: il padre sta in alto, le figlie sotto. (t,e) =
copertura totale ed esclusiva, (p,e) = copertura parziale
(esistono istanze del padre che non sono né l’una né l’altra figlia).
(min,max) accanto a un’entità
Quante volte quell’entità partecipa all’associazione: (1,1) = esattamente una volta, (0,1) = al massimo una (con massimo 1 si ha, in un’associazione 1:n, il lato in cui finisce la chiave esterna),
(0,n) = da nessuna a n volte.
Come rispondere. Una tabella per riga, nella forma qui sopra. Il correttore non bada a spazi, maiuscole o
ordine delle righe; controlla invece il contenuto: quali tabelle esistono, chi è PK, chi è FK, quali attributi sono
presenti e che le FK stiano in coda. I nomi degli attributi devono corrispondere a quelli del testo e del
diagramma: il correttore accetta le grafie equivalenti indicate di volta in volta (per esempio
codCentro o CodSede per la stessa chiave esterna).
Per le tabelle introdotte dalla traduzione (associazioni n:n, attributi multivalore, tabelle derivate) il
nome è libero: la tabella viene riconosciuta dalla struttura (PK, FK, attributi).
Esercizi
Filtra
Esercizio 1 — Tre entità: un n:n con attributo e un 1:nBase
3 entitàn:n con attributo1:n
TestoUna biblioteca registra i libri (codice, titolo, anno) e gli autori (idAutore, nome, cognome).
Un autore può scrivere più libri e un libro può avere più autori; di ogni collaborazione la biblioteca registra il ruolo
(per esempio «principale», «traduttore»). Ogni libro è pubblicato da una sola casa editrice
(partitaIVA, ragioneSociale), mentre una casa editrice pubblica molti libri. Tradurre il modello in modello logico.
Modello E-R dell’esercizio 1.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Nessun attributo composto, multivalore o generalizzazione: il modello E-R è già ristrutturato.
Tre entità → tre tabelle: Autore, Libro, CasaEditrice, ciascuna con il proprio identificatore come PK.
L’associazione Pubblica è 1:n: la FK va nella tabella dal lato con massimo 1, cioè Libro (accanto a Libro c’è (1,1) verso la casa editrice).
L’associazione Scrive è n:n con attributo proprio: nasce una nuova tabella con PK = coppia delle PK e l’attributo ruolo.
Soluzione
Autore (idAutore(PK), nome, cognome)
CasaEditrice (partitaIVA(PK), ragioneSociale)
Libro (codice(PK), titolo, anno, partitaIVA(FK))
Scrive (PK(idAutore, codice), ruolo, idAutore(FK), codice(FK))
Da scrivere così
Autore (idAutore(PK), nome, cognome)
CasaEditrice (partitaIVA(PK), ragioneSociale)
Libro (codice(PK), titolo, anno, partitaIVA(FK))
Scrive (PK(idAutore, codice), ruolo, idAutore(FK), codice(FK))
Esercizio 2 — Noleggio di attrezzature: un n:n con attributo e un 1:nBase
3 entitàn:n con attributo1:n
TestoUno sportello di noleggio registra le attrezzature (codAttrezzo, descrizione,
tariffaOraria) e i propri soci (tessera, nome, cognome). Ogni attrezzatura è acquistata da un solo
fornitore (partitaIVA, denominazione, nazione), mentre un fornitore rifornisce più attrezzature.
Un socio può noleggiare più attrezzature e un’attrezzatura può essere noleggiata da più soci; di ogni
noleggio si registrano la data di inizio e la data di fine; ogni socio noleggia una determinata attrezzatura al più una volta. Tradurre il modello in modello logico.
Modello E-R dell’esercizio 2.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Il modello E-R è già ristrutturato: nessun attributo composto, nessun multivalore, nessuna generalizzazione.
Tre entità → tre tabelle: Socio, Attrezzatura, Fornitore, ognuna con il proprio identificatore come PK.
L’associazione Fornita è 1:n: la FK va nella tabella dal lato con massimo 1, cioè Attrezzatura (accanto a Attrezzatura c’è (1,1)).
L’associazione Noleggia è n:n e ha attributi propri: nasce una nuova tabella con PK = coppia delle PK, più dataInizio e dataFine.
Prima di fissare la PK, ricontrolla il testo: la stessa coppia socio–attrezzatura non può presentarsi più volte (il testo non lo prevede), quindi la PK = coppia delle PK va bene. Se il testo lo prevedesse, l’associazione Noleggia avrebbe occorrenze con vita propria e dovrebbe diventare un’entità con un identificatore proprio.
Esercizio 3 — Tre entità: un n:n con attributo e un 1:nBase
3 entitàn:n con attributo1:n
TestoUn laboratorio dolciario registra i dolci (codice, nome, prezzo) e gli ingredienti
(codIngrediente, nome, fornitore). Ogni dolce usa più ingredienti e un ingrediente può essere usato in più dolci; per ogni uso
il laboratorio registra la quantità in grammi. Ogni dolce è preparato da un solo pasticciere
(matricola, nome, cognome), mentre un pasticciere prepara più dolci. Tradurre il modello in modello logico.
Modello E-R dell’esercizio 3.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Nessun attributo composto, multivalore o generalizzazione: il modello E-R è già ristrutturato.
Tre entità → tre tabelle: Pasticciere, Dolce, Ingrediente, ciascuna con il proprio identificatore come PK.
L’associazione Prepara è 1:n: la FK va nella tabella dal lato con massimo 1, cioè Dolce (accanto a Dolce c’è (1,1) verso il pasticciere).
L’associazione Usa è n:n con attributo proprio: nasce una nuova tabella con PK = coppia delle PK e l’attributo quantità.
Esercizio 4 — Due entità con un attributo multivaloreBase
multivalore1:n
TestoUn’azienda registra i dipendenti (matricola, nome, cognome) e i reparti
(codiceReparto, nome, sede). Ogni dipendente lavora in un solo reparto e un reparto ha molti dipendenti.
Di ogni dipendente l’azienda registra uno o più numeri di telefono.
Tradurre il modello in modello logico, ristrutturando dove necessario.
Modello E-R dell’esercizio 4.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — l’attributo telefono è multivalore: diventa una nuova entità Telefono collegata a Dipendente dall’associazione 1:n Possiede.
Passo 2 — Dipendente e Reparto diventano tabelle con il proprio identificatore come PK.
Passo 3 — l’associazione Lavora 1:n mette la FK in Dipendente (accanto a Dipendente c’è (1,1)); l’associazione Possiede 1:n mette la FK in Telefono.
Esercizio 5 — Due associazioni 1:n e un attributo multivaloreBase
multivalore1:n3 entità
TestoUna federazione sportiva registra gli atleti (tessera, nome, cognome, annoNascita),
ciascuno tesserato presso una sola società (codSocietà, nome, città): una società ha però molti atleti.
Ogni atleta pratica una sola disciplina (codDisciplina, denominazione) e una disciplina ha molti atleti.
Di ogni atleta la federazione registra uno o più indirizzi email.
Tradurre il modello in modello logico, ristrutturando dove necessario.
Modello E-R dell’esercizio 5.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — email è multivalore: diventa una nuova entità Email, collegata ad Atleta dall’associazione 1:n Possiede.
Passo 2 — tre entità → tre tabelle: Atleta, Societa, Disciplina.
Passo 3 — Tesserato e Pratica sono entrambe 1:n e in tutte e due l’atleta sta dal lato con massimo 1: le due FK finiscono perciò nella stessa tabella, Atleta, una in coda all’altra.
La tabella generata dal multivalore ha come PK il valore stesso (l’indirizzo email) e la FK all’atleta: l’indirizzo è già univoco, quindi non serve aggiungere altro alla PK.
Esercizio 6 — Due entità con un attributo multivaloreBase
multivalore1:n
TestoUna società di consegne registra i corrieri (codice, nome, cognome) e le zone
(codZona, nome, cap). Ogni corriere opera in una sola zona e una zona è coperta da più corrieri.
Di ogni corriere la società registra uno o più numeri di telefono.
Tradurre il modello in modello logico, ristrutturando dove necessario.
Modello E-R dell’esercizio 6.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — l’attributo telefono è multivalore: diventa una nuova entità Telefono collegata a Corriere dall’associazione 1:n Possiede.
Passo 2 — Corriere e Zona diventano tabelle con il proprio identificatore come PK.
Passo 3 — l’associazione Opera 1:n mette la FK in Corriere (accanto a Corriere c’è (1,1)); l’associazione Possiede 1:n mette la FK in Telefono.
TestoUna pizzeria registra i propri pizzaioli (matricola, nome, cognome) e le pizze
(codPizza, nome, prezzo). Ogni pizza è preparata da un solo pizzaiolo e un pizzaiolo prepara più pizze.
Di ogni pizza interessano uno o più ingredienti (per esempio «pomodoro», «mozzarella», «basilico»);
lo stesso ingrediente può comparire in più pizze.
Tradurre il modello in modello logico, ristrutturando dove necessario.
Modello E-R dell’esercizio 7.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — l’attributo ingredienti è multivalore e l’informazione è condivisa: lo stesso ingrediente («pomodoro») compare in più pizze. Diventa perciò una nuova entità Ingrediente, identificata da nomeIngrediente(PK) (non nome, per non confonderlo con l’altro nome), collegata a Pizza dall’associazione n:n Composta (sarebbe 1:n solo se ogni ingrediente appartenesse a una sola pizza).
Passo 2 — Pizzaiolo e Pizza diventano tabelle con il proprio identificatore come PK.
Passo 3 — l’associazione Prepara 1:n mette la FK in Pizza (accanto a Pizza c’è (1,1)); Composta è n:n, quindi nasce la tabella Composta con PK(codPizza, nomeIngrediente) e le due FK codPizza e nomeIngrediente.
TestoUn’officina registra i veicoli (targa, marca, modello). I veicoli si dividono in
autovetture, di cui interessa il numero di posti, e motocicli, di cui interessa la
cilindrata: ogni veicolo è o un’autovettura o un motociclo (copertura totale ed esclusiva).
Ogni veicolo può essere sottoposto a più interventi (codice, descrizione, costo); ogni intervento riguarda un solo veicolo.
Tradurre il modello in modello logico applicando il Metodo 2 — eliminazione delle entità figlie.
Modello E-R dell’esercizio 8.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — la copertura è totale ed esclusiva (t,e) e le figlie hanno pochi attributi propri: la scelta guidata è il Metodo 2 (figlie incorporate nel padre + attributo di controllo tipoFiglia). Con il Metodo 1 il padre sparirebbe e ogni figlia ripeterebbe i suoi attributi, con l’identificatore rinominato (targaAutovettura / targaMotociclo); con il Metodo 3 resterebbero Veicolo più due figlie con PK(targa) che è anche FK. Trovi tutte e tre le soluzioni.
Passo 2 — Veicolo e Intervento diventano tabelle; l’identificatore resta la PK.
Passo 3 — l’associazione Eseguito 1:n mette la FK in Intervento (accanto a Intervento c’è (1,1)).
Con il Metodo 1 si ottengono due tabelle figlie con gli attributi del padre ripetuti e, in Intervento, due FK nullable; con il Metodo 2 una sola tabella ma colonne con molti NULL. La scelta guidata resta il Metodo 2, perché le figlie hanno pochissimi attributi propri.
Il nome dell’attributo di controllo è libero purché cominci con «tipo» (tipoFiglia, tipo, tipoVeicolo…): il correttore accetta tutte queste grafie.
Metodo 2 — Eliminazione delle entità figlie (scelta guidata)
Esercizio 9 — Generalizzazione totale ed esclusiva: tre metodiMedia
entità figliegeneralizzazione1:n
TestoUna società di formazione eroga i corsi (codCorso, titolo, durataOre). I corsi si
dividono in teorici, di cui interessa il numero di aule assegnate, e pratici, di cui interessa il
numero di prove di guida: ogni corso è o teorico o pratico (copertura totale ed esclusiva). Ogni corso è erogato in
un solo centro (codCentro, città, indirizzo) e in un centro si erogano più corsi.
Tradurre il modello in modello logico usando uno dei tre metodi, a scelta.
Modello E-R dell’esercizio 9.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
La copertura è totale ed esclusiva: nessuno dei tre metodi è vietato, la scelta è di merito.
Metodo 1: elimini il padre Corso; le figlie ripetono titolo e durataOre, e l’associazione Erogato si duplica verso entrambe. L’identificatore si può rinominare (codCorsoT / codCorsoP) oppure lasciare com’è: con copertura esclusiva le due tabelle non si pestano i piedi.
Metodo 2: le figlie confluiscono in un’unica tabella Corso con anche numAule e numProveGuida, più l’attributo di controllotipoFiglia; molte celle restano vuote. Il nome dell’attributo di controllo è libero purché cominci con «tipo» (tipoFiglia, tipo, tipoCorso…): il correttore accetta tutte queste grafie.
Metodo 3: il padre resta e ogni figlia diventa una tabella con PK = PK del padre, che è anche FK. Qui l’attributo di controllo tipoFiglia è ridondante (il tipo si deduce dalla presenza della riga nella tabella figlia): si può omettere, e il correttore accetta entrambe le forme.
Metodo 2 — le entità figlie rientrano nel padre
Centro (codCentro(PK), citta, indirizzo)
Corso (codCorso(PK), titolo, durataOre, numAule, numProveGuida, tipoFiglia, codCentro(FK))
Centro (codCentro(PK), citta, indirizzo)
Corso (codCorso(PK), titolo, durataOre, tipoFiglia, codCentro(FK))
Teorico (codCorso(PK), numAule, codCorso(FK))
Pratico (codCorso(PK), numProveGuida, codCorso(FK))
Da scrivere così
Centro (codCentro(PK), citta, indirizzo)
Corso (codCorso(PK), titolo, durataOre, numAule, numProveGuida, tipoFiglia, codCentro(FK))
Esercizio 10 — Generalizzazione: film e serie TVMedia
entità figliegeneralizzazione1:n
TestoUna piattaforma di streaming registra i contenuti (codice, titolo, anno). I contenuti sono
film, di cui interessa la durata in minuti, oppure serie TV, di cui interessa il
numero di stagioni: ogni contenuto è o un film o una serie (copertura totale ed esclusiva).
Ogni contenuto appartiene a un solo genere (codGenere, nome) e un genere raccoglie più contenuti.
Tradurre il modello in modello logico, motivando il metodo scelto per la generalizzazione.
Modello E-R dell’esercizio 10.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — la copertura è totale ed esclusiva (t,e) e le figlie hanno un solo attributo proprio ciascuna: la scelta guidata è il Metodo 2 (figlie incorporate nel padre + attributo di controllo tipoFiglia). Con il Metodo 1 il padre sparirebbe e ogni figlia ripeterebbe i suoi attributi; con il Metodo 3 resterebbero Contenuto più due figlie con PK(codice) che è anche FK. Trovi tutte e tre le soluzioni.
Passo 2 — Contenuto e Genere diventano tabelle; l’identificatore resta la PK.
Passo 3 — l’associazione Appartiene 1:n mette la FK in Contenuto (accanto a Contenuto c’è (1,1) verso il genere).
Nel Metodo 2 l’attributo di controllo è libero purché cominci con «tipo» (tipoFiglia, tipo, tipoContenuto…): il correttore accetta tutte queste grafie.
Metodo 2 — Eliminazione delle entità figlie (scelta guidata)
Genere (codGenere(PK), nome)
Contenuto (codice(PK), titolo, anno, durataMinuti, numeroStagioni, tipoFiglia, codGenere(FK))
Metodo 1 — Eliminazione dell’entità padre
Genere (codGenere(PK), nome)
Film (codiceFilm(PK), titolo, anno, durataMinuti, codGenere(FK))
SerieTv (codiceSerie(PK), titolo, anno, numeroStagioni, codGenere(FK))
Metodo 3 — Associazioni 1:1
Genere (codGenere(PK), nome)
Contenuto (codice(PK), titolo, anno, codGenere(FK))
Film (codice(PK), durataMinuti, codice(FK))
SerieTv (codice(PK), numeroStagioni, codice(FK))
Da scrivere così
Genere (codGenere(PK), nome)
Contenuto (codice(PK), titolo, anno, durataMinuti, numeroStagioni, tipoFiglia, codGenere(FK))
Esercizio 11 — Generalizzazione parziale: il Metodo 1 è vietatoMedia
TestoUn’azienda agricola registra i terreni (particella, estensioneEttari). I terreni si dividono in
seminativi, di cui interessa la coltura, e prati, di cui interessa il numero di tagli annuali;
esistono però anche terreni incolti, che restano semplici terreni senza attributi specifici (copertura
parziale). Ogni conducente (codConducente, nome, cognome) coltiva un solo terreno, mentre
un terreno può essere coltivato da più conducenti. Tradurre il modello in modello logico con il Metodo 2 oppure con il
Metodo 3.
Modello E-R dell’esercizio 11.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
La copertura è parziale: esistono terreni che non sono né seminativi né prati.
Per questo il Metodo 1 è vietato: eliminando il padre Terreno perderesti del tutto gli incolti, che non hanno una figlia in cui stare.
Resta il Metodo 2 (tutti in un’unica tabella + attributo di controllo, con nulli) o il Metodo 3 (padre e figlie in 1:1, che conserva anche gli incolti). L’attributo di controllo del Metodo 2 si chiama con un nome che comincia con «tipo» (tipoFiglia, tipo, tipoTerreno…): il correttore accetta tutte queste grafie.
In entrambi i casi l’associazione Coltiva mette la FK in Conducente: è il lato con massimo 1 (accanto a Conducente c’è (1,1)), perché ogni conducente coltiva un solo terreno.
Nel Metodo 3 l’attributo di controllo tipoFiglia è ridondante (il tipo si deduce dalla presenza della riga in Seminativo o in Prato): si può omettere, e il correttore accetta entrambe le forme.
Esercizio 12 — Generalizzazione con il Metodo 3Media
entità figlieMetodo 31:1
TestoUna banca registra i clienti (codiceFiscale, nome, cognome) e i
conti (numeroConto, saldo, dataApertura): ogni conto è intestato a un solo cliente e un cliente può avere più conti.
I conti si dividono in conti correnti, di cui interessa il tasso di interesse, e conti deposito,
di cui interessa il numero massimo di prelievi (copertura totale ed esclusiva).
Solo i conti correnti hanno carte di pagamento (numero, circuito): un conto corrente può avere più carte e ogni carta
appartiene a un solo conto corrente.
Tradurre il modello in modello logico applicando il Metodo 3 — associazioni 1:1.
Modello E-R dell’esercizio 12.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — la copertura della generalizzazione è totale ed esclusiva (t,e). Le figlie hanno pochi attributi propri, ma solo i conti correnti hanno un’associazione propria (Possiede → Carta): per non appiattirla sul padre e per non riempire di NULL la tabella del padre, la scelta guidata è il Metodo 3 — associazioni 1:1.
Passo 2 — Cliente, Conto e Carta diventano tabelle con il proprio identificatore come PK.
Passo 3 — con il Metodo 3 la generalizzazione diventa una 1:1 tra il padre Conto e ciascuna figlia: ContoCorrente e ContoDeposito hanno PK(numeroConto) che è anche FK verso Conto.
Passo 4 — l’associazione Intestato 1:n mette la FK in Conto (accanto a Conto c’è (1,1)); l’associazione Possiede 1:n mette la FK in Carta: Carta.numeroConto è FK verso ContoCorrente (non verso Conto), perché le carte esistono solo per i conti correnti.
Esercizio 13 — Generalizzazione con il Metodo 3Media
entità figlieMetodo 31:n
TestoUn’azienda di soccorso stradale registra i mezzi (targa, marca, modello). I mezzi sono
ambulanze, di cui interessa il numero di barelle, oppure carri attrezzi, di cui interessa
la portata: ogni mezzo è o un’ambulanza o un carro attrezzi (copertura totale ed esclusiva).
Solo le ambulanze effettuano gli interventi (codIntervento, data, luogo): un’ambulanza può effettuare più
interventi e ogni intervento è effettuato da una sola ambulanza.
Tradurre il modello in modello logico applicando il Metodo 3 — associazioni 1:1.
Modello E-R dell’esercizio 13.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — la copertura è totale ed esclusiva (t,e). Le figlie hanno pochi attributi propri, ma solo le ambulanze hanno un’associazione propria (Effettua → Intervento): per non appiattirla sul padre e per non riempire di NULL la tabella del padre, la scelta guidata è il Metodo 3 — associazioni 1:1.
Passo 2 — Mezzo e Intervento diventano tabelle con il proprio identificatore come PK.
Passo 3 — con il Metodo 3 la generalizzazione diventa una 1:1 tra il padre Mezzo e ciascuna figlia: Ambulanza e CarroAttrezzi hanno PK(targa) che è anche FK verso Mezzo.
Passo 3 (continua) — l’associazione Effettua 1:n mette la FK in Intervento: Intervento.targa è FK verso Ambulanza (non verso Mezzo), perché gli interventi esistono solo per le ambulanze.
TestoUn’agenzia commerciale registra i clienti (partitaIVA, ragioneSociale) e gli agenti
(matricola, nome, cognome). Ogni cliente è seguito da un solo agente e un agente segue più clienti.
Di ogni cliente l’agenzia registra gli ordini: un ordine ha un numero progressivo all’interno del cliente,
una data e un importo. Ordini di clienti diversi possono avere lo stesso numero progressivo.
Tradurre il modello in modello logico.
Modello E-R dell’esercizio 14.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — niente da ristrutturare: non ci sono attributi composti, multivalore o generalizzazioni.
Passo 2 — Cliente e Agente sono entità forti. Ordine è un’entità debole: da sola non ha un identificatore, perché numProgressivo è solo una chiave parziale.
Passo 3 — l’associazione identificante Effettua non crea una tabella: la PK di Ordine diventa PK(partitaIVA, numProgressivo) = PK dell’entità forte + chiave parziale.
L’associazione Segue 1:n mette la FK in Cliente (accanto a Cliente c’è (1,1) verso l’agente).
Esercizio 15 — Entità debole con identificazione internaMedia
entità deboleidentificante1:n
TestoUna banca tiene traccia dei propri correntisti (codiceFiscale, nome, cognome)
e dei conti correnti a loro intestati. Ogni conto è intestato a un solo correntista; di ogni conto si
registra il numero progressivo interno al correntista (due correntisti diversi possono avere conti con lo
stesso numero progressivo), la data di apertura e il saldo attuale. Tradurre il modello in modello logico.
Modello E-R dell’esercizio 15.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
ContoCorrente è un’entità debole: non ha un proprio identificatore, si distingue solo dal numero progressivo interno al correntista a cui è intestata.
La PK è quindi composta: chiave del correntista + numero progressivo.
La FK al correntista va nella stessa tabella — ed è già dentro la PK, perciò la tabella ha una sola FK, non due.
La FK dentro la PK è implicita: ContoCorrente(PK(codiceFiscale, numProgressivo), …) basta da sola, ma se la dichiari lo stesso in coda — cioè codiceFiscale(FK) come ultimo attributo — il risultato è lo stesso e il correttore accetta anche entrambe le forme.
Correntista diventa una tabella normale, con il proprio identificatore come PK.
Esercizio 16 — Entità debole: i pagamenti degli allieviMedia
entità deboleidentificante1:n
TestoUna scuola di musica registra gli allievi (matricola, nome, cognome) e i docenti
(codDocente, nome, cognome). Ogni allievo segue un solo docente e un docente segue più allievi.
Di ogni allievo la scuola registra i pagamenti: un pagamento ha un numero progressivo all’interno
dell’allievo, una data e un importo. Pagamenti di allievi diversi possono avere lo stesso numero progressivo.
Tradurre il modello in modello logico.
Modello E-R dell’esercizio 16.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — niente da ristrutturare: non ci sono attributi composti, multivalore o generalizzazioni.
Passo 2 — Allievo e Docente sono entità forti. Pagamento è un’entità debole: da sola non ha un identificatore, perché numProgressivo è solo una chiave parziale.
Passo 3 — l’associazione identificante Effettua non crea una tabella: la PK di Pagamento diventa PK(matricola, numProgressivo) = PK dell’entità forte + chiave parziale.
L’associazione Segue 1:n mette la FK in Allievo (accanto a Allievo c’è (1,1) verso il docente).
Esercizio 17 — Tre entità, n:n con attributo e 1:nMedia
3 entitàn:n con attributo1:n
TestoUn negozio di strumenti musicali registra i musicisti (codFiscale, nome, cognome) e gli
strumenti (codice, nome, prezzo). Un musicista può suonare più strumenti e uno strumento può essere
suonato da più musicisti; di ogni abbinamento il negozio registra gli anni di esperienza del musicista su quello strumento.
Ogni strumento è prodotto da una sola marca (partitaIVA, nome), mentre una marca produce molti strumenti.
Tradurre il modello in modello logico.
Modello E-R dell’esercizio 17.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — nessun attributo composto, multivalore o generalizzazione: il modello E-R è già ristrutturato.
Passo 2 — tre entità → tre tabelle: Musicista, Strumento, Marca, ciascuna con il proprio identificatore come PK.
Passo 3 — l’associazione Produce è 1:n: la FK va in Strumento, la tabella dal lato con massimo 1 (accanto a Strumento c’è (1,1) verso la marca).
Passo 4 — l’associazione Suona è n:n con attributo proprio: nasce una nuova tabella con PK = coppia delle PK e l’attributo anniEsperienza.
TestoUn’azienda di catering registra i clienti (partitaIVA, ragioneSociale, telefono), gli
eventi (codEvento, data, luogo, numeroInvitati) e i menu (codMenu, nome, prezzoPersona).
Ogni evento è organizzato per un solo cliente e un cliente può organizzare più eventi. Ogni evento prevede un solo menu,
mentre lo stesso menu può essere previsto in più eventi. I piatti (codPiatto, nome, portata) compaiono in più
menu e un menu contiene più piatti; di ogni presenza si registra l’ordine di servizio.
Tradurre il modello in modello logico.
Modello E-R dell’esercizio 18.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — niente da ristrutturare: nessun attributo composto, multivalore o generalizzazione.
Passo 2 — quattro entità → quattro tabelle: Cliente, Evento, Menu, Piatto.
Passo 3 — Organizza (1:n) mette partitaIVA(FK) in Evento; Prevede (1:n) mette codMenu(FK) in Evento: entrambe le FK vanno in coda, dopo gli attributi propri.
Passo 3 (continua) — Composizione è n:n con attributo proprio: nuova tabella con PK(codMenu, codPiatto), l’attributo ordine e le due FK.
TestoUna settimana della moda registra gli stilisti (codStilista, nome, cognome) e le
sfilate (codSfilata, data, città). Ogni sfilata è allestita da un solo stilista e ogni stilista allestisce
al massimo una sfilata. Ogni sfilata presenta più capi (codCapo, descrizione, prezzo) e un capo
può essere presentato in più sfilate; di ogni presentazione si registra il numero progressivo di uscita in passerella.
Tradurre il modello in modello logico.
Modello E-R dell’esercizio 19.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
L’associazione Organizza è 1:1: una sfilata ha un solo stilista e uno stilista ha al massimo una sfilata.
È seconda strategia — (1,1) da un solo lato: accanto a Stilista c’è (0,1), accanto a Sfilata c’è (1,1). Si tengono due tabelle e la FK va nella tabella con cardinalità (1,1), cioè Sfilata.
L’associazione Presenta è n:n con attributo: nuova tabella con PK = coppia delle PK e numUscita.
Soluzione — la FK sta in Sfilata
Stilista (codStilista(PK), nome, cognome)
Sfilata (codSfilata(PK), data, citta, codStilista(FK))
Capo (codCapo(PK), descrizione, prezzo)
Presenta (PK(codSfilata, codCapo), numUscita, codSfilata(FK), codCapo(FK))
Da scrivere così
Stilista (codStilista(PK), nome, cognome)
Sfilata (codSfilata(PK), data, citta, codStilista(FK))
Capo (codCapo(PK), descrizione, prezzo)
Presenta (PK(codSfilata, codCapo), numUscita, codSfilata(FK), codCapo(FK))
Esercizio 20 — Entità figlie e entità deboleAlta
entità figlieentità deboleentrambi
TestoUn ospedale registra il personale (codiceFiscale, nome, cognome) e i pazienti
(codiceSanitario, nome, cognome). Il personale si divide in medici, di cui interessa la specializzazione,
e infermieri, di cui interessa il piano: ogni persona è o medico o infermiere (copertura totale ed esclusiva).
I ricoveri sono identificati dal numero progressivo all’interno del paziente e hanno data di ingresso e
data di dimissione. Ogni ricovero è seguito da un solo medico e un medico può seguire più ricoveri.
Tradurre il modello in modello logico applicando il Metodo 1 — eliminazione dell’entità padre.
Modello E-R dell’esercizio 20.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — la copertura è totale ed esclusiva (t,e): ogni persona è necessariamente un medico o un infermiere, quindi il Metodo 1 (eliminazione dell’entità padre) è lecito ed è quello richiesto dal testo. Personale sparisce e ogni figlia diventa una tabella che ripete gli attributi comuni, con l’identificatore rinominato (codiceFiscaleMedico / codiceFiscaleInfermiere). Il Metodo 2 va invece scartato: Segue riguarda solo i medici, e fondendo le figlie nel padre il ricovero potrebbe riferirsi anche a un infermiere (il vincolo andrebbe perso). Resta possibile il Metodo 3 (associazioni 1:1) — trovi le due soluzioni.
Passo 2 — con il Metodo 1 le tabelle sono Medico, Infermiere e Paziente; Ricovero è un’entità debole, quindi il suo scheletro di PK è la chiave parziale numProgressivo più la PK di Paziente.
Passo 3 — l’associazione identificante Effettua non crea una tabella: la PK di Ricovero diventa PK(codiceSanitario, numProgressivo).
L’associazione Segue 1:n mette la FK in Ricovero: con il Metodo 1 punta a Medico (codiceFiscaleMedico(FK)); con il Metodo 3 punta a Medico, non a Personale: solo i medici seguono i ricoveri.
Metodo 1 — Eliminazione dell’entità padre (scelta guidata)
Esercizio 21 — Generalizzazione e entità deboleAlta
entità figlieentità deboleentrambi
TestoUna casa di produzione registra il personale (codiceFiscale, nome, cognome), distinti in
registi, di cui interessa il numero di film diretti, e attori, di cui interessa
l’altezza: ogni persona del personale è o regista o attore (copertura totale ed esclusiva).
Le produzioni (codProduzione, titolo, anno) possono avere più contratti. I contratti sono
stipulati con i registi: un contratto ha un numero progressivo all’interno del regista, una data di stipula
e un compenso, e riguarda una sola produzione.
Tradurre il modello in modello logico applicando il Metodo 1 — eliminazione dell’entità padre.
Modello E-R dell’esercizio 21.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — la copertura è totale ed esclusiva (t,e) e il testo richiede il Metodo 1: Personale sparisce e ogni figlia diventa una tabella che ripete gli attributi comuni, con l’identificatore rinominato (codiceFiscaleRegista / codiceFiscaleAttore). Resta possibile il Metodo 3 (associazioni 1:1). Il Metodo 2 qui è sbagliato: fondendo Regista e Attore in Personale, Contratto dovrebbe riferirsi a Personale e nulla impedirebbe di stipulare un contratto con un attore; il fatto che il contratto riguardi «solo registi» non sarebbe più rappresentato nel modello E-R ristrutturato.
Passo 2 — con il Metodo 1 le tabelle sono Regista, Attore e Produzione; Contratto è un’entità debole, quindi il suo scheletro di PK è la chiave parziale numProgressivo più la PK di Regista.
Passo 3 — l’associazione identificante Stipula non crea una tabella: la PK di Contratto diventa PK(codiceFiscaleRegista, numProgressivo).
L’associazione Riguarda 1:n mette la FK codProduzione in Contratto (accanto a Contratto c’è (1,1), accanto a Produzione (0,n)).
Nel Metodo 3 le figlie hanno PK = FK verso il padre, quindi Contratto può riferirsi direttamente a Regista senza perdere il vincolo.
Metodo 1 — Eliminazione dell’entità padre (scelta richiesta)
TestoUna catena di palestre registra i corsi (codCorso, nome, livello). I corsi si dividono in
collettivi, di cui interessa il numero massimo di partecipanti, e individuali, di cui interessa la
durata in minuti: ogni corso è o collettivo o individuale (copertura totale ed esclusiva). Di ogni corso si tengono più
sedute, identificate da un numero progressivo interno al corso, di cui interessa la data e l’aula.
Ogni corso è tenuto da un solo istruttore (matricola, nome, cognome) e un istruttore tiene più corsi.
Tradurre il modello in modello logico usando uno dei tre metodi per la generalizzazione.
Modello E-R dell’esercizio 22.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Due costrutti insieme: una generalizzazione (t,e) sulle figlie e un’entità debole che dipende dal padre della generalizzazione.
Con il Metodo 1 il costo è doppio: oltre a duplicare l’associazione Tenuto devi duplicare anche l’entità debole, perché Seduta era identificata da un codice che non esiste più.
Con il Metodo 2 nulla si duplica: un’unica tabella Corso con l’attributo di controllo, e Seduta resta identificata da quella PK. L’attributo di controllo si chiama con un nome che comincia con «tipo» (tipoFiglia, tipo, tipoCorso…): il correttore accetta tutte queste grafie.
Con il Metodo 3 il padre resta, quindi Seduta continua a puntare a Corso; le figlie hanno PK = PK del padre, che è anche FK. Qui tipoFiglia è ridondante e si può omettere: il correttore accetta entrambe le forme.
Nel Metodo 1 l’identificatore si può rinominare (codCorsoC / codCorsoI) oppure lasciare com’è: con copertura esclusiva le due tabelle figlie non si pestano i piedi, e il correttore accetta entrambe le forme.
TestoUn amministratore di condominio registra i condomini (codFiscale, indirizzo), di cui conserva
uno o più numeri di telefono. Ogni condominio comprende più appartamenti, identificati dal
numero interno all’interno del condominio (due condomini diversi possono avere lo stesso numero interno), con
piano e superficie. Un appartamento esiste solo dentro il suo condominio.
Tradurre il modello in modello logico, ristrutturando dove necessario.
Modello E-R dell’esercizio 23.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — l’attributo telefoni è multivalore: diventa l’entità Telefono collegata a Condominio dall’associazione 1:n Contatta.
Passo 2 — Condominio è un’entità forte. Appartamento è un’entità debole: numeroInterno è solo una chiave parziale.
Passo 3 — l’associazione identificante Comprende non crea una tabella: la PK di Appartamento diventa PK(codFiscale, numeroInterno).
L’associazione Contatta 1:n mette la FK in Telefono.
Esercizio 24 — Multivalore ed entità debole insiemeAlta
multivaloreentità debole3 entità1:n
TestoUn ufficio postale registra i propri mittenti (codMittente, nome, cognome) e le
raccomandate spedite. Ogni raccomandata è intestata a un solo mittente; di ogni raccomandata si registra il
numero progressivo interno al mittente, la data di spedizione e il peso. Di ogni mittente l’ufficio registra
uno o più numeri di telefono. Ogni raccomandata è spedita a una sola località
(codCAP, denominazione, provincia) e verso una località partono più raccomandate.
Tradurre il modello in modello logico.
Modello E-R dell’esercizio 24.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Attenzione ai nomi: l’entità si chiama Localita, il suo identificatore è codCAP e denominazione è un attributo semplice.
Due ristrutturazioni distinte: il multivalore telefono genera una nuova entità Telefono, con PK il numero stesso e FK al mittente; Raccomandata è debole perché il suo numero progressivo ha senso solo dentro un mittente.
La PK di Raccomandata è: codMittente + numProgressivo.
Le FK di Raccomandata sono due — una al mittente (che però è già nella PK) e una alla località — e vanno entrambe in coda.
TestoUna clinica odontoiatrica registra i pazienti (codPaziente, nome, cognome) e i dentisti
(codDentista, nome, cognome). Ogni paziente è seguito da un solo dentista e un dentista segue più pazienti.
Di ogni paziente la clinica registra uno o più indirizzi email. Le prestazioni sono identificate
dal numero progressivo all’interno del paziente e riportano data e importo; prestazioni di pazienti
diversi possono avere lo stesso numero progressivo. Tradurre il modello in modello logico.
Modello E-R dell’esercizio 25.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — l’attributo email è multivalore: diventa una nuova entità Email, con l’indirizzo come PK e una FK verso Paziente.
Passo 2 — Paziente e Dentista sono entità forti; Prestazione è un’entità debole identificata da Paziente tramite la chiave parziale numProgressivo.
Passo 3 — l’associazione Segue 1:n mette la FK in Paziente; l’associazione identificante Riceve non crea tabelle: la PK di Prestazione è PK(codPaziente, numProgressivo).
La tabella Email deriva dal multivalore: la sua PK è il valore stesso (indirizzo) e la FK è codPaziente, la chiave del paziente a cui appartiene l’indirizzo.
TestoUn aeroporto registra le compagnie (codCompagnia, nome, nazione), gli aerei
(codAereo, modello, numeroPosti) e i voli (codVolo, data, oraPartenza, destinazione). Ogni aereo appartiene a
una sola compagnia e una compagnia possiede più aerei. Ogni volo è operato da un solo aereo e un aereo può operare più voli.
I passeggeri (codPasseggero, nome, cognome) prenotano i voli; di ogni prenotazione si registrano il
posto e il prezzo. Tradurre il modello in modello logico.
Modello E-R dell’esercizio 26.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — niente da ristrutturare: nessun attributo composto, multivalore o generalizzazione.
Passo 2 — quattro entità → quattro tabelle: Compagnia, Aereo, Volo, Passeggero.
Passo 3 — Possiede (1:n) mette codCompagnia(FK) in Aereo; Effettua (1:n) mette codAereo(FK) in Volo.
Passo 3 (continua) — Prenota è n:n con attributi propri: nuova tabella con PK(codPasseggero, codVolo), gli attributi posto e prezzo, poi le due FK.
Esercizio 27 — Generalizzazione e associazione n:nAlta
entità figliegeneralizzazionen:n con attributo
TestoUn museo registra le opere (codOpera, titolo, anno) e gli artisti
(codArtista, nome, nazionalità). Le opere si dividono in dipinti, di cui interessa la tecnica, e
sculture, di cui interessa il materiale: ogni opera è o un dipinto o una scultura (copertura
totale ed esclusiva). Un artista realizza più opere e un’opera può essere realizzata da più artisti; di ogni
collaborazione si registra il ruolo. Tradurre il modello in modello logico applicando il
Metodo 2 — eliminazione delle entità figlie.
Modello E-R dell’esercizio 27.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — la copertura è totale ed esclusiva (t,e) e il testo richiede il Metodo 2: le figlie rientrano nel padre Opera, che conserva gli attributi comuni e acquista tecnica, materiale e l’attributo di controllotipoFiglia.
Passo 2 — Artista e Opera diventano tabelle con il proprio identificatore come PK; il nome dell’attributo di controllo è libero purché cominci con «tipo».
Passo 3 — Realizza è n:n con attributo proprio: nasce una nuova tabella con PK(codOpera, codArtista), l’attributo ruolo e le due FK.
Con il Metodo 2 le colonne tecnica e materiale restano vuote sulle righe dell’altra figlia: è il prezzo da pagare per una sola tabella.
Metodo 2 — Eliminazione delle entità figlie
Artista (codArtista(PK), nome, nazionalita)
Opera (codOpera(PK), titolo, anno, tecnica, materiale, tipoFiglia)
Realizza (PK(codOpera, codArtista), ruolo, codOpera(FK), codArtista(FK))
Da scrivere così
Artista (codArtista(PK), nome, nazionalita)
Opera (codOpera(PK), titolo, anno, tecnica, materiale, tipoFiglia)
Realizza (PK(codOpera, codArtista), ruolo, codOpera(FK), codArtista(FK))
Esercizio 28 — Generalizzazione e n:n con attributoAlta
entità figliegeneralizzazionen:n con attributo
TestoUn’agenzia immobiliare registra gli immobili (codImmobile, indirizzo, superficieMq,
canoneMensile). Gli immobili si dividono in uffici, di cui interessa il numero di posti, e negozi, di
cui interessa la larghezza della vetrina: ogni immobile è o un ufficio o un negozio (copertura totale ed esclusiva).
Gli inquilini (codInquilino, nome, cognome) prendono in affitto gli immobili: un inquilino può avere in
affitto più immobili e un immobile può essere affittato a più inquilini, e di ogni contratto si registrano la data
di inizio e la data di fine; ogni inquilino affitta un determinato immobile al più una volta. Tradurre il modello in modello logico con il Metodo 2 oppure con il
Metodo 3.
Modello E-R dell’esercizio 28.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
La copertura è totale ed esclusiva, quindi anche il Metodo 1 sarebbe lecito: ma l’n:n Affitta si raddoppierebbe (una tabella per gli uffici, una per i negozi) — è il motivo per cui qui conviene il 2 o il 3.
Metodo 2: un’unica tabella Immobile con tipoFiglia; numero di posti e larghezza della vetrina restano nulli a metà. L’attributo di controllo si chiama con un nome che comincia con «tipo» (tipoFiglia, tipo, tipoImmobile…): il correttore accetta tutte queste grafie.
Metodo 3: il padre tiene gli attributi comuni, le figlie solo il proprio attributo specifico, con PK = PK del padre che è anche FK; l’n:n Affittanon si duplica, perché il padre è ancora lì. Qui tipoFiglia è ridondante e si può omettere: il correttore accetta entrambe le forme.
In entrambi i casi Affitta ha PK = coppia delle PK di Inquilino e della tabella che rappresenta l’immobile. Prima di fissare la PK, ricontrolla il testo: la stessa coppia inquilino–immobile non può presentarsi più volte (il testo non lo prevede), quindi la PK = coppia delle PK va bene.
Esercizio 29 — Figlie, entità debole e associazione n:n su chiave compostaAlta
entità figlieentità deboleentrambi5 entitàn:n
TestoUna biblioteca universitaria registra le opere (codice, titolo). Le opere sono di due tipi:
i libri, di cui interessa il numero di pagine, e le riviste, di cui interessa la periodicità
(copertura totale ed esclusiva). Di ogni opera la biblioteca possiede una o più copie, identificate dal
numero di inventario all’interno dell’opera, con stato e collocazione. Gli utenti
(numeroTessera, nome, cognome) prendono in prestito le copie: la stessa copia può essere prestata a utenti diversi in momenti diversi e
un utente può prendere in prestito più copie, ma una data copia al più una volta; di ogni prestito interessano la data e la durata.
Tradurre il modello in modello logico applicando il Metodo 2 — eliminazione delle entità figlie.
Modello E-R dell’esercizio 29.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — la copertura è totale ed esclusiva (t,e), ma le figlie Libro e Rivista hanno pochi attributi propri e nessuna associazione propria: la scelta guidata è il Metodo 2 (figlie incorporate in Opera con numPagine, periodicità e l’attributo di controllo tipoFiglia). Sotto trovi anche le soluzioni con il Metodo 1 e con il Metodo 3.
Passo 2 — Opera e Utente sono entità forti; Copia è un’entità debole di Opera (chiave parziale numInventario), quindi la sua PK è PK(codice, numInventario) grazie all’associazione identificante Possiede.
Passo 3 — il prestito è un’associazione n:n tra Utente e Copia: nasce la tabella Prestito con PK = chiavi delle due entità e gli attributi dell’associazione (data, durata).
La chiave esterna verso Copia è composta: servono entrambe le colonne, scritte insieme come FK(codice, numInventario).
Con il Metodo 1 il padre Opera sparisce e le copie vanno duplicate per ciascuna figlia: per lo stesso motivo anche il prestito si sdoppia in PrestitoLibro e PrestitoRivista, perché la chiave della copia cambia nome (codiceLibro / codiceRivista). Con il Metodo 3 il padre resta e ogni figlia ha PK(codice) che è anche FK verso Opera. La scelta guidata resta il Metodo 2, che evita sia le duplicazioni sia le tabelle in più.
Il nome dell’attributo di controllo è libero purché cominci con «tipo» (tipoFiglia, tipo, tipoOpera…): il correttore accetta tutte queste grafie.
Metodo 2 — Eliminazione delle entità figlie (scelta guidata)
Esercizio 30 — Generalizzazione parziale e associazione n:nAlta
entità figlien:n5 entità
TestoUn’azienda registra i dipendenti (matricola, nome, cognome), i mezzi
(targa, marca) e le sedi (codSede, città). I mezzi si dividono in autovetture, di cui interessa
il numero di posti, e motocicli, di cui interessa la cilindrata; esistono però anche
furgoni, che restano semplici mezzi senza attributi propri (copertura parziale ed esclusiva).
Ogni mezzo è assegnato a una sola sede e una sede ha molti mezzi. Un dipendente può usare più mezzi in momenti diversi e
lo stesso mezzo può essere usato da più dipendenti, ma ogni dipendente usa un dato mezzo al più una volta; di ogni uso interessa la data di inizio.
Tradurre il modello in modello logico, scegliendo il metodo di eliminazione della generalizzazione più adatto alla copertura indicata.
Modello E-R dell’esercizio 30.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — la copertura è parziale ed esclusiva (p,e): i furgoni sono mezzi che non appartengono a nessuna figlia. Il Metodo 1 è quindi vietato: eliminando il padre si perderebbero i dati dei furgoni. Restano il Metodo 2 (figlie incorporate nel padre + tipoFiglia) e il Metodo 3 (associazioni 1:1), entrambi sempre possibili — trovi le due soluzioni.
Passo 2 — Dipendente e Sede sono entità forti; Mezzo diventa la tabella del padre con gli attributi delle figlie (Metodo 2) o resta il padre di due 1:1 (Metodo 3).
Passo 3 — l’associazione Assegnato 1:n mette la FK in Mezzo (accanto a Mezzo c’è (1,1) verso la sede).
Passo 4 — l’associazione Usa è n:n con attributo proprio: nasce la tabella Usa con PK = coppia delle PK e l’attributo dataInizio.
Nel Metodo 2 il nome dell’attributo di controllo è libero purché cominci con «tipo» (tipoFiglia, tipo, tipoMezzo…): il correttore accetta tutte queste grafie.
Metodo 2 — Eliminazione delle entità figlie (scelta guidata)
Dipendente (matricola(PK), nome, cognome)
Sede (codSede(PK), citta)
Mezzo (targa(PK), marca, numPosti, cilindrata, tipoFiglia, codSede(FK))
Usa (PK(matricola, targa), dataInizio, matricola(FK), targa(FK))
Metodo 3 — Associazioni 1:1
Dipendente (matricola(PK), nome, cognome)
Sede (codSede(PK), citta)
Mezzo (targa(PK), marca, codSede(FK))
Autovettura (targa(PK), numPosti, targa(FK))
Motociclo (targa(PK), cilindrata, targa(FK))
Usa (PK(matricola, targa), dataInizio, matricola(FK), targa(FK))
Da scrivere così
Dipendente (matricola(PK), nome, cognome)
Sede (codSede(PK), citta)
Mezzo (targa(PK), marca, numPosti, cilindrata, tipoFiglia, codSede(FK))
Usa (PK(matricola, targa), dataInizio, matricola(FK), targa(FK))
Esercizio 31 — Cinque entità e un n:n con attributoAlta
5 entitàn:n con attributo1:n
TestoUna società organizzatrice registra le gare (codGara, nome, data). Ogni gara si svolge su un
solo circuito (codCircuito, nome, città, lunghezza) e su un circuito si svolgono più gare. Ogni gara è aperta a
una sola categoria (codCategoria, denominazione, etàMinima) e una categoria ha più gare. I
ciclisti (codTessera, nome, cognome, nazionalità) partecipano alle gare: un ciclista partecipa a più gare
e una gara ha più ciclisti, e di ogni partecipazione si registrano il piazzamento e il tempo impiegato. Ogni ciclista
appartiene a una sola squadra (codSquadra, nome, nazione) e una squadra ha molti ciclisti.
Tradurre il modello in modello logico.
Modello E-R dell’esercizio 31.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Cinque entità → cinque tabelle, più una tabella generata dall’associazione n:n.
Attenzione a Gara: ha due FK (una al circuito, una alla categoria) ed entrambe vanno in coda.
L’associazione Iscrizione è n:n con attributi: nuova tabella con PK = coppia delle PK, più piazzamento e tempo. La PK resta la coppia (ciclista, gara): è quella che garantisce una sola riga per partecipazione.
L’associazione Milita è 1:n: la FK alla squadra va in Ciclista, la tabella dal lato con massimo 1 (accanto a Ciclista c’è (1,1)).
TestoUn’officina meccanica registra gli interventi (codice) eseguiti sui veicoli
(targa, marca, modello) dei clienti (codFiscale, nome, telefono) dai propri meccanici
(matricola, nome, cognome). Ogni intervento riguarda un
solo veicolo, è richiesto da un solo cliente, è eseguito in una sola officina (partitaIVA, nome, città) e da un solo meccanico. Un intervento può
utilizzare più ricambi (codRicambio, descrizione, costo) e lo stesso ricambio può servire più interventi.
Tradurre il modello in modello logico.
Modello E-R dell’esercizio 32.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — nessun attributo composto, multivalore o generalizzazione: il modello E-R è già ristrutturato.
Passo 2 — sei entità → sei tabelle, ciascuna con il proprio identificatore come PK.
Passo 3 — le quattro associazioni 1:n Ripara (officina), Esegue (meccanico), Riguarda (veicolo) e Richiede (cliente) mettono la FK nella tabella dal lato con massimo 1, cioè sempre in Intervento: la tabella referenziante è quella con (1,1) accanto a sé.
Passo 4 — l’associazione Utilizza è n:n: nasce una nuova tabella con PK = coppia delle PK. Attenzione: in Intervento le chiavi esterne vanno tutte in coda.
TestoUno studio veterinario registra le visite (codVisita) effettuate nella propria clinica
(partitaIVA, nome) dai veterinari (codice, nome, cognome) su un animale (microchip, nome, specie)
di un proprietario (codFiscale, nome, cognome); ogni animale ha un solo proprietario e un proprietario può avere
più animali. Ogni visita riguarda un solo animale, è effettuata in una sola clinica e da un solo veterinario. In una visita il
veterinario può prescrivere più farmaci (codFarmaco, nome, prezzo) e lo stesso farmaco può essere prescritto in più visite.
Tradurre il modello in modello logico.
Modello E-R dell’esercizio 33.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — nessun attributo composto, multivalore o generalizzazione: il modello E-R è già ristrutturato.
Passo 2 — sei entità → sei tabelle con il proprio identificatore come PK.
Passo 3 — le associazioni 1:n Effettua, Esegue, Riguarda mettono la FK in Visita; l’associazione Possiede 1:n fra Proprietario e Animale mette la FK in Animale.
Passo 4 — l’associazione Prescrive è n:n (una visita prescrive più farmaci, un farmaco compare in più visite): nasce la tabella Prescrive con PK = coppia delle PK.
TestoUn istituto scolastico registra le lezioni (idLezione). Ogni lezione è pianificata da un solo
istituto (codIstituto, città), è tenuta da un solo docente (codDocente, nome, cognome), si svolge in una sola
aula (codAula, piano, capienza) ed è dedicata a una sola materia (codMateria, denominazione); ogni istituto,
docente, aula e materia può comparire in molte lezioni. A ogni lezione possono partecipare più studenti
(matricola, nome, cognome) e uno studente partecipa a più lezioni. Di ogni studente la segreteria registra anche
uno o più numeri di telefono. Tradurre il modello in modello logico, ristrutturando dove necessario.
Modello E-R dell’esercizio 34.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — l’attributo telefoni dello studente è multivalore: diventa l’entità Telefono collegata a Studente dall’associazione 1:n Recapita.
Passo 2 — le sei entità del modello E-R diventano sei tabelle con il proprio identificatore come PK (a queste si aggiunge Telefono, creata al passo 1): Lezione ha come identificatore idLezione.
Passo 3 — le associazioni 1:n mettono la FK in Lezione (istituto, docente, aula, materia).
Passo 4 — l’associazione Partecipa è n:n fra Studente e Lezione: nasce la tabella Partecipa con PK = coppia delle PK.
Passo 5 — l’associazione Recapita mette la FK in Telefono.
TestoUna società di logistica registra le spedizioni (codSpedizione). Ogni spedizione è ordinata da un solo
cliente (partitaIVA, ragioneSociale), ha una sola destinazione (codDest, città, provincia), usa un solo
camion (targa, portata), è gestita da un solo dipendente (matricola, nome, cognome) ed è organizzata da una sola
filiale (codFiliale, città); ogni cliente, destinazione, camion, dipendente e filiale può comparire in molte spedizioni.
Una spedizione può contenere più merci (codMerce, descrizione) e la stessa merce può comparire in più spedizioni.
Tradurre il modello in modello logico.
Modello E-R dell’esercizio 35.
La tua traduzione
Mostra svolgimento e soluzione
Svolgimento
Passo 1 — nessun attributo composto, multivalore o generalizzazione: il modello E-R è già ristrutturato.
Passo 2 — sette entità → sette tabelle con il proprio identificatore come PK.
Passo 3 — tutte le associazioni 1:n mettono la FK in Spedizione, che è la tabella referenziante (accanto a Spedizione c’è (1,1) in ogni associazione).
Passo 4 — l’associazione Contiene è n:n: nasce la tabella Contiene con PK = coppia delle PK. In Spedizione le cinque chiavi esterne vanno tutte in coda.