Si vuole automatizzare la gestione di una biblioteca personale. A tale scopo bisognerà memorizzare i dati relativi a: • AMICI • LIBRI • AUTORI • CASE EDITRICI Il fine ultimo è ricavare le informazioni relative ai libri dati in prestito e alla loro data di restituzione prevista. 2 Nel nostro caso il dominio applicativo è rappresentato dal tutte le biblioteche. 3 AMICI N: 1 AUTORI PRESTITI LIBRI N: 1 CASE EDITRICI 4 Nel nostro caso sono state individuate le seguenti entità: • AMICI • LIBRI • AUTORI • CASE EDITRICI • PRESTITI 5 AMICI Per l’entità Amici sono stati individuati i seguenti attributi: • Id Amico: codice univoco dell’entità Amici; • Soprannome Amico: insieme di tutti i nomi e/o soprannomi degli amici del proprietario della biblioteca che prendono in prestito i suoi libri. 6 AUTORI Per l’entità Autori sono stati individuati i seguenti attributi: • Id Autore: codice univoco dell’entità Autori; • Cognome Autore: insieme di tutti i cognomi degli autori dei libri presenti in biblioteca; • Nome Autore: insieme di tutti i nomi degli autori dei libri presenti in biblioteca. 7 CASE EDITRICI Per l’entità Case Editrici sono stati individuati i seguenti attributi: • Id Casa Editrice: codice univoco dell’entità Case Editrici; • Denominazione Casa Editrice: insieme di tutte le denominazioni delle case editrici dei libri presenti in biblioteca. 8 LIBRI Per l’entità Libri sono stati individuati i seguenti attributi: • Id Libro: codice univoco dell’entità Libri; • Titolo Libro: insieme di tutti i titoli dei libri presenti nella biblioteca; • Campo link alla tabella Autore: definisce l’autore del libro presente nella biblioteca (posto che ogni libro ha un solo autore); • Campo link alla tabella Casa Editrice: definisce la casa editrice del libro presente nella biblioteca. 9 DEFINIZIONE DELLE RELAZIONI N : 1 AMICI LIBRI 1 : N N : N PRESTITI 10 DEFINIZIONE DELLE RELAZIONI Tra le tabelle LIBRI e AMICI esiste una relazione N : N, infatti un amico del proprietario della biblioteca può prendere in prestito più libri. Mente uno stesso libro può essere preso in prestito, in momenti diversi, da più amici del proprietario della biblioteca. 11 DEFINIZIONE DELLE RELAZIONI Dalla relazione N : N deriva una ulteriore entità, PRESTITI, i cui attributi saranno i seguenti: • Id Prestito: codice univoco dell’entità Prestiti; • Campo link alla tabella Amici: definisce l’amico che ha preso il libro in prestito; • Campo link alla tabella Libri: definisce il libro preso il prestito; • Data del prestito: definisce la data in cui viene dato il libro in prestito ; • Data di restituzione: definisce la data prevista di restituzione del libro preso in prestito. 12 DEFINIZIONE DELLE CARATTERISTICHE DEGLI ATTRIBUTI Tabella Amici Nome campo Tipo campo Dimensione Vincoli IdAmico Contatore Intero Lungo Primary Key SoprannomeAmico Testo 50 Unique, Not null Note 13 DEFINIZIONE DELLE CARATTERISTICHE DEGLI ATTRIBUTI Tabella Autori Nome campo Tipo campo Dimensione Vincoli IdAutore Contatore Intero Lungo Primary Key CognomeAutore Testo 40 Not null NomeAutore Testo 40 Not null Note 14 DEFINIZIONE DELLE CARATTERISTICHE DEGLI ATTRIBUTI Tabella Case Editrici Nome campo Tipo campo IdCasaEditrice Contatore Intero Lungo Primary Key DenominazioneCasaEditrice Testo 60 Unique, Not null Dimensione Vincoli Note 15 DEFINIZIONE DELLE CARATTERISTICHE DEGLI ATTRIBUTI Tabella Libri Nome campo Tipo campo Dimensione Vincoli IdLibro Contatore Intero Lungo Primary Key TitoloLibro Testo 50 Unique, Not null Intero Lungo Foreing Key Link alla tabella Autori Intero Lungo Foreing Key Link alla tabella CasaEditrice FkAutore FkCasaEditrice Numerico Numerico Note 16 DEFINIZIONE DELLE CARATTERISTICHE DEGLI ATTRIBUTI Tabella Prestiti Nome campo Tipo campo IdPrestito Contatore Dimensione Vincoli Note Intero Lungo Primary Key Link alla tabella Amici Link alla tabella Libri FkAmici Numerico Intero Lungo Foreing Key FkLibri Numerico Intero Lungo Foreing Key DataPrestito Data Not null RestituzionePrestito Data Not null 17 Amici IdAmico SoprannomeAmico 1 Benny 2 Marilena 3 Gigi Autori IdAutore CognomeAutore NomeAutore 1 Brown Dan 2 Vassallo Nicla 3 Borgna Eugenio 18 Case Editrici IdCasaEditrice DenominazioneCasaEditrice 1 Mondadori 2 Il Mulino 3 Feltrinelli Libri IdLibro TitoloLibro FkAutore FkCasaEditrice 1 La solitudine dell’anima 3 3 2 Il simbolo perduto 1 1 3 Per sentito dire 2 3 19 Prestiti IdPrestito FkAmici FkLibri DataPrestito RestituzionePrestito 1 2 3 09/07/2010 09/08/2010 2 1 2 25/09/2010 25/10/2010 3 1 1 16/10/2010 16/11/2010 4 3 3 17/10/2010 17/11/2010 5 2 2 01/02/2011 01/03/2011 6 1 3 15/02/2011 15/03/2011 20 BENEFICI E SVANTAGGI VALORI NULLI I campi all’interno dei quali non è possibile inserire valore nullo portano sicuramente dei vantaggi all’utilizzatore del Data Base, soprattutto se inesperto, dato che egli non avrà la possibilità di inserire all’interno dei Data Base record incompleti che potrebbero andare ad inficiare sulla efficienza della Base di Dati; ma allo stesso tempo non permettendo all’utente di lasciare alcuni campo di un record incompleti (per una successivo aggiornamento) potrebbero costringerlo a non inserire un’istanza all’interno del Data Base, se non dopo che ha ottenuto tutte le informazioni da inserire in modo da causare un spreco di risorse, in alcuni casi eccessivo. 21 22 DEFINIZIONE DELLE CARATTERISTICHE DEGLI ATTRIBUTI Tabella Reparti Nome campo Tipo campo Dimensione Vincoli CodReparto Testo 1 Primary Key NomeReparto Testo 40 Unique, Not null Intero Lungo Foreing Key FkMedici Numerico Note Link alla tabella Medici 23 DEFINIZIONE DELLE CARATTERISTICHE DEGLI ATTRIBUTI Tabella Pazienti Nome campo Tipo campo Dimensione Vincoli CodPaziente Testo 4 Primary Key CognomePaziente Testo 50 Not null NomePaziente Testo 50 Not null Note 24 DEFINIZIONE DELLE CARATTERISTICHE DEGLI ATTRIBUTI Tabella Medici Nome campo Tipo campo Dimensione Vincoli MatrMedico Numerico Intero Lungo Primary Key CognomeMedico Testo 50 Not null NomeMedico Testo 50 Not null 1 Foreing Key FkReparti Testo Note Link alla tabella Reparti 25 DEFINIZIONE DELLE CARATTERISTICHE DEGLI ATTRIBUTI Tabella Ricoveri Nome campo FkPazienti Tipo Dimensione Vincoli campo Testo FkReparti Testo InizioRicovero Data FineRicovero Data Note 4 Foreing Key Link alla tabella Pazienti 1 Foreing Key Link alla tabella Reparti Primary Key (Super Chiave) Not null 26 L’unico attributo sul quale possa essere sensato ammettere valori nulli, secondo me, è l’attributo FineRicovero della tabella Ricoveri. Infatti la data di fine ricovero non viene immessa nel Data Base insieme alla registrazione del ricovero del paziente ma solo in un memento successivo, ovvero al momento della sua dimissione dall’ospedale. 27