Direkt zum Inhalt

BPE 6 · Abschluss

BPE-6-Abschlusstest

Zwölf gemischte Aufgaben verbinden Datenmodelle und SQL. Deine Auswertung zeigt dir anschließend konkrete Wiederholungsthemen.

Bildungsplanbezug: BPE 6.1–6.5 · interne Lerneinheit 6

Geschätzte Lernzeit: 65 Minuten

Noch nicht begonnen

Das kannst du danach

  • Modelle und Schlüssel begründen
  • Tabellen anlegen und Daten erfassen
  • SQL-Ergebnisse gezielt filtern und gruppieren
  • Beziehungen mit Joins auswerten

Verständlich erklärt

Arbeite zuerst ohne Hilfen. Lies das jeweilige Schema und die erwarteten Spalten genau. Jede SQL-Ausführung erhält eine neue Kopie der angegebenen Datenbank; Änderungen aus einer anderen Aufgabe werden nicht übernommen. Der Lernstand zählt die bisher erfolgreich gelösten Aufgaben, nicht die Bearbeitungszeit.

  • Primärschlüssel
  • Fremdschlüssel
  • Normalform
  • Aggregation
  • Join

Beispiel

Plan: benötigte Tabellen → JOIN → WHERE → GROUP BY → HAVING → ORDER BY
Bei LEFT JOIN: Prüfe ausdrücklich einen Datensatz ohne Partner.

Typische Fehler

  • Eine Join-Bedingung vergessen
  • COUNT(*) mit der Zahl tatsächlich vorhandener Buchungen verwechseln
  • WHERE und HAVING vertauschen

Kurz zusammengefasst

Nutze deine Themenauswertung und wiederhole gezielt die passenden Lektionen. Dies ist ein selbst erstellter Lerncheck, keine offizielle Abiturprüfung.

Abi-Bezug

Begründe Schlüssel und Beziehungen. Prüfe SQL-Abfragen mit Randfällen und benenne die erwarteten Ergebnisspalten.

Abschlussaufgaben

Prüfe deine Lösung automatisch. Bei Bedarf helfen dir ein Tipp und anschließend die Musterlösung.

BPE 6J12 Punktemittel

Datenintegrität begründen

Noch nicht begonnen

Aufgabenstellung

Zwei verschiedene Teams erhalten versehentlich dieselbe team_id. Welche Regel verhindert das zuverlässig?

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Gesucht ist eine Regel der Tabelle, nicht der Anzeige.
  2. Ein Schlüsselwert darf nicht zwei Teams bezeichnen.
Lösung anzeigen
Ein Primärschlüssel identifiziert jeden Datensatz eindeutig. Eine Sortierung oder ein Alias verändert keine gespeicherten Integritätsregeln.
BPE 6J12 Punktemittel

Beziehung im Veranstaltungsmodell

Noch nicht begonnen

Aufgabenstellung

Ein Team kann mehrere Termine anbieten. Jeder Termin wird genau einem Team zugeordnet. Wähle beide zutreffenden Aussagen.

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Lies die Regel aus beiden Blickrichtungen.
  2. Unterscheide einen Entitätstyp von einem konkreten Exemplar.
Lösung anzeigen
Mehrere Termine können dasselbe Team haben; jeder Termin gehört aber nur einem Team. Ein einzelner Termin ist ein Objekt, kein neues Attribut.
BPE 6J12 Punktemittel

Fremdschlüssel platzieren

Noch nicht begonnen

Aufgabenstellung

Wie wird die beschriebene 1:n-Beziehung ohne wiederholende Attributgruppen umgesetzt?

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Bestimme zuerst die n-Seite.
  2. Gesucht ist eine skalierbare Verbindung über einen Schlüssel.
Lösung anzeigen
Die n-Seite Termin speichert den Schlüssel der 1-Seite Team. So kann jeder Termin genau ein Team referenzieren, während sich beliebig viele Termine auf dasselbe Team beziehen.
BPE 6J12 Punktemittel

Transitive Abhängigkeit erkennen

Noch nicht begonnen

Aufgabenstellung

In Termin(termin_id, team_id, team_name) gelten ausschließlich termin_id → team_id und team_id → team_name. termin_id ist der einzige Kandidatenschlüssel. Welche Zerlegung beseitigt die transitive Abhängigkeit?

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Prüfe, welches Attribut der Teamname beschreibt.
  2. Die Verbindung zwischen Termin und Team muss erhalten bleiben.
