Si vuole creare una base di dati per gestire gli abbonamenti ad alcune riviste stipulati da persone residenti in varie città. In ogni città la consegna delle riviste viene curata da un distributore. Creare gli schemi concettuale, logico e fisico, creare il database, inserirvi i dati indicati e poi eseguire le seguenti query: 1. selezionare l elenco dei distributori con nome, via, cap e città della sede 2. selezionare l elenco dei distributori e delle città nelle quali distribuiscono le riviste 3. Selezionare tutti gli abbonati di Trieste 4. Selezionare tutti gli abbonati di Trieste con abbonamento annuale 5. Selezionare tutti gli abbonamenti ed i relativi abbonati a Topolino 6. Selezionare tutti gli abbonamenti a Topolino di durata pluriennale 7. Selezionare tutti gli abbonamenti a Topolino da consegnare a Trieste 8. Individuare l elenco degli abbonati a Focus serviti dal distributore Telma e Louise trans 9. Selezionare l elenco degli abbonati a Focus e a Topolino rivista è un giornale che ha un titolo, una descrizione ed un costo abbonato è una persona fisica o giuridica ( uomo, ente, associazione, società, ) che acquista una certa quantità di giornali: ha nome, indirizzo città sono le città in cui si possono spedire gli abbonamenti: ha un nome ed un distributore che si occupa delle consegne distributore è una persona o una società che si occupa della consegna dei giornali nelle città: ha un nome, un indirizzo, un telefono 1 di 13
Modello concettuale Modello logico 2 di 13
Modello fisico 3 di 13
elenco dati nelle tabelle rivista distributore 4 di 13
città abbonato 5 di 13
abbonamento Se volete caricare la stessa struttura e gli stessi dati per le tabelle seguite i seguenti passi: 1. scaricare dal sito la struttura dei dati abbonamenti.sql 2. create nel vostro mysql un database di nome abbonamenti (se già esiste continuamdo lo ricoprite) 3. posizionatevi nel database appena creato e premete il bottone importa 4. selezionate il file abbonamenti.sql appena scaricato 5. premete esegui Il file contiene una serie di istruzioni SQL che nell ordine cancellano le tabelle se esistono, le creano ed inseriscono i dati. 6 di 13
Esecuzione query 1. selezionare l elenco dei distributori con nome, via, cap e città della sede SELECT distributore.nome, via, cap, citta.nome FROM distributore, citta WHERE distributore.codcitta = citta.codcitta 2. selezionare l elenco dei distributori e delle città nelle quali distribuiscono le riviste SELECT distributore.nome, citta.nome FROM citta, distributore WHERE distributore.coddistr = citta.coddistr 7 di 13
3. Selezionare tutti gli abbonati di Trieste SELECT cognome, abbonato.nome, citta.nome FROM abbonato, citta WHERE citta.nome='trieste' abbonato.codcitta=citta.codcitta 4. Selezionare tutti gli abbonati di Trieste con abbonamento annuale SELECT cognome, abbonato.nome, citta.nome, annidurata FROM abbonato, citta, abbonamento WHERE citta.nome='trieste' annidurata = 1 abbonato.codcitta=citta.codcitta abbonamento.codabbonato=abbonato.codabbonato 5. Selezionare tutti gli abbonamenti ed i relativi abbonati a Topolino SELECT numabbonamento, cognome, abbonato.nome 8 di 13
FROM abbonamento, rivista, abbonato WHERE rivista.titolo = 'Topolino' abbonamento.codrivista=rivista.codrivista abbonato.codabbonato=abbonamento.codabbonato 6. Selezionare tutti gli abbonamenti a Topolino di durata pluriennale SELECT numabbonamento, cognome, abbonato.nome FROM abbonamento, rivista, abbonato WHERE rivista.titolo = 'Topolino' annidurata > 1 abbonamento.codrivista=rivista.codrivista abbonato.codabbonato=abbonamento.codabbonato 7. Selezionare tutti gli abbonamenti a Topolino da consegnare a Trieste 9 di 13
SELECT numabbonam, cognome, abbonato.nome, citta.nome, titolo FROM abbonamento, rivista, abbonato, citta WHERE rivista.titolo = 'Topolino' citta.nome = 'Trieste' abbonamento.codrivista=rivista.codrivista abbonato.codabbonato =abbonamento.codabbonato citta.codcitta=abbonato.codcitta 8. Individuare l elenco degli abbonati a Focus serviti dal distributore Telma e Louise trans SELECT distributore.nome, rivista.titolo, citta.nome, abbonato.cognome FROM abbonato, abbonamento, rivista, distributore, citta WHERE rivista.titolo = 'Focus' abbonamento.codrivista = rivista.codrivista abbonato.codabbonato=abbonamento.codabbonato citta.codcitta = abbonato.codcitta distributore.coddistr = citta.coddistr distributore.nome = 'Telma e Louise trans' 9. Selezionare l elenco degli abbonati a Focus e a Topolino 10 di 13
SELECT abbonato.codabbonato, abbonato.nome, abbonato.cognome FROM abbonato, abbonamento, rivista WHERE abbonato.codabbonato = abbonamento.codabbonato abbonamento.codrivista = rivista.codrivista rivista.titolo='focus' abbonato.codabbonato IN (SELECT abbonato.codabbonato FROM abbonato, abbonamento, rivista WHERE abbonato.codabbonato = abbonamento.codabbonato abbonamento.codrivista = rivista.codrivista rivista.titolo = 'Topolino' ) 11 di 13
12 di 13
13 di 13