BD Vaccini
Progettazione Concettuale
Requisiti Iniziali
Si vuole realizzare una base di dati per la gestione di una campagna vaccinale su scala nazionale in risposta alla recente epidemia di COVID19 che ha colpito il Paese.
Ogni cittadino è un potenziale vaccinando di cui sono noti nome, cognome, età, città ed indirizzo di residenza, codice fiscale. I cittadini sono ulteriormente suddivisibili secondo l’occupazione in personale sanitario e scolastico, categorie fragili (es, soggetti immunodepressi) e altri.
Sono disponibili tre tipi di vaccino: COVIDIN, CORONAX e FLUSTOP. Ogni vaccino ha un’età minima e massima di somministrazione e una certa efficacia. Ogni vaccino può richiedere una (FLUSTOP) o due (COVIDIN, CORONAX) somministrazioni. Nel caso siano necessarie due somministrazioni, l’intervallo temporale minimo tra prima e seconda dose varia da vaccino a vaccino. Ogni vaccino è organizzato in lotti con data di produzione e scadenza. Di ogni lotto si conoscono le reazioni allergiche eventualmente riscontrate nel Paese.
I centri vaccinali sono distribuiti nelle varie città del Paese a diversi indirizzi e possono esserci più centri per ogni città; ogni centro vaccinale dispone in ogni momento di zero o più fiale di uno o più vaccini ed a ogni centro afferiscono uno o più medici.
Ogni cittadino può fare richiesta di vaccinazione prenotando tramite un sito web o una app per smartphone (Figura 1), lasciando anche un recapito per essere ricontattati. Nel caso del sito web, é richiesto un indirizzo email al posto del numero di cellulare.
Una task force di operatori riceve le richieste di vaccinazione ed organizza un appuntamento vaccinale come segue. Ogni cittadino vaccinando può essere indirizzato esclusivamente ad un centro localizzato nella città di residenza. Personale sanitario e personale scolastico possono accedere ai vaccini COVIDIN e CORONAX. I soggetti fragili possono accedere solo a CORONAX e FLUSTOP. Gli altri soggetti non possono accedere a CORONAX.

