PROGETTAZIONE DI UN DATABASE
Corso di Abilità Informatiche Avanzate
Prof. Agostino Marengo
a.a. 2010-2011
GELSOMINA PETTORRUSO
Matricola: 566400
ANALISI DEI REQUISITI
1. Si vuole progettare un Database per la gestione dei prestiti di una biblioteca personale.
La progettazione deve tener conto del fatto che il proprietario:
• presta libri ai suoi amici, che indica attraverso il nome o il soprannome (per evitare omonimie)
• 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.
GESTIONE DEI PRESTITI BIBLIOTECA PERSONALE
DOMINIO APPLICATIVO
Nel nostro caso il dominio applicativo è rappresentato da tutte le entità coinvolte nel sistema BIBLIOTECA, in particolare quelle relative alla gestione dei prestiti.
SCHEMA ENTITA’-RELAZIONI :
AMICI LIBRI
PRESTITI
AUTORI
CATEGORIE
1 : N
N : N
N : 1
N :
1 1 : N
AUTORI_LIBRI
N : N
N :
1
CASE EDITRICI
N : 1
PROGETTAZIONE CONCETTUALE
Sono state individuate le seguenti entità:
AMICI
LIBRI
AUTORI
CATEGORIE
PRESTITI
AUTORI_LIBRI
CASE EDITRICI
PROGETTAZIONE CONCETTUALE
AMICI
•Soprannome amico: insieme di tutti i soprannomi degli amici, campo univoco•Nome amico: insieme di tutti i nomi degli amici •Cognome amico: insieme di tutti i cognomi degli amici
•Numero di telefono: insieme di tutti i numeri di telefono degli amici •e-mail: insieme di tutti gli indirizzi e-mail degli amici
Per l’entità AMICI sono stati individuati i seguenti attributi:
PROGETTAZIONE CONCETTUALE
LIBRI
•Titolo libro:campo univoco
•Campo link alla tabella Categorie: definisce la categoria di libro •Editore libro•Anno di pubblicazione•Numero scaffale•Numero posto
Per l’entità LIBRI sono stati individuati i seguenti attributi:
PROGETTAZIONE CONCETTUALE
AUTORI
•Id Autore: codice univoco dell’autore
•Nome Autore•Cognome Autore•Data di Nascita•Luogo di Nascita
Per l’entità AUTORI sono stati individuati i seguenti attributi:
PROGETTAZIONE CONCETTUALE
AUTORI_LIBRI
•Id Autore Libro: campo univoco
•Campo link alla tabella AUTORI•Campo link alla tabella LIBRI
Per l’entità AUTORI_LIBRI sono stati individuati i seguenti attributi:
PROGETTAZIONE CONCETTUALE
CATEGORIE
•Id Categoria: codice univoco della categoria
•Nome Categoria: insieme di tutte le categorie di libri
Per l’entità CATEGORIE sono stati individuati i seguenti attributi:
PROGETTAZIONE CONCETTUALE
CASE EDITRICI
•Id Casa Editrice: codice univoco della categoria
•Nome Casa editrice: insieme di tutte le categorie di libri•Città
Per l’entità CASE EDITRICI sono stati individuati i seguenti attributi:
PROGETTAZIONE CONCETTUALE
PRESTITI
•Id Prestito: codice univoco del prestito
•Campo link alla tabella Amici: definisce la persona (amico) che ha preso in prestito il libro•Campo link alla tabella Libri: definisce il libro che è stato preso in prestito•Data inizio prestito•Data riconsegna
Per l’entità PRESTITI sono stati individuati i seguenti attributi:
PROGETTAZIONE LOGICA
Nome campo Tipo campo
Dimensione
Vincoli Note
SoprannomeAmico
testo 50 Primary key
NomeAmico testo 30
CognomeAmico testo 30
NumeroTelefono Testo 15 Not null
Email testo 50
Tabella AMICI
Definizione delle caratteristiche degli attributi
Il soprannome dell’amico (chiave primaria) è un campo che non può essere nullo; impostiamo come non nullo anche il campo numero di telefono così da avere un riferimento certo in caso di non restituzione del libro. Gli altri campi possono eventualmente essere nulli.
PROGETTAZIONE LOGICA
Nome campo Tipo campo
Dimensione
Vincoli Note
TitoloLibro Testo 150 Primary key
EditoreLibro Testo 40 Not null
FkCategoria Numerico Intero Lungo
Foreign key
Link alla tabella CATEGORIE
AnnoDiPubblicazione
Numerico 4
NumeroScaffale Numerico Intero Lungo
Not null
NumeroPosto Numerico Intero Lungo
Not null
Tabella LIBRI
Definizione delle caratteristiche degli attributi
PROGETTAZIONE LOGICA
Nome campo Tipo campo
Dimensione
Vincoli Note
IdAutore Numerico Intero Lungo Primary key
NomeAutore Testo 30 Not null
CognomeAutore Testo 30 Not null
DataDiNascita Data
LuogoDiNascita Testo 50
Tabella AUTORI
Definizione delle caratteristiche degli attributi
PROGETTAZIONE LOGICA
Nome campo Tipo campo
Dimensione
Vincoli Note
IdAutoreLibro Numerico Intero Lungo
Primary key
FkAutore Numerico Intero Lungo
Foreign key Link alla tabella AUTORI
FkTitoloLibro Testo 150 Foreign key Link alla tabella LIBRI
Tabella AUTORI_LIBRI
Definizione delle caratteristiche degli attributi
PROGETTAZIONE LOGICA
Nome campo Tipo campo
Dimensione Vincoli Note
IdCategoria Numerico Intero Lungo Primary key
NomeCategoria Testo 30 Unique
Tabella CATEGORIE
Definizione delle caratteristiche degli attributi
Nome campo Tipo campo
Dimensione Vincoli Note
IdCasaEditrice Numerico Intero Lungo Primary key
NomeCasaEditrice
Testo 30 Not null
Citta Testo 30
Tabella CASE EDITRICI
PROGETTAZIONE LOGICA
Nome campo Tipo campo
Dimensione
Vincoli Note
IdPrestito Numerico Intero Lungo Primary key
FkSoprannomeAmico
Testo 50 Foreign key
Link alla tabella AMICI
FkTitoloLibro Testo 100 Foreign key
Link alla tabella LIBRI
DataInizioPrestito Data Not null
DataFinePrestito Data Not null
Tabella PRESTITI
Definizione delle caratteristiche degli attributi
SCHEMA LOGICO
2. Individuare le chiavi ed i vincoli di integrità referenziale che sussistono nella base di dati in figura e che è ragionevole assumere.
Individuare anche gli attributi sui quali possa essere sensato ammettere valori nulli.
PAZIENTI REPARTI
RICOVERI
MEDICI
1 : N
N :
1
N : N1 : N
SCHEMA ENTITA’-RELAZIONI :
LE CHIAVI PRIMARIE possono essere:• Codice (Cod) per la tabella PAZIENTI• Matricola (Matr) per la tabella MEDICI• Codice (Cod) per la tabella REPARTI• Inizio * per la tabella RICOVERI
•La scelta della chiave primaria Inizio sulla tabella RICOVERI presuppone che non ci sia più di un ricovero nella stessa giornata, se così non fosse l’univocità della chiave verrebbe meno.
I VINCOLI DI INTEGRITA’ REFERENZIALE sono:
• tra l’attributo Paziente di RICOVERI e la tabella PAZIENTI• tra Reparto di RICOVERI e la tabella REPARTI• tra Reparto in MEDICI e la tabella REPARTI
CHIAVI PRIMARIE E VINCOLI DI INTEGRITA’ REFERENZIALE
Fatta eccezione per le chiavi primarie che non possono avere valori nulli, sembra sensato ammettere valori nulli sugli attributi:
• Cognome e Nome di PAZIENTI (poiché si ha il codice identificativo del paziente)
• Fine di RICOVERI (poiché la data della fine del ricovero potrebbe non
essere stabilita alla data del ricovero)
• Cognome e Nome di MEDICI (poiché ciascun medico è identificato da una
matricola)
• Nome di REPARTI (essendo il reparto identificato da un codice)
ATTRIBUTI SU CUI E’ SENSATO AMMETTERE VALORI NULLI