Laboratorio di Sistemi Informativi

Risultati Homework 2

A.A. 2010/2011

docente: Gianluca Amato


Testo del compito

Si supponga di voler creare un database con i libri della vostra biblioteca personale. Ogni libro è caratterizzato da titolo, casa editrice, anno pubblicazione, ed autori. Ogni autore è caratterizzato da nome, cognome e nazionalità. Non ci sono limiti al numero di autori che un libro può avere.

Creare le tabelle necessarie e riempirle con qualche dato di esempio. Le tabelle devono essere in formato InnoDB e contenere gli opportuni vincoli di integrità referenziale.

Generare ed inviare come soluzione del compito un file dump del database e un file in formato CSV per ogni tabella che avete creato. Inviare, infine, un elenco di comandi SQL in grado di creare il seguente scenario:

Risultati

Alcuni problemi comuni che ho riscontrato sono:

  1. il modo corretto di realizzare il database è quello di creare tre tabelle: una per gli autori, una per i libri, e una che metta in relazione le prime due. Quest'ultima è composta da due sole colonne, che possiamo chiamare id_libro e id_autore, chiavi esterne per le rispettive chiavi primarie delle tablle libri e autori. Invece, mettere una chiave esterna per la tabella autori dentro la tabella libri è SBAGLIATO: in questo modo non è possibile indicare che un libro ha più di un autore, a meno di ripetere i dati del libro su più righe della tabella, creando ridondanze e denormalizzando le tabelle. Questo è un errore abbastanza grave, per cui tutti quelli che l'hanno commesso hanno ricevuto il voto insufficiente.

    Alcuni, olltre a id_libro e id_autore, hanno aggiunto alla tabella di collegamento un terzo campo che funge da chiave primaria. Nonostante ciò non sia necessario, è comunque corretto.
  2. il campo anno di pubblicazione dovrà contenere valori come 1974, 1865, 2001, e simili. Il tipo più adatto è pertanto il tipo intero (o eventualmente una delle sue varianti come SMALLINT). Alcuni di voi hanno usato altri tipi, come CHAR, DATE e DECIMAL. Queste sono soluzioni meno desiderabili.

Ecco i risultati finali. Gli asterischi si riferiscono agli errori di cui sopra.

StudentiGiudizioCommento
Adriani, MarianiInsuff.*1
- titolo del libro e cognome autore non sono buone chiavi primarie perché non sono garantite essere uniche (ci sono molti autori divsersi con lo stesso cognome, ad esempio)
Altomare, Francescone, TerrenziInsuff.*1, *2
BonelliInsuff.*1
- mancano il dump del database e i file CSV
- i comandi GRANT concedono diritti di accesso a tutto il server e non al solo database dei libri
Candeloro, De Luca F.Insuff*1
- per concedere diritti di accesso a tutte le tabelle di un database, usare la forma <database>.* invece di ripetere il comando GRANT per tutte le tabelle
Candeloro, De Luca F. bisOttimo
CapparellaOttimo
Cardone, StanisciaSufficiente- non si può usare la sintassi *.<tabella> nel comando GRANT, e anche se funzionasse sarebbe sbagliato perché concederebbe diritti di accesso alla tabella su tutti i database, che non è quanto richiesto
CialfiInsuff.*1, *2
- mi sembra strano che, in accordo alla tabella scritto, tutti gli autori abbiano partecipato alla scrittura di tutti i libri
Cialfi bisOttimo
Cilli, Di Giovanni, PaglialungaOttimo
CoccioneOttimo
D'Ambrosio, SappraconeSufficiente*2
- mancano i comandi GRANT
D'Aveta, Di ChiroOttimo
De Luca S.Buono*2
D'Incecco, MarchesaniOttimo
Iuras, PalermoInsuff.*1
Iuras, Palermo bisOttimo*1
Mazzotti, ScuttiBuono- i comandi GRANT forniscono l'accesso a tutti i database sul server, non solo a quello dei libri
MonacheseInsuff.*1
- mancano il dump del database e i file CSV
PignoliBuono- il comando CREATE USER amministratore@localhost dovrebbe essere rimpiazzato con CREATE USER amministratore@'%', in quanto è a quest'ultimo che vengono concessi i diritti necessari con il comando GRANT
PirroInsuff.*1
- i comandi GRANT forniscono l'accesso a tutti i database sul server, non solo a quello dei libri
- l'utente lettore si può collegare da qualunque computer, non solo da quello locale come richiesto
- le chiavi esterne non hanno lo stesso tipo delle chiavi primari a cui si riferiscono
- mancano il dump del database e i file CSV
SalernoInsuff.*1
- i comandi GRANT forniscono l'accesso a tutti i database sul server, non solo a quello dei libri
Salerno bisOttimo
TontodonatiBuono- mancano i vincoli di chiave esterna

Chi ha ottenuto un voto insufficiente può recuperare o venendo a ricevimento o inviandomi una versione corretta.

Valid XHTML 1.0 Strict Valid CSS!