Figure 1: Possibile interfaccia web per la prenotazione
Nel caso il cittadino abbia avuto precedenti reazioni allergiche, non può essere raccomandato nessun vaccino per cui almeno un lotto abbia registrato una segnalazione di reazione avversa negli ultimi 30 giorni. Il cittadino viene indirizzato al centro più vicino alla residenza dove vi sia disponibilità di almeno una fiala di vaccino compatibile con i vincoli sopra. Nel caso in cui il vaccinando abbia positività pregressa ad un test COVID, viene specificato che la seconda dose del vaccino, se prevista, non deve essere somministrata. La persona riceve una convocazione al contatto indicato contenente data, ora, centro di vaccinazione, tipo di vaccino da somministrare. Il cittadino vaccinando, munito di convocazione, si reca in data indicata al centro vaccinale indicato.
Ogni medico è identificato tramite i medesimi dati registrati per i cittadini, e l’afferenza ad un particolare centro vaccinale. I medici si suddividono in medici di base e altri, dove i primi possono somministrare solo vaccini a doppia dose, mentre i secondi sono abilitati anche alla somministrazione di vaccini a singola dose. Al momento dell’arrivo del vaccinando al centro, un medico fra quelli abilitati a somministrare il vaccino richiesto si prende in carico il vaccinando.
In seguito ad ogni vaccinazione, il medico tiene il vaccinato sotto osservazione per 15 minuti per monitorare eventuali effetti allergici relativamente al particolare lotto di vaccino utilizzato. Se non si verificano particolari effetti avversi e il vaccino richiede un richiamo ed il soggetto non ha pregressi di positività COVID, il medico aggiorna la convocazione con un secondo appuntamento per la somministrazione presso la stessa sede dello stesso vaccino in data compatibile con le specifiche del vaccino. Al contrario, se si verifica un effetto allergico, il medico emana un report che indica data e luogo della vaccinazione, tipo vaccino e numero lotto che hanno causato l’allergia al paziente in questione. Il sistema deve permettere inoltre di eseguire le seguenti operazioni:
- Ogni sera viene stilato un rapporto che indica quante vaccinazioni sono state fatte nella giornata in tutti i centri vaccinali suddivise per categoria di cittadino.
- Ogni sera, ogni centro vaccinale fa l’inventario del numero di dosi ancora disponibili per ogni vaccino.
- Ogni fine settimana, viene stilato un report che indica quante vaccinazioni sono state fatte per ogni vaccino per ognuna delle categorie di cittadini e quante di queste abbiano causato allergie
\(\pagebreak\)
Requisiti Rivisti
Si vuole realizzare una base di dati per la gestione di una campagna vaccinale su scala nazionale in risposta alla recente epidemia di COVID19 che ha colpito il Paese.
Per i cittadini
rappresentiamo nome, cognome, età, città, indirizzo di residenza, codice fiscale, numero di cellulare, email.
I cittadini
possono essere personale sanitario, scolastico, categorie fragili (es. soggetti immunodepressi) e altri.
Per i vaccini
rappresentiamo nome (COVIDIN, CORONAX e FLUSTOP), etá minima di somministrazione, etá massima di somministrazione, efficacia, numero di somministrazioni, intervallo tra dosi.
Per i lotti
rappresentiamo il nome del vaccino, data di produzione, data di scadenza.
Per le reazioni allergiche
rappresentiamo la reazione, il lotto, codice fiscale del cittadino.
Per i centri vaccinali
rappresentiamo cittá, indirizzo.
Possono esserci più centri per ogni città.
Ogni centro vaccinale
dispone in ogni momento di zero o più fiale di uno o più vaccini
.
Ad ogni centro vaccinale
afferiscono uno o più medici
.
Per i medici
rappresentiamo nome, cognome, etá, cittá, indirizzo di residenza, codice fiscale, centro vaccinale.
Ogni medico
afferisce ad un particolare centro vaccinale
.
I medici
si suddividono in medici di base e altri.
Ogni cittadino
può fare richiesta di vaccinazione prenotando tramite un sito web o una app per smartphone (Figura 1), lasciando anche un recapito per essere ricontattati. Nel caso del sito web, é richiesto un indirizzo email al posto del numero di cellulare.
Una task force di operatori riceve le richieste di vaccinazione ed organizza un appuntamento vaccinale come segue.
Ogni cittadino
vaccinando può essere indirizzato esclusivamente ad un centro localizzato nella città di residenza.
Personale
sanitario e personale scolastico possono accedere ai vaccini COVIDIN e CORONAX.
I soggetti fragili
possono accedere solo a CORONAX e FLUSTOP.
Gli altri
soggetti non possono accedere a CORONAX.
Nel caso il cittadino
abbia avuto precedenti reazioni allergiche
, non può essere raccomandato nessun vaccino
per cui almeno un lotto abbia registrato una segnalazione di reazione avversa negli ultimi 30 giorni.
Il cittadino
viene indirizzato al centro più vicino alla residenza dove vi sia disponibilità di almeno una fiala di vaccino compatibile con i vincoli sopra.
Nel caso in cui il vaccinando
abbia positività pregressa ad un test COVID, viene specificato che la seconda dose del vaccino, se prevista, non deve essere somministrata.
La persona riceve una convocazione
al contatto indicato contenente data, ora, centro di vaccinazione, tipo di vaccino da somministrare.
Il cittadino vaccinando, munito di convocazione, si reca in data indicata al centro vaccinale indicato.
Al momento dell’arrivo del vaccinando al centro, un medico fra quelli abilitati a somministrare il vaccino richiesto si prende in carico il vaccinando.
I medici di base possono somministrare solo vaccini a doppia dose, mentre gli altri sono abilitati anche alla somministrazione di vaccini a singola dose
\(\pagebreak\)
Glossario dei termini
termine | descrizione | sinonimi | collegamenti |
---|---|---|---|
cittadino | persona residente in Italia, puó essere | vaccinando, persona, | vaccini, cittá |
personale sanitario, scolastico, altro | paziente, soggetto | reazioni | |
medico | di base o altri, afferiscono ad un centro, | centro, cittá | |
amministrano le dosi dei vaccini | |||
vaccinazione | di un cittadino con un vaccino specifico, | cittadino, | |
con richiamo se necessario | vaccino | ||
vaccino | COVIDIN, CORONAX o FLUSTOP | vaccinazione | |
convocazione | di un cittadino ad un centro vaccinale | vaccinazione, | |
per un vaccino | vaccino, | ||
cittadino | |||
lotto | unitá organizzativa di un vaccino, | reazioni allergiche, | |
ha una data di produzione e scadenza, | vaccino | ||
reazione allergica | reazioni riscontrate in Italia, | reazione avversa, | cittadino, lotto |
da un cittadino verso un lotto | effetti avversi, | ||
allergia | |||
centro vaccinale | centro in cui i cittadini possono vaccinarsi | centro | cittá |
cittá | in cui si trovano i centri vaccinali | residenza | centro vaccinale, |
cittadino | |||
fiala | singola dose di vaccino | dose | lotto, vaccino, |
centro vaccinale |
\(\pagebreak\)
Schema ER Iniziale

