LA PROGETTAZIONE DELLE BASI DI DATI

Slides:



Advertisements
Presentazioni simili
Modulo 5 DataBase ACCESS.
Advertisements

La progettazione concettuale
Informatica II – Basi di Dati (08/09) – Parte 1
Corso di Laurea in Biotecnologie Informatica (Basi di Dati)
Sistemi Informativi di Rete AA (IV) Progettazione di siti Web: un approccio per Entita e Relazioni.
Creazione di archivi tramite Data Base
IL MODELLO ENTITÀ-RELAZIONE Gli altri costruttori
IL MODELLO ENTITA’ - RELAZIONE I costruttori di base
LA PROGETTAZIONE LOGICA Seconda parte
Progettazione concettuale
Progettazione concettuale
DOCUMENTAZIONE DI SCHEMI E/R
1 Biglietti: schema E/R. 2 Biglietti: albero degli attributi.
Progettazione Concettuale: Il modello Entità-Relazioni
4 – Progettazione – Introduzione e Modello E-R
6 – Progettazione Logica
Basi di Dati prof. A. Longheu 4 – Progettazione – Introduzione e Modello E-R Cap. 5 Basi di dati Atzeni – Ceri – Paraboschi - Torlone.
Relazioni Relazione: Associazione o legame logico esistente tra due o più entità Socio Prenota Campo.
Basi di dati - Modelli e linguaggi di interrogazione- Paolo Atzeni, Stefano Ceri, Stefano Paraboschi, Riccardo Torlone Copyright © The McGraw-Hill.
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Archivio Cé necessità di immagazzinare in modo permanente grandi quantità di dati. Esempio: anagrafe dei cittadini di un comune.
PROGETTO LOGICO. Progetto logico Lo schema E/R descrive un dominio applicativo ad un dato livello di astrazione Lo schema E/R è molto utile per: –fornire.
ENTITÀ - RELAZIONE MODELLO ENTITÀ E ATTRIBUTI DOMINI RELAZIONI
Corso di Informatica (Basi di Dati)
Corso di Informatica (Basi di Dati)
LA PROGETTAZIONE LOGICA
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill, 1999
Basi di dati 2002 EER Vogliamo aumentare lespressività degli Entity Model EER: Entity Model Esteso.
Modello E-R Generalizzazioni
Progettazione di una base di dati
Normalizzazione Le forme normali certificano che la base di dati soddisfa criteri di qualità che mirano ad evitare le ridondanze e i conseguenti effetti.
Partizionamento/accorpamento di concetti
Modello E-R Generalizzazioni
Corso di INFORMATICA anno scolastico 2009/10 Linguaggio SQL IDENTIFICATORI di tabelle e attributi: stringhe di lunghezza max 18 caratteri, composte da.
Implementare un modello di dati
ESERCIZIO N.1 ANALISI DEI REQUISITI Si vuole progettare un Data Base per una biblioteca personale che presti libri. La progettazione tiene conto di quanto.
COMPITO 2 CELESTE BONANNO MATR CDL: SDFA.
LA PROGETTAZIONE DELLE BASI DI DATI
Il modello ER Proposto da Peter Chen nel 1976 rappresenta uno standard per la progettazione concettuale (in particolare per le basi di dati) Ha una rappresentazione.
Corso di Basi di Dati Progettazione Logica
Sistemi di Elaborazione delle Informazioni Mod.I.
Basi di Dati e Sistemi Informativi
Basi di Dati e Sistemi Informativi
Atzeni, Ceri, Paraboschi, Torlone Basi di dati McGraw-Hill,
Basi di dati Progetto Logico per il Modello Relazionale (E
Modulo 5 DataBase ACCESS. Informazioni e Dati INFORMAZIONI vengono scambiate con linguaggio scritto o parlato DATI rappresentazione di informazioni in.
Progettazione di una base di dati Progettazione logica (modello relazionale)
I DBMS BASI DI DATI (DATABASE) Insieme organizzato di dati utilizzati
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
Progetto di basi di dati Laboratorio di diagnosi mediche.
Progettazione di Database
Progettazione di una base di dati Ciclo di vita di un sistema informativo Studio di fattibilità definisce le varie alternative possibili, i relativi costi.
Progettazione Logica Il prodotto della progettazione logica è uno schema logico che rappresenta le informazioni contenute nello schema E-R in modo corretto.
Strategie di progetto Si possono utilizzare le strategie tipiche dello sviluppo di un processo di ingegnerizzazione (es. ingegneria del software). Strategie.
Progettazione di una base di dati relazionale Terza forma normale.
Vincoli interrelazionali
S. Costantini 06/05/2006 (parte del materiale è tratto da slide del 2001 di Ceri-Atzeni) Normalizzazione di Schemi.
Sistemi di Elaborazione delle Informazioni
Metodologie e modelli per il progetto. 2 Introduzione alla progettazione Il problema: progettare una base di base di dati a partire dai suoi requisiti.
1 Esami Esame scritto: Tra 21 e 25 domande: 20 domande chiuse (20 punti),  5 domande aperte (10 punti) 1½ ore Esame orale/applicativo: Esercizi usando.
Progettazione database a cura di Roberta Mancini – matr CdLM in Marketing.
Eprogram informatica V anno.
Eprogram informatica V anno.
Cloud informatica V anno.
NORMALIZZAZIONE ESERCIZI. INTRODUZIONE La modellazione E-R ci ha consentito di descrivere schemi relazionali Lo strumento base per la modellizzazione.
1. CASO BIBLIOTECA ANALISI DEI REQUISITI Si vuole automatizzare la gestione prestiti dei libri di una biblioteca personale. La progettazione deve tener.
Normalizzazione. Introduzione Nell’organizzazione tradizionale degli archivi, si verificano alcuni problemi, quali: Ridondanza dei dati (gli stessi dati.
Progettazione di Database l Progettazione Concettuale: strutturazione della “realtà” che si vuole rappresentare secondo uno schema concettuale l Dallo.
Basi di dati - 09Marco Maggini1 Forme normali forme normali  Le forme normali verificano la qualità di uno schema di una base di dati relazionale  Presenza.
Transcript della presentazione:

LA PROGETTAZIONE DELLE BASI DI DATI ____ Progettazione logica 2^ parte

Schema E-R Carico Applicativo Schema E-R Ristrutturato Ristrutturazione dello schema E-R Analisi delle ridondanze Eliminazione delle generalizzazioni Partizionamento/Accorpamento di Entita e associazioni Scelta degli identificatori principali Schema E-R Ristrutturato

Ristrutturazione di schemi E-R Analisi delle Ridondanze: si decide se eliminare o no eventuali ridondanze. Eliminazione delle Generalizzazioni: tutte le generalizzazioni vengono analizzate e sostituite da altro. Partizionamento/Accorpamento di entità ed associazioni: si decide se partizionare concetti in piu’ parti o viceversa accorpare. Scelta degli identificatori primari: si sceglie un identificatore per quelle entita’ che ne hanno piu’ di uno

Analisi delle Ridondanze Attributi derivabili da altri attributi della stessa entità (fattura: importo lordo) Attributi derivabili da attributi di altre entità (o associazioni) (Acquisto: Importo totale da Prezzo ) Attributi derivabili da operazioni di conteggio (Città: Numero abitanti contando il numero di Residenza ) Associazioni derivabili dalla composizione di altre associazioni in presenza di cicli. (Docenza da Frequenza ed Insegnamento). Tuttavia i cicli non necessariamente generano ridondanze.

Dato derivabile Vantaggi: riduce gli accessi per calcolare il dato derivato. Svantaggi: occupazione di memoria e necessita’ di effettuare operazioni aggiuntive per mantenere il dato aggiornato. Decisione: mantenere o eliminare? Basta confrontare i costi di esecuzione delle operazioni sull’oggetto

Esempio Consideriamo l’esempio Città-Persona per l’anagrafica di una regione. Operazione 1: memorizza una persona nuova con la relativa città. Operazione 2: stampa tutti i dati di una città (incluso il numero di abitanti). Valutiamo gli indici di prestazione per l’attributo Numero Abitanti

Concetto Tipo Volume Operazione Tipo Frequenza Numero abitanti persona (1,1) (1,N) città residenza Concetto Tipo Volume Città E 200 Persona 1000000 Residenza R Operazione Tipo Frequenza Op. 1 I 500 al giorno Op. 2 2 al giorno

Valutazione in presenza della ridondanza Assumendo che il numero di abitanti richieda 4 byte il dato richiede 4*200 = 800 byte. Operazione 1 richiede un accesso in scrittura a Persona uno in scrittura a Residenza ed uno in lettura ed uno in scrittura (per incrementare il numero di abitanti) a Città ripetuto 500 volte si hanno 1500 accessi in scrittura e 500 in lettura. L’operazione 2 richiede un solo accesso in lettura a Città 2 volte al giorno. Supponendo che la scrittura ha un costo doppio rispetto ad una lettura si hanno 3500 accessi al giorno in presenza della ridondanza.

Valutazione in assenza della ridondanza Per l’operazione 1, un accesso in scrittura a Persona ed uno in scrittura a Residenza per un totale di 1000 accessi in scrittura al giorno. Per l’operazione 2 abbiamo bisogno di un acceso in lettura a Città (possiamo trascurare) e 5000 accessi in lettura a Residenza in media (persone/città) per un totale di 10.000 accessi in lettura al giorno. Il totale e’ di 12000 accessi in lettura al giorno. Quindi 8500 in più rispetto al caso di ridondanza contro meno di un solo Kilobyte di memoria in più. D’altra parte se l’operazione 2 fosse stata richiesta solo 1 volta ogni 4 settimane avremmo avuto 3500*24=84000 accessi ogni 4 settimane con ridondanza contro 58000 in assenza.

Eliminazione delle gerarchie il modello relazionale non rappresenta le gerarchie, le gerarchie sono sostituite da entità e associazioni: K E 1) mantenimento delle entità con associazioni 2) collasso verso l’alto 3) collasso verso il basso A E1 E2 A1 A2 l’applicabilità e la convenienza delle soluzioni dipendono dalle proprietà di copertura e dalle operazioni previste

