Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
36a6d53
Add files via upload
RNitzsche Mar 15, 2020
5539263
Add files via upload
RNitzsche Mar 15, 2020
eef5b1a
Delete old12 zu komplexes Beispiel.pdf
RNitzsche Mar 15, 2020
c63b2eb
Add files via upload
RNitzsche Mar 15, 2020
9ec9e65
Update readme.md
RNitzsche Mar 15, 2020
59cc723
Links auf Bilder korrigiert (Assets statt assets)
RNitzsche Mar 15, 2020
47b4342
Kapitelnummerierung korrigiert
RNitzsche Mar 15, 2020
353de57
Kapitelnummerierung korrigiert
RNitzsche Mar 15, 2020
7b12ea1
Update readme.md
RNitzsche Mar 15, 2020
71d8050
Update readme.md
RNitzsche Mar 15, 2020
12e407b
Update readme.md
RNitzsche Mar 15, 2020
3617a6a
Update readme.md
RNitzsche Mar 15, 2020
d05faae
Update readme.md
RNitzsche Mar 15, 2020
993d0ac
Kapitelnummerierung korrigiert
RNitzsche Mar 15, 2020
e0b1dd7
Update readme.md
RNitzsche Mar 15, 2020
218e699
Update index.html
RNitzsche Mar 15, 2020
160f7c6
Update readme.md
RNitzsche Mar 15, 2020
a3b3fc9
Update _sidebar.md
RNitzsche Mar 15, 2020
81c0474
Update _sidebar.md
RNitzsche Mar 15, 2020
64c0b2b
Update index.md
RNitzsche Mar 15, 2020
561d79d
wird nicht benötigt
RNitzsche Mar 15, 2020
6f9f605
wird nicht benötigt
RNitzsche Mar 15, 2020
ba4fe54
Update _sidebar.md
RNitzsche Mar 15, 2020
27c14b6
Links gefixt
RNitzsche Mar 15, 2020
d5105e2
Update index.md
RNitzsche Mar 15, 2020
8f9853b
Update readme.md
RNitzsche Mar 15, 2020
3f832ae
Update index.md
RNitzsche Mar 15, 2020
3d278d9
Update index.md
RNitzsche Mar 15, 2020
f9f01c1
Update readme.md
RNitzsche Mar 15, 2020
742834e
Update readme.md
RNitzsche Mar 15, 2020
5fc3388
Update readme.md
RNitzsche Mar 15, 2020
8de0940
Update _sidebar.md
RNitzsche Mar 15, 2020
9287402
Moodle-Anforderungen konkretisiert
RNitzsche Mar 15, 2020
da4c46b
Formatfehler
RNitzsche Mar 15, 2020
be55cf8
Update readme.md
RNitzsche Mar 15, 2020
0d6d4f1
Kleine Verbesserung (Klarstellung)
RNitzsche Mar 26, 2020
92a9ee1
Update 03-Erste-Schritte.md
homlador Sep 10, 2020
03a8cc2
Update 03-Erste-Schritte.md
homlador Sep 10, 2020
7b3965e
Update 05-Einfache-SQL-Abfragen.md
homlador Sep 17, 2020
324ab04
Tippfehler in centimeters korrigiert
homlador Sep 17, 2020
de072b8
Beispiel für COUNT
homlador Sep 17, 2020
589cafa
Aufgabe zu COUNT erweitert
homlador Sep 17, 2020
08704f4
Merge pull request #1 from homlador/master
RNitzsche Feb 27, 2021
be33a7c
Add files via upload
RNitzsche Feb 28, 2021
5644218
Add files via upload
RNitzsche Feb 28, 2021
cf4471c
Update 02-Einstimmung.md
RNitzsche Feb 28, 2021
f7867fe
Update 01-Vorwort.md
RNitzsche Feb 28, 2021
d6b158d
Update 05-Einfache-SQL-Abfragen.md
RNitzsche Feb 28, 2021
a0e1b02
Update 06-SQL-Abfragen-mit-einer-Tabelle.md
RNitzsche Feb 28, 2021
8f41ece
Update 03-Erste-Schritte.md
RNitzsche Feb 28, 2021
47abac7
Update 07-Daten-aendern.md
RNitzsche Feb 28, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions 00-META.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
lang: de
numbersections: true
VersionODT: 0.3 (05.02.2020)
---
7 changes: 7 additions & 0 deletions 00-TITLE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
title: Datenbanken
subtitle: Eine Einführung mit InstaHub
author: Reinhard Nitzsche
date: Version 0.3 (05.02.2020)
---

