Progettazione di un Data Base
Daraio Andrea
Si vuole progettare un database per la gestione di una
biblioteca personale, dove il proprietario:
Presta i libri ai suoi amici, annotati con nomi e
soprannomi (per evitare omonimie);
Si riferisce ai libri mediante i titoli (assenza di libri con
titoli identici);
Annota il prestito con la prevista data di restituzione
 Nel nostro caso il dominio applicativo è rappresentato
da tutte le entità presenti nel sistema biblioteca, in
particolare quelle relative alla gestione dei prestiti.
Biblioteca
1
:
N
Libri
N
Prestito
Amici
N
Nel nostro caso sono state individuate le seguenti entità:
BIBLIOTECA
LIBRI
AMICI
 BIBLIOTECA
Per l’Entità Biblioteca abbiamo individuato gli attributi:
 Biblioteca: nome
 Proprietario: nome e cognome
 Indirizzo biblioteca
 Telefono proprietario
 E-mail proprietario
 LIBRI
 Per l’Entità Libri abbiamo individuato gli attributi:
 Titolo
 Codice ISBN: codice identificativo di ogni libro
 Autore
 Genere
 AMICI
Per l’Entità Amici abbiamo individuato gli attributi:
 Nome e Cognome Amico
 Soprannome Amico
 Telefono Amico
 E-mail Amico
Biblioteca
Libri
1
:
N
• Esiste una sola biblioteca
• La biblioteca può fornire più libri
Libri
Amici
N
• Un
:
N
amico può prendere in prestito più libri
• Un libro può essere prestato a più amici
1
:
N
Libri
Amici
N
N
:
:
Prestito
1
N
•Dalla relazione N : N abbiamo un’altra entità, Prestito,
la quale presenta i seguenti attributi:
• Id Prestito
• Campo link alla tabella Libri: definisce il libro prestato
• Campo link alla tabella Amici: definisce a chi è stato
prestato il libro
• Data restituzione
Libri
Nome campo Tipo campo
Dimensione
Vincoli
Titolo
Testo
40
Primary Key
Codice ISBN
Numerico
Intero lungo
Not null
Autore
Testo
40
Genere
Testo
40
FkBiblioteca
Numerico
Foreign Key
Note
Link alla
tabella
Biblioteca
Biblioteca
Nome campo Tipo campo
Dimensione
Vincoli
Biblioteca
Testo
30
Primary Key
Proprietario
Testo
40
Not null
Indirizzo
Biblioteca
Testo
40
Not null
Telefono
Proprietario
Testo
15
Not null
Email
Proprietario
Testo
50
Note
Amici
Nome campo Tipo campo
Dimensione
Vincoli
Cognome
Amico
Testo
30
Not null
Nome Amico
Testo
30
Not null
Soprannome
Amico
Testo
40
Primary Key
Telefono
Amico
Testo
15
Not null
Email Amico
Testo
50
Note
Prestito
Nome campo Tipo campo
Id Prestito
Dimensione
Vincoli
Note
Numerico
Intero lungo
Primary Key
FkLibriPrestit Numerico
o
Intero lungo
Foreign Key
Link alla
tabella Libri
FkAmiciPrest Numerico
ito
Intero lungo
Foreign Key
Link alla
tabella Amici
Data
restituzione
Data
Not null
PAZIENTI
Key: COD
RICOVERI
REPARTI
Key: Codice Nome
Codice
Nome
MEDICI
Key: Matricola
Key: Paziente Inizio Fine
Paziente Inizio
Paziente Fine
Possiamo individuare vincoli di integrità referenziale tra:
• l’attributo COD della relazione PAZIENTI e la relazione RICOVERI
• l’attributo REPARTO della relazione RICOVERI e le relazioni
REPARTI e MEDICI
• gli attributi COD e PRIMARIO della relazione REPARTI e la
relazione MEDICI
Può essere sensato ammettere valori nulli sugli attributi:
• COGNOME e NOME nell’istanza PAZIENTI
• REPARTO nell’istanza RICOVERI
• NOME e COGNOME nell’istanza MEDICI
Scarica

progettazione database biblioteca