mantenimento delle entità tutte le entità vengono mantenute le entità figlie sono in associazione con l’entità padre le entità figlie sono identificate esternamente tramite l’associazione E K A (0,1) (0,1) (1,1) (1,1) E1 E2 A2 A1 questa soluzione è sempre possibile, indipendentemente dalla copertura

mantenimento entità - es.: cod progetto cod progetto desc desc (0,1) (0,1) n_schede (1,1) (1,1) prog_sw prog_hw prog_sw prog_hw (1,n) mesi uomo (1,n) n_schede usa mesi uomo (0,n) usa (0,n) comp_hw comp_hw

eliminazione delle gerarchie Il collasso verso l’alto riunisce tutte le entità figlie nell’entità padre K E (0,1) A A1 (0,1) E K A A2 E1 E2 selettore A1 A2 selettore è un attributo che specifica se una istanza di E appartiene a una delle sottoentità

ISA: collasso verso l’alto Il collasso verso l’alto favorisce operazioni che consultano insieme gli attributi dell’entità padre e quelli di una entità figlia: in questo caso si accede a una sola entità, anziché a due attraverso una associazione gli attributi obbligatori per le entità figlie divengono opzionali per il padre si avrà una certa percentuale di valori nulli

ISA: collasso verso l’alto tesi (0,1) studente matr. matr. studente cogn. cogn. tesi (p,e) stage stage (0,1) selettore laureando diplomando (1,1) (1,1) (0,1) (0,1) denom. cod_r relatore azienda relatore azienda cod_r denom. il dominio di sel è (L,D,N)

