summaryrefslogtreecommitdiff
path: root/doc/documentation.txt
blob: eeff920ab7d1f4444a35a43e9ef45ccfa7c2242b (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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
= Interaktives SQL E-Learning Module
:author: Jan Klemkow, Benjamin Franzke
:lang: de

== Einleitung

E-Learning ist heute mehr als nur die reine Zusammenstellung von Texten mit
Bildern und Videos.
Interaktive Inhalte mit denen der Student experimentieren kann, sind fuer
das praktische Lernerfolg von elementarer Bedeutung.
Der Bereich der Datenbanken ist ein gutes Beispiel, welches verdeutlicht,
wie wichtig das praktische Anwenden von Wissen fuer den Lernerfolg ist.
Fuer Datenbanken gibt eine grosse Menge von Lehrbuechern welche alle Aspekte
dieses Bereichs erlaeutern.
Diese Lehrbuecher und die Vorlesungen bilden im Presentsstudium die theoretische
Grundlage.
Um den Umgang mit Datenbanken zu erlehrnen werden zusaetzlich Praktika gegeben,
in denen die Studenten eigene Datenbanken erstellen, Daten einpflegen und wieder
abfragen.

Den Fernstudenten bieten sich solche Moeglichkeiten leider nicht.
Ihnen bleiben nur die Moeglichkeiten Anhand von Anleitungen eigenen
Test-Umgebungen aufzubauen, um mit dieses praktische Erfahrungen sammeln zu
koennen.

Diese Arbeit beschreibt die Integration von realen Datenbanken in einen
E-Learning-Kurs.

== Grundlagen

Im Fachbereich EuI an der Hochschule Wismar werden zwei verschiedene
Systeme -- ILIAS und Moodle -- fuer Online-Kurse genutzt.
Diese Lernplattformen sind beide webbasiert und in PHP geschrieben.
Inhalte fuer verschiedene Kurse der Praesentsstudiengaenge sind dort zu finden.
Die Lerninhalte des Fachs Datenbanken werden als Kurse des Moodle-Systems
bereit gestellt.
Zudem gibt es interaktives Online-Tutorial fuer eine Oracle-Datenbank.
Dieses System wurde von Niels Weber im Rahmen einer Diplomarbeit realisiert.

=== Moodle

Moodle ist eine modulare Open-Source Lernplattform.
Sie ist webbasiert und in der Programmiersprache PHP geschrieben.

=== Oracle-Tutorial

Das Oracle-Tutorial ist ein eigenstaendiges webbasiertes System welches nicht
mit den anderen Lernplattformen verknuepft ist.
Es bietet den Studenten die Moeglichkeit anhand eines konstruiten Szenarios,
auf einer realen Datenbank SQL-Abfragen zu stellen.
Den Studenten werden dabei verschieden Aufgaben gestellt zu dessen Beantwortung
sie SQL-Abfragen formulieren muessen.
Diese werden dann auf der Beispieldatenbank ausgefuehrt und das Ergebnis intern
mit einer vorgegebenen Loesung verglichen.
Die Aufgaben sind dabei so gewaehlt, dass der Student moeglichst mit alle Arten
und alle Aspekte einer SQL-Anfrage konfrontiert wird.
Somit bekommt der Student einen umfassenden Einblick in die Moeglichkeiten, die
sich einem mit SQL-Datenbanken ergeben.

=== Moodle-Module

Moodle-Module.

=== Videos einbinden

Für Moodle ist ein integriertes Video-Plugin verfügbar.

== SQLBox

Im SQLBox

=== Sandbox für User-Queries

Der Nutzer der SQLBox muss bei jedem Aufruf einen konsistenen Datenbestand
vorfinden. Dazu ist es notwendig, dass Anfrage in einer Sandbox ablaufen.
Zu diesem Zweck sollen folgend verschiedene Möglichkeiten vorgestellt und
evaluiert werden.

===== Transactions

Eine Idee ist es, die Eingabes des Nutzers durch Transactions zu schützen,
indem vor dem Ausführen der Nutzeranfrage eine Transaction gestartet wird,
und danach diese immer zurückgerollt (=ROLLBACK) wird:

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

# User Input:
SELECT * FROM blub;

# sqlbox instruction
ROLLBACK TRANSACTION;
----

Ein Nutzer könnte aber aus dieser Sandbox ausbrechen, in dem er die gestartet
Transaktion beendet, den Datensatz manipuliert und dann eine neue Transaction
startet:

[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;
----

== Literatur

* Niels Weber, Diplomarbeit

// vim: syntax=asciidoc textwidth=80 :