43 changes: 43 additions & 0 deletions 000-Liesmich.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
---
title: Technisch-Didaktisches Liesmich für das InstaHub-Skript
lang: de
numbersections: true
author: Reinhard Nitzsche
VersionODT: 0.2 (21.01.2020)
version: 0.2 (21.01.2020)
---

# Ziel

- Aus den MD-Dateien werden einsatzbereite ODT-, PDF- und EPUB-Dateien erstellt.
- EPUB kann als Moodle-Buch in Moodleimportiert werden
- Die vielfältigen Dateiformate bieten Raum für Differenzierungen und individuelle Entscheidungen der Lehrkraft.

# Ordner im Stammverzeichnis

- Abbildungen: Abbildungen, die im Skript und in Moodle verwendet werden in der Rohfassung bzw. im Quellformat
- Assets: Abbildungen, die in den MD-Dateien referenziert werden. Diese sind so skaliert, dass sie in EPUB, ODT und PDF einigermaßen vernünftig aussehen
- EPUB, ODT und PDF: In diese Ordner werden die konvertierten Dateien geschrieben. Der Inhalt wird also ohne Rückfrage überschrieben!
- Video: Screencasts zur Ergänzung des Skriptes

# Dateien im Stammverzeichnis

- *.md: Die einzelnen Kapitel des Buches. Folgende Ausnahmen:

- 000-Liesmich.md: Diese Datei
- 00-Meta.md: Meta-Angaben, die in jede EPUB- und die Einzel-ODT-Dateien geschrieben werden sollen. Das YAML-Feld VersionODT soll denselben Wert wie das Feld date in 00-Titel.md enthalten. Es wird in der Fußzeile der ODT-Dateien als Feld eingefügt.
- 00-Titel.md: Meta-Angaben, die in die Komplett-Dateien, aber nicht in die ODT-Dateien geschrieben werden sollen.

- instahub.css: CSS-Informationen, die in EPUB eingebettet werden, von vielen Readern aber offenbar nicht interpretiert werden.

- instahub.xml: Meta-Daten für EPUB. Ob die neben den YAML-Angaben noch nötig sind, habe ich nicht getestet. Kofler schreibt das aber so. (Vgl. Kofler: Markdown & Pandoc, 2. Auflage)

- InstaHubCover.png: Das Titelbild für das EBook

- instahubTemplate.odt: Die Vorlage, nach der die ODT-Dateien geschrieben werden. Laut Pandoc ist das kein Template, aber es funktioniert fast wie eines. Die Datei darf offenbar keine Bilder enthalten. Übernommen werden Seiteneinstellungen inkl. der Inhalte der Kopf- und Fußzeilen.

Sie ist derzeit so eingerichtet, dass zwei A4-Seiten auf eine A4-Seite kopiert werden könnnen.

- makeall.bat: Eine Batch-Datei, die alle EPUB-, ODT- und PDF-Dateien erstellt.


55 changes: 55 additions & 0 deletions 01-Vorwort.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@

# Vorwort

Julian Dorns InstaHub ist ein wundervolles Werkzeug, um Datenbanken zu unterrichten. Das vorliegende Skript orientiert sich an dem von ihm vorgeschlagene Vorgehen, weicht aber an einigen Stellen ab.

Zielgruppe des Skriptes und des unterstützenden Moodle-Kurses sind Schüler*innen mit Mittlerem Bildungsabschluss auf dem Weg zur (Fach-)Hochschulreife. Entstanden ist es für den Unterricht in beruflichen Vollzeitschularten. Der Einsatz in allgemeinbildenden Schulen und mit leistungsstarken jüngeren Schüler\*innen ist aber möglich.