Business Rules
- Un
cittadino
puó accedere solo a centri vaccinali della propria cittá di residenza - Un
cittadino
per un datovaccino
deve al massimo avere confermato \(n\) appuntamenti con \(n\) uguale al Numero Somministrazioni del Vaccino - Un
cittadino
per poter ricevere unvaccino
deve avere Etá compresa tra le etá minima e massima di somministrazione - Un
cittadino
con positivitá pregressa non deve ricevere seconda dose se specificata - Il
tipo
di uncittadino
deve corrispondere ad una categorizzazione: fragile, personale sanitario, personale scolastico, altro - Un
cittadino
deve ricevere un datovaccino
in base alla propria categorizzazione:- fragile,
CORONAX
,FLUSTOP
- personale sanitario,
COVIDIN
,CORONAX
- personale scolastico,
COVIDIN
,CORONAX
- nessuno dei precedenti,
CORONAX
- fragile,
- Un
cittadino
che ha riscontratoreazioni avverse
non puó accedere a dosi il cui lotto ha riscontrato almeno una reazione avversa negli ultimi 30 giorni Medici di base
somministrano solo vaccini a doppia dose- Il
numero di fiale disponibili
per ogni lotto di cui dispone uncentro vaccinale
va tenuto aggiornato in base alle vaccinazione fatte intervallo dosi
di unvaccino
deve essereNOT-NULL
in casi di piú dosi- le
fiale
disponibili per una vaccinazioni devono essere associate ad unlotto
non scaduto alla data odierna
\(\pagebreak\)
Progettazione Logica
Tavola dei Volumi
Concetto | Tipo | Volume |
---|---|---|
Cittadino | E | 60000000 |
Fragile | E | 5000000 |
Personale Sanitario | E | 800000 |
Personale Scolastico | E | 1000000 |
Altri | E | 55200000 |
Medico | E | 400000 |
Vaccino | E | 3 |
Lotto | E | 2000 |
Centro Vaccinale | E | 8000 |
Reazione Allergica | E | 1000 |
Vaccinazione | E | 20000000 |
Convocazione | E | 21000000 |
Appuntamento | A | 21000000 |
Incarico | A | 400000 |
Reazione | A | 1000 |
Locazione | A | 20000000 |
Amministra | A | 20000000 |
Afferisce | A | 400000 |
Disponibile | A | 24000 |
Prodotto | A | 2000 |
Giustificazioni per i volumi
- Approssimazione Cittadini in Italia
- Sottoinsiemi dei Cittadini stimati in base al numero di Cittadini e Medici
- Approssimazione Medici in Italia
- Numero Vaccini dai requisiti
- Approssimazione Lotti in assenza di dati
- Centri vaccinali in base ai comuni italiani
- Reazioni allergiche in base ai dati
- Vaccinazioni supponendo base dati nel corso della campagna vaccinale
- Convocazioni supponendole maggiori delle Vaccinazioni
- Appuntamenti, in base al numero di Convocazioni
- Incarichi in base al numero di Medici
- Reazioni in base al numero di Reazioni allergiche
- Locazioni in base al numero di Vaccinazioni
- Amministrazioni in base al numero di Vaccinazioni
- Afferisce, in base al numero di Medici
- Disponibile, supponendo almeno 3 lotti diversi per ogni Centro Vaccinale
- Prodotto, in base al numero di lotti
Tavola delle Operazioni
Operazione | Descrizione | Tipo | Frequenza |
---|---|---|---|
1 | Rapporto delle vaccinazioni della giornata | B | 1 al giorno |
in tutti i centri vaccinali | |||
suddivise per categoria di cittadino | |||
2 | Inventario del numero di dosi disponibili | B | 1 al giorno |
per ogni vaccino di un dato centro vaccinale | |||
3 | Rapporto delle vaccinazioni per ogni vaccino | B | 1 a settimana |
per ognuna delle categorie di cittadini | |||
e quante di queste abbiano causato | |||
reazioni allergiche | |||
4 | Aggiunta di un Cittadino | I | 80000 al giorno |
5 | Aggiunta di una Convocazione | I | 120000 al giorno |
6 | Aggiunta di una Vaccinazione | I | 100000 al giorno |
7 | Aggiunta di un Lotto | I | 2 a settimana |
8 | Aggiunta di un Medico | I | 2 a settimana |
9 | Inserimento di una Reazione Allergica ad | I | 3 a settimana |
una vaccinazione (Report) |
\(\pagebreak\)
Analisi delle Ridondanze
- Ridondanza:
reazioni allergiche
verso un lotto come attributo dello stesso- impatta le operazioni
3
,9
- impatta le operazioni
Operazione 3
Con Ridondanza:
Lo schema di visita é:
Vaccinazione
- Perfezionata
- Convocazione
- Appuntamento
Cittadino
-Fragile
-Personale Scolastico
-Personale Sanitario
-Altri
Vaccino
-Prodotto
-Lotto
La tavola degli accessi é:
Concetto | Costrutto | Accessi | Tipo |
---|---|---|---|
Vaccinazione | E | 20M | L |
Perfezionata | A | 20M | L |
Convocazione | E | 20M | L |
Appuntamento | A | 20M | L |
Cittadino | E | 20M | L |
Fragile | E | 1,66M | L |
Personale Scolastico | E | 260K | L |
Personale Sanitario | E | 320K | L |
Altri | E | 17,76M | L |
Vaccino | E | 3 | L |
Prodotto | A | 2000 | L |
Lotto | E | 2000 | L |
Dove:
Fragili
sono l'8.3% deiCittadini
Personale Sanitario
sono l'1.3% deiCittadini
Personale Scolastico
sono l'1.6% deiCittadini
Altri
sono l'88.8% deiCittadini
Considerando le stime indicate nella Tavola dei Volumi.
Accessi Totali: \(120\:004\:003\) in Lettura
Senza Ridondanza:
Lo schema di visita é:
Vaccinazione
- Perfezionata
- Convocazione
- Appuntamento
Cittadino
-Fragile
-Personale Scolastico
-Personale Sanitario
-Altri
Report
-Reazione Allergica
-Tipologia Vaccino
-Vaccino
La tavola degli accessi é:
Concetto | Costrutto | Accessi | Tipo |
---|---|---|---|
Vaccinazione | E | 20M | L |
Perfezionata | A | 20M | L |
Convocazione | E | 20M | L |
Appuntamento | A | 20M | L |
Cittadino | E | 20M | L |
Fragile | E | 1,66M | L |
Personale Scolastico | E | 260K | L |
Personale Sanitario | E | 320K | L |
Altri | E | 17,76M | L |
Report | A | 320 | L |
Reazione Allergica | A | 320 | L |
Tipologia Vaccino | E | 20M | L |
Vaccino | E | 20M | L |
Dove valgono le considerazioni precedenti e:
Report
sono \[\frac{1000}{20000000} = 0.00005\%\] delleVaccinazioni
Accessi Totali: \(160\:000\:640\) in Lettura
\(\pagebreak\)
Operazione 9
Con Ridondanza
Lo schema di visita é:
Reazione Allergica
- Report
- Vaccinazione
- Amministrato
- Lotto
Concetto | Costrutto | Accessi | Tipo |
---|---|---|---|
Reazione Allergica | E | 1 | S |
Report | A | 1 | S |
Vaccinazione | E | 1 | L |
Amministrato | A | 1 | L |
Lotto | E | 1 | S |
Accessi Totali: 8 (Supponendo gli accessi in scrittura equivalenti a 2 accessi in lettura)
Senza Ridondanza
Lo schema di visita é:
Reazione Allergica
- Report
Concetto | Costrutto | Accessi | Tipo |
---|---|---|---|
Reazione Allergica | E | 1 | S |
Report | A | 1 | S |
Accessi Totali: 4 \(\pagebreak\)
Analisi
Presenza di Ridondanza:
- Spazio: \[4 \text{ byte} \times 2000 = 8000 \text{ byte}\]
- Tempo:
- Operazione 3 - \[120004003 \text{ accessi} \times 1 \text{ volta a settimana}\]
- Operazione 9 - \[8 \text{ accessi} \times 3 \text{ volte a settimana}\]
- Totale - \[120004027 \text{ accessi a settimana}\]
Assenza di Ridondanza:
- Spazio: \[0 \text{ byte} \times 2000 = 0 \text{ byte}\]
- Tempo:
- Operazione 3 - \[160000640 \text{ accessi} \times 1 \text{ volta a settimana}\]
- Operazione 9 - \[4 \text{ accessi} \times 3 \text{ volte a settimana}\]
- Totale - \[160000652 \text{ accessi a settimana}\]
Scegliamo di tenere la ridondanza a fronte del risparmio di quasi 40 milioni di accessi con l’utilizzo di solo 8000 byte. \(\pagebreak\)
Schema ER Ristrutturato

