Aufgabe Vorschlag C - 2 - SQL-Anweisungen und Transaktion… · Abitur Hessen Praktische Informatik LK 2021

Thema: SQL-Anweisungen und Transaktionen · Aus der Prüfung LK (2021)

Aufgabenstellung

Entwicklung einer Datenbank für das Impfzentrum

In einer ersten Version der Datenbank möchte das Impfzentrum die Daten der zu impfenden Personen verwalten. Ebenso sollen die Daten der Impfstoffe und ihrer Lagerstandorte, der Produzenten sowie der Impfstofflieferungen verwaltet werden. Dabei gilt:

Eine Person wird zweimal geimpft, wobei zwischen den Impfterminen drei Wochen liegen sollen. Es muss sichergestellt sein, dass eine Person bei beiden Impfungen den gleichen Impfstoff erhält.

Ein Entity-Relationship-Modell (ERM) ist in Material 4 dargestellt.

Material 4: Entity-Relationship-Modell

Hinweise: Ein Impfstoff wird von einem Forschungsinstitut entwickelt (Attribut entwickler). Die Herstellung und Lieferung eines Impfstoffs erfolgt durch Produzenten. Ein Impfstoff gehört zu einer Impfstoffgruppe (Attribut gruppe), wie zum Beispiel mRNA-Impfstoff oder Vektor-Impfstoff. Ein Impfstoff muss bei einer gewissen Temperatur (z.B. -70°C) gelagert werden (Attribut lagerTemperatur). Die verschiedenen Lagerstandorte weisen durch eine entsprechende Kühlung eine jeweils konstante Temperatur (Attribut temperatur) auf.

Material 5: Tabelle Impfprotokoll (Ausschnitt)

Impfling · Risikofaktoren · Impfstoff · Impf-Termin · Impfreaktionen · Verantwortlich

Nr. 123456

Ilka Meier

geb.

12.04.1937 · Diabetes

Übergewicht · BT223a2

(Gruppe mRNA-Impfstoff) · 07.04.21 · keine · Kürzel HEIL

Dr. Silke Heiler

(Allgemeinmedizin)

Nr. 776311

Karl Huber

geb.

08.05.1943 · Bluthochdruck

Übergewicht

Rheuma · BT223a2

(Gruppe mRNA-Impfstoff) · 07.04.21 · Schwindel, Übelkeit

Muskelschmerzen

allergische Reaktion · Kürzel BADE

Kai Bader

(Allgemeinmedizin)

Nr. 270887

Vera Stark

geb.

23.11.1950 · keine · BT223a2

(Gruppe mRNA-Impfstoff) · 07.04.21 · Schmerzen an der Injektionsstelle · Kürzel WIRT

Dr. Lena Wirt

(Innere Medizin)

… · … · … · … · … · …

Nr. 620087

Ina Kraus

geb.

16.09.1948 · keine · Vec23.Cov

(Gruppe Vektor-impfstoff) · 08.04.21 · Fieber

Kopfschmerzen

Appetitlosigkeit

Gelenkschmerzen · Kürzel KLEB

Dr. Kurt Kleber

(Internist)

… · … · … · … · … · …

Nr. 221009

Lars Bauer

geb.

16.06.1954 · Diabetes · BT223a2

(Gruppe mRNA-Impfstoff) · 09.04.21 · keine · Kürzel REIC

Prof. Dr. Til Reich

(Orthopäde)

… · … · … · … · … · …

Nr. 123456

Ilka Meier

geb.

12.04.1937 · Diabetes

Übergewicht · BT223a2

(Gruppe mRNA-Impfstoff) · 29.04.21 · Kopfschmerzen

Gelenkschmerzen · Kürzel WIRT

Dr. Lena Wirt

(Innere Medizin)

Nr. 620087

Ina Kraus

geb.

16.09.1948 · keine · Vec23.Cov

(Gruppe Vektor-Impfstoff) · 29.04.21 · Müdigkeit

Kopfschmerzen · Kürzel KLEB

Dr. Kurt Kleber

(Innere Medizin)

… · … · … · … · … · …

2.2 Einige Daten der Datenbank sollen ergänzt, geändert und ausgewertet werden.

2.2.1

Formulieren Sie eine SQL-Anweisung, die alle Personen mit Personen-ID, Vor- und Nachnamen sowie dem Termin der ersten Impfung auflistet, die bisher nur einmal mit dem Impfstoff mit der Bezeichnung BT223a2 geimpft wurden.

[3 BE]

2.2.2

Implementieren Sie eine SQL-Anweisung, die alle Impfstoffgruppen mit der Anzahl der im 1. Quartal 2021 zum zweiten Mal erfolgten Impfungen, absteigend sortiert nach der Anzahl, ausgibt.