## Pfade durch dieses Skript {-}

Einige Kapitel sind optional. Sie behandeln interessante Themen, die aber in den späteren Kapiteln nicht wieder aufgegriffen werden. Sie können also weggelassen werden, wenn dies notwendig ist. Eventuell ist auch ein Einsatz im Rahmen der Binnendifferenzierung sinnvoll.

Je nach zur Verfügung stehender Zeit, bestehenden Vorkenntnissen und gewünschtem Fokus kann auf die Behandlung der folgenden Kapitel auch verzichtet werden:

- Kapitel 4 Suchmaske
- Kapitel 8 Passwörter speichern
- Kapitel 10 Vertiefung ER-Modell
- Kapitel 11 SQL-Abfragen über mehrere Tabellen (JOIN)

*Reinhard Nitzsche*

## Lizenz {-}

![Logo Lizenz "Creative Commons Namensnennung - Nicht kommerziell - Weitergabe unter gleichen Bedingungen"](Assets/01-cc-by-nc.eu.png)

Datenbanken. Eine Einführung mit Instahub von Reinhard Nitzsche ist lizenziert unter einer [Creative Commons Namensnennung-Nicht kommerziell 3.0 Deutschland Lizenz](http://creativecommons.org/licenses/by-nc/3.0/de/).

Klarstellung: Der Einsatz im Unterricht und in Arbeitsgemeinschaften in öffentlichen Schulen ist nicht kommerziell.

## Nur möglich durch {-}

Dieses Skript entstand unter Einsatz folgender Software:

1. Die Markdown-Dateien wurden mit Typora editiert, die
2. pandoc in verschiedene Zielformate übersetzt hat, darunter
3. ODT, aus dem Libre Office und PDFCreator dann PDF-Dateien erzeugt haben.
4. Die Screenshots wurden mit Greenshot erzeugt und annotiert.
5. Der Moodle-Kurs wurde wäre ohne Moodle undenkbar (ach nee...),
6. Die Lernspiele im Moodle-Kurs entstanden bei LearningApps.com.
7. Die Screencasts im Moodle-Kurs wurden mit OBS erstellt.

Allen an der Entwicklung dieses Tools beteiligten herzlichen Dank.

Wertvolle Hinweise verdanke ich den Schüler\*innen der Klassen Abi21b, BOM19-2 und BOM19-3 der Beruflichen Schule Elmshorn.

## Bildnachweis {-}

Alle verwendeten Grafiken sind eigene Werke oder stammen aus der Public Domain:

+ tango-Projekt
+ Open Clipart Library

Allen Zuträger\*innen herzlichen Dank.



159 changes: 159 additions & 0 deletions 02-Einstimmung.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,159 @@
# Einstimmung

## InstaHub?

InstaHub ist ein soziales Netz, das Instagram ähnelt. Es gibt aber einen ganz wichtigen Unterschied: Anders als Instagram lässt InstaHub Sie hinter die Kulissen blicken. So gewinnen Sie Einblicke in die Arbeitsweise von sozialen Netzen und lernen ganz nebenbei, wie Datenbanken funktionieren.

Die folgenden Screenshots geben Ihnen einen Eindruck davon, was Sie in InstaHub erwartet:

![In InstaHub können Sie Fotos hochladen.](Assets/02-InstaHub-Screenshot-1.png)

![Sie können Ihren Freund\*innen folgen ...](Assets/02-InstaHub-Screenshot-2.png)

![... und Ihre Freund\*innen können Ihnen folgen!](Assets/02-InstaHub-Screenshot-3.png)

![Fotos können kommentiert und bewertet werden.](Assets/02-InstaHub-Screenshot-4.png)

InstaHub funktioniert also fast wie Instagramm. Inklusive Werbung. Der entscheidende Unterschied ist, dass alles in InstaHub fiktiv ist. Die Menschen gibt es genauso wenig wie die Unternehmen, die die Werbung schalten.

Unter https://instahub.org/#guest können Sie sich schon einmal umsehen.

## Datenbanken?

Eine Datenbank ist wie eine Bank, der man sein Geld bringen kann. Nur eben für Daten.
Das schöne an einer Bank ist, das man ihr sein Geld anvertrauen kann, und es auch wieder bekommt, wenn mann will:

![Man kann Banken sein Geld geben und wieder bekommen](Assets/02-Bank.png)

Bei einer Datenbank ist es ganz ähnlich, nur dass die Benutzer:innen statt Geld dort Daten abgeben und wiederholen:

![Datenbanken kann man seine Daten geben und wieder bekommen](Assets/02-Datenbank.png)



## Datenbanken sind überall

Programme, die Datenbanken verwalten, heißen **Datenbankmanagementsysteme** (DBMS). Kleinere DBMS sind Microsoft Access oder Libre Office Base. Größere DBMS sind MySQL und der MS SQL-Server.

Im Grund stellen die meisten DBMS lediglich die Möglichkeit bereit, gigantische Tabellen zu erstellen und sie in Windeseile zu verknüpfen.

Wenn Sie zum Beispiel mit Google[^10] nach "instahub" suchen, schlägt Google in seinen Datenbanken nach und stellt in 0,36 s fest, dass sie fast 30 Millionen Treffer hat:

![Google findet in unter einer Sekunde fast 30 Millionen Websites zum Thema "Instahub"!](Assets/02-Googlesuche.png)

[^10]: Die anderen Suchmaschinen machen es genauso, aber die Zeit gibt nur Google aus...

Kein Onlineshop kommt ohne Datenbanken aus - z. B. für die Produktpräsentation und die Verwaltung der Bestellungen:

![Onlineshops sind ohne Datenbanken nicht vorstellbar (Quelle: www.buecher.de)](Assets/02-Onlineshop.png)

Aber auch beim Versand der Ware geht nichts ohne Datenbanken:

![Jedes Paket hinterlässt seine Spuren in Datenbanken (Quelle: UPS.COM)](Assets/02-UPS-Sendungsverfolgung.png)

#### Aufgabe 2.1: Datenbanken sind überall {-}

*Überlegen* Sie: Wo sind Sie in den letzten Tagen wohl Datenbanken begegnet? Wo *vermuten* Sie Datenbanken, die Informationen über Sie speichern?

## Eigenschaften von DBMS

### Warum Datenbanken, wir haben doch Tabellenkalkulationen!

Wenn die meisten Datenbanken aus lauter Tabellen bestehen, drängt sich die Frage auf, warum wir dafür nicht einfach eine Tabellenkalkulation wie z. B. Microsoft EXCEL oder Libre Office Calc verwenden. Hier also die wichtigsten Gründe für die Verwendung von Datenbankmanagementsystemen (DBMS):

### Viele Köche verderben nicht immer den Brei

DBMS ermöglichen in der Regel zahlreichen Benutzer:innen gleichzeitig den Zugriff auf die gespeicherten Daten. Man spricht auch von **Mehrbenutzerfähigkeit**.

Mehrere Benutzer:innen können also zeitgleich auf eine Tabelle zugreifen, eventuell sogar auf die selbe Zeile (Bei Datenbanken spricht man von *Datensatz*). Tabellenkalkulationen erlauben dies in der Regel allenfalls zum lesen.

Über diese Möglichkeit verfügen zwar zunehmend auch Tabellenkalkulationen, aber nur in eingeschränkter Weise und nich für eine große Zahl gleichzeitiger Zugriffe.

### Was ich darf, darfst Du noch lange nicht!

DBMS erlauben **Zugriffsbeschränkungen**. Das heißt, dass nicht alle Benutzer:innen über die selben Rechte verfügen. Einige typische Rechte sind z. B.:

- Erstellen neuer Tabellen
- Ändern der Struktur bestehender Tabellen
- Datensätze ansehen
- Datensätze einfügen
- Datensätze löschen
- Datensätze verändern

### Jedem das Seine

DBMS müssen den unterschiedlichen Bedürfnissen und Fähigkeiten der Benutzer:innen Rechnung tragen und für jede Benutzergruppe unterschiedliche Schnittstellen zur Verfügung stellen. Man spricht von **Mehrbenutzerschnittstellen**. Z. B. gibt es Oberflächen für gelegentliche Nutzer:innen, oder Schnittstellen für die Programmierer:innen von Datenbankanwendungen oder hochentwickelte Anfragesprachen für versierte Nutzer:innen mit sehr speziellen Informationsbedürfnissen.

### Ich sehe was, was Du nicht siehst!

DBMS ermöglichen die Einrichtung von Datensichten (*views*), d. h. unterschiedlicher Perspektiven auf die Datenbank. So könnte z. B. jede:r Dozent:in einer Universität eine Liste aller Teilnehmer:innen seines Kurses inklusive der vorher besuchten Kurse sehen, obwohl diese Daten in vielen Tabellen verstreut liegen.

### Lass mich mal abschreiben!

Wie viele Stellen im Betrieb benötigen eigentlich die Adresse eine:r Kund:in? Mindestens folgende:

- Kundenbuchhaltung,
- Versand und
- Marketing.

Dieses mehrfache Speichern derselben Sachverhalte nennt man *Redundanz*. (lat. *redundare* „im Überfluss vorhanden sein“). Redundanz bringt Probleme mit sich:

- Wenn ein- und dieselben Daten an verschiedenen Stellen gespeichert sind, werden Daten mehrfach erfasst (mehrfacher Zeitaufwand) und mehrfach gespeichert (mehrfacher Speicherplatz).
- Das wäre noch nicht so schlimm. Es gibt noch ein viel größeres Problem: Das der Inkonsistenz. (lat.: *in* nicht, *con* zusammen, *sistere* halten) Die Wahrscheinlichkeit ist groß, dass irgendwann Versand und die Kundenbuchhaltung unterschiedliche Adressen verwenden, weil der Kunde umgezogen ist, aber einer von beiden das nicht mitbekommen hat. Die Pakete gehen dann z. B. schon an die neue Adresse, während die Rechnung an die alte Adresse geht.

DBMS sollten über eine **Redundanzkontrolle** verfügen, so dass bei (manchmal unvermeidlicher) redundanter Speicherung von Daten Inkonsistenzen verhindert werden.

### Beziehungskisten

Die Tabellen einer Datenbank hängen untereinander logisch zusammen. DBMS unterstützen diese komplexen Beziehungen, in dem sie diese Beziehungen verwalten und effizient miteinander verbinden und aktualisieren können. Z. B. dient die Personalnummer in vielen Tabellen der Personalabteilung zur Identifizierung eines Mitarbeiters. Diese **Beziehung zwischen Daten** nennt man auch **Relation**. Sie ist so wichtig, dass die wichtigste Gruppe von DBMS sogar nach ihr benannt wurde: Die **relationalen Datenbanken**. Instahub liegt eine solche relationale Datenbank zu Grunde. Auch Access und Base sind relationale Datenbanken.

### Vertrauen ist gut, Kontrolle besser!

Datenbanken können in DBMS so definiert werden, dass bestimmte **Integritätsbedingungen** (Integrität: lat. *integritas* „unversehrt“, „vollständig“) zu jedem Zeitpunkt eingehalten sein müssen. Auf diese Weise kann z. B. sicher gestellt werden, dass jeder Kurs eine*n Dozent\*in bekommt und kein\*e Student\*in einen Kurs belegen kann, den es gar nicht gibt.

### Daten, Daten, Daten – soweit das Auge reicht!

DBMS sind darauf ausgerichtet, mit sehr großen Datenmengen umgehen zu können. Das Selektieren von tausenden Datensätzen aus einer Datenbank mit Millionen von Datensätzen dauert in modernen DBMS nur Bruchteile von Sekunden.

### Sicher ist sicher!

Sollte es zu einem Problem mit dem DBMS kommen, z. B. wegen eines Soft- oder Hardwarefehlers, sorgen DBMS durch geschickte Speicherung der Daten auf der Festplatte für die Möglichkeit, auf einem korrekten Zustand kurz vor Entstehen des Problems wieder aufzusetzen. (**Recovery**)

#### Aufgabe 2.2: Eigenschaften von DBMS {-}

*Erstellen* Sie eine Tabelle, in der Sie zu jeder in diesem Abschnitt genannten Eigenschaft von DBMS ein Beispiel aus einem Warenwirtschaftsystem eines Unternehmens finden. Warenwirtschaftssysteme dienen zur Abbildung der Warenströme in Unternehmen.

## Die Client-Server-Architektur

Es vermeidet Missverständnisse, wenn wir vor der Arbeit mit InstaHub noch einen Blick auf die Client-Server-Architektur (oft auch: Client-Server-Modell) werfen.

Den Begriff "Server" kennen sie bestimmt bereits. Zum Beispiel wissen Sie, dass ein Server ausfallen kann und dann etwas nicht mehr funktioniert, auf das Sie dringend angewiesen sind.

Beispiel: Herr Ölgemöller arbeitet in der Buchhaltung der Hausverwaltung Sörkeling. In seinem Büro befindet sich ein Drucker, auf den er über das lokale Netz (LAN) zugreift. Der Druckserver ist ausgefallen. Obwohl sowohl sein Rechner als auch der Drucker dienstbereit sind, kann Herr Ölgemöller nicht drucken, da der vom Server angebotene Dienst "Drucken" nicht verfügbar ist.

![Die Client-Server-Architektur](Assets/02-Client-Server.png)

Bei der Client-Server-Architektur gibt es mindestens zwei IT-Systeme. Das eine ist der Server, der Dienste anbietet und das andere ist der Client, der diese Dienste in Anspruch nehmen kann. Meist greifen mehrere Clients auf einen einzigen Server zu.

In einem IT-Lexikon liest sich das dann so:

> **Client-Server-Architektur** (engl.: *client-server architecture*) Kooperative Form der Informationsverarbeitung bei der sich ergänzende Softwarekomponenten meist (aber nicht zwangsläufig) auf unterschiedliche Rechner verteilt werden, die über ein Rechnernetz verbunden sind. Ein Client-Server-System ist eine einfache Form eines verteilten Systems, bei dem die Rollenverteilung zwischen dem Serverprogramm und Klientenprogramm statisch ist und meist eine 1:n-Beziehung darstellt. (Vgl. Hansen, S. 64)

Beachten Sie: Client und Server sind im Sinne der Client-Server-Architektur *Softwarekomponenten* und keine *Hardware* (Geräte)! Daher können Client und Server auch durchaus auf ein- und demselben Rechner laufen. Z. B. wird bei der Entwicklung von Websites gerne auf das Packet XAMP zurück gegriffen. Es stellt einen vollen Webserver zur Verfügung , der u.a. aus den folgenden Komponenten besteht:

+ HTTP-Server
+ Datenbankserver
+ Mailserver

Wenn es InstaHub nicht gebe, wäre der Einsatz von XAMPP eine Möglichkeit, im Unterricht mit Datenbanken zu arbeiten. Wir arbeiten aber mit Instahub. Jede:r Schüler:in wird im Browser (=Client) die Website von Instahub aufrufen und dort Datenbankabfragen an den Server senden. Sie brauchen den Inhalt Ihres Instahubs also nicht auf einem USB-Stick zu speichern. Ihre Daten sind immer auf dem Server. Alles was Sie brauchen, ist ein Internetfähiger Rechner und eine Internetverbindung.

## Quellen zu diesem Kapitel {.unnumbered}

+ Abschnitt [Eigenschaften von DBMS]:
+ *Elmasri*, Rami und Shamkant B. Navathe: Grundlagen von Datenbanksystemen. Ausgabe Grundstudium. 3. Auflage. Pearson. S. 24-35.

+ Abschnitt [Die Client-Server-Architektur]:
+ *Hansen*, H. R. und Neumann, G.: Arbeitsbuch Wirtschaftsinformatik. IT-Lexikon, Aufgaben, Lösungen. UTB. 7. Auflage.



Loading