ISA: collasso verso l’alto studente(123, rossi) laureando(123, DFD) studente(218, bianchi) studente(312, verdi) diplomando(312, ST) (selettore) studente(123,rossi, L, DFD, NULL) studente(218,bianchi, N, NULL, NULL) studente(312,verdi, D, NULL, ST)

ISA: collasso verso il basso si elimina l’entità padre trasferendone gli attributi su tutte le entità figlie una associazione del padre è replicata, tante volte quante sono le entità figlie la soluzione è interessante in presenza di molti attributi di specializzazione (con il collasso verso l’alto si avrebbe un eccesso di valori nulli) favorisce le operazioni in cui si accede separatamente alle entità figlie

ISA: collasso verso il basso limiti di applicabilità: se la copertura non è totale non si può fare: dove mettere gli E che non sono né E1, né E2 ? se la copertura non è esclusiva introduce ridondanza: per una istanza presente sia in E1 che in E2 si rappresentano due volte gli attributi di E K E A E1 E2 A1 A2 E1 E2 K A A1 A2 A K

collasso verso il basso: es. iscritto (1,n) cf dipendente sindacato cognome (0,1) (0,1) dirige (t,e) mansione (1,n) qualifica classe impiegato operaio dirigente (1,n) (1,n)

collasso verso il basso: es. (0,n) sindacato (0,n) (0,n) mansione (0,1) (0,1) (0,1) qualifica classe impiegato operaio (1,1) (1,n) dirigente (1,n) cf co. cf co. cf co. (1,1) (0,n) (1,1) (0,n) dir_d dir_o dir_i (0,n)

