Eine SQL-Aufgabe mit eigener Datenbank stellen

Eine SQL-Aufgabe besteht aus zwei Tabs: der Abfrage, die die Lernenden schreiben, und dem Schema, das die Datenbank anlegt und füllt, auf der sie läuft. Beides legen Sie fest.

Das Schema gehört zur Aufgabe

Sie schreiben das `CREATE TABLE` und die `INSERT`-Anweisungen, sodass alle Lernenden dieselben Daten abfragen und Sie wissen, wie die richtige Antwort lautet. Die Tabellen werden neben dem Editor angezeigt, sodass sich niemand einen Spaltennamen merken muss.

Es ist SQLite und läuft bei jedem Versuch in einem eigenen Container. Jeder Lauf baut eine frische Datenbank im Arbeitsspeicher auf, wendet Ihr Schema an und dann die Abfrage. Wer eine Tabelle löscht, hat also nur die eigene Kopie gelöscht und die aller anderen nicht.

Eine neue SQL-Aufgabe öffnet sich mit einer kleinen Schuldatenbank, die sofort abgefragt werden kann: students, courses und enrollments mit je fünf Zeilen, genug, um ein select, ein where, ein order by und einen join auszuprobieren, bevor Sie ein eigenes Schema schreiben.

Ein SQL-Editor mit einer Abfrage, daneben die Tabellen, auf denen sie läuft, und ein Ausgabebereich
Links die Abfrage, rechts die Tabellen, auf denen sie läuft, und darunter die zurückgegebenen Zeilen. Niemand muss sich einen Spaltennamen merken.

Ausführen

„Ausführen“ führt die Abfrage aus und zeigt die Zeilen. „Schema ausführen“ baut die Datenbank neu auf, der Weg zurück nach einem Experiment, das schiefgegangen ist.

Automatisch bewerten mit einer Musterlösung

Geben Sie der Aufgabe eine Musterlösung, dann bewertet „Tests ausführen“ sie für Sie. Ein dritter Tab, „Musterlösung“, enthält Ihre eigene Abfrage. Die Abfrage der Lernenden und Ihre laufen beide auf demselben Schema, und ihre Zeilen werden verglichen, wobei die Reihenfolge unberücksichtigt bleibt, Duplikate aber nicht: Eine Antwort, die in anderer Reihenfolge zurückkommt, besteht, eine, die eine Zeile einmal liefert, wo sie zweimal kommen müsste, nicht. Es werden dieselben Spalten in derselben Reihenfolge verlangt, die Spaltennamen werden jedoch nicht verglichen.

Das Ergebnis ist ein einfaches Bestanden oder Nicht bestanden, ohne Teilpunkte und ohne Anzahl. Eine Abfrage, die gar nicht ausgeführt werden kann, zeigt „Nicht ausführbar“ statt „Nicht bestanden“, denn ein Syntaxfehler und eine falsche Antwort verdienen unterschiedliche Rückmeldungen. Die Musterlösung ist für Lernende verborgen, es sei denn, Sie setzen das Häkchen bei „Musterlösung für Lernende anzeigen, nur lesbar“. Die Schaltfläche wird ihnen in jedem Fall angeboten, sodass sie ihre Arbeit immer prüfen können.

In einer Lektion, und das Schema sperren

Ein SQL-Codeblock in einer Lektion hat dieselben zwei Tabs: Schreiben Sie das Schema einmal, und alle Lernenden führen ihre Abfragen auf diesen Tabellen aus, ohne die Lektion zu verlassen. Dasselbe gilt für eine SQL-Aufgabe, die einer Lektion hinzugefügt wird.

Setzen Sie das Häkchen bei „Schema für Lernende sperren“, dann sehen sie das Schema, können es aber nicht ändern, sodass alle die von Ihnen festgelegten Daten abfragen. Ohne Häkchen kann jede und jeder die eigene Kopie ändern.

Häufige Fragen

Welcher Dialekt?
SQLite, das nah genug an den Lehrplänen liegt und keinen Server braucht.
Können Lernende die Daten sehen, bevor sie sie abfragen?
Ja. Die Tabellen stehen mit ihren ersten Zeilen neben dem Editor.