Secondo Compito Considerare le informazioni per la gestione dei prestiti di una biblioteca personale. Il proprietario presta libri ai suoi amici, che indica semplicemente attraverso il nome o il soprannome (per evitare omonimie) e 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. Definire uno schema di relazione per presentare queste informazioni, individuando opportuni domini per i vari attributi e mostrarne un’istanza in forma tabellare; indicare la chiave (o le chiavi) della relazione. Valutare le eventuali esigenze di rappresentazione dei valori nulli, con i benefici e le difficoltà connesse. Schema logico N N Libro Amici 1 1 N N Prestito Per la gestione della biblioteca personale sono state individuate le seguenti entità: •AMICI •PRESTITO •LIBRO Entità & attributi Per l’entità AMICI sono stati individuati i seguenti attributi: •Id_amico: codice univoco dell’amico •Nome amico: insieme di tutti i nomi degli amici •Soprannome amico: insieme di tutti i soprannomi degli amici •Indirizzo: insieme degli indirizzi degli amici Per l’entità LIBRO sono stati individuati i seguenti attributi: •Id_libro: codice univoco del libro •Titolo: insieme dei titoli dei libri Segue Entità & attributi Per l’entità PRESTITO sono stati individuati i seguenti attributi: •Id_amico: per individuare l’amico al quale è stato prestato il libro. Funge da chiave esterna •Id_libro:per individuare il libro prestato. Funge da chiave esterna. •Data restituzione: individua la data i restituzione del libro. •Data prestito: data di inizio del prestito del libro. Funge da chiave primaria unitamente ai campi Id_amico e Id_libro. Relazioni N Amici N Libro Tra le tabelle AMICI e LIBRO si prevede una relazione molti a molti. •Un amico può prendere in prestito più libri • Un libro può essere preso in prestito da più amici Segue Relazioni La relazione molti a molti si risolve aggiungendo l’entità Prestito per cui : Amici 1 N Prestito Si crea una relazione tra Amici e Prestito di uno a molti: •Un amico può chiedere più prestiti •Un prestito può essere chiesto da un amico Segue Relazioni N Prestito 1 E si crea una relazione tra Prestito e Libro di uno a molti: •Un libro può essere oggetto di più prestiti •Ogni prestito può avere ad oggetto un libro Libro Definizione delle caratteristiche degli attributi Tabella Amici Nome campo Tipo campo Dimensione Vincoli Id_amico Contatore Intero lungo Primary Key Nome_amico Testo 30 Not null Soprannome_amic o testo 40 Indirizzo testo 40 Note Segue Definizione delle caratteristiche degli attributi Tabella Libro Nome campo Tipo campo Dimensione Vincoli Id_libro contatore Intero lungo Primary Key Titolo testo 50 Unique Note Segue Definizione delle caratteristiche degli attributi Tabella Prestito Nome campo Tipo campo Dimensione Vincoli Note Id_ amico Numerico Intero lungo Foreign key Link alla tabella Amici Id_libro Numerico Intero lungo Foreign key Link alla tabella libro Data inizio Data Primary key Chiave primaria insieme a id_amico e id_libro Data restituzione Data Not null Campi nulli È stato previsto per il campo soprannome della tabella amici la possibilità di lasciarlo vuoto, considerando che questo campo viene riempito solo nel caso in cui ci sia stato un amico omonimo ad un altro, in maniera da distinguerli. Pertanto per la tabella amici non poteva essere utilizzata come chiave primaria la combinazione dei campi Nome_amico e Soprannome_amico appunto perché il campo Soprannome_amico puo essere vuoto e una chiave primaria non può avere campi vuoti. Secondo compito Si faccia il download della base di dati (figura pdf) scaricabile al link "Base dati Ospedale" che è presente nella sezione "Compiti". Individuare le chiavi ed i vincoli di integrità referenziale che sussistono nella base di dati in figura e che è ragionevole assumere siano soddisfatti da tutte le basi di dati sullo stesso schema. Individuare anche gli attributi sui quali possa essere sensato ammettere valori nulli. Tabella REPARTI Nome campo Tipo campo Dimensione Vincoli Note Cod Testo 1 Primary Key Codice di identificazione del reparto Nome Testo 30 Unique Primario numerico Intero lungo Foreign Key Link a una tabella contenete i nomi dei primari Tabella Pazienti Nome campo Tipo campo Dimensione Vincoli Note Cod Contatore Intero lungo Primary Key Codice di identificazione del paziente Cognome Testo 30 Not null nome testo 20 Not null Tabella Ricoveri Nome campo Tipo campo Dimensione Vincoli Note Paziente Contatore Intero lungo Foreign key Link alla tabella Pazienti Inizio Data Fine Data Reparto Testo Not null Si può prevedere che il campo rimanga vuoto nel caso in cui il ricovero non sia finito 1 Foreign Key Link alla tabella Reparti dove il paziente è ricoverato Tabella Medici Nome campo Tipo campo Dimensione Vincoli Matr Numerico Intero lungo Primary Key Nome Testo 20 Not null Cognome Testo 30 Not null Reparto Testo 1 Foreign Key Note Link alla tabella Reparti di competenza del medico Di Nicola Giannotti