Lösung anzeigen
Der Teamname hängt vom Team ab, nicht unmittelbar vom Termin. Er wird in Team einmal gespeichert; Termin behält den Fremdschlüssel. So werden Änderungen an Teamnamen nicht mehrfach nötig.
BPE 6J13 Punkteanspruchsvoll

Neue Tabelle anlegen

Noch nicht begonnen

Aufgabenstellung

Lege zusätzlich hilfe(hilfe_id, name) an. hilfe_id soll INTEGER PRIMARY KEY sein, name TEXT NOT NULL. Es gibt noch keine Tabelle hilfe.

Schema und fiktive Ausgangsdaten anzeigen

Schlüssel: team.team_id, termin.termin_id, buchung.buchung_id. Fremdschlüssel: termin.team_id → team.team_id und buchung.termin_id → termin.termin_id. datum enthält ISO-Text; beitrag eine Dezimalzahl; IDs, Plätze und Anzahlen sind Ganzzahlen. Jeder Versuch beginnt mit diesen Daten.

team – Ausgangsdaten
team_idname
1Codewerk
2Datenlabor
3Netzclub
termin – Ausgangsdaten
termin_idteam_idtiteldatumplaetzebeitrag
101Pythonabend2026-05-10124
112SQL-Werkstatt2026-05-1286
121Robotik2026-06-01105
132Datenrunde2026-05-2070
203Archivtreff2025-05-1597
213Junirunde2026-06-1592
buchung – Ausgangsdaten
buchung_idtermin_idanzahl
100102
101103
102111
103124

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. BEGINNE mit CREATE TABLE hilfe und einer Spaltenliste in Klammern.
  2. PRIMARY KEY gehört zu hilfe_id, NOT NULL zur Namensspalte.
Lösung anzeigen
CREATE TABLE hilfe (hilfe_id INTEGER PRIMARY KEY, name TEXT NOT NULL);
BPE 6J13 Punkteanspruchsvoll

Einen Termin erfassen

Noch nicht begonnen

Aufgabenstellung

Füge genau einen Termin ein: (14, 3, 'Netzabend', '2026-06-08', 9, 3) in der sichtbaren Spaltenreihenfolge. Alle vorhandenen Termine sollen erhalten bleiben.

Schema und fiktive Ausgangsdaten anzeigen

Schlüssel: team.team_id, termin.termin_id, buchung.buchung_id. Fremdschlüssel: termin.team_id → team.team_id und buchung.termin_id → termin.termin_id. datum enthält ISO-Text; beitrag eine Dezimalzahl; IDs, Plätze und Anzahlen sind Ganzzahlen. Jeder Versuch beginnt mit diesen Daten.

team – Ausgangsdaten
team_idname
1Codewerk
2Datenlabor
3Netzclub
termin – Ausgangsdaten
termin_idteam_idtiteldatumplaetzebeitrag
101Pythonabend2026-05-10124
112SQL-Werkstatt2026-05-1286
121Robotik2026-06-01105
132Datenrunde2026-05-2070
203Archivtreff2025-05-1597
213Junirunde2026-06-1592
buchung – Ausgangsdaten
buchung_idtermin_idanzahl
100102
101103
102111
103124

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Schreibe Text und ISO-Datum in einfache Anführungszeichen.
  2. Die team_id muss bereits in team existieren. Verwende eine neue termin_id.
Lösung anzeigen
INSERT INTO termin (termin_id, team_id, titel, datum, plaetze, beitrag) VALUES (14, 3, 'Netzabend', '2026-06-08', 9, 3);
BPE 6J13 Punkteanspruchsvoll

Titel gezielt auswählen

Noch nicht begonnen

Aufgabenstellung

Gib nur die Spalte titel aller Termine alphabetisch aufsteigend aus.

Schema und fiktive Ausgangsdaten anzeigen

Schlüssel: team.team_id, termin.termin_id, buchung.buchung_id. Fremdschlüssel: termin.team_id → team.team_id und buchung.termin_id → termin.termin_id. datum enthält ISO-Text; beitrag eine Dezimalzahl; IDs, Plätze und Anzahlen sind Ganzzahlen. Jeder Versuch beginnt mit diesen Daten.

