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 unistanza 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 Amici Libro Prestito 1 1 NN Per la gestione della biblioteca personale sono state individuate le seguenti entità: AMICI PRESTITO LIBRO N N
Per lentità AMICI sono stati individuati i seguenti attributi: Id_amico: codice univoco dellamico 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 lentità LIBRO sono stati individuati i seguenti attributi: Id_libro: codice univoco del libro Titolo: insieme dei titoli dei libri Entità & attributi Segue
Entità & attributi Per lentità PRESTITO sono stati individuati i seguenti attributi: Id_amico: per individuare lamico 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 Amici Libro NN 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 lentità Prestito per cui : Amici Prestito 1N 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 Prestito Libro N 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
Definizione delle caratteristiche degli attributi Tabella Amici Nome campo Tipo campo DimensioneVincoliNote Id_amicoContatore Intero lungo Primary Key Nome_amicoTesto30 Not null Soprannome_amic o testo40 Indirizzotesto40 Segue
Definizione delle caratteristiche degli attributi Tabella Libro Nome campo Tipo campo DimensioneVincoliNote Id_librocontatore Intero lungo Primary Key Titolotesto50Unique Segue
Definizione delle caratteristiche degli attributi Tabella Prestito Nome campo Tipo campo DimensioneVincoliNote Id_ amico Numerico Intero lungo Foreign key Link alla tabella Amici Id_libroNumerico 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 DimensioneVincoliNote CodTesto1 Primary Key Codice di identificazione del reparto NomeTesto30Unique Primarionumerico Intero lungo Foreign Key Link a una tabella contenete i nomi dei primari
Tabella Pazienti Nome campo Tipo campo DimensioneVincoliNote CodContatore Intero lungo Primary Key Codice di identificazione del paziente CognomeTesto30 Not null nometesto20
Tabella Ricoveri Nome campo Tipo campo DimensioneVincoliNote PazienteContatore Intero lungo Foreign key Link alla tabella Pazienti InizioData Not null FineData Si può prevedere che il campo rimanga vuoto nel caso in cui il ricovero non sia finito RepartoTesto1 Foreign Key Link alla tabella Reparti dove il paziente è ricoverato
Tabella Medici Nome campo Tipo campo DimensioneVincoliNote MatrNumerico Intero lungo Primary Key NomeTesto20 Not null CognomeTesto30 RepartoTesto1 Foreign Key Link alla tabella Reparti di competenza del medico
Di Nicola Giannotti