summaryrefslogtreecommitdiff
path: root/doc/presentation.txt
blob: e2075e626ece04f00250e2daf2a23410ccb70793 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
= Interaktives SQL E-Learning Modul

:author: Jan Klemkow, Benjamin Franzke
:lang: de
:imagesdir: image

== IST-Zustand

 * Datenbank-Lektionen in Moodle
 * Online-Web-Tutorial mit Oracle (Nils Weber)

== Projekt Ziel

 * interaktive SQL-Tests innerhalb von Moodle
 * Auswertung des Lernfortschritts
 * PostgreSQL als Datenbank

== Problem: Benutzertrennung

image:conflict.svg[]

== Transaktionen

[source,sql]
----
# sqlbox instruction
BEGIN TRANSACTION;

# User Input:
SELECT * FROM blub;

# sqlbox instruction
ROLLBACK TRANSACTION;
----

== Transaktionen

[source,sql]
----
# sqlbox instruction
BEGIN TRANSACTION;

# User Input:
INSET INTO blub VALUES (1,'foo')
COMMIT TRANSACTION;
BEGIN TRANSACTION;
SELECT * FROM blub;

# sqlbox instruction
ROLLBACK TRANSACTION;
----

== Separate Datenbanken

image:multi-db.svg[]

== Read-Only

image:read-only.svg[]

[source,sql]
----
create user sqlbox_read with password 'XXXXXX';
GRANT SELECT ON ALL TABLES IN SCHEMA public TO sqlbox_read;
----

== Benutzer-Anfrage

image:query.svg[]

== SQLBox Modul

* Moodle-Aktivitäts-Modul
* Eine Instanz pro Aufgabe
* Geteilte Datenbank für alle Instanzen
* 3-Teilig
** Hauptteil (view): Aufgabenstellung + Query + Ergebnis-Tabelle
** Report: Anzeige der Anfragen pro SQLBox (Korrekt/Fehlerhaft?)
** Reportall: Anzeige aller Nutzer mit allen SQLBoxen & Fortschritt
* Nutzung von Moodle-Abstraktion z.b. für HTML-Table +
-> konsistentes Aussehen +
-> kompakter Programmcode

== Testdaten

 * Kopieren der Daten aus Oracle-Datenbank
 * Importieren der Beispieldaten in PostgreSQL
 * Konvertierung der Aufgaben zu SQLBox

[source,sql]
----
select dbms_xmlgen.getxml ('select * from lessons') from dual;
----

 * Transformation der XML Datensätze mit XSLT +
 -> SQL Statements für KAPV-Datenbank +
 -> Kommandozeilenaufrufe von curl für automatisches Anlegen von Aufgaben
 

== Demonstration

Demonstration!

// vim: ft=asciidoc :