team – Ausgangsdaten
team_idname
1Codewerk
2Datenlabor
3Netzclub
termin – Ausgangsdaten
termin_idteam_idtiteldatumplaetzebeitrag
101Pythonabend2026-05-10124
112SQL-Werkstatt2026-05-1286
121Robotik2026-06-01105
132Datenrunde2026-05-2070
203Archivtreff2025-05-1597
213Junirunde2026-06-1592
buchung – Ausgangsdaten
buchung_idtermin_idanzahl
100102
101103
102111
103124

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Wähle genau eine Spalte aus.
  2. ORDER BY titel ASC legt die verlangte Reihenfolge fest.
Lösung anzeigen
SELECT titel FROM termin ORDER BY titel ASC;
BPE 6J13 Punkteanspruchsvoll

Mai-Termine filtern

Noch nicht begonnen

Aufgabenstellung

Gesucht sind Termine im Mai 2026 mit mindestens acht Plätzen. Gib titel, plaetze aus, nach titel aufsteigend.

Schema und fiktive Ausgangsdaten anzeigen

Schlüssel: team.team_id, termin.termin_id, buchung.buchung_id. Fremdschlüssel: termin.team_id → team.team_id und buchung.termin_id → termin.termin_id. datum enthält ISO-Text; beitrag eine Dezimalzahl; IDs, Plätze und Anzahlen sind Ganzzahlen. Jeder Versuch beginnt mit diesen Daten.

team – Ausgangsdaten
team_idname
1Codewerk
2Datenlabor
3Netzclub
termin – Ausgangsdaten
termin_idteam_idtiteldatumplaetzebeitrag
101Pythonabend2026-05-10124
112SQL-Werkstatt2026-05-1286
121Robotik2026-06-01105
132Datenrunde2026-05-2070
203Archivtreff2025-05-1597
213Junirunde2026-06-1592
buchung – Ausgangsdaten
buchung_idtermin_idanzahl
100102
101103
102111
103124

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Die Bedingungen für Datum und Platzzahl müssen gleichzeitig gelten.
  2. Ein halboffenes Datumsintervall grenzt den Monat eindeutig ab.
Lösung anzeigen
SELECT titel, plaetze FROM termin WHERE datum >= '2026-05-01' AND datum < '2026-06-01' AND plaetze >= 8 ORDER BY titel;
BPE 6J13 Punkteanspruchsvoll

Kennzahlen berechnen

Noch nicht begonnen

Aufgabenstellung

Ermittle über alle Termine die Gesamtzahl der Plätze und den höchsten Beitrag. Verwende die Ergebnisspalten gesamt, maximum in dieser Reihenfolge.

Schema und fiktive Ausgangsdaten anzeigen

Schlüssel: team.team_id, termin.termin_id, buchung.buchung_id. Fremdschlüssel: termin.team_id → team.team_id und buchung.termin_id → termin.termin_id. datum enthält ISO-Text; beitrag eine Dezimalzahl; IDs, Plätze und Anzahlen sind Ganzzahlen. Jeder Versuch beginnt mit diesen Daten.

team – Ausgangsdaten
team_idname
1Codewerk
2Datenlabor
3Netzclub
termin – Ausgangsdaten
termin_idteam_idtiteldatumplaetzebeitrag
101Pythonabend2026-05-10124
112SQL-Werkstatt2026-05-1286
121Robotik2026-06-01105
132Datenrunde2026-05-2070
203Archivtreff2025-05-1597
213Junirunde2026-06-1592
buchung – Ausgangsdaten
buchung_idtermin_idanzahl
100102
101103
102111
103124

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. SUM addiert Werte über mehrere Datensätze.
  2. MAX liefert den größten Beitrag; Aliase benennen die Ergebnisspalten.
Lösung anzeigen
SELECT SUM(plaetze) AS gesamt, MAX(beitrag) AS maximum FROM termin;
BPE 6J13 Punkteanspruchsvoll

Große Teamangebote finden

Noch nicht begonnen

Aufgabenstellung

Gib je team_id die Summe der Plätze als gesamt aus. Zeige nur Teams mit insgesamt mehr als 15 Plätzen, nach team_id sortiert. Ergebnisspalten: team_id, gesamt.

Schema und fiktive Ausgangsdaten anzeigen

Schlüssel: team.team_id, termin.termin_id, buchung.buchung_id. Fremdschlüssel: termin.team_id → team.team_id und buchung.termin_id → termin.termin_id. datum enthält ISO-Text; beitrag eine Dezimalzahl; IDs, Plätze und Anzahlen sind Ganzzahlen. Jeder Versuch beginnt mit diesen Daten.

