Esercizio 1 Progettazione DataBase di una biblioteca privata
description
Transcript of Esercizio 1 Progettazione DataBase di una biblioteca privata
Esercizio 1
Progettazione DataBase di una biblioteca privata
Si vuole automatizzare una biblioteca privata che presta libri agli amici. Gli amici
sono indicati con il nome o il soprannome. Si fa riferimento ai libri attraverso i titoli e
la biblioteca non possiede libri con lo stesso titolo.
A tal fine è opportuno memorizzare i dati relativi agli amici e ai libri per ricavare le
informazioni su ciò che viene dato in prestito.
Ai fini della progettazione concettuale le entità individuate sono le seguenti:
•Libri
•Amici
Progettazione logica
• Tra le due entità individuate sussiste una relazione N:N per cui si ritiene opportuno inserire una ulteriore
entità (tabella di mezzo) chiamata “Dataprestiti”.
•
• 1 : N
• N : 1
N : N
Libri Amici
Dataprestiti
Progettazione logica
Gli attributi individuati per l’entità Libri sono:
Gli attributi individuati per l’entità Amicisono:
Id LibroTitolo libroAutoreeditorePrezzo d’acquisto
Id AmicoNome/SoprannomeAmicoTelefonoEmailCittà
IdprestitoCampo link alla tabella AmiciCampo link alla tabella LibriData consegnaData reso previstaData reso effettiva
Gli attributi individuati per l’entità Dataprestiti sono:
• Tabella Amici
• Tabella Libri
Progettazione logicaDefinizione delle caratteristiche degli attributi
Nome Campo Tipo campo Dimensione Vincoli NoteIdAmico Numerico Intero lungo Primary keyNome/SoprannomeAmico Testo 40 Not nullTelefono Testo 15 Not nullEmail Testo 40 uniquecittà Testo 30 Not null
Nome Campo Tipo campo Dimensione Vincoli Note
IdLibro Numerico Intero lungo Primary key
Titololibro Testo 50 Not Nul
Autore Testo 40 Not null
Editore Testo 40 Not null
Prezzo d’acquisto valuta
Progettazione logicaDefinizione delle caratteristiche degli attributi
• Tabella DataPrestiti
• t
Nome Campo Tipo campo
Dimensione Vincoli Note
idPrestito Numerico Intero lungo Primary Key
Fk Amici Numerico Intero lungo Foreign key Link alla tabella Amici
Fk libri Numerico Intero lungo Foreign key Link alla tabella libri
Dataconsegna Data Not null
Dataresoprevista Data Not null
Dataresoeffettiva Data Not null
Schema logico
Base di dati – Tabelle
idAmico Nome/SoprannomeAmico
Telefono Email Città
A Giuseppe 08534232 [email protected]
Bari
B Mario 0864322 NULL Torino
C Pino 33378653 [email protected]
Bari
Id prestiti dataprestito dataresoprevista Dataresoeffettiva FkAmici FkLibri
1 02/02/2010 10/04/2010 20/04/2010 C 1A
2 10/12/2010 08/01/2011 A 3C
Amici
Dataprestiti
Idtitolo Titololibro Autore Editore Prezzod’acquisto
1A La bella e la bestia
Eeeeeee Ooooooo €12,00
2B Dal bit a internet
Ggggg Jjjj € 34,00
3C Manuale di economia
Hjkkls Llopp € 56,00
Libri
Chiavi e valori nulli
• Nella tabella Amici una chiave primaria è ID Amici, un’altra è Nome/SoprannomeAmici;• Nella tabella Libri una chiave primaria è IDTitolo, un’altra è Titololibri;• Nella tabella Dataprestiti la chiave primaria è Idprestiti e un’altra è Idprestiti e Dataconsegna• Oltre queste chiavi, nel definire le caratteristiche degli attributi, sono state riportate anche le chiavi esterne
delle relazioni.• I valori nulli non possono esserci nei campi chiave primaria.• Nell’esempio del database riportato, un valore nullo potrebbe aversi nell’attributo Email della tabella
Amici, considerato che non tutti gli amici possono esserne forniti. La dicitura “null”in quel caso ,pur costituendo una perdita di informazione, non è causa di grossi problemi.
Esercizio 2
Basi di dati ospedale
Base di dati ospedale
• • Nella tabella Pazienti• Superchiave: CodCognomeNome• Cod è chiave minimale e superchiave ed è anche chiave primaria perchè non nulla• • • tabella Reparti• superchiavi: cod, Nome, NomePrimario, CodPrimario.• chiavi minimali:Cod, Nome; sono anche primarie perchè non nulle• • tabella Ricoveri• superchiave e chiave minimale primaria: PazienteInizio• • Tabella Medici• superchiave: Matr. oppure Matr,NomeCognome, oppure NomeCognomeReparto.• chiave minimale e primaria: Matr, oppure NomeCognomeReparto• anche CognomeReparto è una chiave ma solo "per caso"•
Vincoli di integrità
Nella base di dati ospedale i vincoli di integrità si riscontrano come segue:
• tra gli attributi Paziente, Inizio della relazione Ricoveri e la relazione Pazienti;
• tra l'attributo Cod della relazione Reparti e la relazione Ricoveri;
• tra l'attributo Matr della relazione Medici e la relazione Reparti
• Ci possono essere dei valori nulli nella tabella Pazienti in corrispondenza delle ennuple attribuite agli attributi Cognome e Nome (es. viene ricoverato al pronto soccorso un individuo di cui non sono note le generalità ma ha diritto comunque ad essere curato)