progettazione di database gestione della biblioteca personale pasquale de tullio 565721
TRANSCRIPT
Progettazione di database
Gestione della biblioteca personale
Pasquale de Tullio565721
Analisi dei requisiti
Si vuole progettare un DB per la gestione della biblioteca personale. È emerso che:
• Il proprietario presta libri ai suoi amici• quando presta un libro prende nota della data
prevista di restituzione• fa riferimento ai libri attraverso i titoli
Dominio applicativo
Nel nostro caso il dominio applicativo è rappresentato da tutte le entità coinvolte nel sistema Biblioteca personale in particolare quelle relative alla gestione del prestito dei libri ai propri amici
Schema entità - relazioni
Proprietari
Libri
Amici
Prestiti
1
1
1
n
n
n
n
n
Progettazione concettuale
Nel nostro caso sono state individuate le seguenti entità:
• Proprietari• Amici• Libri
Progettazione concettuale
Proprietari
Sono stati individuati i seguenti attributi:Id proprietarioNome proprietario
Progettazione concettuale
Amici
Sono stati individuati i seguenti attributi:Id amicoNome amicoSoprannome amicoTel amicoIndirizzo amico
Progettazione concettuale
Libri
Sono stati individuati i seguenti attributi:Id libroTitolo libroAutore libroGenere libroData restituzione
Progettazione logicadefinizione delle relazioni
Proprietari Amici1 n
• Un amico può avere un solo proprietario• Un proprietario può avere più amici
• Più libri posso essere prestati ad un amico• Più amici possono avere in prestito un libro
Amici Librin n
Progettazione logicadefinizione delle relazioni
Libri Amici1 n
n 1
Prestiti
N : N
Progettazione logicadefinizione delle relazioni
Dalla relazione N:N deriva l’entità PRESTITI con i seguenti attributi:
Id prestitoCampo link a tabella Amici: definisce a chi è stato prestato il libroCampo link a tabella Libri: definisce che libro è stato prestatoData del prestito
Progettazione logicadefinizione delle relazioni
Progettazione logicadefinizione degli attributi
Nome campo Tipo campo dimensione vincoli note
Id Proprietario Numerico Intero Lungo PK
Nome Proprietario
testo 50 unique
Tabella Proprietari
Progettazione logicadefinizione degli attributi
Nome campo Tipo campo dimensione vincoli note
Id Amico Numerico Intero Lungo PK
Nome Amico testo 50 Not null
Soprannome Amico
testo 25 Può anche non esserci
Tel amico testo 15 Not null
Indirizzo amico testo 25 Not null
Fk id Proprietario
Numerico Intero Lungo FK Link a tabella proprietari
Tabella Amici
Progettazione logicadefinizione degli attributi
Nome campo Tipo campo dimensione vincoli note
Id Libro Numerico Intero Lungo PK
Titolo libro testo 40 unique
Autore libro testo 40 Not null
Genere libro testo 40 Not null
Data restituzione
data Not null
Tabella Libri
Progettazione logicadefinizione degli attributi
Nome campo Tipo campo dimensione vincoli note
Id prestito Numerico Intero Lungo PK
Fk Amici Numerico Intero Lungo FK Link a tabella amici
Fk Libri Numerico Intero Lungo FK Link a tabella libri
Data prestito data Not null
Tabella Prestiti
Caso Ospedale
Caso OspedaleChiavi:Tabella Ricoveri sono FK Pazienti : “Paziente”
FK Reparti: “Reparto”Manca Id Ricovero
Tabella Pazienti è PK: Cod
Tabella Reparti è PK: Cod
Tabella Medici è Pk: matrFk: reparto
Caso OspedaleVincoli di integrità referenziale e gli attributi sui quali si possono ammettere valori nulli:
• non ci possono essere medici con stessa Matricola (matr di Medici: Unique)• un medico deve essre primario di un solo reparto (voce primario di Reparti deve essere not null e unique)• in un reparto ci possono essere più medici, non tutti i medici possono essere primari (voce reparto di medici not unique e not null, ciò nel caso in cui nella tabella medici ci siano altri record)• non ci possono essere pazienti con lo stesso codice (voce cod paziente unique)• manca id ricovero in ricoveri• non ci possono essere reparti con lo stesso nome (voce nome reparto deve essere unique)•Data fine ricovero deve essere successiva data inizio ricovero•Lo stesso paziente non può essere ricoverato nello stesso periodo in reparti diversi• data inizio e data fine devono essere not null• nome reparto deve essere not null