team – Ausgangsdaten
team_idname
1Codewerk
2Datenlabor
3Netzclub
termin – Ausgangsdaten
termin_idteam_idtiteldatumplaetzebeitrag
101Pythonabend2026-05-10124
112SQL-Werkstatt2026-05-1286
121Robotik2026-06-01105
132Datenrunde2026-05-2070
203Archivtreff2025-05-1597
213Junirunde2026-06-1592
buchung – Ausgangsdaten
buchung_idtermin_idanzahl
100102
101103
102111
103124

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. GROUP BY erzeugt eine Gruppe pro Team.
  2. Die Bedingung auf SUM gehört in HAVING, nicht in WHERE.
Lösung anzeigen
SELECT team_id, SUM(plaetze) AS gesamt FROM termin GROUP BY team_id HAVING SUM(plaetze) > 15 ORDER BY team_id;
BPE 6J13 Punkteanspruchsvoll

Kostenlose Angebote zuordnen

Noch nicht begonnen

Aufgabenstellung

Gib für alle kostenlosen Termine den Teamnamen und Titel aus. Spalten: name, titel; nach titel aufsteigend sortieren.

Schema und fiktive Ausgangsdaten anzeigen

Schlüssel: team.team_id, termin.termin_id, buchung.buchung_id. Fremdschlüssel: termin.team_id → team.team_id und buchung.termin_id → termin.termin_id. datum enthält ISO-Text; beitrag eine Dezimalzahl; IDs, Plätze und Anzahlen sind Ganzzahlen. Jeder Versuch beginnt mit diesen Daten.

team – Ausgangsdaten
team_idname
1Codewerk
2Datenlabor
3Netzclub
termin – Ausgangsdaten
termin_idteam_idtiteldatumplaetzebeitrag
101Pythonabend2026-05-10124
112SQL-Werkstatt2026-05-1286
121Robotik2026-06-01105
132Datenrunde2026-05-2070
203Archivtreff2025-05-1597
213Junirunde2026-06-1592
buchung – Ausgangsdaten
buchung_idtermin_idanzahl
100102
101103
102111
103124

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. Verbinde Team und Termin über team_id.
  2. Kostenlos bedeutet beitrag = 0, nicht NULL.
Lösung anzeigen
SELECT team.name, termin.titel FROM team INNER JOIN termin ON team.team_id = termin.team_id WHERE termin.beitrag = 0 ORDER BY termin.titel;
BPE 6J13 Punkteanspruchsvoll

Auch ungebuchte Termine anzeigen

Noch nicht begonnen

Aufgabenstellung

Gib für jeden Termin die gebuchte Personenzahl aus. Ohne Buchung soll 0 erscheinen. Spalten: titel, gebucht; sortiere nach termin_id aufsteigend.

Schema und fiktive Ausgangsdaten anzeigen

Schlüssel: team.team_id, termin.termin_id, buchung.buchung_id. Fremdschlüssel: termin.team_id → team.team_id und buchung.termin_id → termin.termin_id. datum enthält ISO-Text; beitrag eine Dezimalzahl; IDs, Plätze und Anzahlen sind Ganzzahlen. Jeder Versuch beginnt mit diesen Daten.

team – Ausgangsdaten
team_idname
1Codewerk
2Datenlabor
3Netzclub
termin – Ausgangsdaten
termin_idteam_idtiteldatumplaetzebeitrag
101Pythonabend2026-05-10124
112SQL-Werkstatt2026-05-1286
121Robotik2026-06-01105
132Datenrunde2026-05-2070
203Archivtreff2025-05-1597
213Junirunde2026-06-1592
buchung – Ausgangsdaten
buchung_idtermin_idanzahl
100102
101103
102111
103124

Ausgabe bzw. Vorschau

Noch nicht ausgeführt.
2 Tipps anzeigen
  1. LEFT JOIN erhält auch Termine ohne passende Buchung.
  2. Summiere anzahl statt Buchungszeilen zu zählen. COALESCE ersetzt ein fehlendes Summenergebnis durch 0.
Lösung anzeigen
SELECT termin.titel, COALESCE(SUM(buchung.anzahl), 0) AS gebucht FROM termin LEFT JOIN buchung ON termin.termin_id = buchung.termin_id GROUP BY termin.termin_id, termin.titel ORDER BY termin.termin_id;

Gesamtergebnis

Bearbeite Aufgaben, um deine Auswertung zu sehen.

Die Auswertung ist vorläufig, solange Aufgaben noch offen sind.