Partizionamento/Accorpamento Il principio generale e’ il seguente: gli accessi si riducono separando attributi di uno stesso concetto che vengono acceduti da operazioni diverse raggruppando attributi di concetti diversi che vengono acceduti dalle medesime operazioni

Partizionamento di entità

Partizionamento verticale ed orizzontale Nell’esempio precedente vengono create due entità e gli attributi vengono divisi: partizionamento verticale Se invece si suddivide in due entità con gli stessi attributi (ad esempio Analista e Venditore) con operazioni distinte sulle due si ha il partizionamento orizzontale

Eliminazione di attributi multivalore Il modello relazionale non li supporta (anche se alcuni sistemi moderni li ammettono)

Accorpamento di entità E’ l’operazione inversa del partizionamento

Quando si fa un accorpamento L’accorpamento precedente è giustificato se le operazioni più frequenti su Persona richiedono sempre i dati relativi all’appartamento e quindi vogliamo risparmiare gli accessi alla relazione che li lega. Normalmente gli accorpamenti si fanno su relazioni uno ad uno, raramente su uno a molti mai su molti a molti.

Partizionamento/Accorpamento di associazioni

Scelta della chiave primaria È necessario che tra i diversi identificatori di una entità venga designata una chiave primaria: per la chiave primaria occorrerà, infatti, che il DBMS sia provvisto di strumenti per garantire l’unicità dei valori criteri euristici di scelta: primo: scegliere la chiave che è usata più frequentemente per accedere all’entità secondo: si preferiscono chiavi semplici a chiavi composte, interne anziché esterne

Identificatori esterni una componente di identificazione esterna di una entità E2 da una entità E1 attraverso una associazione R comporta il trasporto della chiave primaria di E1 su E2 codice (E1) stabilimento denom (1,n) lavora (R) (1,1) matr dipendente (E2) cognome

Identificatori esterni in questo modo l’associazione è rappresentata attraverso la chiave, e può essere eliminata la chiave trasportata è chiave esterna in presenza di più identificazioni in cascata, è necessario iniziare la propagazione dall’entità che non ha identificazioni esterne codice stabilimento codice matr dipendente cognome