Business Rules
- Un
cittadino
puó accedere solo a centri vaccinali della propria cittá di residenza - Un
cittadino
per un datovaccino
deve al massimo avere confermato \(n\) appuntamenti con \(n\) uguale al Numero Somministrazioni del Vaccino - Un
cittadino
per poter ricevere unvaccino
deve avere Etá compresa tra le etá minima e massima di somministrazione - Un
cittadino
con positivitá pregressa non deve ricevere seconda dose se specificata - Il
tipo
di uncittadino
deve corrispondere ad una categorizzazione: fragile, personale sanitario, personale scolastico, altro - Un
cittadino
deve ricevere un datovaccino
in base alla propria categorizzazione:- fragile,
CORONAX
,FLUSTOP
- personale sanitario,
COVIDIN
,CORONAX
- personale scolastico,
COVIDIN
,CORONAX
- nessuno dei precedenti,
CORONAX
- fragile,
- Un
cittadino
che ha riscontratoreazioni avverse
non puó accedere a dosi il cui lotto ha riscontrato almeno una reazione avversa negli ultimi 30 giorni Medici di base
somministrano solo vaccini a doppia dose- Il
numero di fiale disponibili
per ogni lotto di cui dispone uncentro vaccinale
va tenuto aggiornato in base alle vaccinazione fatte intervallo dosi
di unvaccino
deve essereNOT-NULL
in casi di piú dosi- le
fiale
disponibili per una vaccinazioni devono essere associate ad unlotto
non scaduto alla data odierna
L’attributo multivalore Allergia
é stato convertito nella relazione molti a molti Ha
e nell’entitá Allergia
La generalizzazione totale/esclusiva di Cittadino
é stata convertita nel attributo Tipo
dello stesso
\(\pagebreak\)
Schema Relazionale
Vaccino( Nome, EtáMinima, EtáMassima, IntervalloDosi*, Efficacia, NumSomministrazioni )
Lotto( ID, NomeVaccino, NumReazioniAllergiche, DataProduzione, Scadenza )
CentroVaccinale( Cittá, Indirizzo )
Disponibile( Cittá, Indirizzo, Lotto, NumFiale )
Convocazione( Data, CodiceFiscale, Cittá, Indirizzo, Ora )
Cittadino( CodiceFiscale, Etá, Nome, Cognome, Cittá, Indirizzo, EMail*,PositivitáPregressa, Cellulare*, Tipo )
Allergia( Nome )
Ha( CodiceFiscale, _Allergia _)
Vaccinazione( CodiceFiscale, Data, CodiceFiscaleMedico, ID )
Medico( CodiceFiscale, Cittá, Indirizzo, Nome, Cognome, Di Base )
ReazioneAllergica( ID ,Tipologia, Osservazioni, CodiceFiscale, Data )
\(\\)
Lotto(NomeVaccino) referenzia Vaccino(Nome)
Disponibile(Cittá, Indirizzo) referenzia CentroVaccinale(Cittá, Indirizzo)
Disponibile(Lotto) referenzia Lotto(ID)
Convocazione(CodiceFiscale) referenzia Cittadino(CodiceFiscale)
Convocazione(Cittá, Indirizzo) referenzia CentroVaccinale(Cittá, Indirizzo)
Ha(Codice Fiscale) referenzia Cittadino(CodiceFiscale)
Ha(Allergia) referenzia Allergia(Nome)
Medico(Cittá, Indirizzo) referenzia CentroVaccinale(Cittá, Indirizzo)
Vaccinazione(Codice Fiscale, Data) referenzia Convocazione(CodiceFiscale, Data)
ReazioneAllergica(CodiceFiscale, Data) referenzia Vaccinazione(CodiceFiscale, Data)
\(\pagebreak\)
Implementazione
DDL
DROP SCHEMA "BDvaccini" cascade;
CREATE SCHEMA "BDvaccini" AUTHORIZATION dbdanielbiasiotto;
CREATE TABLE Vaccino(
Nome varchar(20) primary key,
EtáMinima smallint default 0 not null,
EtáMassima smallint default 100 not null,
IntervalloDosi smallint not null,
Efficacia float not null,
NumSomministrazioni smallint not null
);
CREATE TABLE Lotto(
ID SERIAL primary key,
NomeVaccino varchar(20),
NumReazioniAllergiche smallint default 0 not null,
DataProduzione date not null,
Scadenza date not null,
constraint fk_lotto
foreign key(NomeVaccino)
references Vaccino(Nome)
on update cascade
on delete cascade
);
CREATE TABLE CentroVaccinale(
Cittá varchar(30),
Indirizzo varchar(50),
primary key(Cittá, Indirizzo)
);
CREATE TABLE Medico(
CodiceFiscale char(16) primary key,
Cittá varchar(30),
Indirizzo varchar(50),
Nome varchar(20) not null,
Cognome varchar(20) not null,
DiBase boolean default true not null,
constraint fk_medico
foreign key(Cittá, Indirizzo)
references CentroVaccinale(Cittá, Indirizzo)
on update cascade
on delete cascade
);
CREATE TABLE Disponibile(
Cittá varchar(30),
Indirizzo varchar(50),
Lotto smallint,
NumFiale smallint not null,
primary key(Cittá, Indirizzo, Lotto),
constraint fk_disponibile
foreign key(Cittá, Indirizzo)
references CentroVaccinale(Cittá, Indirizzo),
foreign key(Lotto)
references Lotto(ID)
on update cascade
on delete cascade
);
CREATE TABLE Cittadino(
CodiceFiscale char(16) primary key,
Etá smallint not null,
Nome varchar(20) not null,
Cognome varchar(20) not null,
Cittá varchar(20) not null,
Indirizzo varchar(20) not null,
Email varchar(30),
Cellulare varchar(10),
Tipo varchar(20) default 'altro' not null,
PositivitáPregressa boolean default false not null,
unique(Nome, Cognome, Cittá)
);
CREATE TABLE Convocazione(
Data date,
CodiceFiscale char(16),
Cittá varchar(30),
Indirizzo varchar(50),
Ora time not null,
primary key(Data, CodiceFiscale),
constraint fk_convocazione
foreign key(CodiceFiscale)
references Cittadino(CodiceFiscale)
on update cascade
on delete cascade,
foreign key(Cittá, Indirizzo)
references CentroVaccinale(Cittá, Indirizzo)
on update cascade
on delete cascade
);
CREATE TABLE Allergia(
Nome varchar(30) primary key
);
CREATE TABLE Ha(
CodiceFiscale char(16),
Allergia varchar(30),
primary key(CodiceFiscale, Allergia),
constraint fk_ha
foreign key(CodiceFiscale)
references Cittadino(CodiceFiscale)
on update cascade
on delete cascade,
foreign key(Allergia)
references Allergia(Nome)
on update cascade
on delete cascade
);
CREATE TABLE Vaccinazione(
Data date,
CodiceFiscale char(16),
CodiceFiscaleMedico char(16),
ID smallint,
primary key(CodiceFiscale,Data),
constraint fk_vaccinazione
foreign key(CodiceFiscale, Data)
references Convocazione(CodiceFiscale, Data)
on update cascade
on delete cascade,
foreign key(CodiceFiscaleMedico)
references Medico(CodiceFiscale)
on update cascade
on delete cascade,
foreign key(ID)
references Lotto(ID)
on update cascade
on delete cascade
);
CREATE TABLE ReazioneAllergica(
ID smallint,
Tipologia varchar(30) not null,
Osservazioni varchar(500) not null,
CodiceFiscale char(16),
Data date,
primary key(ID),
constraint fk_reazione
foreign key(ID)
references Lotto(ID)
on update cascade
on delete cascade,
foreign key(CodiceFiscale, Data)
references Vaccinazione(CodiceFiscale, Data)
on update cascade
on delete cascade
);
\(\pagebreak\)
DML
insert into "BDvaccini".vaccino values
('Coronax', 16, 80, 6, 0.9, 2),
('Covidin', 13, 70, null, 0.88, 1),
('Flustop', 20, 60, 4, 0.92, 2);
insert into "BDvaccini".cittadino values
('BSTED23DGC23DT3C',40,'Giuseppe','Pizza',
'Milano','Via P 17','etndduen@uen.it',387438457,
'fragile',false),
('CSTEEU3DGC256H3C',40,'Silvia','Enne',
'Milano','Via Cile 1','yi@uen.it',374691923,
'personale sanitario',false),
('HIERR9GC287E9E8T',40,'Giusi','Emme','Piolo',
'Via Guille 3','tieun@uen.en',387438457,
'altro',true),
('EUT923DGC287IET8',40,'Tito','Pi',
'Padova','Via Maria 14b','ueioe@edu.uk',983746192,
'personale medico',false);
insert into "BDvaccini".centrovaccinale values
('Milano','Via Beccaria 3'),
('Pisa','Via Venezia 12c'),
('Napoli','Via Tito 42'),
('Alessandria','Via Zito 15'),
('Torino','Via Umberto 50');
insert into "BDvaccini".lotto values
(nextval('"BDvaccini".lotto_id_seq'::regclass),
'Coronax', 0, '12/09/2020', '12/09/2022'),
(nextval('"BDvaccini".lotto_id_seq'::regclass),
'Coronax', 0, '8/02/2020', '10/02/2023'),
(nextval('"BDvaccini".lotto_id_seq'::regclass),
'Covidin', 0, '1/10/2020', '12/10/2021'),
(nextval('"BDvaccini".lotto_id_seq'::regclass),
'Modernum', 0, '12/20/2019', '12/20/2022');
insert into "BDvaccini".disponibile values
('Milano','Via Beccaria 3',2,20),
('Milano','Via Beccaria 3',4,200),
('Pisa','Via Venezia 12c',2,140),
('Torino','Via Umberto 50',3,10);
insert into "BDvaccini".allergia values
('Acari')
('Muffe')
('Vespe')
('Gatti')
('Graminacee')
('Albicocche');
insert into "BDvaccini".ha values
('EUT923DGC287IET8','Graminacee'),
('BSTED23DGC23DT3C','Albicocche');
insert into "BDvaccini".medico values
('BEGIED23DGC23DT3', 'Torino', 'Via Umberto 50',
'Harry', 'Oliver', false),
('GITIED23DGC23DT3', 'Pisa', 'Via Venezia 12c',
'Carla', 'Ronda', true);
insert into "BDvaccini".convocazione values
('02/13/2020','EUT923DGC287IET8','Torino','Via Umberto 50','12:00:00'),
('04/23/2020','BSTED23DGC23DT3C','Pisa','Via Venezia 12c','16:30:00');
insert into "BDvaccini".vaccinazione values
('02/13/2020','EUT923DGC287IET8','BEGIED23DGC23DT3',3);
insert into "BDvaccini".reazioneallergica values
(3,'Rossore','Lorem Ipsum','EUT923DGC287IET8','02/13/2020');
\(\pagebreak\)
Operazioni
update "BDvaccini".vaccino
set efficacia = 0.95
where nome = 'Flustop';
delete from "BDvaccini".convocazione
where data = '04/23/2020'
and codicefiscale = 'BSTED23DGC23DT3C';
update "BDvaccini".convocazione
set data = '02/20/2020'
where data = '02/13/2020'
and codicefiscale = 'EUT923DGC287IET8';
delete from "BDvaccini".allergia
where nome = 'Albicocche';
update "BDvaccini".cittadino
set email = 'p123@elmail.org', cellulare = '338923004'
where codicefiscale = 'CSTEEU3DGC256H3C';
update "BDvaccini".vaccinazione
set medico = 'GITIED23DGC23DT3'
where data = '02/13/2020'
and codicefiscale = 'EUT923DGC287IET8';
update "BDvaccini".centrovaccinale
set cittá = 'Pisa', indirizzo = 'Via Venezia 13'
where cittá = 'Pisa'
and indirizzo = 'Via Venezia 12c';