PROGETTAZIONE DI UN DATABASE Corso di Abilità Informatiche Avanzate Prof. Agostino Marengo a.a. 2010-2011 GELSOMINA PETTORRUSO Matricola: 566400
GESTIONE DEI PRESTITI BIBLIOTECA PERSONALE ANALISI DEI REQUISITI 1. Si vuole progettare un Database per la gestione dei prestiti di una biblioteca personale. La progettazione deve tener conto del fatto che il proprietario: presta libri ai suoi amici, che indica attraverso il nome o il soprannome (per evitare omonimie) fa riferimento ai libri attraverso i titoli (non possiede libri con lo stesso titolo) quando presta un libro prende nota della data prevista di restituzione.
DOMINIO APPLICATIVO Nel nostro caso il dominio applicativo è rappresentato da tutte le entità coinvolte nel sistema BIBLIOTECA, in particolare quelle relative alla gestione dei prestiti.
SCHEMA ENTITA’-RELAZIONI : CASE EDITRICI N : 1 CATEGORIE AMICI LIBRI N : 1 N : N N : N AUTORI N : 1 1 : N 1 : N PRESTITI N : 1 AUTORI_LIBRI
PROGETTAZIONE CONCETTUALE Sono state individuate le seguenti entità: CASE EDITRICI AMICI CATEGORIE LIBRI PRESTITI AUTORI_LIBRI AUTORI
PROGETTAZIONE CONCETTUALE AMICI Per l’entità AMICI sono stati individuati i seguenti attributi: Soprannome amico: insieme di tutti i soprannomi degli amici, campo univoco Nome amico: insieme di tutti i nomi degli amici Cognome amico: insieme di tutti i cognomi degli amici Numero di telefono: insieme di tutti i numeri di telefono degli amici e-mail: insieme di tutti gli indirizzi e-mail degli amici
PROGETTAZIONE CONCETTUALE LIBRI Per l’entità LIBRI sono stati individuati i seguenti attributi: Titolo libro:campo univoco Campo link alla tabella Categorie: definisce la categoria di libro Editore libro Anno di pubblicazione Numero scaffale Numero posto
PROGETTAZIONE CONCETTUALE AUTORI Per l’entità AUTORI sono stati individuati i seguenti attributi: Id Autore: codice univoco dell’autore Nome Autore Cognome Autore Data di Nascita Luogo di Nascita
PROGETTAZIONE CONCETTUALE AUTORI_LIBRI Per l’entità AUTORI_LIBRI sono stati individuati i seguenti attributi: Id Autore Libro: campo univoco Campo link alla tabella AUTORI Campo link alla tabella LIBRI
PROGETTAZIONE CONCETTUALE CATEGORIE Per l’entità CATEGORIE sono stati individuati i seguenti attributi: Id Categoria: codice univoco della categoria Nome Categoria: insieme di tutte le categorie di libri
PROGETTAZIONE CONCETTUALE CASE EDITRICI Per l’entità CASE EDITRICI sono stati individuati i seguenti attributi: Id Casa Editrice: codice univoco della categoria Nome Casa editrice: insieme di tutte le categorie di libri Città
PROGETTAZIONE CONCETTUALE PRESTITI Per l’entità PRESTITI sono stati individuati i seguenti attributi: Id Prestito: codice univoco del prestito Campo link alla tabella Amici: definisce la persona (amico) che ha preso in prestito il libro Campo link alla tabella Libri: definisce il libro che è stato preso in prestito Data inizio prestito Data riconsegna
Definizione delle caratteristiche degli attributi PROGETTAZIONE LOGICA Definizione delle caratteristiche degli attributi Tabella AMICI Nome campo Tipo campo Dimensione Vincoli Note SoprannomeAmico testo 50 Primary key NomeAmico 30 CognomeAmico NumeroTelefono Testo 15 Not null Email Il soprannome dell’amico (chiave primaria) è un campo che non può essere nullo; impostiamo come non nullo anche il campo numero di telefono così da avere un riferimento certo in caso di non restituzione del libro. Gli altri campi possono eventualmente essere nulli.
Definizione delle caratteristiche degli attributi PROGETTAZIONE LOGICA Definizione delle caratteristiche degli attributi Tabella LIBRI Nome campo Tipo campo Dimensione Vincoli Note TitoloLibro Testo 150 Primary key EditoreLibro 40 Not null FkCategoria Numerico Intero Lungo Foreign key Link alla tabella CATEGORIE AnnoDiPubblicazione 4 NumeroScaffale NumeroPosto
Definizione delle caratteristiche degli attributi PROGETTAZIONE LOGICA Definizione delle caratteristiche degli attributi Tabella AUTORI Nome campo Tipo campo Dimensione Vincoli Note IdAutore Numerico Intero Lungo Primary key NomeAutore Testo 30 Not null CognomeAutore DataDiNascita Data LuogoDiNascita 50
Definizione delle caratteristiche degli attributi PROGETTAZIONE LOGICA Definizione delle caratteristiche degli attributi Tabella AUTORI_LIBRI Nome campo Tipo campo Dimensione Vincoli Note IdAutoreLibro Numerico Intero Lungo Primary key FkAutore Foreign key Link alla tabella AUTORI FkTitoloLibro Testo 150 Link alla tabella LIBRI
Definizione delle caratteristiche degli attributi PROGETTAZIONE LOGICA Definizione delle caratteristiche degli attributi Tabella CATEGORIE Nome campo Tipo campo Dimensione Vincoli Note IdCategoria Numerico Intero Lungo Primary key NomeCategoria Testo 30 Unique Tabella CASE EDITRICI Nome campo Tipo campo Dimensione Vincoli Note IdCasaEditrice Numerico Intero Lungo Primary key NomeCasaEditrice Testo 30 Not null Citta
Definizione delle caratteristiche degli attributi PROGETTAZIONE LOGICA Definizione delle caratteristiche degli attributi Tabella PRESTITI Nome campo Tipo campo Dimensione Vincoli Note IdPrestito Numerico Intero Lungo Primary key FkSoprannomeAmico Testo 50 Foreign key Link alla tabella AMICI FkTitoloLibro 100 Link alla tabella LIBRI DataInizioPrestito Data Not null DataFinePrestito
SCHEMA LOGICO
2. Individuare le chiavi ed i vincoli di integrità referenziale che sussistono nella base di dati in figura e che è ragionevole assumere. Individuare anche gli attributi sui quali possa essere sensato ammettere valori nulli.
SCHEMA ENTITA’-RELAZIONI : MEDICI PAZIENTI REPARTI 1 : N N : N 1 : N N : 1 RICOVERI
CHIAVI PRIMARIE E VINCOLI DI INTEGRITA’ REFERENZIALE LE CHIAVI PRIMARIE possono essere: • Codice (Cod) per la tabella PAZIENTI • Matricola (Matr) per la tabella MEDICI • Codice (Cod) per la tabella REPARTI • Inizio * per la tabella RICOVERI La scelta della chiave primaria Inizio sulla tabella RICOVERI presuppone che non ci sia più di un ricovero nella stessa giornata, se così non fosse l’univocità della chiave verrebbe meno. I VINCOLI DI INTEGRITA’ REFERENZIALE sono: • tra l’attributo Paziente di RICOVERI e la tabella PAZIENTI • tra Reparto di RICOVERI e la tabella REPARTI • tra Reparto in MEDICI e la tabella REPARTI
ATTRIBUTI SU CUI E’ SENSATO AMMETTERE VALORI NULLI Fatta eccezione per le chiavi primarie che non possono avere valori nulli, sembra sensato ammettere valori nulli sugli attributi: Cognome e Nome di PAZIENTI (poiché si ha il codice identificativo del paziente) Fine di RICOVERI (poiché la data della fine del ricovero potrebbe non essere stabilita alla data del ricovero) Cognome e Nome di MEDICI (poiché ciascun medico è identificato da una matricola) Nome di REPARTI (essendo il reparto identificato da un codice)