140 likes | 256 Views
COMPITO SECONDO. Corso: Abilità Informatiche Avanzate Prof. Agostino Marengo Anno accademico 2010/2011 Studente: Antonio D’Aniello Matricola: 569637. 1) PROGETTAZIONE DI UN DATA BASE : gestione dei prestiti di una biblioteca personale.
E N D
COMPITO SECONDO Corso: Abilità Informatiche Avanzate Prof. Agostino Marengo Anno accademico 2010/2011 Studente: Antonio D’Aniello Matricola: 569637
1) PROGETTAZIONE DI UN DATA BASE: gestionedeiprestiti di unabiblioteca personale
Gestioneprestiti di unabiblioteca personale Entità LIBRI (Non possiedostessilibri– per cuiassumochiaveprimariailtitolo del libro) AMICI (Individuounivocamenteogniamicoconunsoprannome.) La relazionetra le due è di n:n Ad ogniamicopossoprestare uno o più libri; Ognilibropossoprestarlo ad uno o più amici. PRESTITI si rendenecessaria per "scomporre" la relazione.
Gestioneprestiti di unabiblioteca personale Schema Entità-Relazioni LIBRI 1 : N PRESTITI N : 1 AMICI N : N
Gestioneprestiti di unabiblioteca personale Tabella LIBRI
Gestioneprestiti di unabiblioteca personale TabellaAMICI
Gestioneprestiti di unabiblioteca personale Tabella PRESTITI
Gestioneprestiti di unabiblioteca personale es. PRESTITI
Gestioneprestiti di unabiblioteca personale Conclusini Non sonoaccettabilivalorinulli per le Chiaviprimarie (Titolo, Soprannome) perchè ho necessità di identificarequalelibro ho prestato e a qualedeimieiamici, sonoglielementifondamentali del prestito. In alcunetabellecome ad esempioquella LIBRI ho impostatocome NOT NULL gliattributi "prestato" e "restituito" in modo da ottimizzarel'utilità del databasecostringendol'utente ad indicare se illibro è o nonellapropriadisponibilità. Nella tabella AMICI ilsoprannomeindividuaunivocamentel'amico e mi evita la costruzione di unasuperchiave: nell'esempio ho inseritotrepersone, tutteconilnomeGiuesppe, ma la prima conosciutacomeGiusè, l'altracome Peppino, l‘altracome Pino. Nella tabella PRESTITI "impongo" all'utente di indicare la data in cui è avvenutoilprestito, al contrariodell'attributo "Data restituzione"; nelcaso in cuiperò si vogliariempireanchequest'ultimocampo, c'èilvincolologico da rispettareche la data di restituzionesiaposteriore alla data del prestito.
2) " Base datiOspedale" Chiavi Tra le tabelle PAZIENTI e REPARTI esisteunarelazionen:n :un pazientepuòesserericoverato in piùreparti e un repartopuòospitarepiùpazienti. La siscompone in RICOVERI. Le chiaviprimariesono “Cod” per PAZIENTI, "Cod" per REPARTI – entrambechiaviesternenellatabella RICOVERI - e "Matr" per MEDICI; chiaveesterna in REPARTI(Primario). Nellatabella RICOVERI non è possibileindividuareunachiave – dobbiamocostruirciunasuperchiave: RICOVERI(Paziente,Inizio,Reparto)
"Base datiOspedale" Attributinulli e vincolireferenziali Gliattributichepossiamoammetterenullisonotuttiquelliche non sianochiaviprimarie(VINCOLO REFERENZIALE) – se ad esempio non disponessimo del cognomedi un paziente, comunquesarebbesufficiente PAZIENTI(COD) per identificarlounificamente. Per cui attributinulli REPARTI (Nome) PAZIENTI (Cognome,Nome)MEDICI (Nome,Cognome)
"Base datiOspedale" Attributinulli e vincolireferenziali Nonostante PAZIENTI e MEDICI abbianounachiaveprimariaciascuno, per rispettareivincolidiintegritàreferenziale non possiamoconsiderarenulliicampi REPARTI(Primario) e MEDICI(Reparto), altrimentiperderemmoiriferimentialletabelleesterne. Per i RICOVERI la questionesirendepiùdelicataperchèdobbiamocostruirciunasuperchiave. Poniamocompostada RICOVERI(Paziente,Inizio,Reparto) allora la voce ammissibilenulla è "FINE".