Traduzione standard Entità ed Associazioni molti a molti ogni entità è tradotta con una relazione con gli stessi attributi la chiave è la chiave (o identificatore) dell’entità stessa ogni associazione è tradotta con una relazione con gli stessi attributi, cui si aggiungono gli identificatori di tutte le entità che essa collega (già visto) la chiave è composta dalle chiavi delle entità collegate

Traduzione standard Entità ed Associazioni molti a molti K1 A1 E1 B1 E1 (K1, A1, B1,...) E2 (K2, A2, B2,...) R (K1,K2, AR, BR,...) (1,n) AR R BR (1,n) K2 A2 E2 B2

Traduzione standard, Esempio matr cognome studente nome STUDENTE (m, c, n) CORSO (c, d) PIANO_S (c,m, a) (1,n) anno piano_s (1,n) codice denom. corso

Traduzione standard, Esempio CREATE TABLE STUDENTE (MATR... NOT NULL, …, NOME... , PRIMARY KEY (MATR)); CREATE TABLE CORSO (CODICE... NOT NULL, DENOM ... , PRIMARY KEY (CODICE)); CREATE TABLE PIANO_S (MATR... NOT NULL, CODICE... NOT NULL, ANNO… PRIMARY KEY (MATR, CODICE), FOREIGN KEY (MATR) REFERENCES STUDENTE FOREIGN KEY (CODICE) REFERENCES CORSO);

Altre traduzioni La traduzione standard è sempre possibile ed è l’unica possibilità per le associazioni N a M Altre forme di traduzione delle associazioni sono possibili per altri casi di cardinalità (1 a 1, 1 a N) Le altre forme di traduzione fondono in una stessa relazione entità e associazioni

Associazione binaria 1 a N traduzione standard: K1 A1 E1 B1 E1 (K1, A1, B1) E2 (K2, A2, B2) R (K1,K2, AR, BR) (1,1) AR R BR (1,n) K2 A2 E2 B2

Associazione binaria 1 a N Se E1 partecipa con cardinalità (1,1) può essere fusa con l’associazione, ottenendo una soluzione a due relazioni: E1(K1, A1, B1, K2, AR, BR) E2(K2, A2, B2) Se E1 partecipa con cardinalità (0,1) la soluzione a due relazioni ha valori nulli in K2, AR, BR per le istanze di E1 che non partecipano all’associazione

Associazione binaria 1 a N codice codice nome_p nome_c nome_c comune comune abitanti (1,1) abitanti appartiene (1,n) nome_p nome_p provincia provincia regione regione (senza attributi sull’associazione)

Associazione binaria 1 a N CREATE TABLE PROVINCIA (NOME_P ... NOT NULL, REGIONE ... PRIMARY KEY (NOME_P)); CREATE TABLE COMUNE (CODICE ... NOT NULL, NOME_C ... ABITANTI ..., NOME_P ... NOT NULL PRIMARY KEY (CODICE), FOREIGN KEY NOME_P REFERENCES PROVINCIA(NOME_P));

Associazione binaria 1 a N, Esempio p_iva p_iva nome cliente nome cliente telefono (0,n) telefono sconto invia (1,1) p_iva numero numero ordine data ordine data sconto (con attributi sull’associazione)

Associazione binaria 1 a N, Esempio traduzione con due relazioni: CREATE TABLE CLIENTE ( P_IVA….. NOT NULL, NOME …, TELEFONO …, PRIMARY KEY (P_IVA)); CREATE TABLE ORDINE ( NUMERO ... NOT NULL, DATA ... P_IVA ... NOT NULL, SCONTO ..., PRIMARY KEY (NUMERO), FOREIGN KEY P_IVA REFERENCES CLIENTE);

