Analisi dei dati
Entità
Le entità che possono essere individuate nel problema sono:
Medico, per rappresentare l’insieme dei medici, di base e specialisti che operano nello studio associato (l’anagrafica è unica e un attributo distingue le due tipologie di medico).
Prestazione, per rappresentare i servizi offerti dallo studio.
Paziente, per l’anagrafica delle persone che richiedono le prestazioni.
Visita, per rappresentare il dettaglio del quadro orario delle singole prestazioni nei giorni della settimana.
Prenotazione, per le visite prenotate dai pazienti in date specifiche.
Attributi
Gli attributi di Medico sono: Matricola (chiave), Cognome, Nome, Data di nascita, Genere (M/F), Specializzazione.
In particolare, poiché viene richiesto di memorizzare i dati professionali dei medici, l’attributo Specializzazione, se valorizzato, contiene la specialità professionale del medico; se nullo,indica un medico di base.
Tutti gli attributi sono di tipo carattere, ad eccezione di Data di Nascita, che è di tipo data.
Gli attributi di Prestazione sono: Codice (chiave), Descrizione, Durata media in minuti, Costo, eventuale Ticket.
Tutti gli attributi sono di tipo numerico, ad eccezione di Descrizione.
Gli attributi di Paziente sono: Codice assistito (chiave), Cognome, Nome, Data di nascita, Genere (M/F), Codice fiscale (per i pagamenti), Telefono per un recapito.
Tutti gli attributi sono di tipo carattere, ad eccezione di Data di Nascita, che è di tipo data.
Gli attributi di Visita sono: ID (chiave), Giorno della settimana, Ora, Numero ambulatorio dove si svolge.
Tutti gli attributi sono di tipo numerico, ad eccezione di Giorno.
Gli attributi di Prenotazione sono: ID (chiave), Data, Effettuata.
L’attributo Effettuata (attributo booleano) assume il valore Vero quando il paziente ha usufruito della visita.
ID è di tipo numerico, la Data della prenotazione è di tipo data.
Associazioni
Tra l’entità Medico e l’entità Visita esiste un’associazione 1:N, perché ogni medico svolge l’attività in diversi giorni della settimana, ma ogni visita (in un certo giorno e ora della settimana) è affidata a un solo medico.
Tra l’entità Prestazione e l’entità Visita esiste un’associazione 1:N, perché per ogni prestazione sono presenti più visite nel quadro orario, ma ogni visita del quadro orario si riferisce a una sola prestazione.
Tra l’entità Visita e l’entità Prenotazione esiste un’associazione 1:N, perché ogni visita può essere oggetto di molte prenotazioni, ma ogni prenotazione viene registrata con riferimento a una sola visita tra quelle previste nel quadro orario.
Tra l’entità Paziente e l’entità Prenotazione esiste un’associazione 1:N, perché ogni paziente può prenotare più visite, ma ogni prenotazione viene registrata con riferimento a un solo paziente.
Modello E/R
Regole di lettura
Ogni medico può svolgere una o più visite, ogni visita deve essere svolta da un solo medico.
Ogni prestazione può programmare una o più visite, ogni visita deve essere programmata per una sola prestazione.
Ogni visita può essere richiesta da una o più prenotazioni, ogni prenotazione deve richiedere una sola visita.
Ogni paziente può registrare una o più prenotazioni, ogni prenotazione deve essere registrata per un solo paziente.
Tabelle
Medici (Matricola, Cognome, Nome, DataNascita, Genere, Specializzazione)
Prestazioni (Codice, Descrizione, DurataMedia, Costo, Ticket)
Pazienti (CodiceAssistito, Cognome, Nome, DataNascita, Genere, CF, Telefono)
Visite (ID, Giorno, Ora, NumAmbulatorio, Matricola, Codice)
Prenotazioni (ID, DataPrenot, Effettuata, CodiceAssistito, IDVisita)
Le associazioni 1:N sono state rappresentate aggiungendo nelle tabelle Visite e Prenotazioni le chiavi esterne (indicate in corsivo).
Descrizione dei dati
Tabella |
Attributo |
Chiave |
Formato |
Dimensione |
Obbligatorio |
Indicizzato |
Medici |
Matricola
Cognome
Nome
DataNascita
Genere
Specializzazione |
PK |
Carattere
Carattere
Carattere
Data
Carattere
Carattere |
5
30
20
8
1
20 |
Sì
Sì
Sì |
Sì |
Prestazioni |
Codice
Descrizione
TempoMedio
Costo
Ticket |
PK |
Carattere
Carattere
Numerico
Numerico
Numerico
|
5
30
intero
reale
reale
|
Sì
|
Sì |
Pazienti |
CodAssistito
Cognome
Nome
DataNascita
Genere
CF
Telefono
|
PK |
Carattere
Carattere
Carattere
Data
Carattere
Carattere
Carattere |
7
30
20
8
1
16
12 |
Sì
Sì
Sì |
Sì |
Visite |
ID
Giorno
Ora
NumAmbulatorio
Matricola
Codice |
PK
FK
FK |
Numerico
Carattere
Numerico
Numerico
Carattere
Carattere |
Intero autoincr
3
reale
reale
5
5 |
Sì
|
Sì |
Prenotazioni |
ID
DataPrenot
Effettuata
CodAssistito
IDVisita |
PK
FK
FK |
Numerico
Data
Booleano
Carattere
Numerico |
Intero autoincr
8
7
intero |
Sì
|
Sì |
Interrogazioni
1. elenco giornaliero delle visite prenotate per ogni singolo medico;
Select Medici.Cognome, Medici.Nome, Visite.Ora, Visite.NumAbulatorio
From Medici, Visite, Prenotazioni
Where Medici.Matricola = Visite.Matricola AND
Visite.ID = Prenotazioni.IDVisita AND
Prenotazioni.DataPrenot = curdate() AND
Prenotazioni.Effettuata = false
Order By Medici.Cognome, Medici.Nome;
2. elenco giornaliero delle visite prenotate e non effettuate;
Select Visite.Ora, Visite.NumAmbulatorio, Medici.Cognome
From Medici, Visite, Prenotazioni
Where Medici.Matricola = Visite.Matricola AND
Visite.ID = Prenotazioni.IDVisita AND
Prenotazioni.DataPrenot = curdate() AND
Prenotazioni.Effettuata = false
Order By Visite.Ora;
3. elenco settimanale contenente gli appuntamenti di ciascun medico suddivisi per giorno e per
ora;
Select Medici.Cognome, Medici.Nome, Prenotazioni.DataPrenot, Visite.Giorno, Visite.Ora
From Medici, Visite, Prenotazioni
Where Medici.Matricola = Visite.Matricola AND
Visite.ID = Prenotazioni. IDVisita AND
Prenotazioni.DataPrenot BETWEEN @data1 AND @data2
Order By Medici.Cognome, Medici.Nome, Prenotazioni.DataPrenot;
4. elenco cronologico delle visite usufruite da ciascun paziente.
Select Pazienti.Cognome, Pazienti.Nome, Prenotazioni.DataPrenot, Prenotazioni.IDVisita
From Pazienti, Prenotazioni
Where Pazienti.CodAssistito = Prenotazioni.CodAssistito AND
Prenotazioni.Effettuata = true
Order By Pazienti.Cognome, Pazienti.Nome, Prenotazioni.DataPrenot;
|