· 6 years ago · Nov 14, 2019, 03:18 PM
1/*
2 Se la riproduzione ha successo, viene creata la scheda di gestazione che contiene il codice della riproduzione a cui si riferisce,
3 assieme al codice del veterinario responsabile della gestazione
4 che può non essere lo stesso che ha supervisionato la riproduzione.
5 La scheda di gestazione descriverà i diversi interventi di controllo decisi dal veterinario responsabile ed effettuati durante la gestazione.
6 Tutti i dati della scheda di gestazione sono inseriti nel database,
7 compresi gli interventi di controllo futuro, che avranno tutti uno stato pari a programmato.
8 Per ogni controllo effettuato, la scheda conterrà la data del controllo e il codice del veterinario che l’ha eseguito.
9*/
10
11/*Creo la tabella SchedaGestazione con le sue sotto tabelle post-Normalizzazione*/
12
13DELIMITER $$
14
15CREATE TABLE ElencoSchede /*Una tabella che elenca le singole schede di gestazione, indicandone il codice di riproduzione e il veterinario della gravidanza*/
16(
17 CodiceRiproduzione VARCHAR(50) NOT NULL,
18 VeterinarioGravidanza VARCHAR(50) NOT NULL,
19 FOREIGN KEY(VeterinarioGravidanza, CodiceRiproduzione)
20 REFERENCES Gravidanza(Veterinario, Riproduzione),
21 PRIMARY KEY(CodiceRiproduzione)
22)ENGINE=InnoDB DEFAULT CHARSET=latin1; $$
23
24CREATE TABLE SchedaGestazione
25(
26 CodiceRiproduzione VARCHAR(50) NOT NULL
27 REFERENCES ElencoSchede(CodiceRiproduzione),
28 CodiceControllo VARCHAR(50) NOT NULL
29 REFERENCES Visita(Codice),
30 PRIMARY KEY(CodiceRiproduzione, CodiceControllo)
31)ENGINE=InnoDB DEFAULT CHARSET=latin1; $$
32
33CREATE TABLE SchedaControlli /*Una tabella che specifica i dati richiesti sulle singole visite della scheda gestazione, create a fronte di una normalizzazione*/
34(
35 DataControllo DATE NOT NULL,
36 CodiceControllo VARCHAR(50) NOT NULL
37 REFERENCES SchedaGestazione(CodiceControllo),
38 Veterinario VARCHAR(50) NOT NULL,
39 FOREIGN KEY(DataControllo, CodiceControllo, Veterinario)
40 REFERENCES Visita(DataProgrammata, Codice, Veterinario),
41 PRIMARY KEY(CodiceControllo)
42)ENGINE=InnoDB DEFAULT CHARSET=latin1; $$
43
44/*Creo il trigger per l'inserimento della nuova scheda gestazione*/
45
46DELIMITER $$
47
48DROP PROCEDURE IF EXISTS CreazioneSchedaGestazione; $$
49
50CREATE PROCEDURE CreazioneSchedaGestazione(CodiceRiproduzione VARCHAR(50))
51BEGIN
52 DECLARE VeterinarioGravidanza VARCHAR(50);
53 DECLARE EsitoRiproduzione VARCHAR(50);
54
55 SET EsitoRiproduzione =
56 (
57 SELECT R.Esito
58 FROM Riproduzione R
59 WHERE R.Codice = CodiceRiproduzione
60 );
61
62 IF EsitoRiproduzione = "Insuccesso"
63 THEN
64 SIGNAL SQLSTATE '45000'
65 SET MESSAGE_TEXT = "La riproduzione non ha avuto successo";
66 END IF;
67
68 SET VeterinarioGravidanza =
69 (
70 SELECT G.Veterinario
71 FROM Gravidanza G
72 WHERE G.Riproduzione = CodiceRiproduzione
73 );
74
75 INSERT INTO ElencoSchede
76 VALUES(CodiceRiproduzione, VeterinarioGravidanza);
77END $$
78
79DELIMITER ;
80
81DELIMITER $$
82
83DROP PROCEDURE IF EXISTS InserimentoVisitaGestazione; $$
84
85CREATE PROCEDURE InserimentoVisitaGestazione(CodiceRiproduzione VARCHAR(50), CodiceVisita VARCHAR(50))
86BEGIN
87 DECLARE VeterinarioVisita VARCHAR(50);
88 DECLARE DataProgrammata DATE;
89
90 SELECT V.Veterinaio, V.DataProgrammata INTO VeterinarioVisita, DataProgrammata
91 FROM Visita V
92 WHERE V.Codice = CodiceVisita;
93
94 INSERT INTO SchedaGestazione
95 VALUES(CodiceRiproduzione, CodiceVisita);
96 INSERT INTO SchedaControlli
97 VALUES(DataProgrammata, CodiceVisita, VeterinarioVisita);
98END $$
99
100DELIMITER ;