Associazione binaria 1 a N, Esempio con tre relazioni: CREATE TABLE CLIENTE (P_IVA….. NOT NULL, NOME …,TELEFONO …, PRIMARY KEY (P_IVA)); CREATE TABLE ORDINE (NUMERO ... NOT NULL, DATA ... PRIMARY KEY (NUMERO)); CREATE TABLE INVIA (P_IVA ... NOT NULL, NUMERO ... NOT NULL, SCONTO ..., PRIMARY KEY (NUMERO) FOREIGN KEY P_IVA REFERENCES CLIENTE FOREIGN KEY NUMERO REFERENCES ORDINE);

Associazione binaria 1 a N, Esempio Con identificazione esterna n_stab nome stabili- mento reparto parte (1,1) (1,n) (1,n) macchina in (1,1) c_inv num STABILIMENTO (N_STAB …..); REPARTO (NOME, N_STAB, ......); MACCHINA (NUM, NOME, N_STAB, …);

Associazione binaria 1 a 1 Traduzione con una relazione nome_c comune abitanti (1,1) data amministra (1,1) nome_s sindaco partito CREATE TABLE AMMINISTRAZIONE( NOME_C ... NOT NULL, ABITANTI ..., NOME_S ... NOT NULL UNIQUE, INDIRIZZO ..., DATA PRIMARY KEY (NOME_C));

Associazione binaria 1 a 1 Traduzione con una relazione Consideriamo due entità E1(K1,…) e E2(K2,…) in associazione 1-1 tra loro e che vogliamo tradurre con una sola relazione: se le cardinalità minime sono entrambe 1 la chiave può essere indifferentamente K1 o K2. Si sceglierà quella più significativa se la cardinalità di E2 è 0,1 e quella di E1 è 1,1 allora la chiave sarà K2 ; E2 è l’entità con maggior numero di istanze alcune della quali non si associano, ci saranno quindi valori nulli in corrispondenza di K1, K1 in questo caso non potrebbe essere scelta se la cardinalità è 0,1 da entrambe le parti allora le relazioni saranno due per l’impossibilità di assegnare la chiave all’unica relazione a causa della presenza di valori nulli sia su K1 che su K2

Associazione binaria 1 a 1 Traduzione con due relazioni l’associazione può essere compattata con l’entità che partecipa obbligatoriamente (una delle due se la partecipazione è obbligatoria per entrambe) la discussione sulla chiave è analoga al caso di traduzione con una relazione visto prima E1 (K1, A1, B1,...) E2 (K2, A2, B2,... K1, AR, BR)

Associazione binaria 1 a 1 Traduzione con tre relazioni la chiave della relazione che traduce l’associazione può essere indifferentemente K1 o K2 non ci sono problemi di valori nulli E1 (K1, A1, B1,...) E2 (K2, A2, B2,...) R (K1, K2, AR, BR,...)

Necessità della ridenominazione nel caso di relazioni ricorsive nome costo codice prodotto (0,N) (0,N) q.tà composizione Prodotto(Codice,Nome,Costo) Composizione(Composto,Componente,Quantita’) Esiste un vincolo referenziale tra Composto,Componente e l’attributo Codice di Prodotto.

Associazioni con più entità Fornitore(PartitaIVA, NomeDitta) Prodotto(Codice,Genere), Dipartimento(Nome,Telefono) Fornitura(Fornitore,Prodotto,Dipartimento,Quantità)

Rappresentazione Grafica delle Traduzioni Permette di evidenziare i vincoli referenziali codice cognome impiegato stip età (0,n) partecipazione (1,n) nome progetto budget Impiegato(Matricola,Cognome,Stipendio) Progetto(Codice,Nome,Budget) Partecipazione(Matricola,Codice,Data inizio) Data consegna

Traduzione di schemi Complessi

Traduzione delle entita’ Con identificatore interno : E3(A31,A32) E4(A41,A42) E5(A51,A52) E6(A61,A62,A63) Con identificatore esterno : E1(A11,A51,A12) E2(A21,A11,A51,A22)

