Oggetto compito: Progettazione di un Data Base Studente: Sasso Marco Roberto Magistrale Marketing Matricola: 565734 Prima Parte: Progettazione di un Data Base Analisi dei requisiti: Si vuole automatizzare la gestione dei prestiti di una biblioteca personale. A tale scopo bisognerà memorizzare i dati relativi a: Proprietari Amici Libri Dominio applicativo: Il dominio applicativo è rappresentato da tutte le entità coinvolte nel sistema di gestione dei prestiti della biblioteca personale Schema ENTITA’- RELAZIONI: 1 : PROPRIETARI N AMICI N PRESTITI LIBRI N Progettazione concettuale: Nel nostro caso sono state individuate le seguenti entità: Proprietari Amici Libri Progettazione concettuale: PROPRIETARI Per l’entità “Proprietari” sono stati individuati i seguenti attributi: Id Proprietario: codice univoco del Proprietario Nome Proprietario Progettazione concettuale: AMICI Per l’entità “Amici” sono stati individuati i seguenti attributi: Id Amico: insieme degli identificativi di tutti gli amici Nome Amico: insieme di tutti i nomi degli amici Soprannome Amico: insieme di tutti i soprannomi degli amici Telefono Amico: insieme dei numeri di telefono di tutti gli amici Indirizzo Amico: insieme di tutti gli indirizzi degli amici Proprietario: proprietario di appartenenza Progettazione concettuale: LIBRI Per l’entità “Libri” sono stati individuati i seguenti attributi: Id Libro: codice univoco dei libri Titolo Libro: insieme di tutti i titoli dei libri Autore Libro: insieme di tutti gli autori dei libri Data di restituzione: insieme delle date di restituzione dei libri Progettazione logica: definizione delle relazioni PROPRIETARI 1 : N AMICI Un amico può servirsi da un solo proprietario Un proprietario può avere più amici Progettazione logica: definizione delle relazioni 1 : N AMICI LIBRI N : 1 N : N PRESTITI Un amico può scegliere più libri Un libro può essere scelto da più amici Progettazione logica: definizione delle relazioni PRESTITI Dalla relazione N : N deriva un’ulteriore entità (PRESTITI) i cui attributi saranno i seguenti : Codice prestito: codice univoco del prestito Campo link alla tabella Amici: definisce l’amico che ha preso in prestito il libro Campo link alla tabella Libri: definisce il libro prestato Data del prestito: definisce la data in cui è stato effettuato il prestito Progettazione logica: definizione delle caratteristiche degli attributi TABELLA PROPRIETARI Nome Campo Tipo Campo Dimensione Vincoli Id Proprietario Numerico Intero lungo Primary Key Nome Proprietario 50 Unique Testo Note Progettazione logica: definizione delle caratteristiche degli attributi TABELLA AMICI Nome Campo Tipo Campo Dimensione Vincoli Id Amico Numerico Intero lungo Primary Key Nome Amico Testo 25 Not null Soprannome Testo 30 Telefono Amico Numerico Intero lungo Indirizzo Amico Testo 40 Fk Proprietario Numerico Intero lungo Note Può essere anche assente e quindi nullo Foreign key Link alla tabella Proprietari Progettazione logica: definizione delle caratteristiche degli attributi TABELLA LIBRI Nome Campo Tipo Campo Dimensione Id Libro Numerico Intero lungo Primary Key Titolo libro Testo 40 Unique Autore Libro Testo 40 Data restituzione Data Vincoli Not Null Note Progettazione logica: definizione delle caratteristiche degli attributi TABELLA PRESTITI Nome Campo Tipo Campo Dimensione Vincoli Note Codice prestito Numerico Intero lungo Primary Key Fk Tabella Amici Numerico Intero lungo Foreign Key Link alla tabella Amici Fk Tabella Libri Numerico Intero lungo Foreign Key Link alla tabella Libri Data del prestito Data Schema logico Seconda Parte: Individuazione di chiavi, vincoli e valori nulli Individuazione Chiavi Chiave primaria: MATRICOLA Chiave esterna: Fk reparti (REPARTO) N Chiave primaria: CODICE : MEDICI 1 REPARTI N RICOVERI ?? Manca chiave prima PAZIENTI N Chiave primaria: CODICE Chiavi esterne: Fk pazienti (PAZIENTE) Fk reparti (REPARTO) Individuazione Vincoli e Valori Nulli MEDICI REPARTI PAZIENTI Non ci devono essere medici con la stessa matricola (MATRICOLA UNIQUE) In un reparto ci possono lavorare più medici (la voce Reparto in Medici non è unique e non è null) Non tutti i medici possono essere primari Campo primario= not null e unique (un medico deve essere primario di un solo reparto) Il campo Nome Reparto deve essere unique Non possono esserci codici uguali (codice unique) Individuazione Vincoli e Valori Nulli RICOVERI Manca la chiave primaria Il campo Fine deve essere “successivo” temporalmente al campo Inizio Uno stesso paziente non può essere ricoverato nello stesso periodo in 2 reparti diversi Il campo Inizio e il campo Fine devono essere non nulli Il campo Reparto deve essere not null