1) PROGETTAZIONE DI UN DATABASE PADULA LUCIA MATRICOLA N. 570960 ANALISI DEI REQUISITI Si vuole progettare un database per i prestiti di una biblioteca personale A tale scopo bisognerà tener conto che: - La biblioteca presta i libri ai propri amici; - Un amico può prendere in prestito più libri; - Il proprietario non ha libri con lo stesso titolo. DOMINIO APPLICATIVO Lo scopo è quello di comprendere a fondo i concetti, le dinamiche, le regole generali in cui la struttura di dati dovrà essere impiegata, ovvero il contesto in cui il software dovrà agire. Nel nostro caso il dominio applicativo è rappresentato da tutte le entità coinvolte nel sistema biblioteca personale ed in particolare quelle relative alla gestione dei prestiti dei libri. SCHEMA ENTITA’-RELAZIONI 1 : N AMICI LIBRI 1 N N PRESTITI 1 PROGETTAZIONE CONCETTUALE Nel nostro database sono state individuate le seguenti entità: - AMICI - LIBRI - PRESTITI PROGETTAZIONE CONCETTUALE AMICI Per l’entità amici sono presenti i seguenti attributi: - Soprannome Amico Indirizzo Numero di telefono Indirizzo e-mail PROGETTAZIONE CONCETTUALE LIBRI Per l’entità libri sono presenti i seguenti attributi: - Titolo - Autore - Casa editrice PROGETTAZIONE CONCETTUALE PRESTITI Per l’entità Prestiti sono presenti i seguenti attributi: - Libro Amico Data consegna Data restituzione PROGETTAZIONE LOGICA DEFINIZIONE DELLA RELAZIONE 1 AMICI : N PRESTITI - Un amico può ottenere più prestiti - Lo stesso prestito non può essere concesso a più amici PROGETTO LOGICO DEFINIZIONE DELLE RELAZIONI 1 PRESTITI : N LIBRI - Uno stesso libro non può essere concesso in prestito più volte - Un prestito può comprendere più libri PROGETTO LOGICO DEFINIZIONE DELLE RELAZIONI 1 AMICI - : N LIBRI Un amico può prendere in prestito più libri - Un libro può essere preso in prestito da un solo amico PROGETTAZIONE LOGICA DEFINIZIONE DELLE CARATTERISTICHE DEGLI ATTRIBUTI TABELLA AMICI NOME CAMPO TIPO CAMPO DIMENSIONE VINCOLI SOPRANNOME TESTO 30 PRIMARY KEY INDIRIZZO TESTO 40 NOT NULL NUMERO DI TELEFONO NUMERICO INTERO LUNGO NOT NULL INDIRIZZO E-MAIL TESTO 30 NULL PROGETTAZIONE LOGICA DEFINIZIONE DELLE CARATTERISTICHE DEGLI ATTRIBUTI TABELLA LIBRI NOME CAMPO TIPO CAMPO DIMENSIONI VINCOLI TITOLO TESTO 30 PRIMARY KEY AUTORE TESTO 30 NOT NULL CASE EDITRICI TESTO 30 NOT NULL PROGETTAZIONE LOGICA DEFINIZIONE DELLE CARATTERISTICHE DEGLI ATTRIBUTI TABELLA PRESTITI NOME CAMPO TIPO CAMPO DIMENSIONI VINCOLI NOTE SOPRANNOME TESTO 40 FOREIGN KEY LINK TABELLA AMICI TITOLO TESTO 30 FOREIGN KEY LINK TABELLA TITOLI DATA CONSEGNA DATA NOT NULL DATA RESTITUZIONE DATA NOT NULL CODPRESTITO NUMERICO INTERO LUNGO PRIMARY KEY ESEMPIO DATABASE TABELLA AMICI SOPRANNOME INDIRIZZO N. TELEFONO E-MAIL CARLO VERO VIA ROMA 3331111111 [email protected] FRANCO RINI VIA PO 3207744777 [email protected] LUISA VITA VIA PIAVE 3472233444 [email protected] ESEMPIO DATABASE TABELLA LIBRI TITOLO AUTORE CASA EDITRICE ORGOGLIO E PREGIUDIZIO JANE AUSTEN GARZANTI IL CODICE DA VINCI DAN BROWN MONDADORI LA FORZA DELLA RAGIONE ORIANA FALLACI RIZZOLI ESEMPIO DATABASE TABELLA PRESTITI CODICE PRESTITO SOPRANNOME TITOLO DATA CONSEGNA DATA RESTITUZIONE 01541 CARLO VERO IL CODICE DA VINCI 07/01/2011 31/01/2011 01224 LUISA VITA ORGOGLIO E PREGIUDIZIO 13/01/2011 25/02/2011 01475 FRANCO RINI LA FORZA DELLA RAGIONE 10/01/2011 01/02/2011 2) BASE DATI OSPEDALE TABELLA PAZIENTI NOME CAMPO TIPO CAMPO DIMENSIONI VINCOLI CODPAZIENTI TESTO 10 PRIMARY KEY COGNOME TESTO 40 NOT NULL NOME TESTO 40 NOT NULL NOTE A mio parere non sono presenti in tal caso valori nulli visto che è importante conoscere per ogni cliente cognome e nome. 2) BASE DATI OSPEDALE TABELLA REPARTI NOME CAMPO TIPO CAMPO DIMENSIONI VINCOLI CODREPARTO NUMERICO INTERO LUNGO PRIMARY KEY NOME TESTO 40 NOT NULL PRIMARIO NUMERICO INTERO LUNGO FOREIGN KEY NOTE LINK TABELLA MEDICI A mio parere non sono presenti in tal caso valori nulli visto che è rilevante sapere per ogni reparto il nome dello stesso altre al codice che lo identifica univocamente. 2) BASE DATI OSPEDALE TABELLA RICOVERI NOME CAMPO TIPO CAMPO DIMENSIONI VINCOLI NOTE CODPAZIENTE NUMERICO INTERO LUNGO FOREIGN KEY LINK TABELLA MEDICI INIZIO DATA NOT NULL FINE DATA NOT NULL CODREPARTO NUMERICO 3 FOREIGN KEY LINK TABELLA REPARTO A mio parere non sono presenti in tal caso valori nulli visto che è rilevante sapere per ogni ricovero inizio e la fine dello stesso e il reparto in cui il paziente è ricoverato. Non è, invece, presente la chiave primaria: sarebbe necessario ad es. il campo CODRICOVERI. 2) BASE DATI OSPEDALE TABELLA MEDICI NOME CAMPO TIPO CAMPO DIMENSIONI VINCOLI MATRICOLA NUMERICO INTERO LUNGO PRIMARY KEY NOME TESTO 30 NOT NULL COGNOME TESTO 30 NOT NULL REPARTO NUMERICO 3 FOREIGN KEY NOTE LINK TABELLA REPARTO A mio parere non sono presenti in tal caso valori nulli visto che è rilevante sapere per ogni medico sapere nome, cognome e reparto in cui lavora.