RELAZIONE PROGETTO DATABASE GESTIONE BIBLIOTECA PERSONALE Mameli Salvatore-M01/000153 SOMMARIO 1 INTRODUZIONE 1.1 Project Overview 1.2 Ambiente del prodotto 1.3 Document Overview 2 - PROGETTAZIONE 2.1 Requisiti di sistema 2.1.1 Requisiti sui dati 2.1.2 Requisiti funzionali 2.2 Modello Entità/Relazione 2.3 Schema logico 1
2.4 Query implementate 1 INTRODUZIONE 1.1 PROJECT OVERVIEW Il Progetto Biblioteca Personale si compone di un sito web. Il sito è concepito con lo scopo di fornire all utente, se registrato, la possibilità di consultare un database in cui sono catalogati i propri libri (inclusi gli e- book) acquistati. L utente ha la possibilità di registrarsi direttamente sul sito, confermando poi controllando il link presenta sul proprio indirizzo di posta elettronica. L utente può effettuare ricerche tra i propri nelle seguenti modalità: - Ricerca per titolo; - Ricerca per genere; - Ricerca per autore; L utente registrato ha, inoltre, la possibilità di inserire nella propria libreria gli ultimi acquisti non presenti nel database selezionando la voce Inserisci Libro o Inserisci E- book se si tratta di un e- book. Si può quindi indicare se lo stesso è stato prestato ad un amico/conoscente e quindi specificare a chi, inserendo i dati di quest ultimo. Nella Scheda di ogni volume, sono indicate tutte le informazioni relative allo stesso, ed è possibile anche modificare alcune di queste. Per poter eliminare un libro, se magari è stato venduto, è necessario che non sia prestato a qualcuno in quel preciso momento: altrimenti bisogna prima modificare la relativa voce e poi successivamente eliminare. E anche possibile visualizzare subito tutti i libri che sono stati dati in prestito. Non è invece possibile prestare un e- book, dato che lo stesso è in formato elettronico. 1.2 AMBIENTE DEL PRODOTTO Il sistema software è rivolto a tutti i possessori di un PC, di uno Smartphone, di un Tablet o di un qualsiasi dispositivo in grado di connettersi alla rete internet. Più specificamente, il sistema è rivolto ai possessori e agli appassionati della lettura. 1.3 DOCUMENT OVERVIEW 2
Il documento si compone di quattro parti. Nella prima, sono elencati i requisiti di sistema. Nella seconda è riportato il modello Entità/Relazione. In seguito è possibile visualizzare lo schema logico. Successivamente, vi è un elenco delle query implementate, con spiegazioni correlate. Per finire, sono esplicitati i dati relativi ai volumi stimati. 2 PROGETTAZIONE 2.1 REQUISITI DI SISTEMA 2.1.1 REQUISITI SUI DATI I dati trattati dal sistema software provengono principalmente da 2 fonti di input: - Server di gestione del database; - Client (utenti). 2.1.2 REQUISITI FUNZIONALI R1 CONNESSIONE AL SISTEMA CRITICALITÀ ALTA DESCRIZIONE L utente potrà connettersi al sistema tramite una qualsiasi piattaforma dotata di connessione a internet e di browser web. Il sistema dovrà essere sempre attivo e disponibile alla connessione, a meno di interventi programmati di manutenzione. R2 GESTIONE DATABASE BIBLIOTECA CRITICALITÀ ALTA DESCRIZIONE L utente dovrà avere la possibilità di connettersi ad una piattaforma nella quale è possibile visualizzare i propri libri acquistati. Deve essere possibile ricercare i libri (o e- book) in base al titolo, al genere, autore. Se necessario, inserire altri volumi, modificare i dati o contattare le persone a cui l utente ha prestato i suoi libri. 3
R3 REGISTRAZIONE ACCOUNT UTENTE CRITICALITÀ MEDIA DESCRIZIONE L utente sarà in grado di registrarsi al sito gratuitamente, inserendo i campi obbligatori Username, Password e Mail direttamente sul sito, mediante un pannello apposito. R4 CONFERMA ACCOUNT UTENTE CRITICALITÀ ALTA DESCRIZIONE L utente deve necessariamente confermare il link presente nella mail per poter accedere al sito. Diversamente l utente non sarà effettivamente registrato. 2.2 MODELLO ENTITÀ RELAZIONE 4
2.3 SCHEMA LOGICO 2.4 QUERY IMPLEMENTATE INSERIMENTO DEL NUOVO UTENTE NELLA BANCA DATI 5
Il sistema consente la registrazione, da parte di un nuovo utente, al sito. Ciò è implementato mediante un apposito pannello,realizzato mediante un form, il quale gestisce l inserimento di svariati campi, i campi obbligatori Username, Password Conferma Password e Mail. $query="insert INTO Utenti(id, username, password, mail) VALUES('$valoreid[0]','$username','$password','$mail')"; $insert = mysql_query($query) or die ("Query fallita..."); GESTIONE LOGIN E LOGOUT Una volta effettuata la registrazione, è possibile accedere al proprio account loggandosi, dopo aver confermato la registrazione nel link sulla propria mail. Si trova in alto a sinistra il pannello apposito (nella home) e si inseriscono username e password. function login($username, $password){ $con=mysql_connect('localhost','****','****') or die(mysql_error()); mysql_select_db('biblioteca', $con) or die(mysql_error()); $result= mysql_query("select * From Utenti Where username='$username' and password='$password'") or die(mysql_error()); $count=mysql_num_rows($result); //numero di righe di result if ($count==1){ $_SESSION['login']=$username; header("location:/home.php"); else{ echo" login errato. Controlla pass e username."; function logout(){ session_destroy(); 6
header("location:/home.php"); if(isset($_session['login'])){ echo" benvenuto ".$_SESSION['login']; logoutform(); else{ loginform(); if($_post['login']){ login($_post['username'], $_POST['password']); if($_post['logout']){ logout(); Una volta effettuato il login, viene visualizzato il nome dell'utente accanto alla parola "Benvenuto" e il tasto "Login" muta un "Logout". In caso di inserimento di dati errati, viene visualizzato un messaggio di errore. L utente ha la possibilità di effettuare il logout per continuare a navigare in modo anonimo senza però effettuare la maggior parte delle operazioni nel sito. VISUALIZZAZIONE COLLEZIONE LIBRI UTENTE Cliccando su Visualizza Libri, Visualizza E- book l utente ha la possibilità di visualizzare la propria collezione letteraria. Tale possibilità è valida, ovviamente, solo per gli utenti registrati e loggati. E anche possibile visualizzare i libri prestati ad un conoscente cliccando su Visualizza Prestati. $que = "SELECT id FROM Utenti WHERE username='$user'"; $id = mysql_query($que) or die ("Query fallita..."); 7
$idut=mysql_fetch_array($id); $query = "SELECT l.id,l.titolo,l.autore,l.genere FROM Utenti u,schedario s,libri l WHERE u.id=s.idutente AND s.idlibro=l.id AND s.idutente='$idut[0]' AND l.id LIKE 'C%' Order By Titolo"; $query = "SELECT l.id,l.titolo,l.autore,l.genere FROM Utenti u,schedario s,libri l WHERE u.id=s.idutente AND s.idlibro=l.id AND s.idutente='$idut[0]' AND l.id LIKE 'E%' Order By Titolo"; $query = "SELECT p.idlibro,p.titolo,p.autore,p.possessore,p.idpersona FROM Utenti u,schedario s,prestati p WHERE u.id=s.idutente AND s.idlibro=p.idlibro AND s.idutente='$idut[0]' Order By Titolo"; VISUALIZZAZIONE SCHEDA LIBRO/E-BOOK L utente dopo aver visualizzato la lista dei propri libri o e- book, può visualizzare la scheda dettagliata di ognuno, cliccando semplicemente sopra il Titolo dello stesso. $idlibro = $_GET['Id']; $query = "SELECT * FROM Libri WHERE id='$idlibro'"; ELIMINAZIONE LIBRI/E-BOOK DALLA COLLEZIONE UTENTE L utente ha la possibilità di eliminare i libri o e- book dalla propria collezione. Nella Scheda del Libro o E- book, in basso è presente un pulsante Elimina Libro o Elimina E- book, che, se cliccato, elimina il libro/e- book. Per poter 8
visualizzare il pulsante Elimina è necessario che il libro sia effettivamente in possesso dell utente e non in prestito. $idlibro = $_GET['Id']; $query2 = "DELETE FROM Schedario WHERE idlibro='$idlibro'"; $query = "DELETE FROM Libri WHERE Id='$idlibro'"; MODIFICA LIBRI/E-BOOK DALLA COLLEZIONE UTENTE L utente ha la possibilità di modificare i dati del libro o dell e-book tramite il pulsante Modifica Libro presente in ogni Scheda. Non tutti i campi sono però editabili, ad esempio non è possibile modificare il Titolo, l Autore e il Genere. Tramite la comparsa di una form è quindi possibile modificare i campi. $query2 = "UPDATE Libri SET Note='$note', DataLettura='$data', nvolteletto='$nvolteletto', Prestato='$prestato' WHERE Id='$idlibro'"; Nei libri e non negli e-book è possibile anche un ulteriore modifica. A seconda se l utente decida di modificare il campo Prestato (scegliendo i valori Si o No ), è possibile che, se il libro viene di fatto prestato, un altra form si rende visualizzabile dall utente. Verra quindi inserito da quest ultimo il nuovo possessore del libro. $insertpers2="insert INTO Persona(id,Nome,Cognome,Mail) VALUES('P001','$nome','$cognome','$mail')"; $result4=mysql_query($insertpers2)or die ("Query result4..."); In questo caso il valore dell id del Possessore risulta P001 perché viene supposto che la tabella Persona sia vuota. In caso contrario, tramite oppurtuni controlli verrà scelto il successivo id disponibile. INSERIMENTO LIBRI/E-BOOK DALLA COLLEZIONE UTENTE L utente ha la possibilità di inserire un libro o e-book propria collezione personale. E possibile far ciò cliccando su Inserisci Libro o Inserisci E- 9
book presenti nella parte sinistra della home. Successivamente viene in aiuto una form dove inserire i dati del libro o e-book da inserire. $query="insert INTO Libri(Id, Titolo, Autore, Genere, Note, DataLettura, nvolteletto,prestato)values('$valoreid','$titolo','$autore','$genere','$note','$d ata','$nvolteletto','$prestato')"; $insertschedario="insert INTO Schedario(idutente, idlibro) VALUES('$idut[0]','$valoreid')"; Se il libro viene inserito viene subito prestato viene quindi visualizzate una form per inserire la persona a cui stiamo prestando il libro. $insert="insert INTO Prestati(idlibro,Titolo,Autore,Possessore,idpersona) VALUES('$dati[0]','$dati[1]','$dati[2]','$nome','$idpers[0]')"; $insertpers2="insert INTO Persona(id,Nome,Cognome,Mail) VALUES('P001','$nome','$cognome','$mail')"; In questo caso il valore dell id del Possessore risulta P001 perché viene supposto che la tabella Persona sia vuota. In caso contrario, tramite oppurtuni controlli verrà scelto il successivo id disponibile. RICERCA PER TITOLO La ricerca per titolo consente all utente di consultare il database inserendo direttamente il nome del libro. Si accede alla sezione tramite il modulo di ricerca alla sinistra della home. $query = "SELECT l.id,l.titolo,l.autore,l.genere FROM Utenti u,schedario s,libri l WHERE u.id=s.idutente AND s.idlibro=l.id AND s.idutente='$idut[0]' AND l.titolo LIKE '%$temp%' Order By Titolo"; RICERCA PER AUTORE 10
La ricerca per autore consente all utente di consultare il database inserendo direttamente l autore del libro. Si accede alla sezione tramite il modulo di ricerca alla sinistra della home. $query = "SELECT l.id,l.titolo,l.autore,l.genere FROM Utenti u,schedario s,libri l WHERE u.id=s.idutente AND s.idlibro=l.id AND s.idutente='$idut[0]' AND l.autore LIKE '%$temp%' Order By Titolo"; RICERCA PER GENERE La ricerca per genere consente all utente di consultare il database inserendo direttamente il genere appartentente al libro. Si accede alla sezione tramite il modulo di ricerca alla sinistra della home. $query = "SELECT l.id,l.titolo,l.autore,l.genere FROM Utenti u,schedario s,libri l WHERE u.id=s.idutente AND s.idlibro=l.id AND s.idutente='$idut[0]' AND l.genere LIKE '%$temp%' Order By Titolo"; 2.6 VOLUMI STIMATI Il sito è in una sola lingua (italiano) e il volume massimo dei libri che possono essere inseriti nel database è di circa 1000. Se il numero dei libri inseriti arrivi ad essere vicina a questa cifra il gestore del sito provvederà ad aumentare la capacità massima del database. Si prevedono 100 utenti iscritti al sito, per una media ad utente di 10 libri. Quinsi sia Libro che la relazione Schedario saranno pari a 1000 11
Su 10 libri per ogni utente, in media 1 è prestato a qualche amico/conoscente, quindi avremo 100 prestati e 100 persone diverse. Concetto Tipo Dimensione N Ricorrenze Utente Entità 1088B 100 Schedario Relazione 276B 1000 Libri Entità 848B 1000 Prestati Entità 6196B 100 Persona Entità 3124B 100 Totale 2164800B = 2114KB = 2,06MB 12