Progettazione di un Data Base Daraio Andrea Si vuole progettare un database per la gestione di una biblioteca personale, dove il proprietario: Presta i libri ai suoi amici, annotati con nomi e soprannomi (per evitare omonimie); Si riferisce ai libri mediante i titoli (assenza di libri con titoli identici); Annota il prestito con la prevista data di restituzione Nel nostro caso il dominio applicativo è rappresentato da tutte le entità presenti nel sistema biblioteca, in particolare quelle relative alla gestione dei prestiti. Biblioteca 1 : N Libri N Prestito Amici N Nel nostro caso sono state individuate le seguenti entità: BIBLIOTECA LIBRI AMICI BIBLIOTECA Per l’Entità Biblioteca abbiamo individuato gli attributi: Biblioteca: nome Proprietario: nome e cognome Indirizzo biblioteca Telefono proprietario E-mail proprietario LIBRI Per l’Entità Libri abbiamo individuato gli attributi: Titolo Codice ISBN: codice identificativo di ogni libro Autore Genere AMICI Per l’Entità Amici abbiamo individuato gli attributi: Nome e Cognome Amico Soprannome Amico Telefono Amico E-mail Amico Biblioteca Libri 1 : N • Esiste una sola biblioteca • La biblioteca può fornire più libri Libri Amici N • Un : N amico può prendere in prestito più libri • Un libro può essere prestato a più amici 1 : N Libri Amici N N : : Prestito 1 N •Dalla relazione N : N abbiamo un’altra entità, Prestito, la quale presenta i seguenti attributi: • Id Prestito • Campo link alla tabella Libri: definisce il libro prestato • Campo link alla tabella Amici: definisce a chi è stato prestato il libro • Data restituzione Libri Nome campo Tipo campo Dimensione Vincoli Titolo Testo 40 Primary Key Codice ISBN Numerico Intero lungo Not null Autore Testo 40 Genere Testo 40 FkBiblioteca Numerico Foreign Key Note Link alla tabella Biblioteca Biblioteca Nome campo Tipo campo Dimensione Vincoli Biblioteca Testo 30 Primary Key Proprietario Testo 40 Not null Indirizzo Biblioteca Testo 40 Not null Telefono Proprietario Testo 15 Not null Email Proprietario Testo 50 Note Amici Nome campo Tipo campo Dimensione Vincoli Cognome Amico Testo 30 Not null Nome Amico Testo 30 Not null Soprannome Amico Testo 40 Primary Key Telefono Amico Testo 15 Not null Email Amico Testo 50 Note Prestito Nome campo Tipo campo Id Prestito Dimensione Vincoli Note Numerico Intero lungo Primary Key FkLibriPrestit Numerico o Intero lungo Foreign Key Link alla tabella Libri FkAmiciPrest Numerico ito Intero lungo Foreign Key Link alla tabella Amici Data restituzione Data Not null PAZIENTI Key: COD RICOVERI REPARTI Key: Codice Nome Codice Nome MEDICI Key: Matricola Key: Paziente Inizio Fine Paziente Inizio Paziente Fine Possiamo individuare vincoli di integrità referenziale tra: • l’attributo COD della relazione PAZIENTI e la relazione RICOVERI • l’attributo REPARTO della relazione RICOVERI e le relazioni REPARTI e MEDICI • gli attributi COD e PRIMARIO della relazione REPARTI e la relazione MEDICI Può essere sensato ammettere valori nulli sugli attributi: • COGNOME e NOME nell’istanza PAZIENTI • REPARTO nell’istanza RICOVERI • NOME e COGNOME nell’istanza MEDICI