[3 BE]

2.2.3

Der kanadische Impfstoffproduzent PharmaCorn (ID 96) in Vancouver (Postleitzahl BC V6T 1Z3) liefert am 26.04.2021 erstmalig 2500 Dosen des Impfstoffs BT223a2.

Entwickeln Sie die SQL-Anweisungen, um die Datenbank zu ergänzen und die Lagermenge zu aktualisieren.

[6 BE]

Hinweise: Es existieren bereits mehrere Lagerstandorte für den Impfstoff BT223a2. Die 2500 neuen Dosen können nur eingelagert werden, wenn an einem Standort genügend Platz vorhanden ist. Sie können davon ausgehen, dass es mindestens einen Standort gibt, der die gelieferte Menge aufnehmen kann. Der Standort mit der geringsten Anzahl an BT223a2-Impfdosen ist als Lagerstandort zu wählen.

2.2.4

Für die Terminplanung soll eine nach Impfstoffen gruppierte Aufstellung mit der jeweiligen Anzahl an vorrätigen Dosen und der Anzahl der noch für die 2. Impfung benötigten Dosen in der folgenden Form ausgegeben werden:

[4 BE]

Impfstoff

Vorrätige Dosen

Benötigte Dosen

ApolloVac

668

420

BT223a2

488

620

Vec23.Cov

52

102

Entwickeln Sie eine entsprechende SQL-Anweisung.

Aufgabenstellung: Aufgabe Vorschlag C - 2 - SQL-Anweisungen und Transaktion… · Abitur Hessen Praktische Informatik LK 2021

Lösung

Nach den offiziellen Korrekturhinweisen

2.2.1 Formulieren Sie eine SQL-Anweisung, die alle Personen mit Personen-ID, Vor- und Nachnamen sowie dem Termin der ersten Impfung auflistet, die bisher nur einmal mit dem Impfstoff mit der Bezeichnung BT223a2 geimpft wurden.

Lösung: ```sql SELECT p.personID, p.vname, p.nname, i.termin1 FROM Person p, Impfung i WHERE p.personID = i.personID AND i.bezeichnung = 'BT223a2' AND i.termin1 <= NOW() AND (i.termin2 > NOW() OR i.termin2 IS null); ```

2.2.2 Implementieren Sie eine SQL-Anweisung, die alle Impfstoffgruppen mit der Anzahl der im 1. Quartal 2021 zum zweiten Mal erfolgten Impfungen, absteigend sortiert nach der Anzahl, ausgibt.

Lösung: ```sql SELECT gruppe, COUNT(*) AS Anzahl FROM Impfung JOIN Impfstoff USING (bezeichnung) WHERE termin2 BETWEEN '2021-1-1' AND '2021-3-31' GROUP BY gruppe ORDER BY Anzahl DESC; ```

2.2.3 Entwickeln Sie die SQL-Anweisungen, um die Datenbank zu ergänzen und die Lagermenge zu aktualisieren.

Lösung: ```sql INSERT INTO Produzent VALUES (96, 'PharmaCorn', 'BCV6T1Z3', 'Vancouver', 'Kanada'); INSERT INTO Lieferung VALUES (96, 'BT223a2', 2500, '2021-04-26'); UPDATE Standort SET istAnzahlImpfdosen = istAnzahlImpfdosen + 2500 WHERE ortID = (SELECT ortID FROM Standort WHERE bezeichnung = 'BT223a2' AND kapazitaetImpfdosen - istAnzahlImpfdosen >= 2500 ORDER BY istAnzahlImpfdosen ASC LIMIT 1); ```

2.2.4 Entwickeln Sie eine entsprechende SQL-Anweisung für die nach Impfstoffen gruppierte Aufstellung mit vorrätigen und benötigten Dosen.

Lösung: ```sql SELECT bezeichnung AS Impfstoff, SUM(istAnzahlImpfdosen) AS 'Vorrätige Dosen', (SELECT COUNT(*) FROM impfung AS i WHERE (i.termin2 IS null OR i.termin2 > NOW()) AND Impfstoff = i.bezeichnung GROUP BY i.bezeichnung ) AS 'Benötigte Dosen' FROM Standort GROUP BY bezeichnung; ```

Die ausführliche Erklärung Schritt für Schritt (mit KI) gibt es mit Premium. Premium

Löse sie direkt hier: automatische Korrektur, Hinweise und Lösung Schritt für Schritt.

‹ Aufgabe Vorschlag B - 2 - SQL-Anweisungen und Transaktion… · LK 2021

Mehr Aufgaben zu SQL-Anweisungen und Transaktionen