Progettazione database a cura di Roberta Mancini – matr CdLM in Marketing
1. ANALISI DEI REQUISITI Si vuole progettare un database per una biblioteca personale che presta libri ad amici. La progettazione deve tener conto di quanto emerso in fase di analisi: Il proprietario presta i libri solo ai suoi amici. Nessuno dei libri ha lo stesso titolo. Quando presta un libro prende nota della data prevista di restituzione.
ANALISI DEI REQUISITI A tale scopo bisognerà memorizzare i dati relativi a: Amici Libri Prestiti Il fine ultimo è quello di automatizzare la gestione dei prestiti di libri nella biblioteca.
DOMINIO APPLICATIVO Tutte le entità coinvolte nel sistema “Biblioteca”, in particolare gli amici a cui vengono prestati i libri, i libri dati in prestito e le notizie relative alle date di prestito e restituzione.
SCHEMA ENTITA’-RELAZIONI AMICI LIBRI PRESTITI N:N 1:N
PROGETTAZIONE CONCETTUALE Nel nostro caso sono state individuate le seguenti entità: 1. Amici 2. Libri 3. Prestiti
PROGETTAZIONE CONCETTUALE AMICI Per l’entità “Amici” sono stati utilizzati i seguenti attributi: ID amico: codice univoco dell’ Amico Nominativo amico: insieme di tutti gi amici ai quali sono stati prestati i libri. Indirizzo amico Comune di residenza amico Numero telefono amico
PROGETTAZIONE CONCETTUALE PRESTITI Per l’entità “Prestiti” sono stati utilizzati i seguenti attributi: ID prestito Data prestito Data restituzione prestito
PROGETTAZIONE CONCETTUALE LIBRI Per l’entità “Libri” sono stati utilizzati i seguenti attributi: ID Libro Titolo libro Autore libro
PROGETTAZIONE LOGICA DEFINIZIONE DELLE RELAZIONI AMICILIBRI N:N Un amico può prendere in prestito più libri. Ogni libro può essere prestato a più amici non contemporaneamente. Tutti i libri posso essere prestati a tutti gli amici
PROGETTAZIONE LOGICA TABELLA AMICI NOME CAMPO TIPO CAMPO DIMENSION E VINCOLIDESCRIZIO NE ID AmicoNumericoIntero lungoPrimary Key Nominativo amico Testo50Not null Indirizzo amico Testo50Not null Comune residenza amico Testo50Not null Numero telefono amico Testo40Not null
PROGETTAZIONE LOGICA TABELLA LIBRI NOME CAMPO TIPO DI CAMPO DIMENSI ONE VINCOLIDESCRIZ IONE ID LibroNumericoIntero lungo Primary key Titolo libro Testo50Not null Autore libro Testo50Not null
PROGETTAZIONE LOGICA TABELLA PRESTITI NOME CAMPO TIPO DI CAMPO DIMENSIO NE VINCOLIDESCRIZIO NE ID prestitoNumericoIntero lungoForeign Key Data prestito Data-Not null Data restituzione prestito Data-Not null
SCHEMA LOGICO
VALORI NULLI I valori nulli possono essere ammessi sull’attributo “Data Restituzione Prestito”, perché è possibile prestare un libro senza aver fissato una precisa data di restituzione; sarebbe difficile accettare valori nulli sull’attributo “Nominativo Amico”, perché di solito è necessario sapere chi ha il libro. L’attributo “Titolo Libro” è la chiave e quindi non può avere valori nulli.
2. INTEGRITA’ REFERENZIALE Le chiavi sono: - “Cod” per la relazione PAZIENTI - “Paziente” per la relazione RICOVERI - “Matr” per la relazione MEDICI - “Cod” per la relazione REPARTO
INTEGRITA’ REFERENZIALE Un paziente può essere ricoverato solo una volta nello stesso giorno. Se supponiamo che questa ipotesi non venga soddisfatta, e che un paziente possa essere ricoverato più volte nello stesso giorno, la relazione non sarebbe corretta. Infatti due o più ricoveri nello stesso giorno e nello stesso reparto dovrebbero avere anche la stessa data di dimissione, e così sarebbe rappresentata nella stessa riga nella relazione.
INTEGRITA’ REFERENZIALE I vincoli di integrità che esistono nel database sono tra l’attributo “Paziente” in RICOVERI e “Cod” in PAZIENTI, tra “Reparto” nella relazione RICOVERI e “Cod” nella relazione REPARTI, tra “Primario” in REPARTI e “Matr” nella relazione MEDICI e infine tra “Reparto” in MEDICI e “Cod” in REPARTI.
INTEGRITA’ REFERENZIALE I valori nulli possono essere ammessi negli attributi “Cognome” e “Nome” nella relazione PAZIENTI, “Fine” nella relazione RICOVERI, “Cognome” e “Nome” nella relazione MEDICI e “Nome” nella relazione REPARTI. Tutti questi attributi non sono chiavi e non hanno nessun vincolo di integrità referenziale.