Si vuole progettare un database per la gestione dei prestiti di
una biblioteca personale.
La progettazione deve tenere conto di quanto emerso in fase di
analisi:
• Il proprietario può prestare più libri ai suoi amici
• Gli amici vengono identificati univocamente attraverso il
soprannome
• Il proprietario non possiede libri aventi lo stesso titolo
• Il proprietario prende nota della data di restituzione dei libri
• Il dominio applicativo è rappresentato da tutte le entità coinvolte nel
sistema Biblioteca Personale, in particolare quelle relative alla
gestione dei prestiti di libri.
LIBRI
N
PRESTITO
AMICI
N
Tra l’entità libri ed l’entità amici esiste un’associazione
molti – a – molti in quanto:
• un libro può essere prestato a uno o più amici;
• e un amico può pretendere in prestito uno o più libri.
1
:
N
LIBRI
AMICI
N
N
:
1
:
PRESTITO
N
Dalla relazione N:N deriva una ulteriore entità ( Prestito) i cui
attributi saranno i seguenti:
• Id Prestito : codice univoco del prestito;
• Campo link alla tabella Amici : definisce l’amico che ha preso
il libro in prestito;
• Campo link alla tabella Libri : definisce il libro oggetto del
prestito;
• Data Restituzione Prestito : insieme delle date della fine del
prestito.
Nel nostro esempio le entità individuale sono:
•LIBRI
•AMICI
Per l’entità Libri sono stati individuati i seguenti attributi:
• Id Libri : codice univoco per identificazione libro
• Titolo Libro : insieme di tutti i titoli dei libri presenti in biblioteca
• AnnoPubblicazioneLibri: anno di pubblicazione dei libri presenti in
biblioteca
• CollocazioneLibri: posto in cui si trovano i libri all’interno della
biblioteca
Per l’entità Amici sono stati individuati i seguenti attributi:
•
•
•
•
•
•
•
IdAmici: codice univoco per identificazione amico
NomeAmici: insieme di tutti i nomi degli amici
CognomeAmici: insieme di tutti i cognomi degli amici
Soprannome Amico: insieme dei soprannomi degli amci
IndirizzoAmici: insieme degli indirizzi degli amici
TelefonoAmici: insieme dei numeri di tel degli amici
E-mai Amici: insieme delle email degli amici
Nome campo
Tipo Campo
Dimensione
Vincoli
IdAmici
Numerico
Intero Lungo
Primary Key
NomeAmici
Testo
20
Not Null
CognomeAmici
Testo
30
Not Null
SoprannomeAmici
Testo
50
Unique
IndirizzoAmici
Testo
40
Not Null
TelefonoAmici
Numerico
15
Not Null
E-mai Amici
Testo
50
Note
Nome campo
Tipo campo
Dimensione
Vincoli
IdLibri
Numerico
Intero Lungo Primary Key
TitoloLibri
Testo
50
AnnoPubblicazioneLibri
Data
CollocazioneLibri
Numerico
Unique
Note
Nome campo
Tipo campo Dimensione
IdPrestito
Numerico
Intero Lungo Primary Key
FkLibri Prestito
Numerico
Intero Lungo Foreign Key Link alla
Tabella
Libri
FkAmici Prestito
Numerico
Intero Lungo Foreign Key Link alla
Tabella
Amici
Data restituzione prestito Data
Vincoli
Not Null
Note
N
:
MEDICO
1
REPARTO
N
RICOVERO
PAZIENTI
N
MEDICO
N
:
1
REPARTO
Tra l’entità medico e l’entità reparto esiste una relazione 1 : N
in quanto:
• in un reparto ci sono più medici;
• più medici sono presenti in un reparto.
1
:
N
REPARTO
PAZIENTI
N
N
:
:
RICOVERO
1
N
Tra l’entità reparto e l’entità pazienti esiste un’associazione
molti – a – molti in quanto:
• in un reparto possono essere ricoverati uno o più pazienti;
• uno o più pazienti possono essere stati ricoverati in uno o più reparti.
In questo esempio le entità individuale sono:
• Paziente
•Reparto
•Medico
Per l’entità Paziente sono stati individuati i seguenti attributi:
•Cod Paziente : chiave primaria nonché codice univoco per identificazione paziente
•Nome Paziente
•Cognome Paziente
Per l’entità Reparto sono stati individuati i seguenti attributi:
•Cod Reparto: chiave primaria nonché codice univoco per identificazione reparto
•Nome Reparto
•Primario Reparto
Per l’entità Medico sono stati individuati i seguenti attributi:
• Matricola Medico chiave primaria nonché codice univoco per identificazione medico
• Nome Medico
• Cognome Medico
• Reparto Medico: campo link alla tabella Reparto (chiave esterna)
Dalla relazione N : N esistente tra l’entità Reparto e l’entità Pazienti,
deriva una ulteriore entità ( Ricovero) i cui attributi sono i seguenti:
• Paziente : Campo link alla tabella Pazienti (chiave esterna)
• Inizio Ricovero
•Fine Ricovero
•Reparto: Campo Link alla tabella Reparto (chiave esterna)
Dalle considerazioni fin qui fatte, posso concludere dicendo che:
Nella Tabella Pazienti, il Cod Pazienti, essendo chiave primaria, non può
assumere valori nulli, anzi se viene a mancare questo valore si perde il
collegamento con la Tabella Ricoveri. Gli attributi Nome e Cognome, anche
questi importanti identificano in maniera univoca, insieme al Codice, il
Paziente.
Stesso discorso viene fatto per la Tabella Reparto.
Nella Tabella Ricoveri tutti gli attributi non possono assumere valori nulli,
in quanto l’attributo Paziente e l’attributo Reparto sono chiavi esterne che
servono, come già detto, da collegamento per le rispettive tabelle; invece
data inizio e fine ricovero, sono importanti, a mio avviso, per avere
conoscenza delle stanze libere o occupate all’interno di un reparto.
Nella Tabella Medici gli attributi che non posso assumere valori nulli sono:
la matricola (chiave primaria) in quanto identifica in maniera univoca il
medico e il reparto, che essendo chiave esterna, crea il collegamento con la
tabella Reparto. Gli altri attributi, quali, il Nome e Cognome medico
possono assumere valori nulli perché il medico viene già identificato
attraverso la matricola.