Secondo Compito
Considerare le informazioni per la gestione dei prestiti di una biblioteca
personale.
Il proprietario presta libri ai suoi amici, che indica semplicemente attraverso il
nome o il soprannome (per evitare omonimie) e 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.
Definire uno schema di relazione per presentare queste informazioni,
individuando opportuni domini per i vari attributi e mostrarne un’istanza in
forma tabellare; indicare la chiave (o le chiavi) della relazione.
Valutare le eventuali esigenze di rappresentazione dei valori nulli, con i benefici e
le difficoltà connesse.
Schema logico
N
N
Libro
Amici
1
1
N
N
Prestito
Per la gestione della biblioteca personale sono state individuate le seguenti entità:
•AMICI
•PRESTITO
•LIBRO
Entità & attributi
Per l’entità AMICI sono stati individuati i seguenti attributi:
•Id_amico: codice univoco dell’amico
•Nome amico: insieme di tutti i nomi degli amici
•Soprannome amico: insieme di tutti i soprannomi degli amici
•Indirizzo: insieme degli indirizzi degli amici
Per l’entità LIBRO sono stati individuati i seguenti attributi:
•Id_libro: codice univoco del libro
•Titolo: insieme dei titoli dei libri
Segue
Entità & attributi
Per l’entità PRESTITO sono stati individuati i seguenti attributi:
•Id_amico: per individuare l’amico al quale è stato prestato il libro. Funge da
chiave esterna
•Id_libro:per individuare il libro prestato. Funge da chiave esterna.
•Data restituzione: individua la data i restituzione del libro.
•Data prestito: data di inizio del prestito del libro. Funge da chiave primaria
unitamente ai campi Id_amico e Id_libro.
Relazioni
N
Amici
N
Libro
Tra le tabelle AMICI e LIBRO si prevede una relazione molti a molti.
•Un amico può prendere in prestito più libri
• Un libro può essere preso in prestito da più amici
Segue
Relazioni
La relazione molti a molti si risolve aggiungendo l’entità Prestito per cui :
Amici
1
N
Prestito
Si crea una relazione tra Amici e Prestito di uno a molti:
•Un amico può chiedere più prestiti
•Un prestito può essere chiesto da un amico
Segue
Relazioni
N
Prestito
1
E si crea una relazione tra Prestito e Libro di uno a molti:
•Un libro può essere oggetto di più prestiti
•Ogni prestito può avere ad oggetto un libro
Libro
Definizione delle caratteristiche degli
attributi
Tabella Amici
Nome campo
Tipo campo
Dimensione
Vincoli
Id_amico
Contatore
Intero lungo
Primary Key
Nome_amico
Testo
30
Not null
Soprannome_amic
o
testo
40
Indirizzo
testo
40
Note
Segue
Definizione delle caratteristiche degli
attributi
Tabella Libro
Nome campo
Tipo campo
Dimensione
Vincoli
Id_libro
contatore
Intero lungo
Primary Key
Titolo
testo
50
Unique
Note
Segue
Definizione delle caratteristiche degli
attributi
Tabella Prestito
Nome campo
Tipo campo
Dimensione
Vincoli
Note
Id_ amico
Numerico
Intero lungo
Foreign key
Link alla tabella
Amici
Id_libro
Numerico
Intero lungo
Foreign key
Link alla tabella
libro
Data inizio
Data
Primary key
Chiave primaria
insieme a
id_amico e
id_libro
Data restituzione
Data
Not null
Campi nulli
È stato previsto per il campo soprannome della tabella amici la possibilità
di lasciarlo vuoto, considerando che questo campo viene riempito solo nel
caso in cui ci sia stato un amico omonimo ad un altro, in maniera da
distinguerli.
Pertanto per la tabella amici non poteva essere utilizzata come chiave
primaria la combinazione dei campi Nome_amico e Soprannome_amico
appunto perché il campo Soprannome_amico puo essere vuoto e una
chiave primaria non può avere campi vuoti.
Secondo compito
Si faccia il download della base di dati (figura pdf)
scaricabile al link "Base dati Ospedale" che è presente
nella sezione "Compiti".
Individuare le chiavi ed i vincoli di integrità
referenziale che sussistono nella base di dati in figura
e che è ragionevole assumere siano soddisfatti da
tutte le basi di dati sullo stesso schema. Individuare
anche gli attributi sui quali possa essere sensato
ammettere valori nulli.
Tabella REPARTI
Nome campo Tipo campo
Dimensione
Vincoli
Note
Cod
Testo
1
Primary Key
Codice di
identificazione
del reparto
Nome
Testo
30
Unique
Primario
numerico
Intero lungo
Foreign Key
Link a una
tabella
contenete i
nomi dei
primari
Tabella Pazienti
Nome campo Tipo campo
Dimensione
Vincoli
Note
Cod
Contatore
Intero lungo
Primary Key
Codice di
identificazione
del paziente
Cognome
Testo
30
Not null
nome
testo
20
Not null
Tabella Ricoveri
Nome campo Tipo campo
Dimensione
Vincoli
Note
Paziente
Contatore
Intero lungo
Foreign key
Link alla tabella
Pazienti
Inizio
Data
Fine
Data
Reparto
Testo
Not null
Si può prevedere
che il campo
rimanga vuoto
nel caso in cui il
ricovero non sia
finito
1
Foreign Key
Link alla tabella
Reparti dove il
paziente è
ricoverato
Tabella Medici
Nome campo Tipo campo
Dimensione
Vincoli
Matr
Numerico
Intero lungo
Primary Key
Nome
Testo
20
Not null
Cognome
Testo
30
Not null
Reparto
Testo
1
Foreign Key
Note
Link alla
tabella Reparti
di competenza
del medico
Di Nicola Giannotti
Scarica

Secondo Compito