Traduzioni delle Associazioni Le relazioni R1 ed R12 sono state tradotte con l’identificazione esterna di E1 ed E2. Per tradurre R3 scarichiamo su E5 con opportuni rinominamenti gli attributi che individuano E6 nonche’ l’attributo AR3 di R3 Facciamo lo stesso per R4 ed R5 scaricando tutto su E5(rinominando R3 come A61R3 ed R4 con A61R4) Infine l’unica associazione R2 molti a molti viene tradotta R2(A21,A11,A51,A31,A41,AR21,AR22)

Schema Finale E1(A11,A51,A12) E2(A21,A11,A51,A22) E3(A31,A32) E5(A51,A52,A61R3,A62R3,AR3,A61R4, A62R4,A61R5,A62R5,AR5) E6(A61,A62,A63) R2(A21,A11,A51,A31,A41,AR21,AR22)

Progetto di basi di dati Laboratorio di diagnosi mediche

Descrizione e specifiche Si vuole realizzare il progetto della base di dati di laboratorio di diagnosi medica, partendo da un insieme di requisiti. Le fasi da svolgere vanno dall’analisi dei requisiti, alle varie fasi dell’analisi fino all’implementazione delle operazioni previste. Durante il progetto è necessario produrre un insieme di documenti, che costituiscono appunto la documentazione del progetto: Analisi dei requisiti; Lo schema concettuale, tramite il modello E-R, presentato a diversi gradi di raffinamento; Una descrizione delle operazioni previste e le relative tavole di carico; Lo schema ottenuto per ristrutturazione dalla prima fase della progettazione logica. Lo schema logico finale. Un listato delle interrogazioni e delle istruzioni (aggiornamenti, inserimenti, cancellazioni) SQL relative alle operazioni previste; Contenuto di test della base di dati e nella stampa dei risultati delle interrogazioni su tali dati.

Specifiche sui dati Si vuole progettare il sistema informativo di un laboratorio di diagnosi medica. Diversi tipi di persone sono coinvolte nel laboratorio: medici, assistenti, pazienti. Per i pazienti, rappresentiamo alcuni dati anagrafici, quali il nome, il cognome, l’età, l’indirizzo, il telefono ed il codice fiscale (che li identifica). Per i medici e gli assistenti, oltre ai dati anagrafici abbiamo un codice interno che li identifica. I clienti del laboratorio (circa 100000) hanno bisogno di visite mediche e/o analisi che vanno riservate in anticipo, fissando data e ora. La storia delle analisi e delle visite degli ultimi 12 mesi deve essere memorizzata nel sistema. Le prestazioni offerte dal laboratorio appartengono a varie tipologie, identificate da un codice e caratterizzate da una descrizione. Ogni tipo di prestazione ha un costo che dipende dal tipo di paziente.

Specifiche sui dati Ogni dottore (150) può effettuare solo determinati tipi di analisi e visite. Ogni assistente (circa 300) può effettuare solo determinati tipi di analisi. Le analisi (circa 200 al giorno) e le visite (circa 100 al giorno) sono effettuate in apposite stanze. Ogni prestazione offerta ha un esito, caratterizzata da una descrizione, una data ed un prezzo. L’esito di ogni analisi va approvato con il nome di un dottore. Gli esiti delle analisi e delle visite devono essere memorizzate in una cartella del paziente, che registra la storia delle ultime 30 visite e/o analisi. Di ogni cartella va memorizzata la data di apertura. Le prestazioni possono essere effettuate o come esito di altre prestazioni o indipendentemente. Per gli assistenti, che sono dipendenti dal laboratorio, vogliamo rappresentare il loro livello e lo stipendio. Per i dottori, che sono considerati consulenti del laboratorio, rappresentiamo un valore percentuale per il calcolo delle parcelle, la specializzazione, l’ente di appartenenza e la disponibilità settimanale. Il laboratorio rilascia delle fatture per gli esiti di analisi e visite. Una fattura può riferirsi a diverse prestazioni di uno stesso cliente.