Sie sind auf Seite 1von 742

HTBLA Traun

In Kooperation mit dem HERDT-Verlag stellen wir Ihnen eine PDF inkl. Zusatzmedien für Ihre persönliche Weiterbildung
zur Verfügung. In Verbindung mit dem Programm HERDT-Campus ALL YOU CAN READ stehen diese PDFs nur
Lehrkräften und Schüler*Innen der oben genannten Lehranstalt zur Verfügung. Eine Nutzung oder Weitergabe für
andere Zwecke ist ausdrücklich verboten und unterliegt dem Urheberrecht. Jeglicher Verstoß kann zivil- und
strafrechtliche Konsequenzen nach sich ziehen.

Informationstechnologie
Grundlagen
Thomas Joos
(Stand 2019)
8. Ausgabe, Januar 2020
ITECH

ISBN 978-3-86249-962-5

Schulversion
I Informationstechnologie – Grundlagen

Bevor Sie beginnen … 4 7.4 Warum Software Engineering? 65


7.5 Programme grafisch darstellen 67
7.6 Programmiermethoden 69
1 Informationen zu diesem Buch 5
7.7 Übung 70
1.1 Voraussetzungen und Ziele 5
1.2 Aufbau und Konventionen 6
8 Grundlagen der Programmierung 71
8.1 Wie Computern Befehle erteilt werden 71
2 Grundbegriffe der Datenverarbeitung 7
8.2 Überblick über Programmiersprachen 71
2.1 Was sind Informationen, Nachrichten
8.3 Befehle 76
und Daten? 7
8.4 Variablen und Datentypen 79
2.2 Die grundlegende Funktionsweise eines
Computers 9 8.5 Funktionen 82
2.3 Software und Hardware 11 8.6 Objektorientierung 82
2.4 Übung 13 8.7 Eingabeaufforderung unter Windows 84
8.8 Die Entwicklungsumgebung 84
8.9 Übung 85
3 Grundbegriffe der Digitaltechnik 14
3.1 Logische Grundfunktionen der Digitaltechnik 14
3.2 Zahlensysteme 16 9 Betriebssysteme 86
3.3 Codes 21 9.1 Was ist ein Betriebssystem? 86
3.4 Übung 23 9.2 Kennzeichen eines Betriebssystems 88
9.3 Die Betriebssysteme Windows NT 3.1/3.51/4.0,
2000, XP, Vista und Windows 7/8/8.1/10 89
4 Eingabegeräte 24 9.4 Das Betriebssystem macOS 94
4.1 Informationen an den Computer übergeben 24
9.5 Das Betriebssystem Linux 95
4.2 Die Eingabegeräte im Einzelnen 25
9.6 Das Betriebssystem UNIX 97
4.3 Übung 28
9.7 FreeBSD 98
9.8 Betriebssysteme im Einsatz 99
5 Verarbeitungsgeräte 29 9.9 Übung 99

5.1 Daten an Verarbeitungsgeräte übertragen 29


5.2 Die Datenverarbeitung im PC 34 10 Software 100
5.3 Chipsatz und Bussysteme 37 10.1 Aufteilung der existierenden Programmarten 100
5.4 Die Funktion der CPU 39 10.2 Merkmale der Textverarbeitung 101
5.5 Arbeitsspeicher 44 10.3 Tabellenkalkulation 102
5.6 Massenspeicher – Festplatten und SSD 46 10.4 Datenbanken 102
5.7 Übung 49 10.5 Präsentationen und Grafiken 103
10.6 Weitere typische Standardanwendungen 104
6 Ausgabegeräte 50 10.7 Der Einsatz von Standardsoftware im
Unternehmen 107
6.1 Drucker und Multifunktionsgeräte 50
10.8 Softwarelizenzierung 109
6.2 Grafikkarten 54
10.9 Software beurteilen 110
6.3 Monitore 56
10.10 Neue Tendenzen bei der Nutzung
6.4 Übung 59
von Software 112
10.11 Übung 113
7 Software und Software Engineering 60
7.1 Datei und Dateiformate 60
11 Datenbanken 114
7.2 Aktuelle Dateisysteme 62
11.1 Was ist eine Datenbank? 114
7.3 Programme 65
11.2 Datenbankmodelle 118

2 Schulversion © HERDT-Verlag
Inhalt I
11.3 Datenbankentwicklung 122 15 Datensicherheit 180
11.4 ER – Entity Relationship 124 15.1 Daten absichern: wofür, wovor, wogegen? 180
11.5 Normalisierung 125 15.2 Zugriffsschutz 181
11.6 SQL 127 15.3 Verschlüsselung 183
11.7 Übung 131 15.4 Computerviren 189
15.5 Datensicherung – Backups 193

12 Einführung in Computernetze 132 15.6 Übung 200

12.1 Wichtige Begriffe 132


12.2 Ziele einer Vernetzung 134 16 Datenschutz 201
12.3 Übertragungsmedien 136 16.1 Problemstellungen bei
12.4 Physikalische Topologien 141 personenbezogenen Daten 201

12.5 Geräte in Computernetzen 142 16.2 Gesetze zum Datenschutz 201

12.6 Merkmale eines Servers 144 16.3 Datenschutz und Internet 206

12.7 Software zum Zugriff auf Computernetze 145


12.8 Übung 148 17 Auswirkungen der IT auf Mensch
und Natur 210
13 Kommunikation in Computernetzen 149 17.1 Ergonomie bei Bildschirmarbeitsplätzen 210
17.2 Investitionsschutz 213
13.1 Das OSI-Modell 149
17.3 Recycling 216
13.2 Die sieben Schichten des OSI-Modells 153
17.4 Urheberrecht 218
13.3 Protokolle 158
13.4 DHCP im Netzwerk einsetzen und verstehen 159
13.5 TCP/IP (Transmission Control Protocol/ 18 E-Business und E-Commerce 220
Internet Protocol) 162
18.1 Grundlagen zu E-Business und E-Commerce 220
13.6 Übung 166
18.2 Intranet und E-Business 222
18.3 Extranet und E-Business 224
14 Netzwerke und Netzwerkdienste 167 18.4 Internet und E-Business 224
14.1 Telekommunikation in öffentlichen Netzen 167 18.5 Übung 226
14.2 Zugang zu Netzen 169
14.3 Dienste in Netzen 173
Stichwortverzeichnis 227
14.4 Weitere populäre Angebote im Netz 177
14.5 Übung 179

© HERDT-Verlag Schulversion 3
Bevor Sie beginnen …

Bevor Sie beginnen …


BuchPlus - unser Konzept:
Problemlos einsteigen - Effizient lernen - Zielgerichtet nachschlagen
(weitere Infos unter www.herdt.com/BuchPlus)

Für die meisten Kapitel stehen Übungsdateien mit Fragen zu den Kapitelinhalten zur Verfügung.
Anhand der Ergebnisdateien kontrollieren Sie schnell, ob Sie die entsprechenden Übungen
korrekt ausgeführt haben. Für einige Kapitel stehen Ihnen außerdem Ergänzende Lerninhalte mit
weiterführenden oder ergänzenden Inhalten zu Buchinhalten zur Verfügung.

Nutzen Sie dabei unsere maßgeschneiderten, im Internet frei verfügbaren Medien:

 Rufen Sie im Browser die Internetadresse www.herdt.com auf.

Geben Sie den folgenden


2 Matchcode ein: ITECH.

1 Wählen Sie Codes.

4 Schulversion © HERDT-Verlag
Informationen zu diesem Buch 1

1
1. Informationen zu diesem Buch

1.1 Voraussetzungen und Ziele

Zielgruppe
 IT-Berufe (Fachinformatiker/Fachinformatikerin, IT-System-Elektroniker/IT-System-
Elektronikerin, IT-System-Kaufmann/IT-System-Kauffrau und Informatikkaufmann/
Informatikkauffrau)
 Auszubildende IT-Fachkräfte

Empfohlene Vorkenntnisse
Für dieses Buch sind keine speziellen Vorkenntnisse erforderlich.

Lernziele
Dieses Buch vermittelt Ihnen die wichtigsten Grundbegriffe und Anforderungen im Zusammenhang
mit der elektronischen Datenverarbeitung und der Informationstechnologie. Sie erlernen die wich-
tigsten Begriffe zu Hard- und Software, Netzwerken, Betriebssystemen, Software Engineering, der
Programmierung, Datenschutz und -sicherheit. Nach dem Durcharbeiten dieses Buchs kennen Sie
Einsatzbereiche, Funktionsweisen, Zielsetzungen und Realisierungen im Zusammenhang mit
Computern, Anwendungsprogrammen, Netzen und Diensten.

Hinweise zur verwendeten Hard- und Software


Als verwendete Hardware sollte ein aktueller Computer gewählt werden, auf dem Windows 10
installiert werden kann. Da in den meisten Unternehmen diese Systeme im Einsatz sind, sollten
Administratoren und IT-Profis in der Lage sein, diese Betriebssysteme zu installieren. Dazu ist
nicht unbedingt neueste Hardware notwendig, jedoch ein Rechner, der nicht älter als Baujahr
2016 ist.

© HERDT-Verlag Schulversion 5
1 Informationen zu diesem Buch

1.2 Aufbau und Konventionen

Inhaltliche Gliederung
Das Buch beginnt mit einer Erklärung der Grundbegriffe der Elektronischen Datenverarbeitung
(EDV) beziehungsweise der Informationstechnologie (IT), der Hardware und anschließend der
Software, einschließlich Software Engineering, Programmierung, Betriebssystemen und Daten-
banken. Nach der Darstellung wichtiger Konzepte und Begriffe aus IT-Netzwerken schließt das
Buch mit zentralen Themen der modernen Informationsgesellschaft, wie z. B. Datenschutz.

Typografische Konventionen
Damit Sie bestimmte Elemente auf einen Blick erkennen und zuordnen können, werden diese im
Text besonders formatiert. So werden z. B. wichtige Begriffe fett hervorgehoben.
Kursivschrift kennzeichnet alle vom Programm vorgegebenen Bezeichnungen für Schalt-
flächen, Dialogfenster, Symbolleisten etc., Menüs bzw. Menüpunkte (z. B. Datei -
Speichern), Internetadressen und vom Benutzer angelegte Namen (z. B. Rechner-,
Benutzernamen).
Courier wird für Systembefehle sowie für Datei- und Verzeichnisnamen verwendet.
In Syntaxangaben werden Parameter kursiv ausgezeichnet (z. B. cd Verzeich-
nisname). Eckige Klammern [] kennzeichnen optionale Elemente. Alternative
Eingaben sind durch einen senkrechten Strich | getrennt. Benutzereingaben auf
der Konsole werden fett hervorgehoben.

Weitere Medien nutzen


 Haben Sie Interesse an älteren Systemen bzw. prinzipiell an der Entstehungsgeschichte des
Computers, besorgen Sie sich ältere PC-Literatur, z. B. auf Flohmärkten, oder nutzen Sie das
Internet (z. B. Wikipedia).
 Im privaten Umfeld empfehlenswert sind für Einsteiger Zeitungen wie „COMPUTER BILD“
(http://www.computerbild.de), für Fortgeschrittene die „PC-Welt“ (http://www.pcwelt.de)
oder „Chip“ (http://www.chip.de).
 Im professionellen Umfeld ist „heise online“ die erste Adresse (http://www.heise.de), um
sich bezüglich der aktuellen Entwicklung im IT-Bereich schnellstmöglich auf den aktuellsten
Stand zu bringen.
 Weitere wichtige Seiten sind beispielsweise IP-Insider (http://www.ip-insider.de),
Security-Insider (https://www.security-insider.de/) und ComputerWeekly
(https://www.computerweekly.com/de).

Weitere Medien von HERDT nutzen


Möchten Sie Ihre Informationstechnologie-Kenntnisse erweitern, empfehlen wir Ihnen aus
unserem Webshop unter http://www.herdt.com:

 PC-Technik – Grundlagen  Netzwerke – Grundlagen

6 Schulversion © HERDT-Verlag
Grundbegriffe der Datenverarbeitung 2

2
2. Grundbegriffe der Datenverarbeitung

2.1 Was sind Informationen, Nachrichten und Daten?

Nachrichten- und Informationssysteme


Bei allen Systemen, die Nachrichten, Informationen oder Daten austauschen, wird eine Folge von
Zeichen über ein komplexes Netzwerk weitergeleitet. Dieses Netzwerk kann aus verschiedenen
Zwischenknoten bestehen. Dabei wird in jedem Zwischenknoten die Nachricht als Ganzes
gespeichert und nach Freigabe des nächsten Übertragungsabschnittes an den folgenden Zwischen-
knoten bzw. an die Empfängereinheit weitergegeben.

Nachrichtensysteme können verschiedene Aufgaben erfüllen:

Aufgabe von Nachrichtensystemen Anwendungsbeispiel


Signalwandlung Temperatur, Luftdruck
Ortung Radar, Lawinensuchgerät
Notruf SOS, Flugfunk, Polizei
Datenverarbeitung Statistiken, Berechnungen
Reine Informationsübertragung Rundfunk, Fernsprechen
Steuerung Verkehrsleitsystem

Ein einfaches Beispiel für ein Nachrichtensystem ist das Zustandekommen einer Telefon-
verbindung. Durch das Abheben des Hörers stellen Sie eine Verbindung mit dem Rechner Ihres
Anbieters her. Das könnte die Telekom sein (Festnetz) oder aber auch Ihr DSL-Anbieter wie
beispielsweise ebenfalls die Telekom oder 1&1 (Telefonieren über das Internet). Nach Übergabe
der von Ihnen gewählten Rufnummer sucht der Rechner über eine komplexe Datenbank- und
Schaltungslogik den Leitungsweg zum gewünschten Teilnehmer und stellt anschließend eine
Verbindung her. Je nach Zustand der Leitung erhalten Sie das Freizeichen oder das Besetztsignal.
Haben Sie ein Freizeichen und der gerufene Teilnehmer beantwortet Ihren Ruf, können Sie auf
diesem Weg Nachrichten und Informationen austauschen.

© HERDT-Verlag Schulversion 7
2 Grundbegriffe der Datenverarbeitung

Klassifizierung von Signalen


Unter Signal ist die Darstellung von Informationen durch den Wert oder Wertverlauf einer physi-
kalischen Größe zu verstehen. Bestehen bei einem Signal die zugehörigen Signalparameter aus
kontinuierlichen Werten, spricht man von einem Analogsignal. Ein Signal, dessen Signal-
parameter aus einem bestimmten Wertebereich bestehen, bezeichnet man als Digitalsignal.

Analogsignale
„Analog“ kommt aus dem Griechischen und
bedeutet 'entsprechend, ähnlich, gleich-
artig'. Bei analogen Signalen werden der Wert
einer physikalischen Größe, wie beispielsweise
Strom oder Spannung, und ihr zeitlicher Verlauf Analoges Signal Digitales Signal
erfasst. Bei analogen Signalen kann zu jedem
beliebigen Zeitpunkt jeder beliebige Wert
angenommen werden.

Bei analogen Daten handelt es sich um Daten, die durch eine Zeigerstellung (Uhr), durch eine
Skala (z. B. Thermometer) oder durch eine Kurve (z. B. Töne) dargestellt werden. Die Werte
dieser Daten können stufenlos (stetig) geändert werden. So kann beispielsweise die Uhrzeit exakt
wiedergegeben werden.

Digitalsignale
„Digital“ kommt aus dem Lateinischen und heißt 'mit dem
Finger' bzw. 'ziffernmäßig'. Digital bedeutet also: in ein Zahlen-
Raster gebracht oder mit Ziffern arbeitend. Ein digitales Signal ist
dementsprechend eine Folge von festen Zahlen.

Mit der analogen Uhr lassen sich alle Uhrzeiten stufenlos anzeigen.
Die abgebildete digitale Uhr erlaubt die Darstellung der Uhrzeit nur
auf die Sekunde genau. Selbst bei einer feineren Einteilung,
beispielsweise in Millisekunden, bleiben Zwischenwerte, die nicht
dargestellt werden können. Diese Zwischenwerte müssen auf- oder
abgerundet werden.

Datum und Uhrzeit


unter Windows 10

Definition von Informationen


Unter Informationen versteht man den Inhalt einer Nachricht. Informationen enthalten keine
irrelevanten oder redundanten Teile, wie dies bei einer Nachricht der Fall ist.

8 Schulversion © HERDT-Verlag
Grundbegriffe der Datenverarbeitung 2

Definition von Nachrichten


Eine Nachricht ist definiert als eine endliche Folge von Zeichen, die der Übermittlung von Infor-
mationen dient. Vorrangig bei der Übertragung von Nachrichten ist dabei die vom Sender zum
Empfänger gerichtete Übermittlung der Information. Sobald eine Nachricht den Empfänger
erreicht, hat sie ihre Aufgabe erfüllt. Ob die Nachricht für den Empfänger verwertbare Informa-
tionen enthält, ist dabei nicht relevant.

Definition von Daten


Daten sind Informationen zum Zweck der Verarbeitung. Daten können, ebenso wie Signale, in
analoger oder digitaler Form vorliegen. Bei Daten hat man es vor allem mit Nachrichten zu tun,
die nicht durch menschliche Sinne aufgenommen wurden. Daten werden entsprechenden
Systemen (Daten verarbeitende Anlage) zur automatischen Verarbeitung zugeführt. Bei Daten
kann es sich um Buchstaben, Zahlen oder Symbole handeln.

Beeinflussende Größen bei einer Übertragung


Eine ideale Übertragung von Signalen würde ein System voraussetzen, welches durch keinerlei
Störungen von außen oder durch materialbedingte Systemkomponenten arbeiten würde. Die
wesentlichen Störgrößen bei der Übertragung von Signalen sind:
 Änderung der Signalamplitude durch Dämpfung (aktueller Spannungswert eines Signals)
 Überlagerung durch Störungen von außen (beispielsweise durch Übersprechen)
 Verzerrungen aufgrund schlechter Leitungsqualität
 Toleranzen und Überlagerung von Rauschen durch elektronische Bauelemente

Informationsgehalt einer Nachricht


Inhalt und Wertigkeit einer Nachricht sind stark abhängig von der Erwartung, welche an die
Information gestellt wird. So wäre beispielsweise die Wetterlage in Japan für eine Person eher
uninteressant, wenn sie sich gerade in Italien befindet. Dagegen könnte die Wettervorhersage
für Italien für diese Person aber umso interessanter sein.

2.2 Die grundlegende Funktionsweise eines Computers


IT – Information Technology (Informationstechnik)
Der Begriff IT ist aus dem täglichen Sprachgebrauch nicht mehr wegzudenken, häufig benutzt
in Kombination mit einer Erweiterung wie z. B. IT-Struktur, IT-Entwicklung, IT-Management,
IT-Abteilung etc.

Letztendlich steckt hinter diesen Begriffen, dass Daten in digitaler Form erfasst, gespeichert,
bearbeitet und ausgewertet sowie übertragen werden. Auch schon vor dem Computer-Zeitalter
mussten solche Vorgänge organisiert, verwaltet, strukturiert, überwacht und weiterentwickelt
werden.

Ergänzende Lerninhalte: Geschichte der Datenverarbeitung.pdf


Hier finden Sie einen Überblick zur Entwicklungsgeschichte der Datenverarbeitung.

© HERDT-Verlag Schulversion 9
2 Grundbegriffe der Datenverarbeitung

Der Begriff „Computer“


Das Wort „Computer“ stammt aus dem Englischen und lässt sich mit dem Begriff „Rechner“ über-
setzen („to compute“ entspricht 'rechnen'). Ein Computer ist eine programmgesteuerte Maschine
zur Verarbeitung von Daten.

Das EVA-Prinzip
Alle Computertypen funktionieren nach dem gleichen Grundprinzip, dem EVA-Prinzip.

Eingabe Verarbeitung Ausgabe

Der Computer wird über ein Diese Informationen werden Die Ergebnisse werden über
oder mehrere Eingabegeräte anhand einer Vorgabe (Pro- Ausgabegeräte aus- bzw.
mit Daten und Anweisungen gramm) durch den Computer weitergegeben.
versorgt. verarbeitet.

Eingaben für einen Computer


Bei den Eingaben handelt es sich entweder um Informationen, die weiterzuverarbeiten sind, oder
um Befehle, die eine Aktion des Computers hervorrufen. Dazu zählen z. B. …
 Informationen von einem Eingabegerät (beispielsweise einer Tastatur, einer Maus, einem
Touchscreen, einem Scanner, einer Kamera oder einem Messfühler);
 Informationen von anderen Computern.

Verarbeitung durch den Computer Ausgabe durch den Computer


 Berechnungen  Bildschirmausgabe
 Speichern von Daten  Ausdruck
 Vergleichen von Daten  Audioausgabe
 Sortieren von Daten  Weitergabe an andere Computer

Das EVA-Prinzip am Beispiel Computerkasse


Lesen und Anzeigen der Artikeldaten
Eingabe Mit einem Barcodeleser werden die Barcodes (Strichcodes) der Artikel
eingelesen.
Verarbeitung Anhand des Barcodes ermittelt der Computer (Großrechner) mithilfe einer
internen Übersicht (Tabelle) die Artikelnummer, die Artikelbezeichnung und den
Einzelpreis des jeweiligen Artikels.
Ausgabe Die Artikeldaten wie Bezeichnung, Einzel-/Gesamtpreis bzw. Stückzahl werden
am Bildschirm angezeigt.

10 Schulversion © HERDT-Verlag
Grundbegriffe der Datenverarbeitung 2

Erstellen und Verbuchen der Rechnung


Eingabe Über die Tastatur wird die Erstellung der Rechnung angefordert.
Verarbeitung Gleichzeitig werden die Einzelpreise summiert. In einer anderen Tabelle (der
Lagerbestandstabelle) wird eingetragen, welche Artikel verkauft wurden, und
gegebenenfalls eine Nachbestellung für zur Neige gehende Artikel vom Groß-
rechner ausgelöst.
Ausgabe Die Rechnungssumme wird am Bildschirm angezeigt und von der Kasse
ausgedruckt.

Zahlung der Rechnung mit einer EC-Karte


Eingabe Die EC-Karte des Kunden wird durch den Kartenleser gezogen.
Der Kunde gibt seine Geheimnummer über eine spezielle Tastatur ein.
Verarbeitung Der Computer prüft die Daten auf Gültigkeit und verbucht die Rechnung als
mit EC-Karte bezahlt.
Ausgabe Die Rechnung wird ausgedruckt.
Alle Informationen werden an den Großrechner im Rechenzentrum des Super-
marktes weitergegeben. Auch hier greift wieder das EVA-Prinzip. Die Daten
werden dort weiterverarbeitet, an den Großrechner der Bank weitergegeben
usw.

Bei diesen Beispielen handelt es sich um einige typische Arbeiten an einer Computerkasse.
Auch alle anderen Arbeiten wie Stornos, Barzahlungen usw. werden jeweils durch eine Eingabe
gestartet, bewirken eine Verarbeitung durch den Computer und enden mit einer Ausgabe.

2.3 Software und Hardware

Software
Der Begriff Software bezeichnet Computerprogramme, die Befehle und Befehlsfolgen enthalten,
mit denen der Computer gesteuert wird. Software wird in zwei Kategorien eingeteilt:
 Betriebssystemsoftware zur Steuerung der Abläufe im Computer;
 Anwendungssoftware, mit der spezifische Aufgabenstellungen durchgeführt werden:
beispielsweise Textverarbeitung, Tabellenkalkulation, Bildbearbeitung, Surfen im Internet,
Lesen von E-Mails oder Spielen.

© HERDT-Verlag Schulversion 11
2 Grundbegriffe der Datenverarbeitung

Hardware
Unter Hardware werden alle physikalischen Teile in der EDV zusammengefasst, also alle Geräte,
die Sie anfassen können: Tastatur, Maus, Bildschirm, Computer, Drucker usw.

Auch ein moderner Computer,


beispielsweise ein PC, verfügt über
Eingabe-, Verarbeitungs- und 

Ausgabegeräte.

Eingabegeräte

Eingabegeräte nehmen die Informa-
tionen und Arbeitsanforderungen
entgegen, die ein Benutzer dem
Computer übergeben möchte. Sie  
bilden die Schnittstelle zwischen
Mensch und Maschine.

Haupteingabegerät ist die Tastatur . Komponenten eines PCs


Sie erlaubt die direkte Zeicheneingabe
in den Computer.

Weitere Eingabegeräte sind:



 Maus  oder Touchpad 

 Touchscreen 
 Scanner und Kamera
Quelle: Notebookcheck.com
 Grafiktablett
 Sonderformen wie Chipkarten-
leser, Speicherkartenleser 
oder ein Mess-Sensor
 Audiogeräte (z. B. Sprach-
steuerung per Mikrofon)

Verarbeitungsgeräte
Wenn Informationen an den Computer übergeben werden, kann er sie verarbeiten. Dazu wurden
zunächst mechanische, später elektrische und elektronische Schalt- und Rechenwerke entwickelt.
Zunächst war die Informationsverarbeitung auf einen durch den Aufbau des Rechenwerks
bestimmten Prozess festgelegt. Erst im Laufe der Entwicklung der Verarbeitungsgeräte ergab sich
die Möglichkeit, den Verarbeitungsprozess selbst zu steuern: Die Rechenwerke erhalten heute
variable Programme, in denen der Arbeitsablauf vorgegeben werden kann.

Insgesamt wurden Verarbeitungsgeräte durch die Weiterentwicklung der Technik immer kleiner
und leistungsfähiger. Sie werden heute fast ausschließlich auf Halbleiterbasis aufgebaut und
arbeiten elektronisch mit digitalen Informationseinheiten. Die Forschung beschäftigt sich jedoch
unter anderem auch mit Computern auf der Basis organischer Moleküle und mit Quanten-
computern.

12 Schulversion © HERDT-Verlag
Grundbegriffe der Datenverarbeitung 2

Im Gehäuse  sind alle Bestandteile zur Verarbeitung installiert. Derzeit umfassen Verarbeitungs-
geräte im Wesentlichen folgende Elemente:
 eine CPU (Central Processing Unit) zur eigentlichen
Prozessverarbeitung
 Arbeitsspeicher zur vorübergehenden Ablage von
Informationen
 verschiedene Peripheriegeräte für den Informations-
austausch mit der Umgebung
 Controller für Schnittstellen
 Chipsätze
 Bussysteme
 Speichermedien zur dauerhaften Ablage von
Informationen und Programmen

Im modernen PC werden viele dieser Bestandteile auf


einer einzigen Leiterplatte untergebracht, dem Main-
board (Motherboard, Hauptplatine; vgl. auch  ). Mainboard

Ausgabegeräte
Die Ausgabegeräte liefern die Ergebnisse der Informationsverarbeitung des Computers an den
Benutzer. Sie bilden die andere Schnittstelle zwischen Maschine und Mensch und wandeln die
Informationen des Computers in Signale um, die von menschlichen Sinnesorganen wahr-
genommen werden können.

Heute ist der Monitor, der die Verarbeitungsergebnisse visuell auf einem Bildschirm anzeigt, das
wichtigste Ausgabegerät. Ein weiteres wichtiges Ausgabegerät ist der Drucker. Er übermittelt die
Informationen schriftlich auf einem Trägermedium wie Papier. Sonderformen der Ausgabegeräte
sind Signalgeber wie Lampen oder Lautsprecher, die unter anderem optische und akustische
Warnsignale an den Benutzer übermitteln können.

2.4 Übung

Grundbegriffe verstehen
Level Zeit 10 Minuten

Übungsinhalte  Signale kennen und unterscheiden


 Netzwerktypen unterscheiden
Übungsdatei Uebung02.pdf
Ergebnisdatei Uebung02-E.pdf

© HERDT-Verlag Schulversion 13
3 Grundbegriffe der Digitaltechnik

3
3. Grundbegriffe der Digitaltechnik

3.1 Logische Grundfunktionen der Digitaltechnik

Warum Logik?
Im heutigen Zeitalter gehören computergesteuerte Anlagen und Maschinen zum täglichen
Arbeitsumfeld. Selbst am frühen Morgen, wenn der Radiowecker rücksichtslos unseren Schlaf
stört, ist bereits Logik im Sinne der Technik im Spiel. Nahezu alle elektronischen Geräte haben als
Steuerelement einen „Mini-Computer“ (Mikroprozessor) eingebaut. Damit Mini-Computer
reibungslos funktionieren, sind logische Abläufe erforderlich. Alle Zustände, die ein solcher Mini-
Computer verarbeiten soll, liegen als entsprechender Ein- oder Aus-Zustand vor. Werden diese
Zustände miteinander gekoppelt, spricht man von logischen Verknüpfungen.

Boolesche Algebra
Die boolesche Logik oder auch boolesche Algebra wurde nach dem Mathematiker Georg Boole
(England, 1815–1864) benannt. Grundlage der booleschen Algebra ist die Darstellung von Werten
in binärer Form. Darunter versteht man, dass die Werte einer untersuchten Aussage entweder
„wahr“ oder „falsch“ sind. Bei der booleschen Algebra existieren nur zwei Grundwerte. Diese
beiden Grundwerte können durch eine Reihe von logischen Operationen miteinander verknüpft
werden. Das Resultat solcher Verknüpfungen wird in Tabellen, den sogenannten Wahrheits-
tabellen, definiert. Die grundlegenden logischen Funktionen sind UND, ODER, NICHT.

Die booleschen Hauptverknüpfungen


Die booleschen Hauptverknüpfungen und ihre Logikbausteine sind in der nachfolgenden Tabelle
aufgelistet:

Logisches UND Logisches ODER Logisches NICHT


Konjunktion Disjunktion Negation
Boolesches Produkt Boolesche Summe Boolesches Komplement
Nur wenn alle Eingänge "1" Wenn mindestens ein Eingang Es gibt nur einen Eingang. Wenn
sind, ist der Ausgang "1". "1" ist, ist der Ausgang "1". dieser "1" ist, wird der Ausgang
"0", wenn er "0" ist, ist der Aus-
gang "1".

14 Schulversion © HERDT-Verlag
Grundbegriffe der Digitaltechnik 3

Die hier verwendeten Schaltplan-Symbole entsprechen der Norm IEC 60617-12 aus der IEC-
60617-Schaltzeichen-Datenbank. Die International Electrotechnical Commission (IEC) ist eine
internationale Normungsorganisation (http://www.iec.ch).

Schaltalgebra
Die Schaltalgebra ist ein Spezialfall der booleschen Algebra. In ihr werden allgemeine Aussagen
wie „wahr“ oder „falsch“ durch Schaltzustände (Kontakt offen, Kontakt geschlossen) ersetzt.
Auf diese Art und Weise ist es dann möglich, Schaltnetze durch boolesche Gleichungen zu
beschreiben. In der Schaltalgebra ist es üblich, die UND-Funktionen als Multiplikationszeichen
und die ODER-Funktion als Pluszeichen darzustellen. Die NICHT-Funktion wird als Querstrich über
den Signalen oder durch das mathematische Nicht-Zeichen (¬) gekennzeichnet.

Die Abbildung einer „logischen Gleichung“ sieht so aus: (E1 + E2) * (E3 + E4) = A1
Gelesen wird das Ganze dann als: (E1 ODER E2) UND (E3 ODER E4) = A1

Wahrheitstabelle der booleschen Hauptverknüpfungen


Noch deutlicher können die logischen Grundfunktionen in einer sogenannten Wahrheitstabelle
dargestellt werden. Wahrheitstabellen beinhalten alle Kombinationen der Eingangssignale mit dem
dazugehörigen Ausgangssignal.

UND E1 E2 A1 ODER E1 E2 A1 NICHT E1 A1


0 0 0 0 0 0 0 1
0 1 0 0 1 1 1 0
1 0 0 1 0 1
1 1 1 1 1 1

Beispiele zur Verwendung von boolescher Logik


Alarmanlage
Ein Raum hat zwei Türen und ein Fenster. Die Alarmanlage E1 &
soll Alarm auslösen, wenn beide Türen mit einem Sicher- E2
heitsschloss abgeschlossen sind und entweder ein & Alarm
Bewegungsmelder im Raum oder ein Berührungsmelder
E3 1
am Fenster anspricht. E4
Darstellung mit Logikbausteinen

Wenn die beiden Türkontakte die Signale E1 und E2 sein sollen, der Bewegungsmelder E3 und
der Berührungsmelder am Fenster E4, ergibt sich die folgende Gleichung:
Alarm = (E1*E2) * (E3 + E4)

© HERDT-Verlag Schulversion 15
3 Grundbegriffe der Digitaltechnik

Suchmaschinen im Internet
Um eine Anfrage an eine Suchmaschine zu stellen, müssen Sie in das dafür vorgesehene Ein-
gabefenster die beschreibenden Wörter eingeben und bestätigen oder mit dem Mauszeiger auf
die Suchtaste klicken. Als Ergebnis erhalten Sie dann eine Liste, welche den entsprechenden
Suchbegriff beinhaltet. Die angezeigten Ergebnisse entsprechen aber nur selten der gewünschten
Anforderung. Zur Abgrenzung der Suchkriterien können die Suchmaschinen die elementaren
Funktionen der booleschen Algebra verwenden.

Automatische UND-Suche
Bei der UND-Verknüpfung werden alle Seiten angezeigt, in denen Ihr eingegebener Suchbegriff
enthalten ist. Um eine Suche einzuschränken, müssen Sie die gewünschten Begriffe eingeben und
anschließend Ihre Eingabe bestätigen. Durch die der Suchmaschine zugrunde liegende auto-
matische UND-Verknüpfung der Suchbegriffe ist es nicht mehr erforderlich, die gewünschten
Suchbegriffe durch den Ausdruck UND miteinander zu verbinden.

ODER-Suche
Möchten Sie jedoch nur die Seiten anzeigen lassen, in denen mindestens einer der angegebenen
Suchbegriffe vorkommt, müssen Sie die Suchwörter mit einem OR-Operator verknüpfen. Die
Eingabe Rolling OR Stones findet beispielsweise alle Seiten, in denen wenigstens einer dieser
Begriffe vorkommt.

NICHT-Suche
Ein weiterer Operator, der Ihnen bei Suchmaschinen zur Verfügung steht, ist die NICHT-
Verknüpfung. Die NICHT-Verknüpfung bei Suchmaschinen wird durch ein vorangestelltes Minus-
Zeichen (-) angegeben. Dieses Minus-Zeichen ist ohne ein Leerzeichen vor den eigentlichen
Suchbegriff zu setzen, der nicht in den gefundenen Dokumenten enthalten sein soll. Beispiels-
weise erhalten Sie durch die Eingabe von Rolling -Stones alle Dokumente, in denen zwar Rolling
vorkommt, nicht aber das Wort Stones.

3.2 Zahlensysteme
Der Umgang mit Zahlen ist häufig eine zeitaufwendige und komplizierte Angelegenheit. Beson-
ders im naturwissenschaftlichen Bereich oder bei der Computertechnologie werden Zahlen und
Zahlensysteme vermehrt eingesetzt. Gerade in diesen Bereichen ist es notwendig, Zahlen von
einer Darstellungsform in eine andere umzuwandeln. So ist es für uns einfacher, mit einem
Zahlensystem auf der Basis von zehn (Dezimalsystem) zu arbeiten, als mit Symbolen bzw.
Buchstaben, wie dies beim römischen Zahlensystem der Fall ist. Viel schwieriger ist es für uns
jedoch, eine Folge von Nullen und Einsen entsprechend zu verarbeiten. Für Computer und
Rechenanlagen hingegen sind zur Verarbeitung von Informationen genau diese Zahlenkombi-
nationen am einfachsten darzustellen.

16 Schulversion © HERDT-Verlag
Grundbegriffe der Digitaltechnik 3

Dezimales Zahlensystem
Da Menschen zehn Finger zum Rechnen zur Verfügung stehen, entwickelten sie das Dezimalsystem.
Das Dezimalsystem ist ein Stellenwertsystem mit der Zahlenbasis 10. Das Dezimalsystem benötigt
also 10 verschiedene Zustände (Ziffern). Diese 10 Ziffern sind die Zahlen 0 bis 9.

Im Zehnersystem hat jede Stelle einer Zahl einen Stellenwert. Man spricht von Einern, Zehnern,
Hundertern, Tausendern usw.

Dezimalsystem

Das entspricht den Potenzen von 10: 2 4 3


Einer entsprechen 100 3 Einer = 3 * 100
Zehner entsprechen 101 4 Zehner = 4 * 101
Hunderter entsprechen 102 usw. 2 Hunderter = 2 * 102

Binäres (duales) Zahlensystem


Binär oder zweiwertig bedeutet, dass ein System jeweils einen von zwei Zuständen annehmen
kann. Ein Bit charakterisiert beispielsweise einen binären Zustand. Ist der Zustand vorhanden, hat
das Bit den Wert 1. Ist der Zustand nicht vorhanden, hat es den Wert 0. Ein Bit kennt also nur
zwei Zustände:

 Ja/nein  High/low  Null/eins


 Strom/kein Strom  Auf/zu

Das Dualsystem ist für die Verarbeitung von Zahlen im Computer besonders geeignet, da in ihm
nur zwei Ziffern benötigt werden: 0 und 1.

Auch im Dualsystem hat jede Stelle einer Zahl Dualsystem


einen Stellenwert. Man spricht von Einern,
1 1 1 1 0 0 1 1
Zweiern, Vierern, Achtern usw.
Das entspricht den Potenzen von 2:
Einer entsprechen 20 1 * 1 = 1 * 20

Zweier entsprechen 21 1*2 = 1 * 21

Vierer entsprechen 22 0*4 = 0 * 22


usw. 0*8 = 0 * 23
1 * 16 = 1 * 24
1 * 32 = 1 * 25
1 * 64 = 1 * 26
1 * 128 = 1 * 27
= 243

© HERDT-Verlag Schulversion 17
3 Grundbegriffe der Digitaltechnik

Hexadezimales Zahlensystem Dual Hexadez. Dez. Dual Hexadez. Dez.


Das Hexadezimalsystem wurde ein- 0000 0 0 1000 8 8
geführt, weil große Dualzahlen schwer 0001 1 1 1001 9 9
lesbar sind. Zur Vereinfachung ist es
üblich, Dualzahlen von rechts her in 0010 2 2 1010 A 10
4-Bit-Gruppen einzuteilen und diese mit 0011 3 3 1011 B 11
einem Hexadezimal-Code zu codieren.
Dieser Code besteht aus den Dezimal- 0100 4 4 1100 C 12
ziffern von 0 bis 9 und den Buchstaben 0101 5 5 1101 D 13
von A bis F.
0110 6 6 1110 E 14
0111 7 7 1111 F 15

Mit diesem Code kann die oben genannte Dualzahl jetzt folgendermaßen dargestellt werden:
H F3. Der Buchstabe "H" am Anfang kennzeichnet die Zahl als Hexadezimalzahl, da es sonst unter
Umständen zu Verwechslungen kommen könnte: Die Zahlen 12 und H12 sind vollkommen ver-
schieden voneinander. H12 entspricht dual 0001 0010, das ist dezimal 18. Sie sehen an diesem
Beispiel, dass Sie eine Hexadezimalzahl einfach in eine Dualzahl umwandeln können, indem Sie
für jede Hexadezimalziffer wieder die entsprechende Dualkombination aus der Tabelle einsetzen.

Eine Hexadezimalzahl können Sie auch als eine Zahl mit der Basis 16 auffassen. Das bedeutet, in
der Zahl H12 können Sie jede Ziffer mit ihrer Wertigkeit multiplizieren, wobei die Wertigkeiten
Potenzen von der Basis 16 sind. In diesem Fall behalten Sie für H12 den Wert
1 x 161 + 2 x 160 = 18.

Umrechnung von dezimal nach dual


Bei der Umwandlung von Dezimalzahlen in die duale Darstellungsform können Sie zwei ver-
schiedene Methoden verwenden:

 Umwandlung durch Subtraktion  Umwandlung durch Division

Umwandlung durch die Subtraktionsmethode


Bei der Umwandlung einer Dezimalzahl in die duale Darstellungsform wird der Gesamtwert der
Dezimalzahl auf die verschiedenen Spaltenwerte einer Tabelle aufgeteilt. Dabei wird der jeweils
höchstmögliche Wert vom Dezimalwert abgezogen (Gesamtwert/Rest). Bei einer möglichen
Subtraktion wird in die zugehörige Spalte eine "1" eingetragen. Alle anderen Spalten erhalten
eine "0".

Stellenwerte 27 26 25 24 23 22 21 20
Dezimalwerte 128 64 32 16 8 4 2 1
243 1 1 1 1 0 0 1 1

18 Schulversion © HERDT-Verlag
Grundbegriffe der Digitaltechnik 3

243 - 128 = 115 1


115 - 64 = 51 1
51 - 32 = 19 1
19 - 16 = 3 1
3- 8 -> neg. Wert nicht möglich 0
3- 4 -> neg. Wert nicht möglich 0
3- 2 =1 1
1- 1 =0 1
Lösung 1 1 1 1 0 0 1 1
Umwandlung dezimal – dual durch Subtraktion

 Erstellen Sie eine Tabelle, in welcher die Wertigkeit von Dualzahlen den entsprechenden
Dezimalzahlen zugewiesen ist (siehe Tabelle oben).
 Tragen Sie die Dezimalzahl, welche Sie in eine Dualzahl umwandeln wollen, in Ihre Tabelle
ein. In diesem Beispiel ist es die Dezimalzahl 243.
 Ermitteln Sie die höchstmöglich darstellbare Dezimalzahl und subtrahieren Sie diese vom
darzustellenden Gesamtwert. In diesem Beispiel ist das die Zahl 128 (243 - 128).
 Setzen Sie für eine erfolgreiche Subtraktion den Binärwert auf "1".
 Übertragen Sie den Rest der Subtraktion in eine neue Zeile.
 Ermitteln Sie die nächstmöglich darstellbare Dezimalzahl und führen Sie erneut eine Sub-
traktion durch.
 Wiederholen Sie diese Vorgänge, bis Sie einen negativen Wert bzw. den Rest "0" erhalten.
 Setzen Sie für einen negativen Wert bei der Subtraktion den Binärwert auf "0".

Umwandlung durch die Divisionsmethode 243 : 2 = 121 Rest 1


 Dividieren Sie die Dezimalzahl durch 2. Der Rest aus 121 : 2 = 60 Rest 1
der Division ist eine Ergebnisstelle, und zwar die Stelle 60 : 2 = 30 Rest 0
mit der Wertigkeit 20. 30 : 2 = 15 Rest 0
 Dividieren Sie das Ergebnis aus Schritt 1 wieder durch 15 : 2 =7 Rest 1
2. Der Rest aus diesem Schritt entspricht der
Wertigkeit 21. 7:2 =3 Rest 1
 Fahren Sie so fort, bis der Quotient 0 ist. 3:2 =1 Rest 1
1:2 =0 Rest 1
Lösung: 11110011
Umwandlung dezimal – dual durch
Division durch 2

© HERDT-Verlag Schulversion 19
3 Grundbegriffe der Digitaltechnik

Umrechnung von dezimal nach hexadezimal


Zur Umrechnung einer Dezimalzahl in eine Hexadezimalzahl können Sie den aufwendigen Umweg
über die Ermittlung der entsprechenden Dualzahl gehen. Oder Sie wenden auch hier die Divi-
sionsmethode an. Der Unterschied bei der Divisionsmethode zur Umwandlung einer Dezimalzahl
in eine Hexadezimalzahl ist die Verwendung des Wertes 16 anstelle einer 2.

Beispiel: Die Dezimalzahl 168 soll in eine Hexadezimalzahl umgewandelt werden. Mit der
Divisionsmethode sieht das so aus:
168 : 16 = 10, Rest 8
10 : 16 = 0, Rest 10

Der Rest von 10 entspricht in der hexadezimalen Schreibweise dem Wert "A". Die Darstellung des
Dezimalwertes in Hexadezimal lautet demnach: H A8. Das "H" vor dem Ergebnis kennzeichnet die
hexadezimale Schreibweise.

Definition einer Festpunktzahl


Bei einer Festpunktzahl wird ein Punkt als Markierungszeichen zwischen zwei fest gewählten
Stellen im zugehörigen Zahlsystem gesetzt. Der Festpunkt tritt demnach in der Zahlendarstellung
nicht explizit auf.
Beispiel: Darstellung von Geldbeträgen ohne Komma: 12835
Im Beispiel entspricht die Festpunktzahl 12835 einem Betrag von EUR 128,35. Bei dieser Zahlen-
darstellung sind die beiden am weitesten rechts stehenden Positionen stets als Ziffern nach dem
impliziten Punkt zu verstehen. Der Vorteil dieser Darstellung von Zahlen liegt darin, dass digitale
Rechenoperationen auf Computern mit Festpunktzahlen wesentlich schneller durchgeführt
werden, da diese im Gegensatz zu einer Gleitpunktzahl nicht erst umgewandelt werden müssen.

Definition einer Fließpunktzahl


Eine Dezimalzahl kann auch als Gleitpunktzahl angegeben werden. Unter Gleitpunktdarstellung
versteht man die Exponentialdarstellung oder wissenschaftliche Darstellung einer Zahl.

Beispiel: Bei der wissenschaftlichen Darstellung einer Zahl wird das Komma so lange nach rechts
verschoben, bis davor eine Zahl zwischen 1 und 9 steht. Wenn das Komma um n Stellen nach
rechts verschoben wird, muss die neue Zahl mit 10-n multipliziert werden.
Dezimalbruch: 4321/1000000 = 4321 Millionstel
Festpunktzahl: 4321/1000000 = 0.004321
Die Festpunktzahl aus dem obigen Beispiel wird als Gleitpunktzahl folgendermaßen dargestellt:
Gleitpunktzahl: 0.004321 = 4.321·10-3
Die Zahl 4.321 nennt man Mantisse, die Zahl -3 den Exponenten.

20 Schulversion © HERDT-Verlag
Grundbegriffe der Digitaltechnik 3

Umrechnung zwischen den Zahlensystemen mit dem Windows-


Rechner
Seit Windows 7 können Sie mit dem Programm Rechner
Umrechnungen zwischen den Zahlensystemen
vornehmen. In Windows 10 stehen sogar noch mehr
Möglichkeiten zur Verfügung.

 Wählen Sie in Windows 7 im Menü Ansicht den Eintrag


Programmierer. Dieser steht in Windows 10 über dem
Menüpunkt mit den drei Strichen ebenfalls zur
Verfügung.
 Geben Sie in das Eingabefeld den gewünschten Wert
ein und wählen Sie das Zahlensystem, in das
umgerechnet werden soll.

3.3 Codes

Zeichendarstellung mit Codes


Die Aufgabe von Codes ist es, Zahlen, Buchstaben und Zeichen in eine andere Darstellungsform
zu bringen. Aufgrund der unterschiedlichen Anforderungen, welche an Codes gestellt werden,
existiert eine Vielzahl verschiedener Codes, die jedoch alle das gleiche Ziel haben: die Darstellung
von Zeichen zur schnelleren und einfacheren Verarbeitung durch mikroprozessorgesteuerte
Maschinen und Anlagen. Typische Beispiele für Codes:

 der Binär-Dezimal-Code (BCD)  der ASCII-Code  der ISBN-Code

Darstellung von Informationen


Computer sind digitale Systeme, welche nur die Binärinformationen "0" und "1" verarbeiten
können. Demnach sind Computer also nur in der Lage, Zahlen zu verarbeiten, die im Dualsystem
dargestellt sind. Da Anwender jedoch im Zehnersystem rechnen, muss eine Ein-/Ausgabe von
Zahlen oder Informationen in einer für die Anwender verständlichen Form erfolgen. Bei einer
Informationsverarbeitung in einem Rechner ist also immer eine Umwandlung der Informationen
erforderlich.

Das Dualsystem hat erhebliche Vorteile, da es nur mit zwei Zahlen arbeitet. Alle Daten, die im
Dualsystem verschlüsselt sind, lassen sich problemlos und mit sehr niedriger Fehlertoleranz auf
verschiedene Arten darstellen, weitergeben und verarbeiten.

© HERDT-Verlag Schulversion 21
3 Grundbegriffe der Digitaltechnik

Binär-Dezimal-Codes Dezimalziffer BCD-Code


Andere Bezeichnungen dafür sind BCD oder BCD-Code, Ab- 0 0000
kürzungen des englischen Begriffs „Binary Coded Decimal“.
1 0001
BCDs sind Zahlencodes, welche Dezimalziffern einen Code im 2 0010
binären Zahlensystem zuweisen. Als Zeichen dienen hier Bit-
3 0011
Gruppen aus "0" und "1".
4 0100
Um z. B. die Ziffern 0 bis 9 binär darzustellen, werden 4 Bits
5 0101
benötigt. Dieser Code ist so aufgebaut, dass jede der einzelnen
Dezimalzahlen, mit denen gerechnet wird, als Dualzahl 6 0110
geschrieben wird.
7 0111
BCD-Code spielt für die heutige PC-Technik keine Rolle mehr, 8 1000
wird aber z. B. noch für das Ansteuern von Funkuhren
9 1001
verwendet.
BCD-Code-Umrechnungstabelle

ASCII-Code
Der ASCII (American Standard Code for Information Interchange) ist ein vereinheitlichter Code,
bei dem jedes Zeichen durch eine Codierungsnummer dargestellt wird. Ursprünglich wurde der
ASCII-Code als 7-Bit-Code zur Darstellung von Buchstaben, Zahlen und einigen Sonderzeichen
entwickelt. Durch diese 7 Bit können bis zu 127 Zeichen dargestellt werden. Beim ASCII-Code sind
die ersten 32 Codes Steuerzeichen vorbehalten, beispielsweise für den Zeilenvorschub. Durch die
Firma IBM wurde der ASCII-Code für die Verwendung mit dem PC auf einen Werteumfang von 8
Bit (Zahlen von 0 bis 255) erweitert, um weitere Sonderzeichen und Blockgrafikzeichen darstellen
zu können.

Zum Erzeugen solcher Sonderzeichen drücken Sie die A-Taste, halten sie gedrückt und geben
auf dem Ziffernblock Ihrer Tastatur den gewünschten Code ein. A + 1 1 erzeugt beispiels-
weise ♂. Eine komplette Aufstellung dieser Sonderzeichen finden Sie unter
http://www.ascii-codes.com.

Ergänzende Lerninhalte: ISBN-Code.pdf


Hier finden Sie Informationen zum ISBN-Code.

Möglichkeiten der Fehlerkorrektur


Bei der Übertragung von Informationen können unter Umständen Fehler im Datenstrom auf-
treten. Verursacht werden solche Fehler durch schlechte Leitungen oder zu lange Übertragungs-
wege. Diese Fehler oder auch Verfälschungen während einer Datenübertragung können größten-
teils durch geeignete Mechanismen erkannt oder korrigiert werden. Es gibt zwei Arten von
Verfälschungen:
 Fehler (error): Ein Fehler ist ein Bit mit unbekanntem Wert an einer unbekannten Stelle.
 Auslöschung (erasure): Eine Auslöschung ist ein Bit mit unbekanntem Wert an einer
bekannten Stelle.

22 Schulversion © HERDT-Verlag
Grundbegriffe der Digitaltechnik 3

Es existieren zwei Grundstrategien für die Fehlerbehandlung: fehlerkorrigierende Codes und


Fehlererkennungscodes. Bei der ersten Möglichkeit wird so viel redundante Information mit den
Daten mitübertragen, dass der Empfänger den ursprünglichen Datenblock rekonstruieren kann.
Fehlererkennungscodes hingegen können nur feststellen, dass Fehler aufgetreten sind, müssen
aber den gesamten Datenblock neu anfordern.

Zur Wiederherstellung von Informationen existieren verschiedene Mechanismen, die zur


Rückgewinnung fehlerhafter und nicht korrigierbarer Daten dienen. Beispiele dafür sind:

 Automatic Repeat Request (ARQ)  Error Correcting Code (ECC)


 Forward Error Correction (FEC)

Parity Bit
Zur Fehlerüberprüfung in der Datenverarbeitung kann die
sogenannte Paritätskontrolle eingesetzt werden. Das
dazu erforderliche Paritätsbit (Parity Bit) ist ein Prüfbit,
welches den Datenbits einer Bitfolge hinzugefügt wird.
Mit einem Paritätsbit wird die Anzahl der Bits auf eine
gerade oder ungerade Anzahl ergänzt.

Es gibt eine gerade Parität (Even-Parity) und eine ungerade Parität (Odd-Parity). Bei der geraden
Parität wird die Anzahl der in der Bitfolge auftretenden 1-Bits durch das Parity Bit zu einer gera-
den Anzahl 1-Bits ergänzt. Bei der ungeraden Parität wird entsprechend eine ungerade Anzahl
1-Bits hergestellt.

Sender und Empfänger verständigen sich vor der eigentlichen Datenübertragung, welche
Berechnungsmethode gewählt wird. Bei der Berechnung auf der Empfängerseite muss das
gleiche Ergebnis entstehen, das der Sender berechnet und den eigentlichen Daten hinzugefügt
hat. Ist das nicht der Fall, war die Datenübertragung fehlerhaft und muss wiederholt werden.

3.4 Übung

Digitaltechnik verstehen
Level Zeit 15 Minuten

Übungsinhalte  Boolesche Algebra kennen


 Von dezimal nach hexadezimal umrechnen
 ASCII-Code kennen
Übungsdatei Uebung03.pdf
Ergebnisdatei Uebung03-E.pdf

© HERDT-Verlag Schulversion 23
4 Eingabegeräte

4
4. Eingabegeräte

4.1 Informationen an den Computer übergeben


Informationen, Signale und Daten
Aufgabe der Eingabegeräte eines Computers ist es, Informationen wie Zahlen oder Text vom
Benutzer an das Verarbeitungsgerät zu übergeben. Die Informationen, die vom Computer ver-
arbeitet werden sollen, liegen dem Benutzer beispielsweise in schriftlicher, bildlicher oder
gedanklicher Form vor. Computer können Informationen dagegen nur als physikalische Größe
ausgedrückt verarbeiten. Eingabegeräte müssen folglich die Benutzereingaben in eine physika-
lische Form übertragen, die vom Computer verarbeitet werden kann.
Moderne Computer arbeiten fast ausschließlich mit Halbleiterbausteinen, die elektrische Spannun-
gen und Ströme auswerten. Deshalb werden die Eingabegeräte so konstruiert, dass sie aus einer
Benutzereingabe ein elektrisches Signal erzeugen. Das elektrische Signal, z. B. die Änderung einer
elektrischen Spannung, wird verwendet, um eine bestimmte Benutzerinformation zu übermitteln.
Dieser Vorgang läuft zum Beispiel bei der Betätigung einer Taste der Tastatur ab. Der Benutzer
drückt auf eine Taste und schließt damit einen elektrischen Stromkreis zwischen zwei Steuer-
anschlüssen eines Halbleiterbausteins. Jede Taste verbindet andere Steueranschlüsse miteinander.
Der Halbleiterbaustein erkennt also an den beiden verbundenen Steueranschlüssen, welche Taste
betätigt wurde, und setzt diese Information in ein charakteristisches elektrisches Signal um.
Ein elektrisches Signal ist damit zum Träger einer bestimmten Information geworden. Informa-
tionen können als Daten an das Verarbeitungsgerät weitergegeben werden.

Analoge und digitale Signale


Ein Tastendruck steuert einen Halbleiterbaustein durch zwei verschiedene, genau definierbare
Zustände. Eine Taste ist entweder betätigt oder nicht betätigt, schließt oder öffnet also den
betreffenden elektrischen Kontakt. Auch die Halbleiterbausteine im PC arbeiten mit nur zwei
definierten Zuständen, 0 oder 1. Die Tastatureingaben können deshalb problemlos in eine Folge
von 0 und 1 umgesetzt und an das Verarbeitungsgerät übermittelt werden. Nur mit diesen
digitalen Signalen kann das Verarbeitungsgerät etwas anfangen.
Informationen liegen aber nicht immer als Buchstabenfolge in einem Text vor, sondern auch als
Bilder oder Schall. Diese Informationen umfassen eine stufenlose oder unendlich feine Skala von
Helligkeitswerten, Farben, Lautstärkewerten oder Tönen.

24 Schulversion © HERDT-Verlag
Eingabegeräte 4

Wird Schall von einem Mikrofon in eine elektrische Spannung umgewandelt, so entspricht diese
Spannung recht genau dem Schallereignis, es ist ihm analog. Solche Analogsignale können von
einem digitalen Verarbeitungsgerät wie dem PC jedoch nicht direkt ausgewertet werden und
müssen deshalb zunächst in Digitalsignale umgesetzt werden.

Bei der Digitalisierung von analogen Signalen wird stets die stufenlose oder unendlich feine
analoge Skala in feste Abschnitte oder Raster unterteilt (Quantisierung). Bei der Festlegung dieser
Raster ist stets darauf zu achten, dass die gerasterten/digitalisierten Informationen mit einer
Genauigkeit vorliegen, die eine entsprechende Weiterverarbeitung mit der benötigten Güte
erlaubt. Die Abtastfrequenz, mit der das analoge Signal durch die Quantisierung in ein digitales
Signal umgewandelt wird, muss entsprechend hoch gewählt werden.

Diese Aufgabe der Digitalisierung übernehmen Analog/Digital-Converter (ADC), die direkt in


Eingabegeräten wie Scannern, Digitalkameras oder Soundchips integriert sind. Sie analysieren das
Analogsignal und geben dessen Beschreibung als Digitalsignal an das Verarbeitungsgerät weiter.
Die Genauigkeit dieser Beschreibung ist entweder durch das Eingabegerät selbst festgelegt oder
kann vom Benutzer eingestellt werden.

Es gab auch Verarbeitungsgeräte, die Analogsignale direkt verarbeiten konnten, sogenannte


Analogrechner. Sie arbeiteten jedoch grundsätzlich anders als ein PC und waren nicht für alle
Anwendungsfälle geeignet. Sie wurden beispielsweise für die Simulation von Regelungs-
vorgängen eingesetzt, sind aber inzwischen von Digitalrechnern komplett verdrängt worden.

4.2 Die Eingabegeräte im Einzelnen


Tastatur
Die Tastatur erlaubt dem Benutzer die direkte Eingabe von Zahlen, Buchstaben, Befehlen und
Funktionen in den Computer. Sie ist eines der ältesten Eingabegeräte.

PC-Tastaturen verfügen über  


102 Tasten (MF2-Tastatur) oder
105 Tasten (Windows-Tastatur). Multi- 
funktionstastaturen haben dazu
weitere Tasten. Die Tasten sind nach
Funktionsgruppen geordnet. Der
wichtigste Tastenblock ist der alpha-  
numerische Block . Er ist fast voll- Windows-Tastatur
ständig mit der früher verwendeten
Schreibmaschinentastatur identisch.

Die Tastaturen verfügen außerdem über weitere Tastenfelder mit Funktionstasten , Tasten zur
Cursorsteuerung  und einen Ziffernblock . Auch ein Kontrollfeld mit LED-Anzeigen zum
Betriebszustand ist vorhanden . Die verfügbaren Buchstaben und ihre Positionen im Tastenfeld
(das Tastaturlayout) sind länderspezifisch. Meist können deshalb im Betriebssystem des
Computers verschiedene Tastaturlayouts eingestellt werden, allerdings stimmen dann die
ausgegebenen Zeichen nicht mehr mit dem Tastenaufdruck überein. Ein bekanntes Beispiel dafür
ist die amerikanische Tastaturbelegung, wenn Sie im BIOS Einstellungen ändern müssen. Dann
sind y und z vertauscht.

© HERDT-Verlag Schulversion 25
4 Eingabegeräte

Tastaturen besitzen einen eigenen Prozessor (Tastaturprozessor), der die Eingaben in elektrische
Signale umwandelt. Sie werden üblicherweise über ein Kabel mit dem Computer verbunden.
Einige Tastaturen übertragen die elektrischen Signale, die aus den Eingaben erzeugt wurden,
jedoch über Funk oder Infrarot an den Computer. Dadurch fallen Anschlusskabel weg, allerdings
wird dieser Vorteil mit höheren Betriebskosten (Batterie- oder Akkubetrieb) und möglicherweise
auch geringerer Sicherheit erkauft. Ungesicherte Funkübertragung kann noch in einiger Entfer-
nung von der Tastatur von Unbefugten aufgefangen und ausgewertet werden.

Maus
Mit der Einführung grafischer Benutzeroberflächen, bei der die meisten Com-
puterfunktionen mittels Bewegung eines Zeigers (Cursor) über die Bildschirm-
anzeige zugänglich sind, wurde ein Gerät für die Eingabe von Bewegungen Kabelgebundene…
erforderlich. Diese Aufgabe übernimmt die Maus.

Eine Maus ist in der Lage, physische Bewegungen, die ein Benutzer mit der Hand
ausführt, in digitale Signale umzuwandeln und diese an den Computer zu über-
tragen. Zusätzliche Tasten und Scrollräder erlauben außerdem die Auslösung von
... und schnurlose
Funktionen (Mausklick). optische Maus

Für die Umwandlung der Bewegung in digitale Signale kommen heutzutage fast
ausschließlich optische Verfahren zur Anwendung. Optische Mäuse tasten direkt
mit einem Lichtstrahl die Oberfläche ab, auf der sie sich bewegen, und leiten
daraus die Bewegungsinformation ab.
Während diese Mäuse zunächst auf einer speziellen gerasterten Unterlage betrieben werden
mussten, sind aktuelle Geräte in der Lage, die Bewegung auf nahezu jeder Oberfläche zu ermitteln.
Die früher eingesetzten mechanischen Mäuse übertrugen die Rotation einer mit Gummi überzoge-
nen Metallkugel auf zwei Lochscheiben. Mithilfe von Lichtschranken wurde daraus die Bewegung
rekonstruiert und digitalisiert. Die Übertragungsmechanik war jedoch einer starken Verschmutzung
ausgesetzt und musste gelegentlich gereinigt werden, um Funktionsstörungen zu vermeiden.
Dieses Verschmutzungsproblem haben optische Mäuse nicht.

Trackball und Trackpad


Diese Eingabegeräte dienen ebenso wie die Maus der Eingabe von Bewegungsinformationen.
Im Unterschied zur Maus wird beim Trackball jedoch nicht das gesamte Gerät bewegt, sondern nur
eine Kugel, die in einem Gehäuse eingebaut ist. Die Bewegungsaufnahme funktioniert genauso wie
bei der Maus. Einsatzgebiete für einen Trackball sind meist Einsatzorte, auf denen eine Maus
keinen Platz zum Hin- und Herschieben findet (beispielsweise auf öffentlichen Terminals oder für
die Bedienung von Industriegeräten). Ebenso gibt es bestimmte CAD-/Grafik-Workstations mit an
die Bedienung der dort installierten Software angepassten Trackballs. Des Weiteren sind Trackballs
wegen der geringen Bewegungsradien und der ruhigen Bedienung sehr gut geeignet für Personen
mit Beschwerden oder Behinderungen. Insgesamt ist der Verbreitungsgrad von Trackballs gegen-
über der Maus aber eher gering.
Ein Trackpad arbeitet ohne mechanische Teile verschleißfrei, nimmt direkt die Fingerbewegung
auf einer Fläche auf und digitalisiert sie. Position und Bewegung des Fingers werden üblicher-
weise an einer Änderung der elektrischen Eigenschaften (Kapazität) der berührten Stelle des
Trackpads erkannt. Mausklicks können ebenfalls ausgewertet werden. Trackpads sind vor allem
auf sämtlichen Arten von Laptops anzutreffen und dementsprechend weit verbreitet.

26 Schulversion © HERDT-Verlag
Eingabegeräte 4

Scanner
Scanner digitalisieren Bilder oder Texte von einer Vorlage . Sie
besitzen dazu einen Sensor, der die Helligkeits- und Farbverteilung
der Vorlage erkennen und digitalisieren kann.

Auch Texte werden vom Scanner nur als Bilder verarbeitet. Um den
Inhalt eines digitalisierten Texts verfügbar zu machen, bedarf es einer
zusätzlichen Software zur Texterkennung (OCR, Optical Character
Recognition).

In aktuellen Multifunktionsgeräten ist ein Scanner bereits integriert (vgl. obenstehende


Abbildung). Mit einem preiswerten Gerät auf Tintenstrahlbasis können Sie drucken, kopieren,
faxen und scannen. Teurere Geräte haben zusätzlich LAN-, WLAN-Anschlüsse oder Speicher-
kartenleser und Anschlüsse für USB-Sticks integriert. Außerdem ist die Verarbeitungszeit deutlich
kürzer.

Der Sensor erfasst nicht die gesamte Vorlage auf einmal, sondern muss an ihr vorbeigeführt wer-
den. Beim am häufigsten verwendeten Flachbettscanner wird dazu die Vorlage auf einer Glasschei-
be platziert, unter der sich der Sensor befindet. Nach dem Start des Scan-Vorgangs wird der Sensor
unter der Glasplatte an der gesamten Vorlage vorbeigefahren und führt die Abtastung durch.

Flachbettscanner sind sehr preiswert, lassen sich einfach per USB anschließen und liefern gute
Scan-Ergebnisse. Sie haben deshalb im Heim- und Bürobereich weite Verbreitung gefunden.

Wichtige Qualitätskriterien für Scanner sind Auflösung und Farbtiefe. Die Höhe der Auflösung
entscheidet darüber, wie präzise die Vorlage digitalisiert werden kann. Sie wird in DPI (Dots per
Inch, Punkte pro Inch, 1 Inch = 1 Zoll = 2,54 cm) angegeben. Je höher die optische Auflösung, umso
mehr Bildpunkte kann der Scanner tatsächlich erkennen und umso feiner alle Details auflösen.

Die Farbtiefe gibt Auskunft über den Umfang der erkennbaren Farbabstufungen in der Vorlage
und wird in Bit angegeben. Moderne Scanner beherrschen eine Farbtiefe von bis zu 42 Bit, stellen
also bis zu 242 (ca. 4,4 Billionen) Farbstufen zur Verfügung.

Weitere Eingabegeräte
Informationen können heute außer über Tastatur, Maus und Scanner noch über andere Geräte
eingegeben werden:

 Touchscreens  Sensoren zur Messwertaufnahme


 Grafiktabletts  Webcams zur Authentifizierung mit neuen
 Digitalkameras Technologien wie „Windows Hello“ in
Windows 10
 Mikrofone und Soundchips sowie
Headsets  Smartphones mit Fingerabdruck-Sensor
 Leseeinrichtungen für Chipkarten und
Speicherkarten

Touchscreens sind berührungsempfindliche Monitore. Sie nehmen Berührungen auf der


Bildschirmoberfläche wahr. Der Finger entspricht der Maus und die Bildschirmoberfläche dem
Mousepad.

© HERDT-Verlag Schulversion 27
4 Eingabegeräte

Grafiktabletts können die Bewegung eines speziellen Zeichenstiftes auf einer Unterlage auf-
nehmen und eignen sich zur Übertragung von Strichzeichnungen an den Computer bereits
während der Anfertigung der Zeichnung. Deshalb werden sie vorrangig für die digitale Bild- und
Videobearbeitung sowie im Design- und CAD-Bereich eingesetzt.

Digitalkameras können bewegte oder unbewegte Bilder aufnehmen wie herkömmliche Foto-
apparate oder Filmkameras. Sie speichern die Bilder allerdings nicht als belichteten Film ab,
sondern als digitalisierte Bilddaten. Diese Daten können anschließend an einen Computer
übertragen werden. Für die Bildqualität sind neben der Optik der Kamera wiederum die
erzielbare Auflösung und die Farbtiefe entscheidend. Diese Werte werden hauptsächlich vom
Bildsensor bestimmt, der in der Kamera eingesetzt wird.

Mikrofone und Soundchips eignen sich zur Eingabe von Sprache und Klängen in den Computer.
Dies ist Voraussetzung für die Spracherkennung, bei der die Bedeutung der gesprochenen
Wörter direkt vom Computer ausgewertet und in die gewünschte Information umgesetzt wird.

Leseeinrichtungen für Chipkarten und Speicherkarten bieten die Möglichkeit, Daten zwischen
diesen mobilen Datenträgern und dem PC zu übertragen. Sie sind prinzipiell als Adapter auf-
gebaut, der die betreffenden Karten aufnehmen und nach einer entsprechenden Umwandlung
des Formats an ein Bussystem des PCs weitergeben kann. So können unter anderem die Bild-
dateien von einer Digitalkamera an den PC übertragen werden.

Sensoren zur Messwertaufnahme sind beispielsweise Temperaturfühler, Druckmesser oder


Feuchtigkeitssensoren. Der Computer kann über ein Regelungsprogramm mithilfe dieser Mess-
werte die Heizung oder die Klimaanlage steuern.

Webcams können nicht nur zur Kommunikation dienen, sondern sind in der Lage, ab Windows 10
durch die neue „Windows Hello“-Technologie, Benutzer zu authentifizieren.

Fingerabdruck-Sensoren in aktuellen Smartphones erlauben das Entsperren der Geräte per


Fingerabdruck.

4.3 Übung
Eingabegeräte verstehen
Level Zeit 5 Minuten

Übungsinhalte  Scanner kennen


Übungsdatei Uebung04.pdf
Ergebnisdatei Uebung04-E.pdf

28 Schulversion © HERDT-Verlag
Verarbeitungsgeräte 5

5
5. Verarbeitungsgeräte

5.1 Daten an Verarbeitungsgeräte übertragen

Vom Eingabegerät zum Verarbeitungsgerät


Das Verarbeitungsgerät ist die Zentraleinheit moderner Anlagen der Informationstechnologie. Es
nimmt die eigentliche Datenverarbeitung vor und führt eine Vielzahl von Aufgaben aus. Nach der
Übergabe an ein Eingabegerät müssen die Daten jedoch zunächst von dort an das Verarbeitungs-
gerät übertragen werden. Dazu werden die Geräte über Schnittstellen (Interfaces) miteinander
verbunden, über die der Datenaustausch ablaufen kann. Dabei wird zwischen serieller und
paralleler Datenübertragung unterschieden.

Die serielle Datenübertragung arbeitet prinzipiell mit einer einzelnen Datenleitung , über die
alle Daten nacheinander gesendet werden. Zusätzlich können noch weitere Leitungen existieren,
die Steuerungsaufgaben übernehmen , beispielsweise die Signalisierung von Sendewunsch und
Empfangsbereitschaft.

Wenn Datenübertragung in zwei Richtungen erforderlich ist (bidirektional), können auch zwei
Datenleitungen eingesetzt werden, je eine für Sendung und Empfang.


Serielle Datenübertragung über eine Leitung Parallele Übertragung über mehrere Leitungen

Bei der parallelen Datenübertragung werden die Daten über mehrere Leitungen gleichzeitig
übertragen.

Die heute kaum noch anzutreffende parallele Schnittstelle für den Druckeranschluss an einen
Computer (Centronics-Schnittstelle) verfügt über 8 Datenleitungen. So kann jeweils ein ganzes
Zeichen gleichzeitig übertragen werden, das als Datenwort von 8 Bit (1 Byte) Länge codiert ist.
Über eine der Steuerleitungen wird dabei unter anderem ein Taktsignal (Strobe oder Clock)
mitgeliefert, das die Übertragung auf den einzelnen Datenleitungen synchronisiert.

© HERDT-Verlag Schulversion 29
5 Verarbeitungsgeräte

Externe Schnittstellen
Jeder Computer besitzt auf der Rückseite des Gehäuses diverse Steckkontakte (engl. interfaces
oder ports) zum Anschluss von externen Ein- und Ausgabegeräten. Diese sind meist am Rand des
Motherboards (Hauptleiterplatte eines Rechners, auch Mainboard genannt) aufgelötet und so
direkt von außen zugänglich.

Externe Schnittstellen an einem Motherboard von 2003:


 PS/2-Anschlüsse für Maus (grün)   

und Tastatur (lila)
 Parallele Schnittstelle 

 Serielle Schnittstelle 
 USB-1.0/1.1/2.0/3.0-Anschlüsse
 Netzwerkanschluss (RJ-45) Schnittstellenanschlüsse an einem Motherboard von 2003
 Soundanschlüsse, analog
 Soundanschlüsse, digital-optisch
und koaxial (SPDIF)

Externe Schnittstellen an einem Motherboard ab 2014:


 Kombi-PS/2-Anschluss Tastatur/   

Maus 
 
 USB-1.0/1.1/2.0-Anschlüsse 
  
 Netzwerkanschluss (RJ-45)
 Soundanschlüsse, analog Schnittstellenanschlüsse an einem Motherboard ab 2014
 Soundanschluss, digital-optisch
(SPDIF)
 Monitorausgang, analog (VGA)
 Monitorausgang, digital (DVI)
 Monitor-/TV-Ausgang, digital (HDMI)
 Monitor-/TV-Ausgang, digital (DisplayPort)
 FireWire 400
 eSATA (externes SATA)
 USB-3.0-Anschlüsse

 PS/2
An die PS/2-Anschlüsse wurden in der Vergangenheit Tastatur und Maus angeschlossen. Wenn der
Computer gestartet wird, sind die beiden Eingabegeräte sofort nutzbar. Die PS/2-Anschlüsse für
Tastatur und Maus sind zwar baugleich, unterscheiden sich aber in ihrer Funktion. Bei den
Peripheriegeräten sind die Stecker meist in der entsprechenden Farbe hergestellt, sodass das
Verwechslungsrisiko gemindert wird. Wenn die Anschlussbuchsen nicht farbig gekennzeichnet sind,
so ist meist ein Symbol für die Tastatur und für die Maus neben dem entsprechenden Steckplatz
eingraviert. Außerdem befindet sich der Anschluss für die Maus in aller Regel oben. Bei neueren
Mainboards ist oft nur noch ein Kombi-PS/2-Anschluss zu finden oder er wurde zugunsten von USB
ganz weggelassen. Bei aktuellen PCs werden Maus und Tastatur in der Regel über USB angeschlossen.

30 Schulversion © HERDT-Verlag
Verarbeitungsgeräte 5

 Parallel (IEEE 1284, Centronics oder LPT-Anschluss)


Über die parallele Schnittstelle können die Daten erheblich schneller weitergegeben werden als bei
der nachfolgend genannten seriellen Schnittstelle, da 8 Bit gleichzeitig (parallel) übertragen werden
können. Normalerweise wurden hier Drucker (LPT = Line Printer), Scanner oder externe Laufwerke
(Zip, Jazz, MO, CD/RW usw.) angeschlossen. Die Datenübertragung zwischen zwei Rechnern war
analog zum seriellen Anschluss ebenfalls möglich.

USB hat den Parallelanschluss (ähnlich wie die serielle Schnittstelle) schon seit Längerem vom
Markt verdrängt bzw. viele damalige Technologien sind inzwischen vom Markt verschwunden
und machen einen Parallelanschluss heutzutage überflüssig.

 Seriell (RS-232C oder COM)


Die seriellen Schnittstellen oder COM-Ports arbeiten mit niedriger Geschwindigkeit, da die Daten
schrittweise (seriell), also nacheinander übertragen werden. Die Schnittstellen werden mittler-
weile nur noch bei speziellen PCs verbaut, zum Beispiel für den Anschluss von Spezialgeräten wie
Kassen oder spezielle Lesegeräte.

Der Vorteil dieser Übertragung lag in der geringen Störanfälligkeit, sodass Kabellängen von
1000 Metern möglich waren. Bevor der PS/2-Mausanschluss eingeführt wurde, waren an diesem
Anschluss vor allem die Maus oder das Modem angeschlossen. Ein anderer Einsatzfall war das
Konfigurieren von Netzwerkgeräten (Router, Switche etc.) oder Servern über die serielle Konsole.
Über diese Schnittstelle konnten mit geeigneter Software sogar Daten zwischen zwei Rechnern
übertragen werden.

Aufgrund der niedrigen Übertragungsraten und im Zusammenhang mit der Entwicklung der
USB-Schnittstelle wird der serielle Anschuss bei neueren Rechnern schon länger nicht mehr
eingesetzt. Zum Einsatz kommen aktuell eher USB-Anschlüsse.

,  USB (Universal Serial Bus)


USB-Geräte werden bei allen derzeit im Einsatz befindlichen Betriebssystemen automatisch
erkannt und die zum Betrieb benötigten Programme automatisch installiert werden. An die USB-
Schnittstelle können eine Vielzahl von Eingabe- (z. B. Tastatur und Maus, Scanner oder Digital-
kameras) und Ausgabegeräten (z. B. Drucker und Multifunktionsgeräte, USB-Festplatten
und -Sticks) angeschlossen werden. Aufgrund seiner einfachen Handhabung, der Datenübertra-
gungsgeschwindigkeit sowie der unüberschaubaren Vielfalt an USB-Geräten hat sich der USB-
Anschluss zu einem der wichtigsten Anschlusstypen überhaupt entwickelt.

PCs haben oft unterschiedliche USB-Anschlüsse. Wollen Sie moderne USB-Geräte betreiben,
sollten Sie überprüfen, ob Ihr PC eine derartige USB-Schnittstelle hat und wo diese angebracht
ist. Der generelle Anschlussstecker ist identisch. Die USB-Anschlüsse unterscheiden sich jedoch
vor allem in ihrer Geschwindigkeit:
 USB 1.1 – bis zu 12 Mbit/s  USB 3.2 – bis zu 20 Gbit/s
 USB 2.0 – bis zu 480 Mbit/s  USB 4.0 – bis zu 40 Gbit/s

Angaben zu Geschwindigkeiten sind theoretisch und hängen von dem entsprechenden Endgerät ab.

© HERDT-Verlag Schulversion 31
5 Verarbeitungsgeräte

 Netzwerk (RJ-45)
Über diese Schnittstelle stellen Sie eine Verbindung zu einem kabelgebundenen Netzwerk her.
Üblicherweise per 1 GBit/s Übertragungsgeschwindigkeit, aber auch 100 MBit/s-Netzwerke sind
noch häufig anzutreffen. In Unternehmen sind auch Netzwerke mit einer Übertragungs-
geschwindigkeit von 10 GBit/s zu finden. Mit dem gleichen Steckertyp konnte früher auch die
Verbindung zu einem 10 MBit/s-Netzwerk hergestellt werden.

 Sound, analog
Der Onboard-Soundchip bzw. die interne/externe Soundkarte (letzterer Typ heutzutage eher im
Profibereich) hat eine ähnliche Funktion wie die klassische Hi-Fi-Anlage. Die Verbindung zu Aktiv-
boxen, Kopfhörern u. Ä. wird normalerweise über 3,5"-(Stereo-)Klinkenstecker hergestellt,
sämtliche Boxen benötigen analoge Signale.

 Blau: Eingang Stereo (z. B. MP3-Player, Hi-Fi-Anlage)


 Grün: Ausgang Stereo (z. B. Lautsprecher vorn, Kopfhörer)
 Rot/Rosa: Eingang Mono (z. B. Mikrofon)
 Grau/Silber: Ausgang Stereo, Lautsprecher Seite
 Schwarz: Ausgang Stereo, Lautsprecher hinten
 Orange: Ausgang Center-Lautsprecher und Subwoofer

 Sound, digital
Sämtliche Soundsignale werden digital direkt zu den Buchsen geleitet und gehen nicht durch
einen Digital-Analog-Wandler im Soundchip oder auf der Soundkarte. Die Umwandlung und
Wiedergabe kann dann beispielsweise eine hochwertige Hi-Fi- oder Surround-Anlage über-
nehmen, die optisch oder koaxial angeschlossen wird.

 Monitor, analog (VGA, Video Graphics Array)


VGA war lange Zeit die Standardschnittstelle für die Grafikausgabe und ist auch heute noch auf
vielen Grafikkarten oder an Displays zu finden. Durch die Umwandlung digital/analog bzw. zusätz-
lich analog/digital, wenn Sie beispielsweise ein TFT-Display per VGA-Kabel an Ihren Rechner
anschließen, verschlechtert sich die Bildqualität erheblich. Im Zuge der weiteren Digitalisierung
bzw. des Verschmelzens von Computertechnik und Unterhaltungselektronik wird diese Schnitt-
stelle in absehbarer Zeit auf dem Markt keine Rolle mehr spielen.

 Monitor, digital (DVI, Digital Visual Interface)


Heutige Displays benötigen digitale Signale von der Grafikkarte, die über diesen Anschluss
geliefert werden. Die Datenübertragung erfolgt verlustfrei und das Bild ist besser als bei analogen
Signalen. Je nach Beschaltung der DVI-Stecker bzw. der angeschlossenen Kabel können Bild-
schirmauflösungen bis zu 2560 x 2048 Pixeln dargestellt werden. DVI ist zurzeit noch der
Standard in der Computerwelt, wird aber immer mehr durch die Nachfolger HDMI, DisplayPort
oder auch Thunderbolt ersetzt. In PCs finden vor allem HDMI-Anschlüsse häufige Verwendung.

32 Schulversion © HERDT-Verlag
Verarbeitungsgeräte 5

 Monitor, digital (HDMI, High Definition Multimedia Interface)


HDMI ist der Nachfolger von DVI, fügt aber noch Audioübertragung und den Kopierschutz HDCP
hinzu, der die Wiedergabe von HD-Inhalten auf dem Monitor zulässt. Die möglichen Bildschirm-
auflösungen liegen über denen von DVI, beispielsweise sind 4096 x 2160 Pixel möglich.

 Monitor, digital (DisplayPort)


Über diese Schnittstelle können Bildschirmauflösungen bis 3840 x 2160 Pixel sowie 3D-Inhalte
dargestellt werden. Die meisten modernen Monitore verwenden diese Schnittstelle.

 FireWire
FireWire ist eine serielle Hochgeschwindigkeitsschnittstelle, die besonders im Video- und Audio-
bereich wegen ihrer Geschwindigkeit eingesetzt wurde. Zudem gibt es externe Festplatten mit
FireWire-Anschluss. Wie bei USB-Schnittstellen können Peripheriegeräte auch hier während des
laufenden Computerbetriebes ein- und ausgesteckt werden. USB ist die größte Konkurrenz zu
FireWire. In den meisten aktuellen PCs ist keine Firewire-Schnittstelle mehr eingebaut, da sich
USB 3.x auf Dauer durchgesetzt hat. FireWire erreicht teilweise Übertragungsraten von 800, 1600
und 3200 MBit/s, konnte sich gegen das verbreitete USB-Modell aber nicht durchsetzen. USB-
Anschlüsse sind kostengünstiger zu verbauen, und die Anschlüsse der USB-Standards sind
zueinander kompatibel.

 eSATA
Bei eSATA wird das interne SATA, an dem heutzutage standardmäßig Festplatten bzw. BD/DVD/
CD-R/W-Laufwerke angeschlossen sind, einfach aus dem PC-Gehäuse nach außen geführt. Dort
werden vorrangig externe Festplatten angeschlossen. Solange SATA Standard innerhalb des
Rechners ist, wird es diese Schnittstelle sicherlich geben. Sie hat allerdings mit USB 3.0 oder
Thunderbolt sehr starke Konkurrenz bekommen.

Weitere optionale externe Schnittstellen an der Vorderseite des Gehäuses


Viele moderne Rechner verfügen
auch an der Vorderfront des
Rechners über verschiedene gut
zugängliche externe Schnitt-
stellen. Neben Audio- oder USB-
Anschlüssen sind das beispiels-
weise Speicherkartenleser für die Speicherkartenleser mit zusätzlichem USB-Anschluss
verschiedensten Speicher-
kartenformate, wie sie z. B. in …
 Digitalkameras,
 Smartphones,
 MP3-Playern und
 Navigationsgeräten
eingesetzt werden.

© HERDT-Verlag Schulversion 33
5 Verarbeitungsgeräte

5.2 Die Datenverarbeitung im PC

Die internen Komponenten des PCs


Intern umfasst ein PC als Verarbeitungsgerät verschiedene Komponenten mit folgenden
Aufgaben:
 mindestens eine CPU (Central Processing Unit) zur eigentlichen Datenverarbeitung. Eine CPU
besteht oft aus verschiedenen CPU-Kernen, auch Cores genannt, die getrennte
Rechenaufgaben durchführen können.
 Arbeitsspeicher zur vorübergehenden Ablage von Informationen
 verschiedene Schnittstellen und Peripheriegeräte für den Informationsaustausch mit
der Umgebung
 Chipsatz und Controller
 Bussysteme
 Massenspeicher zur dauerhaften Ablage von Informationen und Programmen

Bis auf Massenspeicher werden diese Komponenten im Standard-PC meist zusammen auf einer
gemeinsamen Leiterplatte (Platine) untergebracht, dem Mainboard oder Motherboard. Für die
Energieversorgung der Komponenten ist außerdem noch ein Netzteil vorhanden.

Von-Neumann-Architektur
Ein populäres Konzept für den Aufbau des Verarbeitungsgerätes ist die Von-Neumann-Architektur,
die bereits 1949 vom Mathematiker John von Neumann (Österreich/ Ungarn, später USA) als
Computerreferenzmodell entwickelt wurde. Sie besteht im Wesentlichen aus vier Funktions-
einheiten:

 Rechenwerk    
 Steuerwerk 
 Speicher 
 Ein- und Ausgabeeinheit 

Hauptkomponenten des Verarbeitungsgerätes

Eine weitere wichtige Komponente, das Bussystem, bietet die Schnittstellen  für die Kommu-
nikation der einzelnen Komponenten untereinander und mit der Außenwelt.

34 Schulversion © HERDT-Verlag
Verarbeitungsgeräte 5

Bestandteile des Mainboards


Das Mainboard fasst die meisten Kernkomponenten des Verarbeitungsgeräts im Computer auf
einer einzigen Leiterplatte zusammen:

 Prozessor mit Kühlkörper und Lüfter 



 Steckplätze für den Arbeitsspeicher
(DDR3) 
 24-poliger Anschluss für die   
Stromversorgung
 achtpoliger EPS12V-Anschluss für
zusätzliche Stromversorgung
(alternativ als vierpoliger ATX12V   
benutzbar)  


 ATX-Anschlussfeld mit externen 
Anschlüssen 
 Heatpipe-Kühlung für Chipsatz und 
Spannungsregler

 Kühlkörper über den Spannungsreglern
 SATA-Anschlüsse für interne Laufwerke ATX-Mainboard (Chipsatz Intel X58 für Sockel LGA1366)
 Chipsatz
 BIOS-Chip
 Anschlüsse für externes USB
 Anschluss für externes FireWire
 Steckplatz PCI Express (PCIe) x4
 Grafikkarten-Steckplatz PEG (PCIe x16)
 PCI-Steckplätze (32 Bit, 66MHz)
 Steckplätze PCI Express (PCIe) x16
 IDE/PATA-Anschluss

Üblicherweise werden CPU, Erweiterungskarten und Arbeitsspeicher erst später in entsprechen-


de Steckplätze auf dem Mainboard eingesetzt. Auf diese Weise kann das gleiche Mainboard für
Computer mit verschiedenen Leistungsanforderungen unterschiedlich bestückt werden.

Während früher jede zusätzliche Funktion eines PCs durch eigene Erweiterungssteckkarten
realisiert werden musste, werden die meisten Funktionen auf modernen Mainboards heute
durch „on-board“ aufgelötete Bauteile realisiert. Dies betrifft die wichtigsten Schnittstellen und
vor allem Sound-, Netzwerk- und Grafikfunktionen. Häufig sind solche „on-board“-Komponenten
jedoch weniger leistungsfähig als Erweiterungssteckkarten mit entsprechender Funktionalität.
Diese Einschränkung trifft insbesondere auf „on-board“-Grafikchips zu, deren Leistungsfähigkeit
im 3D-Bereich häufig zu wünschen übrig lässt. Für die Nutzer dieser Funktionen (z. B. 3D-Design,
PC-Spiele) ist es wichtig, vor dem Erwerb solcher Mainboards zu prüfen, ob sich die „on-board“-
Grafik nötigenfalls abschalten und durch eine externe Grafikkarte ersetzen lässt.

© HERDT-Verlag Schulversion 35
5 Verarbeitungsgeräte

Der Pin-Sockel für den Prozessor


Moderne PCs sind mit Sockel ausgerüstet, um großvolumige Kühler montieren zu können, damit
die zunehmende Abwärme der Prozessoren effektiv abgeleitet werden kann.

Bei den ZIF-Sockeln (Zero Insertion Force) wird der Prozessor ohne Kraftaufwand in den
(entriegelten) Sockel gesetzt. Danach wird der Prozessor mit einem seitlich angebrachten
Verriegelungshebel in der Fassung arretiert.

Die Firmen Intel und AMD haben verschiedene Sockel mit einer unterschiedlichen Anzahl und
Anordnung von Pins speziell für ihre Prozessoren entwickelt.

Auf die heute verbreiteten Sockel können unterschiedliche Prozessoren des jeweiligen Herstellers
(entweder Intel oder AMD) mit verschiedenen Taktfrequenzen platziert werden. Dabei errechnet
sich die Taktfrequenz des Prozessors aus dem internen Multiplikator und der Taktfrequenz des
Chipsatzes (des Front Size Bus, FSB).

Durch unterschiedliche Protokolle bei der Datenübertragung zwischen Prozessor und Haupt-
speicher (Double, Quadruple oder Octal Data Rate = 2- bis 5-fach) wird der Zugriff beschleunigt,
sodass effektiv z. B. beim Sockel 775 von einem FSB-Takt von 1600 MHz (400 x 4) gesprochen
wird.

Aktuelle Prozessoren (beispielsweise Intel Core i7 bzw. davon abgeleitete Intel Xeons, neuere
AMD Athlon 64 und AMD Opteron) haben den Speichercontroller bereits integriert und sind an
die Northbridge per HyperTransport-Verbindung angebunden. Hier errechnet sich der Prozessor-
takt aus einem Referenztakt von 200 MHz, multipliziert mit dem jeweiligen CPU-Multiplikator.
Die Taktgeschwindigkeit der HyperTransport-Verbindung wird meist fälschlicherweise als der
jeweilige FSB angegeben.

Mainboard-Formfaktoren
Bei Mainboards gibt es mehrere gängige Abmessungen oder Formfaktoren. Der Formfaktor
bestimmt die Abmessungen des Mainboards sowie Art und Lage der Bauteile und Schnittstellen.
Im Laufe der Entwicklung haben sich verschiedene Formfaktoren etabliert, die jeweils für
bestimmte Prozessorgenerationen und die entsprechende Peripherie geeignet sind:

Formfaktor Abmessung (Breite x Länge) Beschreibung


Extended ATX (EATX) 305 mm x 330 mm 2 Prozessorsockel, Server-Board für Racks
ATX 305 mm x 244 mm sehr weit verbreitet
microATX (µATX) 244 mm x 244 mm ebenfalls sehr gebräuchlich
Flex-ATX 229 mm x 191 mm Thin Clients und HTPCs (Intel Atom, Via
Nano)
Mini-ITX 170 mm x 170 mm Thin Clients und HTPCs
Nano-ITX 120 mm x 120 mm Thin Clients und HTPCs
BTX 325 mm x 267 mm konnte sich als ATX-Nachfolger nicht
durchsetzen
microBTX (µBTX) 264 mm x 267 mm ebenfalls selten zu finden

36 Schulversion © HERDT-Verlag
Verarbeitungsgeräte 5

Der Formfaktor eines Mainbords bestimmt außerdem den Gehäusetyp und das verwendbare
Netzteil. Der Wechsel zu einem neuen Mainboard kann deshalb auch ein neues Gehäuse
erforderlich machen. Grundsätzlich passen ATX- und microATX-Mainboards nicht in ein BTX-
oder ITX-Gehäuse und umgekehrt.

5.3 Chipsatz und Bussysteme

Bestandteile des Chipsatzes


Beim PC bezeichnet der Begriff „Chipsatz“ alle Bausteine auf dem Mainboard, die zusammen
zahlreiche Steuerungsaufgaben erfüllen und für das Zusammenspiel aller Komponenten ver-
antwortlich sind. Hauptbestandteile des Chipsatzes sind:
 integrierte Grafikeinheit oder Grafikanbindung über PEG (PCI Express for Graphics) oder
AGP (veraltet)
 Speicher-Controller (oft schon im Prozessor integriert)
 PCI-Express-Controller
 PCI-/PCI-X-Controller
 Controller für Laufwerke (EIDE/ATA, SATA/eSATA, SAS/SCSI, Diskettenlaufwerk [veraltet])
 Controller für externe Schnittstellen (z. B. USB, FireWire, Thunderbolt, Sound und Netzwerk)
 Legacy-Schnittstellen: PS/2, parallel, seriell (alle veraltet)

Über viele Jahre bestand der Chipsatz typischerweise


aus zwei Chips: 
 Northbridge, bei Intel oft als MCH (Memory 
Controller Hub) bezeichnet . Sie ist für die
schnelle Anbindung des Hauptspeichers und der
Grafik an die CPU  zuständig.
 Southbridge, bei Intel oft als ICH (I/O-Controller
Hub) bezeichnet . Hier werden alle Verbindun- 
gen zusammengefasst, die nicht so zeitkritisch sind
(z. B. Sound, LAN, USB, SATA etc).

Die Bezeichnung North-/Southbridge entstand durch Intel-82875P-Chipsatz für Pentium 4 (2003),


die typischen Positionen der Chips auf dem Mainboard vereinfachte Architektur
ober- und unterhalb des Prozessorsockels.

Bei allen AMD-Prozessoren ab der K8-Serie (Athlon 64, 2003) wurde der Speichercontroller der
Northbridge in den Prozessor integriert. Dadurch war es möglich, die verbliebenen Chipsatz-
Funktionen der Southbridge im Gehäuse der Northbridge zusammenzufassen (z. B. in den Chip-
sätzen nForce 3 und 4 der Firma Nvidia).

© HERDT-Verlag Schulversion 37
5 Verarbeitungsgeräte

Ab 2008 integrierte auch Intel in der Core-i7-Serie den


Speichercontroller in den Prozessor. In Modellreihen ab
2011 ist die Anbindung der Grafikkarte über PCIe bzw. der

Grafikkern selbst schon im Prozessor enthalten, sodass alle
Funktionen der Northbridge in den Prozessor gewandert
sind . Die restlichen im Chipsatz enthaltenen Funktionen
können in einem Chip zusammengefasst werden .

Die wichtigsten Chipsatz-Hersteller sind Intel, AMD, NVIDIA
Corporation, VIA Technologies und Silicon Integrated
Systems (SIS).

Intel-Z68-Chipsatz für Core i7,


vereinfachte Architektur
BIOS-Chip
Er gehört zwar nicht direkt zum Chipsatz des Mainboards, aber ohne den BIOS-Chip ist der PC nicht
lauffähig. Deswegen verdient er in diesem Kontext eine besondere Beachtung.

Im BIOS-Chip sind die Programmroutinen untergebracht, die zum Starten des Computers und
zum Erkennen und Ansprechen der elementaren Hardware notwendig sind.

Die Software, die in diesen Chip programmiert ist, kann bei Bedarf durch eine neuere Version
aktualisiert werden. Man spricht hier von einem BIOS-Update oder „Flashen“ des BIOS.

Durch die vielen herstellerspezifischen BIOS-Varianten ist ein gewisser „Wildwuchs“ entstanden.
Außerdem wurde das Einstellen der Optionen im BIOS im Laufe der Zeit immer komplizierter.

Kurz vor der Jahrtausendwende startete die Firma Intel die Initiative zu einem „BIOS-Ersatz“
namens EFI, der auch 64-Bit-fähig sein sollte. Inzwischen haben sich neben Intel auch andere
wichtige Unternehmen (z. B. AMD, Microsoft oder Apple) sowie PC- und BIOS-Hersteller
(z. B. IBM, Dell, HP oder Phoenix) zur Unified EFI (UEFI, http://www.uefi.org/home) zusammen-
geschlossen.

Ziele von EFI sind u. a.:


 eine einfachere Bedienung als beim herkömmlichen BIOS zu gewährleisten,
 aktuelle Hardware zu unterstützen (64-Bit-fähig),
 Fernwartungsmöglichkeiten aus dem Profibereich (z. B. Zugriff auf das BIOS per LAN-
Anschluss) zu implementieren,
 die hohen Auflösungen aktueller Grafikkarten schon vor dem gestarteten Betriebssystem
nutzen zu können,
 vorgeschaltete Bootloader überflüssig zu machen u. v. m.

Aktuell werden die meisten PCs mit einem herkömmlichen BIOS ausgeliefert. Einige Mainboard-
Hersteller (z. B. Asus oder MSI) bieten allerdings inzwischen EFI-Boards an. Apples Intel-
basierende Rechner laufen alle mit EFI.

38 Schulversion © HERDT-Verlag
Verarbeitungsgeräte 5

Das Bussystem
Ein Bussystem verbindet verschiedene Komponenten eines Personal Computers (Prozessor,
Controller, Arbeitsspeicher, Eingabe-/Ausgabeports) elektrisch miteinander, damit ein Austausch
von Informationen stattfinden kann. Bussysteme sind als Bündel elektrischer Leitungen realisiert,
an die alle betreffenden Baugruppen in Parallelschaltung angeschlossen sind.

Im PC kommen heute verschiedene Bussysteme zum Einsatz. Ein schnelles Bussystem namens
Host-Bus oder Front Side Bus (FSB) ermöglicht die Kommunikation der CPU mit der Northbridge
des Chipsatzes und den direkt dort angeschlossenen Komponenten RAM und Grafikkarte.
Die Northbridge stellt außerdem die Verbindung zur Southbridge des Chipsatzes her, die über
I/O-Bussysteme für weitere Peripheriegeräte verfügt.

Wie schon weiter oben erwähnt wird sich der Trend zur Integration weiterer Komponenten und
Funktionen in den Prozessor weiter fortsetzen. Viele Verbindungen sind heutzutage sogenannte
Punkt-zu-Punkt-Verbindungen und damit im eigentlichen Sinne keine Bussysteme mehr.

I/O-Bussysteme
Viele Peripheriegeräte werden mit dem Computer über Steckplätze (Slots) für Erweiterungskarten
verbunden (interne Schnittstellen). Für die Kommunikation mit den Erweiterungskarten stehen
verschiedene I/O-Bussysteme zur Verfügung. Ihre Aufgabe besteht im Wesentlichen in einer
Anpassung der hohen Übertragungsraten des FSB an die Fähigkeiten der Erweiterungskarten.

Aktuell werden im PC folgende I/O-Bussysteme eingesetzt:


 PCIe (Peripheral Component Interconnect Express) für moderne Grafikkarten
 S-ATA (Serial Advanced Technology Attachment) für Festplatten und optische Laufwerke
(BD-/ DVD-/ CD-R/W).

5.4 Die Funktion der CPU


Im PC sind wesentliche Teile dieser Architektur in einem zentralen Baustein zusammengefasst,
der Central Processing Unit (CPU oder Prozessor). Die CPU kontrolliert den kontinuierlichen
Datenfluss zwischen den einzelnen Funktionseinheiten. Die Daten entstammen dem Arbeits-
speicher oder den angeschlossenen Geräten (Tastatur, Laufwerke etc.). Nach der Verarbeitung
wird das Ergebnis an den Arbeitsspeicher oder an ein Gerät geschickt. Die CPU lädt eigenständig
den nächsten auszuführenden Befehl zur Datenverarbeitung. Die eigentliche Arbeit der CPU ist
dann das Berechnen und Verschieben von Daten.

Der Von-Neumann-Rechner arbeitet sequenziell, Befehle und Daten aus dem Speicher werden
also schrittweise nacheinander abgearbeitet. Das Bussystem entpuppt sich dabei als Flaschen-
hals, weil vor und nach jedem Verarbeitungsschritt dieselben Leitungen verwendet werden
müssen. Eine Verbesserung gelang mit der Entwicklung einer hierarchisch gegliederten
Speicherstruktur, bestehend aus Registern und verschiedenen Speicherebenen (Cache-Ebenen).
Häufig genutzte Daten und Befehle können dabei in schnellen separaten Cache-Speichern
abgelegt werden. Darüber hinaus erreichen neue CPU-Generationen durch feinere Aufteilung
der Funktionseinheiten und eine Erweiterung der Befehlssätze bereits eine teilweise parallele
Arbeitsweise. So können pro Ausführungszyklus mehrere Daten verarbeitet werden.

© HERDT-Verlag Schulversion 39
5 Verarbeitungsgeräte

Steuerwerk oder Leitwerk


Das Steuerwerk ist die mitunter umfangreichste Zusammenfassung unterschiedlicher Funktions-
blöcke. Es besteht aus den verschiedenen Kontrolleinheiten, in denen sämtliche Vorgänge im
Computer kontrolliert und gesteuert werden.

Befehlsdecoder
Der Befehlsdecoder (IDU – Instruction Decode Unit) ist auf dem Prozessor oft mehrmals in einer
parallelen Anordnung vorhanden. Dies erlaubt eine kürzere Zeitspanne für die Befehls-
durchführung. Auch die Ausführungseinheit (EXU – Execution Unit) ist bei vielen Prozessoren
mehrmals vorhanden.

Rechenwerk
Zum Rechenwerk gehören neben der ALU (Arithmetic Logic Unit; arithmetisch-logische Einheit)
und der FPU (Floating Point Unit; Gleitkommaeinheit) auch Register, in denen Daten zwischen-
gespeichert werden können. Nur mithilfe der ALU kann der Prozessor Gleichheits- und Ungleich-
heitsprüfungen sowie Größenbestimmungen durchführen. Nur dann können alle Anweisungen
eines Programms abgearbeitet werden.

Fertigungstechniken
Die CPU basiert auf der Mikrochiptechnologie. Dabei werden (derzeit etwa 700 – 800) Millionen
Transistoren als elektronische Schalter auf einem nur wenige Quadratzentimeter großen Träger aus
Halbleitermaterial (meist Silizium) implantiert, dem Mikrochip. Daraus leitet sich auch die Bezeich-
nung Mikroprozessor ab. Funktion und Aufgabengebiet des Prozessors werden durch Anzahl und
logische Verknüpfung der Transistorfunktionen festgelegt.

Zum Schutz vor mechanischen Belastungen werden die Mikrochips in einem Gehäuse aus
Kunststoff oder Keramik untergebracht. Von außen zugängliche Pins (Kontakte) sorgen für den
elektrischen Anschluss.

Da die Miniaturisierung an ihre physikalischen Grenzen stößt, sind die Hersteller Intel und AMD
dazu übergegangen, teilweise mehr als 12 Prozessoren in einem Gehäuse zusammenzufassen.
Dies steigert die Verarbeitungsgeschwindigkeit der Befehle, ohne die Taktfrequenz zu erhöhen.

Leistungsmerkmale der CPU


Die wichtigsten Eigenschaften von Prozessoren lassen sich am einfachsten mit folgenden
Kenngrößen und Technologien beschreiben:
 Taktfrequenz (intern und extern)
 Anzahl der pro Sekunde verarbeiteten Befehle (MIPS)
 Anzahl der pro Sekunde verarbeiteten Gleitkomma-Operationen (FLOPS)
 die Art des Befehlssatzes oder die Möglichkeiten zur parallelen Abarbeitung von Befehlen
(multithreading)

40 Schulversion © HERDT-Verlag
Verarbeitungsgeräte 5

 die Zahl der CPU-Kerne im Prozessorgehäuse (Multi-Core-Prozessoren)


 Cache
 die Busbreite (64-Bit)
 die Art des Befehlssatzes (CISC, RISC)

Complex Instruction Set Computer (CISC) sind die Ihnen bekannten PCs, Laptops etc. mit Intel-
oder AMD-Prozessor. Diese Prozessoren verfügen über sehr leistungsfähige, aber auch sehr
komplexe Befehlssätze. Damit können mit dem Aufruf eines einzelnen Befehls umfangreiche
Operationen ausgeführt werden. Im Unterschied dazu verwenden Reduced Instruction Set
Computer (RISC), beispielsweise Rechner mit SPARC-Prozessoren (Sun/Oracle, Fujitsu) oder die
Power-Systeme von IBM, zugunsten einer schnelleren Ausführung einfachere Befehlssätze.

RISC-Prozessoren verfügen zwar über einen eingeschränkten Befehlssatz, können diese Befehle
aber meist vollständig in einem Taktzyklus ausführen. Umfangreichere Befehle werden vor der
Bearbeitung in mehrere einfache Teile zerlegt und nacheinander verarbeitet. Entsprechende
Programmierung vorausgesetzt, können RISC-Prozessoren eine Leistung erreichen, die deutlich
über der vergleichbarer CISC-Prozessoren liegt. In vielen Smartphones, Spielekonsolen oder
Routern werden ebenfalls RISC-Prozessoren verbaut.

Taktfrequenz/CPU-Geschwindigkeit
Die CPU verarbeitet Daten und Befehle in einem festgelegten Rhythmus, der durch einen Takt-
geber (clock) festgelegt wird. Die Anzahl der Taktimpulse pro Sekunde, die der Taktgeber abgibt,
ist im physikalischen Sinne eine Frequenz und wird deshalb in Hertz angegeben (1 Megahertz =
1 MHz =1 Million Taktimpulse pro Sekunde).

Jede Anweisung eines Programms, die von der CPU ausgeführt wird, erfordert eine bestimmte
Anzahl von Taktimpulsen. Je höher die Taktfrequenz ist, umso schneller können einzelne
Programmanweisungen bearbeitet werden. Ein Programm, das von einer CPU mit 1 GHz in
30 Sekunden ausgeführt wird, kann demzufolge auf einer vergleichbaren 2-GHz-CPU in
15 Sekunden ablaufen. Für den Leistungsvergleich von CPUs einer Familie eines Herstellers kann
also die Taktrate als Leistungsmerkmal herangezogen werden.

Die Taktfrequenz wird deshalb oft mit der „Geschwindigkeit“ einer CPU gleichgesetzt und als aus-
schlaggebender Faktor beim Prozessor- oder Computerkauf missbraucht: höhere Taktfrequenz =
höhere Leistung. Dieser Vergleich ist aber grob vereinfachend und so wenig aussagekräftig wie
der Vergleich von maximalen Motordrehzahlen verschiedener Automodelle. Die tatsächliche
Leistung einer CPU hängt unter anderem auch davon ab, wie viele Befehle je Taktzyklus gleich-
zeitig verarbeitet werden können. Hier gibt es deutliche Unterschiede zwischen verschiedenen
Herstellern und Prozessorarchitekturen, die an der Taktfrequenz nicht erkennbar sind.

Der Vergleich zweier Computer allein aufgrund der Taktfrequenz ihrer CPU ist wenig aussagekräftig.
Hier bestimmen viele weitere Parameter und Komponenten die Systemleistung.

Neuere Computersysteme verfügen über einen variablen Taktgeber, der meist im Chipsatz der
Hauptplatine enthalten ist und zur Steuerung der Hauptplatinengeschwindigkeit und der
Geschwindigkeit der CPU dient.

© HERDT-Verlag Schulversion 41
5 Verarbeitungsgeräte

Moderne Prozessoren tauschen ihre Daten zwar mit der Taktgeschwindigkeit der Hauptplatine
aus, können intern jedoch mit einem Vielfachen dessen rechnen. Der variable Taktgeber wird auf
die benötigte Taktgeschwindigkeit der Hauptplatine eingestellt (Front-Side-Bus-Takt, FSB-Takt),
die interne Rechengeschwindigkeit des Prozessors ergibt sich dann aus diesem FSB-Takt multi-
pliziert mit einem halb- oder ganzzahligen Multiplikator. Dieser Multiplikator wurde früher eben-
falls auf der Hauptplatine eingestellt, ist aber heute fest im Prozessor verdrahtet und damit vom
Hersteller des Prozessors vorgegeben.

Übersichten über aktuelle Prozessorleistungen finden Sie im Internet auf den Homepages der
Prozessorhersteller oder in Vergleichstests von EDV-Zeitschriften (PC-Welt, Chip etc.) sowie
Technikportalen, beispielsweise:
 https://www.tomshardware.com/reviews/cpu-hierarchy,4312.html

Programme zum Auslesen der Informationen aus einem Prozessor sind z. B.:
 CPU-Z: http://www.cpuid.com
 Sandra: http://www.sisoftware.net

Prozessorkomponenten und Befehle


Pipelining
Die Befehlsausführung in einer CPU kann in mehrere Abschnitte unterteilt werden:
 Ein Befehl wird geladen.
 Der Befehl wird decodiert.
 Die erforderlichen Daten (Operanden) werden geladen.
 Die im Befehl beschriebene Operation wird ausgeführt.
 Die Ergebnisse werden zurückgespeichert.

Jeder dieser fünf Abschnitte wird in der Von-Neumann-Architektur nacheinander in einem


einzelnen Taktzyklus von der CPU ausgeführt. Damit sind im einfachsten Fall für die Ausführung
eines kompletten Befehls fünf Taktzyklen erforderlich.

Das Pipelining stellt demgegenüber in der CPU Funktionseinheiten bereit, die jeden der einzelnen
Abschnitte unabhängig voneinander bearbeiten. Wird ein Befehl im ersten Taktzyklus von einer
Funktionseinheit geladen, wird er im nächsten Taktzyklus von der zweiten Funktionseinheit
decodiert. Die erste Funktionseinheit kann parallel dazu bereits den nächsten Befehl laden usw.
Insgesamt entsteht so nach dem Prinzip der Eimerkette ein System, bei dem jede Funktions-
einheit in jedem Taktzyklus ihre Aufgabe erledigt und nicht mehr auf die Ausführung der übrigen
Abschnitte warten muss. Die Befehlsverarbeitung ist so erheblich effektiver, allerdings wird nach
wie vor je Taktzyklus nur ein Befehl von der CPU geladen.

Hyper-Threading
Intel führte bereits 2002 die Hyper-Threading-Technologie ein. Mit dieser Prozessorerweiterung
ist es neueren Programmen möglich, mehrere Arbeitsschritte (Threads) gleichzeitig abzuarbeiten,
sofern die Programme den entsprechenden Befehlssatz unterstützen. Bei gleichem Takt werden
so die Prozessorressourcen besser ausgenutzt und die Leistung des Computers kann gesteigert
werden.

42 Schulversion © HERDT-Verlag
Verarbeitungsgeräte 5

Um Virtualisierungslösungen wie Hyper-V in Windows Server 2012 R2 oder Windows Server


2016/2019, aber auch auf Rechnern mit Windows 8.1 oder Windows 10 zu installieren, müssen
Sie darauf achten, dass im BIOS die Virtualisierungsoptionen eingeschaltet sind. Der Prozessor
muss Data Execution Prevention (DEP) unterstützen. Dies muss ebenfalls im BIOS aktiviert sein.
Die Bezeichnung dafür ist Intel XD bit (Execute Disable Bit) oder AMD NX bit (No Execute Bit).

Windows-Systeme bringen Programme mit, die prüfen, ob der PC tauglich für Hyper-V ist. Außer-
dem sehen Sie im BIOS, ob Sie die Virtualisierungsfunktion aktivieren können. Sie können auch
versuchen, Hyper-V zu installieren und damit zu arbeiten. Wenn das System nicht kompatibel ist,
können Sie nichts kaputt machen, sondern Hyper-V informiert Sie einfach.

64-Bit-Prozessoren
2003 führte AMD mit den Athlon-64-Prozessoren die 64-Bit-Technologie (AMD64) im Desktop-
Bereich ein. Im Gegensatz zu „echten“ 64-Bit-Prozessoren (Sun UltraSPARC-, IBM-Power-, Alpha-
und Intel-Itanium-Prozessor) arbeitet der Athlon 64 intern mit einem 32-Bit-Prozessor, dessen
Register im 64-Bit-Modus adressiert werden können. Daher ist der Prozessor uneingeschränkt mit
heutiger 32-Bit- und sogar mit alter 16-Bit-Software abwärtskompatibel.

Aufgrund des Markterfolges der AMD64-Prozessoren zog Intel mit dem Befehlssatz EM64T nach.
Deshalb sind alle modernen Intel-Prozessoren 64-Bit-fähig.

Alle halbwegs aktuellen Betriebssysteme für Desktops, Laptops oder Server gibt es als 64-Bit-
Versionen.

Gefordert sind die Hersteller von Komponenten, entsprechende 64-Bit-Treiber für die verschie-
denen Betriebssysteme zu entwickeln, und die Programmierer, die Anwendungsprogramme für
64-Bit zu optimieren, um einen entscheidenden Geschwindigkeitsvorteil gegenüber einer 32-Bit-
Umgebung zu erlangen.

Cache
Die CPU ist mit schnellen Zwischenspeichern versehen, in denen häufig verwendete Daten (Data
Cache) und Befehle (Code Cache) abgelegt werden können. Ein Cache kann mit höheren Takt-
raten angesprochen werden als der externe Arbeitsspeicher. So lassen sich die Zugriffszeiten auf
benötigte Daten deutlich reduzieren, und die CPU wird für bestimmte Anwendungen leistungs-
fähiger. Die erzielbare Leistungssteigerung hängt unter anderem von der Größe dieses Caches,
der Busbreite und der Taktrate ab, mit der er angesprochen wird. Verschiedene Prozessor-
familien verfügen über unterschiedlich leistungsfähigen Cache. Der Cache besteht meist aus
mehreren Ebenen.

Superskalare Architektur
Eine CPU mit superskalarer Architektur kann je Taktzyklus mehrere Befehle entgegennehmen. Dazu
wird die Anzahl der Funktionseinheiten erhöht. Superskalare Prozessoren besitzen die Hardware für
jeden Abschnitt der Verarbeitung mehrmals. Wird beispielsweise die Anzahl der Funktionseinheiten
vervierfacht, können vier Befehle gleichzeitig von der CPU verarbeitet werden. Moderne PC-
Prozessoren verwenden meistens eine Kombination aus Pipelining und superskalarer Architektur.

© HERDT-Verlag Schulversion 43
5 Verarbeitungsgeräte

Multi-Core-Prozessoren
Als Multi-Core-Prozessor bezeichnet man eine CPU, bei der 18 CPU-Kerne und mehr in einem
Prozessorgehäuse vereint sind. Entsprechend angepasste Programme (Bild- und Video-
bearbeitung sowie Computerspiele) laufen als parallele Prozesse ab, was die Verarbeitungs-
geschwindigkeit erhöht.

Die Entwicklung dieser Bauart kann die Rechenleistung erhöhen, ohne die produzierte Abwärme
und den Stromverbrauch wesentlich zu vergrößern.

Liste der Prozessoren von


 Intel: http://de.wikipedia.org/wiki/Mikroprozessoren_von_Intel
 AMD: http://de.wikipedia.org/wiki/Liste_der_Mikroprozessoren_von_AMD
 ARM-Architektur (Prozessoren für Smartphones und Tablets):
https://de.wikipedia.org/wiki/ARM-Architektur

Mehr-Prozessor-Systeme – NUMA
NUMA (Non-Uniform Memory Access) bietet in Mehrprozessor-Systemen die Möglichkeit, dass
die verschiedenen Prozessoren untereinander Daten austauschen können und sich gegenseitig
bei Berechnungen unterstützen.

5.5 Arbeitsspeicher

Der RAM-Speicher
In den Arbeitsspeicher werden alle Daten und Befehle abgelegt, die gerade von der CPU nicht
benötigt werden. Bei Bedarf kann die CPU Informationen wieder aus dem Arbeitsspeicher
anfordern und verarbeiten.

Der Arbeitsspeicher soll sehr schnell möglichst viele Daten aufnehmen können und einen
beliebigen Zugriff auf die gespeicherten Daten zulassen. Diese Forderungen lassen sich am besten
mit elektronischen Speicherbausteinen erfüllen, den RAM-Bausteinen (Random Access Memory,
Speicher mit beliebigem Zugriff). RAM-Bausteine gehören jedoch zu den flüchtigen Speichern,
die gespeicherten Daten gehen beim Abschalten oder Ausfall der Versorgungsspannung verloren.

Die allgemeine Bezeichnung für den Datenbus zwischen CPU und Speicher ist Front Side Bus
(FSB). Die hier angegebene Taktrate sagt Ihnen, mit welchen Geschwindigkeiten CPU, Mainboard
und Speicher miteinander kommunizieren können.

Generell steht ein höherer Speichertakt für eine höhere Verarbeitungsgeschwindigkeit, der spür-
bare Geschwindigkeitszuwachs kann sich aber je nach Einsatzfall in Grenzen halten. Das sollten
Sie beim Speichererwerb bedenken. Rüsten Sie Ihr System entsprechend Ihren Erfordernissen
bzw. Ihrem Geldbeutel so weit auf, wie es sinnvoll ist. Prüfen Sie vorher, wie viel Arbeitsspeicher
Ihr System (Hardware und Betriebssystem) maximal unterstützt. Vermeiden Sie nach Möglichkeit
Mischbestückungen (unterschiedliche Taktfrequenzen oder Hersteller). Die Erfahrung zeigt, dass
die Speicherriegel renommierter Hersteller wie etwa Kingston eher den jeweiligen technischen
Spezifikationen entsprechen. Wenn Sie also mischen müssen, sparen Sie nicht am falschen Ende
bzw. vereinbaren Sie mit Ihrem Händler ein Umtausch- oder Rückgaberecht. Es gibt immer
wieder Rechner, in denen sich irgendwelche Komponenten einfach nicht vertragen wollen.

44 Schulversion © HERDT-Verlag
Verarbeitungsgeräte 5

SDRAM
Beim heute völlig überholten und nur noch in ganz alten Pentium-4-Systemen anzutreffenden
SDRAM (Synchronous Dynamic RAM) wird die Datenausgabe von einem Timer gesteuert und das
Lesen erfolgt synchron zum Takt.

SDRAM-Speicherriegel

SDRAMs wurden in der DIMM-Bauweise (Double Inline Memory Module) hergestellt, was eine
Einzelbestückung eines Mainboards erlaubte (im Gegensatz zu seinem Vorgänger PS/2-SIMMs, der
immer paarweise eingesetzt werden musste). Zusätzlich erübrigte sich die teilweise mühselige und
fehleranfällige Konfiguration des Speichertimings, da ein SDRAM üblicherweise ein kleines EEPROM
besaß, in dem die benötigten Timingwerte gespeichert waren, die das Mainboard-BIOS zur automa-
tischen Konfiguration nutzen konnte.

SDRAM waren die am weitesten verbreiteten Speichermodule. Es gab sie mit ein- und beid-
seitiger Speicherbestückung und Taktfrequenzen von standardmäßig 66, 100 und 133 MHz.
Ihre Nachfolger stellen die DDR-SDRAMs dar.

Eine Sonderform von SDRAMs waren die in Notebooks verbauten SO-DIMMs (Small Outline Dual
Inline Memory Module), die sich durch ihre geringe Baugröße und den niedrigen Stromverbrauch
auszeichneten.

DDR-SDRAM
Der Hauptunterschied zwischen SDRAMs und ihren Nachfolgern, den DDR-SDRAMs (Abkürzung
DDR), besteht darin, dass DDR-Bausteine in der Lage sind, pro Taktzyklus die doppelte Menge an
Daten zu liefern – deswegen der Name DDR: Double Data Rate Synchronous Random Access
Memory.

DDR-Speicherriegel

DDR-RAMs sind mit Taktfrequenzen von 100 über 133 und 166 bis zu 200 MHz erhältlich.

© HERDT-Verlag Schulversion 45
5 Verarbeitungsgeräte

DDR2-SDRAM
DDR2-RAM ist eine Weiterentwicklung des DDR-Speichers und in der Lage, die vierfache Daten-
menge pro Takt gegenüber herkömmlichem SDRAM zu übertragen.

Die Speicherriegel erfordern auf DDR2 speziell abgestimmte Chipsätze (AM2) und Speicherbänke,
um die mit 240 Pins versehenen Riegel aufzunehmen.

DDR2-Speicherriegel

DDR2-RAMs sind mit Taktfrequenzen von 100, 133, 166, 200 und 266 MHz erhältlich.

DDR3-, DDR4 und DDR5-SDRAM


DDR3-SDRAM ist eine Weiterentwicklung der DDR2-Speichertechnologie, bei der statt der vier-
fachen die achtfache Datenmenge gegenüber herkömmlichem SDRAM während eines Taktzyklus
übertragen wird.

DDR3-Speicherriegel

Anfangs wurden die schnellen DDR3-Chips auf Grafikkarten als Grafikspeicher (GDR3) verbaut. Durch
die fallenden Speicherpreise und die Verfügbarkeit der entsprechenden Motherboards werden DDR3-
Speicher aber auch im Desktop-Bereich interessant. Die DDR3-SDRAM-Speichermodule sind mit 240
Kontakten (Pins) bestückt und trotz gleicher Pinzahl nicht zu DDR2-SDRAM kompatibel. Sie lassen
sich aufgrund der unterschiedlichen Einkerbungen nicht auf der Speicherbank befestigen. DDR3-
RAMs sind wie DDR2-RAMS mit Taktfrequenzen von 100, 133, 166, 200 und 266 MHz erhältlich.

Die Weiterentwicklung von DDR3 ist DDR4- und DDR5-SDRAM. Die neue Generation DDR5 bietet
einen Speichertakt von bis zu 525 MHz und einen I/O-Takt von 2.100 MHz. Die Übertragungsrate
pro 64-Bit-Modul beträgt 2x 33.6 GB/s. Weitere Informationen finden Sie im Internet, z. B. hier:
https://de.wikipedia.org/wiki/DDR-SDRAM#DDR5-SDRAM.

5.6 Massenspeicher – Festplatten und SSD


Massenspeicher können große Datenmengen dauerhaft speichern und bei Bedarf wieder zur
Verarbeitung an die CPU übergeben. Auf Massenspeichern abgelegte Daten sind nicht flüchtig,
sie gehen also nicht beim Ausschalten der Betriebsspannung verloren. Allerdings arbeiten auch
heute noch die meisten Massenspeicher mit mechanischen Komponenten und sind deshalb sehr
viel langsamer und störanfälliger als RAM-Bausteine.

46 Schulversion © HERDT-Verlag
Verarbeitungsgeräte 5

Festplatten verstehen
Zu den wichtigen Massenspeichern eines PCs gehören:
 Festplatte (Harddisk)
 Flashspeicher (USB-Stick /Speicherkarte )
 BD (Blu-ray-Disc)/DVD/CD-R/W-Laufwerk

Disketten mit ihrer geringen Speicherkapazität von zuletzt 1,44 MB und ihren extrem geringen
Datenübertragungsraten sind heute kaum mehr gebräuchlich.

Speicherkarten (Memory-Cards) und USB-Sticks haben die Diskette als nichtflüchtigen Speicher
(insbesondere als transportables Medium) abgelöst. Mit ihnen lassen sich derzeit bis zu 2 Tera-
byte Daten ohne mechanische Komponenten speichern.

Speicherkarten finden vorzugsweise für die Ablage von Bilddaten in Digitalkameras oder für das
Abspeichern von beliebigen Daten in Smartphones und Handys Verwendung. Ein weiterer
Anwendungsbereich sind Multimediaplayer, wo Audiodaten (z. B. MP3-Files) oder auch Video-
dateien auf einer Speicherkarte abgelegt werden können.

Diese Massenspeicher haben folgende Haupteigenschaften:

Eigenschaft Festplatte Flashspeicher BD/DVD/CD-Laufwerk


Speicherkapazität Sehr groß, über Groß, 4 TB und CD klein, 650–900 MB
4 TB mehr DVD mittelgroß, 4,7–8,5 GB
BD groß, 25–500 GB
Transportables Ja Ja Ja
Speichermedium
Lesen/Schreiben möglich Ja Ja ROM nein
R/WW ja

Festplatten bilden den wichtigsten Massenspeicher in einem Computer. Alle Software des
Betriebssystems, die meisten Anwendungen und viele Daten sind auf einer im Computer ein-
gebauten Festplatte gespeichert. Nach dem Einschalten des Computers werden alle benötigten
Daten von der Festplatte in den Arbeitsspeicher geladen und stehen der CPU zur Verfügung.

Das Festplattenformat für 4 KB-Festplatten trägt die Bezeichnung Advanced Format Technology.
Es ermöglicht physische Festplatten mit einer Sektorgröße von 4 KB. Bisher nutzen Festplatten
eine Sektorgröße von 512 Byte. Die erhöhte Sektorgröße ist notwendig, damit Hersteller
Festplatten mit höherer Speicherkapazität herstellen können.

Da nicht alle Software und Hardware das neue Format unterstützen, melden sich viele Fest-
platten mit 512 Bit-Emulation am System an, auch 512e genannt. Die Firmware (spezielle
Software, die in einen bleibenden Speicher der SSD geschrieben wird) der Festplatte speichert
ankommende Datenpakete dann entsprechend in den tatsächlich vorhandenen 4 GB-Sektoren.
Beim Umgang mit diesen Festplatten ist es wichtig, dass die verwendeten Sektoren des Betriebs-
systems teilbar durch die vorhandenen physischen Sektoren sind. Ist das nicht der Fall, liegt ein
logischer Sektor des Betriebssystems auf mehreren physischen Sektoren verteilt. Darunter kann
die Leistung des Systems enorm leiden.

© HERDT-Verlag Schulversion 47
5 Verarbeitungsgeräte

Je älter eine Festplatte ist, umso höher ist auch die Gefahr, dass die Festplatte defekte Sektoren
aufweist. Das bemerken Sie meistens erst dann, wenn deshalb der Computer nicht mehr funk-
tioniert. Sie sollten daher Festplatten regelmäßig auf Fehler prüfen. In Festplatten ist dazu
SMART (Self-Monitoring, Analysis and Reporting Technology) integriert. Diese Funktion über-
wacht die Festplatte auf Fehler.

Sie können den aktuellen SMART-Zustand mit Zusatztools auslesen und anzeigen. Ein solches
Tool ist Acronis Drive Monitor, das Sie nach einer Registrierung kostenfrei von der Seite
http://www.acronis.de/homecomputing/download/drive-monitor herunterladen können.
Das Tool überwacht in Echtzeit die Festplatten und meldet Fehler, sobald diese auftreten.

Solid State Drive (SSD)


Durch den Preisverfall bei Flashspeichern begünstigt, werden inzwischen auch Festplatten mit
Flashspeicher, sogenannte SSDs (Solid State Drive), angeboten. Um die Leistung von SSD-Platten
zu verbessern, sollten Sie möglichst immer die aktuellste Firmware auf dem Gerät installieren.

Grundlagen zu SSD
Seit Windows 7 arbeiten Windows-Betriebssysteme mit SSDs optimal zusammen. Das gilt
natürlich auch für Windows 10. SSDs lassen sich in Computer einbauen und wie Festplatten
nutzen. Da SSDs auf Speicherbausteinen aufbauen und keine beweglichen Teile verwenden, ist
ihre Geschwindigkeit sehr viel höher als die von herkömmlichen Festplatten. Aktuellere
Betriebssysteme wie Windows 10 sind für SSD optimiert.

SSDs haben eine kürzere Lebensdauer als herkömmliche Festplatten, da auf die einzelnen
Speicherblöcke einer SSD nur eine begrenzte Anzahl Speichervorgänge ausgeführt werden
kann. Aus diesem Grund verfügen SSDs über spezielle eingebaute Controller, welche die
Speichervorgänge gleichmäßig auf verschiedene Speicherblöcke verteilen.

Unabhängig von dieser Technik sollten Sie Windows so einstellen, dass möglichst wenige
Schreibvorgänge auf der Festplatte ausgeführt werden. Dazu ist es notwendig, dass Sie
verschiedene Einstellungen in Windows 10 für den Betrieb von SSD optimieren. Schließen Sie
die SSD möglichst als erste Festplatte an. Als Bootreihenfolge verwenden Sie zuerst DVD/USB,
abhängig davon, von wo Sie installieren wollen. Aktivieren Sie im BIOS den AHCI-Modus für
die optimale Unterstützung von SSDs, falls Ihre Platine dies unterstützt.

Speichervorgang auf SSD verstehen


Die kleinste Einheit einer SSD ist die sogenannte Page, der Sektor zum Speichern. Windows
arbeitet bei der Speicherung mit Clustern, die auch als Zuordnungseinheiten bezeichnet werden.
Diese bestimmen Sie bei der Formatierung eines Datenträgers. Ist die Zuordnungseinheit des
Betriebssystems größer als die Page der SSD, muss Windows beim Speichern gleich mehrere
Pages ansprechen und Änderungen immer auf zwei Pages verteilen. Das stellt ein großes
Leistungsproblem dar.

48 Schulversion © HERDT-Verlag
Verarbeitungsgeräte 5

Ein zweites Problem bei der Spiegelung eines Betriebssystems auf eine neue Festplatte ist das
Verhältnis des Beginns der Startpartition mit den Speicherblöcken der Festplatte (Alignment).
Stimmen diese nicht überein, bricht die Leistung einer SSD ein, und die Lebensdauer verkürzt
sich. Das heißt, die Startpartition beginnt nicht am Anfang eines Sektors, sondern in der Mitte.

Wichtig ist, dass die Größe der Blöcke einer Partition für die Pages der SSD aufteilbar ist. Hat die
SSD eine Größe von 4 KB und installieren Sie Windows, ist ein empfehlenswerter Wert für das
Alignment einer Festplatte der Wert 1.024. Der Installations-Assistent verwendet bereits auto-
matisch diesen Wert. Durch diese Größe ist sichergestellt, dass jeder Betriebssystemblock mit
1.024 Byte in einen Block der SSD mit 4.096 Byte passt und kein Betriebssystemblock über
mehrere SSD-Blöcke verteilt ist.

Daten auf SSD löschen


Neben dem Alignment, dem optimalen Verhältnis zwischen Startpartition und Flashzellen, spielt
TRIM eine wichtige Rolle beim Einsatz von SSDs. Löschen Sie in Windows Daten, bleiben diese auf
der Festplatte erhalten, und nur in der Dateizuordnungstabelle werden die Dateien gelöscht. Das
heißt, die Daten der Datei sind weiterhin auf der Festplatte gespeichert.

Windows überschreibt diese Daten, sobald das Betriebssystem den Platz benötigt. Diese Technik
funktioniert bei SSDs nicht. Hier müssen Speicherblöcke zunächst komplett gelöscht werden,
bevor sie sich neu beschreiben lassen. Windows 7/8.1 und Windows 10 beherrschen die TRIM-
Technologie und teilen der SSD mit, welche Speicherblöcke die Platte löschen darf.

Viele aktuelle SSDs enthalten eigene Technologien, die das interne Löschen von Speicherblöcken
auch über den Controller und die interne Firmware durchführen. Diese Technik trägt die
Bezeichnung Garbage Collection. Aus diesem Grund ist es sehr wichtig, dass Sie sich nicht auf den
Windows-TRIM-Befehl zum Löschen verlassen, sondern auch die Firmware der SSD aktuell halten.
Sie können mit der Freeware CrystalDiskInfo von der Seite http://crystalmark.info/?lang=en aus-
lesen, ob die Festplatte optimal den TRIM-Befehl unterstützt. Zusätzlich lässt sich mit dem Tool
auch der Zustand Ihrer SSD überprüfen. In der Zeile Supported Features sehen Sie, welche
Techniken die Festplatte beherrscht.

5.7 Übung

Verarbeitungsgeräte verstehen
Level Zeit 15 Minuten

Übungsinhalte  USB-Anschlüsse kennen


 Aufgabe des BIOS
 Geschwindigkeit der CPU
 Hyper-Threading kennen
Übungsdatei Uebung05.pdf
Ergebnisdatei Uebung05-E.pdf

© HERDT-Verlag Schulversion 49
6 Ausgabegeräte

6
6. Ausgabegeräte

6.1 Drucker und Multifunktionsgeräte

Druckertypen
Je nach Anwendungsbereich des Computers wird ein Drucker benötigt, der die erzeugten
Ausgaben schnell, qualitativ gut und kostengünstig ausdruckt. Drucker werden in die beiden
folgenden Hauptkategorien unterteilt:

Matrixdrucker Nadel-, Tintenstrahl- oder Thermodrucker; der Ausdruck erfolgt zeichenweise.


Seitendrucker Laserdrucker; der Ausdruck erfolgt seitenweise.
3D-Drucker Geräte, die z. B. mit Kunststoff 3D-Objekte erstellen. Die Technik entspricht
dem Druckverfahren, mit dem Unterschied, dass die erstellten Objekte und
Formen dreidimensional im Gehäuse erstellt werden.

Nadeldrucker
Nadeldrucker arbeiten mit einem Bündel von 8 bis 48 Stahlnadeln in einem Druckkopf. Die Nadeln
werden einzeln über ein Farbband auf das Papier geklopft (ähnlich wie bei den früher verwendeten
Schreibmaschinen) und übertragen so einen kleinen Farbpunkt vom Farbband auf das Papier.

Tintenstrahldrucker
Tintenstrahldrucker besitzen einen Druckkopf, in dem sich eine unterschiedliche Anzahl Düsen
befinden. Die Düsen erzeugen mit Tinte Punkte auf dem Papier, aus denen sich das Zeichen zu-
sammensetzt. Zwei Verfahren zum Auftragen der Tinte auf das Papier haben sich auf dem Markt
etabliert:
 Bubble-Jet-Verfahren (beispielsweise Canon, Hewlett-Packard oder Lexmark)
 Piezo-Verfahren (Epson)

Durch die Verwendung mehrerer Druckköpfe und Farbtanks mit unterschiedlichen Farben
(Grundausstattung meist Schwarz, Cyan, Magenta und Gelb) ist es möglich, Farbdrucke zu
erstellen. Fotodrucker haben in der Regel dazu weitere Farbtanks, um Farbverläufe in Fotos
noch genauer wiedergeben zu können.

50 Schulversion © HERDT-Verlag
Ausgabegeräte 6

Dieser Druckertyp inkl. auf Tintenstrahltechnik basierende Multifunktionsgeräte (siehe weiter


unten) findet nach wie vor aufgrund seiner guten Qualität und des geringen Anschaffungspreises
starken Absatz.

Thermodrucker
Thermodrucker erzeugen ihre Ausdrucke durch blitzartiges und punktgenaues Erwärmen von
Heizelementen. Diese einzeln ansteuerbaren Heizelemente sind in einer Leiste oder in einem
Heizkopf installiert. Der Heizkopf wird mit einem Schlitten horizontal über das Druckmedium
bewegt. Das Erwärmen kann entweder direkt auf einem hitzeempfindlichen Medium (sogenann-
tes Thermopapier) erfolgen, dann spricht man von Thermodirektdruck. Oder über normalem
Papier wird eine thermoempfindliche Farbfolie erhitzt. Durch die Erhitzung wird die wachsartige
Tinte auf der Farbfolie quasi auf das Papier gespritzt (Thermotransferdruck) bzw. aufgedampft
(Thermosublimationsdruck).

Thermodirektdrucker
Preisgünstige Faxgeräte funktionieren nach diesem Prinzip. Ebenso Parkautomaten und andere
Bon-Drucker für Etiketten oder Fahrkarten.

Thermotransferdrucker
Thermotransferdrucker sind in der Lage, in hervorragender Qualität auf unterschiedlichen Medien
zu drucken. Deshalb werden sie häufig zum Drucken von Schildern, Etiketten und Barcodes in
Industrie und Handel eingesetzt.

Thermosublimationsdrucker
Thermosublimationsdrucker liefern Druckergebnisse von der Qualität eines Farbfotos, dort liegt
auch ihr Haupteinsatzbereich.

Fazit Thermodrucker
In einigen Bereichen (z. B. Foto- oder Foliendruck) haben Thermodrucker starke Konkurrenz
durch Tintenstrahldrucker bekommen. Und auch Farblaserdrucker können heute sehr hoch-
wertige Farbausdrucke liefern. In anderen Bereichen (z. B. beim Ausdrucken von Bons)
behaupten sich Thermodrucker nach wie vor.

Laserdrucker
Der Laserdrucker bezieht die Druckinformationen seitenweise vom Computer. Laserdrucker
arbeiten mit einem Halbleiter-Laser, der eine fotoempfindliche Trommel oder Walze belichtet
und dabei elektrostatisch auflädt. Die belichteten Bereiche der Walze zeichnen das Druckbild als
elektrostatische Ladung nach. Anschließend wird die Walze an einem Behälter mit Farbpartikeln
(Toner) vorbeigeführt, die nur an den aufgeladenen Stellen der Walze haften bleiben. In einem
dritten Schritt wird der Toner von der Walze auf das Papier übertragen und dort durch kurz-
zeitiges Erhitzen fixiert. Laserdrucker mit mehreren Bildtrommeln und farbigem Toner sind in der
Lage, farbige Ausdrucke zu erstellen.

© HERDT-Verlag Schulversion 51
6 Ausgabegeräte

Laserdrucker mit eingebauter Netzwerkschnittstelle (LAN und/oder WLAN) und eigenem Speicher
eignen sich besonders als Netzwerkdrucker, auf den mehrere Benutzer zugreifen können.

Die Druckereigenschaften in der Übersicht


Druckertyp Vorteile Nachteile
Nadeldrucker  Erstellung mehrerer Durchschläge  Hohe Geräuschentwicklung im
eines Dokuments gleichzeitig Betrieb
 Einfacher Umgang mit Endlos-  Mäßige Druckgeschwindigkeit,
papier ab 50 bis maximal 1000 Zeichen
pro Sekunde (CPS)
 Hohe Anschaffungskosten im
Vergleich zu Tintenstrahl- oder
Laserdruckern
Tintenstrahl-  Geringe Anschaffungskosten  Mäßige Druckgeschwindigkeit
drucker  Feine Tintendüsen erlauben hohe  Hohe Druckkosten bei qualitativ
Auflösung, etwa 1200–9600 dpi hochwertigen Ausdrucken
 Farbdrucke in Fotoqualität (Spezialpapier erforderlich)
 Leiser Druckbetrieb  Ausdrucke meist weder
wasserfest noch lichtecht
 Eintrocknungsgefahr
Thermodrucker  Schnell und leise  Hohe Anschaffungskosten
 Gute (120 bis 600 dpi), dauerhafte  Hohe Betriebskosten durch
(wasser- und lichtfeste) Qualität spezielles Papier und Farbfolie
 Verschiedene Schriftarten
und -größen
Laserdrucker  Geringe Druckkosten  Hohe Anschaffungskosten für
 Ausgezeichnete Druckqualität Farb-Laserdrucker und deren
für Texte, 600 bis 2400 dpi und Toner
mehr  Qualität der Fotoausdrucke
 Farbdrucke in guter Qualität reicht nicht an die eines Tinten-
strahlfotodruckers heran
 Farbpigmente sind lichtecht
 Ozonentwicklung (bei älteren
 Leiser Druckbetrieb
Laserdruckern); Ozon reizt die
 Geeignet für hohe Druck- Atemwege und kann gesund-
aufkommen heitsschädlich sein
 Probleme bei der Entsorgung
verbrauchter Trommeln und von
Tonerresten

52 Schulversion © HERDT-Verlag
Ausgabegeräte 6

Druckersprachen
Laserdrucker besitzen normalerweise einen internen Speicher und eine interne Befehlssprache
(hier wird zwischen den beiden bekanntesten Sprachen PostScript und PCL unterschieden). Die
Daten werden vom Computer in der entsprechenden Befehlssprache an den Drucker weiter-
gegeben. Im Drucker werden anhand der übergebenen Daten der Aufbau und Inhalt der Seite
berechnet und ausgedruckt. Hier zählen die interne Rechengeschwindigkeit und der verfügbare
Speicher des Druckers.

GDI-Laserdrucker
Preiswertere Laserdrucker verzichten auf diese druckerinterne Aufbereitung. Bei ihnen muss der
Computer die aufwendige Berechnung der Seite übernehmen. GDI-Drucker sind dadurch erheb-
lich günstiger, bei vielen und umfangreichen Ausdrucken ist der Computer aber entsprechend
ausgelastet mit der Aufbereitung der Druckdaten.

Multifunktionsgeräte
Dabei handelt es sich um Kombigeräte, die z. B. die Möglichkeiten eines Scanners, eines Kopie-
rers, eines Faxgerätes und eines Druckers in einem Gehäuse vereinen. Die meisten dieser Geräte
arbeiten mit einem internen Tintenstrahldrucker (vgl. Kapitel 4.2), andere mit einem Laser-
drucker. Sie brauchen weniger Platz als die Einzelgeräte und sind inzwischen sehr preiswert zu
haben. Zudem verfügen sie meist über weitere sinnvolle Features wie integrierte Speicher-
kartenleser oder den Fotodruck direkt von einer Digitalkamera aus.

Drucker im Netzwerk
Sollen Dokumente, Webseiten oder Bilder ausgedruckt werden, steht für mehrere Computer in
einem Haushalt oder in einer Abteilung eines Unternehmens oft nur ein Drucker für die gemein-
same Nutzung zur Verfügung.

Es gibt viele Möglichkeiten, um Drucker in ein Netzwerk einzubinden und an die verschiedenen
PCs, Smartphones oder Tablet-PCs anzubinden. Dazu verfügen Drucker über:
 eigene Netzwerkschnittstellen, die eine direkte Ansteuerung erlauben;
 WLAN-Fähigkeit; diese Möglichkeit bietet sich an, wenn es im Haushalt kein Netzwerk gibt;
 die Anbindung von PowerLine-Adaptern, die normale Stromleitungen für das Netzwerk
nutzen;
 AirPrint- oder Smartphone-Unterstützung für das direkte Drucken von Smartphones über
das Netzwerk.

An PCs lassen sich Drucker schnell und einfach über Windows und Linux freigeben.

Viele DSL-/und Kabel-Router bieten mittlerweile die Möglichkeit, Drucker per USB anzubinden
und im Netzwerk freizugeben. Wollen Sie Drucker an einem PC im Netzwerk freigeben, muss zum
Drucken dieser PC angeschaltet sein. Einfacher ist es, Drucker direkt im Netzwerk zur Verfügung
zu stellen, am besten mit einer eigenen Schnittstelle.

© HERDT-Verlag Schulversion 53
6 Ausgabegeräte

6.2 Grafikkarten

Die verschiedenen Standards bei Grafikkarten


Grafikstandards haben sich im Lauf der PC-Entwicklung mehrfach geändert, um den gestiegenen
Anforderungen, beispielsweise an Auflösung und Farbtiefe, gerecht zu werden. Nach Einführung
von XGA (1024 x 768 Pixel) erfolgte keine Standardisierung mehr, dennoch basieren die land-
läufigen Bezeichnungen für Grafikmodi weiterhin auf dem alten VGA-Standard. Moderne Grafik-
karten sind seit Ende der 1990er-Jahre in der Lage, jede beliebige Auflösung darzustellen, wenn
die Treibersoftware dies unterstützt. Hier eine Auflistung von Bildschirmauflösungen, die im
PC-Bereich üblich sind oder waren:

Abkürzung Name Breite x Höhe Verhältnis Pixel


VGA Video Graphics Array (Standard-VGA) 640 × 480 4:3 307.200
WXGA+ WXGA Plus (viele 17"-Notebooks) 1440 × 900 16 : 10 1.296.000
1080p Full High Definition (TV) 1920 × 1080 16 : 9 2.073.600
WQHD,
Wide QHD (QHD) 2560 × 1440 16:9 3.686.400
1440p
UHD, 8.294.400
Ultra High Definition, „4K“ 3840 × 2160 16:9
2160p
ca. 37,7
UHD-II Ultra High Definition II, „8K“ 7680 × 4320 16:9
Megapixel

Wie sinnvoll ist eine hohe Auflösung?


Mehr bedeutet nicht immer auch besser. Dies gilt auch für die Auflösung, die eine Grafikkarte
unterstützt. Bei einer Auflösung von 1920 x 1080 Pixeln passen viele geöffnete Fenster gleich-
zeitig auf den Bildschirm, allerdings erscheint die Schrift dann auch etwas kleiner.

Bei gleicher Auflösung bzw. Pixelzahl sollten Sie nicht die kleinstmögliche Displaygröße wählen,
wenn es der Geldbeutel bzw. die Aufstellungsverhältnisse zulassen. Die Full-HD-Auflösung von
1920 x 1080 Pixeln beispielsweise kann auf 21"- genauso wie auf 42"-Displays dargestellt werden.
Bei gleicher Anzahl von Punkten muss das Bild auf dem 42"-Display größer und damit besser
erkennbar sein. Empfehlenswert, preislich erschwinglich und in den meisten Fällen ausreichend
sollte im Beispiel ein 24"- oder ein 27"-Display sein.

In vielen Bereichen der Wirtschaft ist es heute auch üblich, mehrere Monitore gleichzeitig an
einer Grafikkarte zu betreiben (CAD, DTP, Börse etc.). Dazu müssen Grafikkarten und Monitore
über entsprechende Schnittstellen verfügen – meistens handelt es sich dabei um DVI, HDMI oder
DisplayPort.

54 Schulversion © HERDT-Verlag
Ausgabegeräte 6

3D-Grafikkarten
Da die 3D-Darstellung in allen Betriebssystemen und Anwendungen einen immer größeren Raum
einnimmt und der Computer im Heimbereich auch sehr häufig zum Spielen genutzt wird, trat
neben der Beschleunigung von 2D-Darstellungen die von 3D-Berechnungen in den Vordergrund.

Neue Grafikkarten sind mit einem Chip bestückt, der speziell diese aufwendigen Berechnungen
durchführt und sogar bei aktuellen Karten zusätzliche Rechenkapazitäten dem PC-Prozessor zur
Verfügung stellen kann. Dadurch entlastet die Grafikkarte den PC-Prozessor. Zwei Standards zur
Beschleunigung von 3D-Darstellungen haben sich etabliert: DirectX und OpenGL.

Die Geschwindigkeit der Grafikkarte


Benutzeroberflächen sind bei aktuellen Betriebssystemen durch eine sehr aufwendige grafische
Gestaltung gekennzeichnet. Deren Umsetzung auf dem Bildschirm ist Aufgabe der Grafikkarte.
Dafür ist aber auch ein hohes Maß an Rechenarbeit notwendig. Moderne Grafikkarten verfügen
deshalb über einen eigenen Prozessor, der diese Rechenarbeit leistet und damit die CPU von
dieser Arbeit entlastet.

Die Leistungsfähigkeit einer Grafikkarte, besonders im 3D-Bereich, wird durch Taktfrequenz und
Rechengeschwindigkeit des Grafikprozessors und die Schnelligkeit des angebundenen Grafik-
speichers bestimmt. Durch die Verwendung schneller Bausteine auf den Grafikkarten konnte der
Speichertakt weiter angehoben werden.

Als weiteres Kriterium kommt das verwendete Bussystem zum Tragen, über das die CPU Daten
mit der Grafikkarte austauscht.

 PCI-Express-Steckplatz mit einer Taktfrequenz von


2,5 GHz (= 2 x 1,25 GHz) und 16 Leitungen (Lanes)
und einer Übertragungsrate von 7,4 GByte/s (mit
PCIe 3.0 sind es sogar 15,75 GB/s; moderne Systeme
haben teilweise 40 und mehr Lanes). Die Standards
4.0 und 5.0 bieten noch mehr Leistung, PCIe 6.0 ist
für 2021 angekündigt.
 AGP-Steckplatz mit einer Taktfrequenz von max.
66 MHz (AGP-8x überträgt Informationen auf beiden
Flanken des Taktsignals, was zu einer Taktung von
133 MHz führt) und einer Übertragungsrate von
max. 2,1 GByte/s PCI-Grafikkarte mit 512 MB DDR2-RAM,
 PCI-Steckplatz mit einer Taktfrequenz von ebenfalls ohne Lüfter und mit allen
drei erforderlichen Anschlusstypen
max. 66 MHz, aber nur max. 0,5 GByte/s
Übertragungsrate

AGP- und PCI-Grafikkarten werden immer weiter durch PCI-Express-Grafikkarten vom Markt
verdrängt. Viele Rechner haben gar keinen AGP-Steckplatz mehr bzw. manche nur einen älteren
PCI-Express-Steckplatz. PCI-Steckplätze finden Sie aber nach wie vor auf den Motherboards vor.
Aktuelle PCI-Express-x8/x16-Grafikkarten passen aber nicht in einen -x1/-x4-Slot. Greifen Sie
alternativ zu einer PCI-Grafikkarte wie in der obigen Abbildung, eine PCI-Express-x1-Grafikkarte
wäre zwar leistungsfähiger, kostet aber das Dreifache.

© HERDT-Verlag Schulversion 55
6 Ausgabegeräte

Arbeitsspeicherbedarf moderner Grafikkarten


Bei monochromen Bildschirmen fällt für die Speicherung der Farbe eines Bildpunktes ein Bit an:
Schwarz oder Weiß. Der Arbeitsspeicherbedarf errechnet sich somit aus der Bildschirmauflösung
(1920 x 1080 x 1 = 2.073.600 Bit = 259.200 Byte). Bei Farbbildschirmen hängt der Bedarf an
Arbeitsspeicher von der Anzahl der Farben und der gewählten Bildschirmauflösung ab. Die Größe
des Arbeitsspeichers ist abhängig vom Verwendungszweck: angefangen bei einem einfachen
Kassen- oder Bürorechner mit 4:3-Display (17" mit 1024 x 768 Pixeln oder 19" mit 1280 x 1024
Pixeln) über einen Spiele-PC bis hin zur High-End-CAD-Workstation, an die mehrere große Dis-
plays angeschlossen sind. Bei letztgenannter kann der Arbeitsspeicher bis zu 16 GB und mehr
umfassen.

6.3 Monitore

Monitortypen
Monitore zeigen Informationen praktisch in Echtzeit auf einem Bildschirm an. Sie sind heute die
Standardausgabegeräte für Computer und andere Verarbeitungsgeräte, vom Videospiel bis zum
Geldautomaten.

Monitore werden in verschiedenen Größen angeboten, wobei als Größenangabe die Länge der
Bildschirmdiagonale in Zoll angegeben wird (1" = 2,54 cm). Anders als beim Fernsehgerät, bei
dem unabhängig von der Größe des Bildschirms immer der gleiche Bildausschnitt angezeigt wird,
existiert bei Computermonitoren ein Zusammenhang zwischen Bildschirmgröße und Bildaus-
schnitt. Je größer ein Monitor ist, umso mehr Bildinhalt kann er darstellen und umso größer ist
seine Auflösung. Diese Auflösung wird als Anzahl der Pixel (Picture Elements) in horizontaler und
vertikaler Richtung angegeben, die ein Monitor darstellen kann, beispielsweise 1920 x 1080 Pixel.
Monitore werden über eine Grafikkarte an einen Computer angeschlossen.

 Aktuell handelt es sich bei Monitoren fast ausschließlich um LCD-Monitore. Der frühere
Standardmonitortyp mit Kathodenstrahlröhre (CRT, Cathode Ray Tube) dürfte auf dem
Markt kaum noch anzutreffen sein und wird deshalb nur der historischen Vollständigkeit
halber an dieser Stelle erwähnt.

Monitore mit Kathodenstrahlröhren


Monitore mit Kathodenstrahlröhren (CRT-Monitore) arbeiten nach nahezu dem gleichen Prinzip
wie die ebenfalls langsam aussterbenden konventionellen Fernsehgeräte. Eine evakuierte (luft-
leere) Kathodenstrahlröhre enthält mindestens eine Elektronenkanone (Kathode). Von ihr geht
ein Elektronenstrahl aus, der durch Hochspannung in Richtung Bildschirm beschleunigt wird.

Der Elektronenstrahl trifft schließlich auf eine Phosphorschicht auf dem Bildschirm und bringt
diese an der betreffenden Stelle zum Leuchten. Über Steuerelektroden lässt sich die Helligkeit so
erzeugter Leuchtpunkte auf dem Bildschirm beliebig beeinflussen. Ein flächiges Bild wird an-
gezeigt, indem der Elektronenstrahl von einer Ablenkeinheit mit hoher Geschwindigkeit zeilen-
weise über die gesamte Bildschirmfläche bewegt wird. Die Trägheit des menschlichen Auges
verhindert, dass die einzelnen Zeilen und Bilder wahrnehmbar werden. Die letzten CRTs
erzeugten so mindestens 70 Bilder pro Sekunde (unabhängig von ihrer Auflösung), sie wiesen
eine Bildwiederholrate von 70 Hz oder höher auf.

56 Schulversion © HERDT-Verlag
Ausgabegeräte 6

Kathodenstrahlröhren können Farben darstellen, weil sie je eine Elektronenkanone für die drei
Grundfarben Rot, Grün und Blau besitzen. Eine Lochmaske oder Streifenmaske direkt hinter dem
Bildschirm sorgt dafür, dass jeder Elektronenstrahl nur die richtige Farbe trifft. So lassen sich
nahezu alle benötigten Farbabstufungen erzeugen.

LCD-Monitore
Flüssigkristallanzeigen arbeiten physikalisch grundsätzlich anders als Kathodenstrahlröhren.
Flüssigkristalle können selbst kein Licht erzeugen, sondern nur vorhandenes Licht beeinflussen.
Deshalb müssen LCD-Bildschirme entweder von hinten beleuchtet werden (transflexiv) oder
auftreffendes Außenlicht verwenden (reflexiv).

LCD-Computermonitore bestehen aus einer Vielzahl von kleinen Bildelementen (Pixeln), die
zwischen zwei flachen Glasträgern angebracht sind. Dahinter befindet sich eine Lichtquelle. Jedes
Bildelement kann einzeln gesteuert werden und erlaubt die Einstellung eines bestimmten Hellig-
keitswertes. Farben stellt ein LC-Display dar, indem jedes Bildelement aus drei Zellen
zusammengesetzt wird. Jede Zelle steuert über einen Farbfilter eine der drei Grundfarben Rot,
Grün und Blau.

Die Anzahl der Bildelemente ist bei jedem LC-Display unveränderlich und wird bei der Konstruk-
tion festgelegt. Deshalb kann es auch nur eine einzige Auflösung optimal wiedergeben, nämlich
die, die exakt seiner Anzahl an physikalisch vorhandenen Bildelementen entspricht (native Auf-
lösung). Dies ist üblicherweise auch die maximale Auflösung, die das Display verarbeiten kann.
Alle kleineren Auflösungen werden von der Steuerelektronik entsprechend angepasst. Bei preis-
werten LCD-Monitoren leidet darunter oft die Bildqualität, beispielsweise während des Boot-
vorgangs eines angeschlossenen PCs, bei dem 640 x 480 Pixel dargestellt werden.

In Unternehmen und auch im privaten Bereich haben sich inzwischen sogenannte Wide-LCD-
Monitore durchgesetzt. Typische Auflösungen und Displaygrößen sind:

1680 × 1050 Pixel 19" oder 22"


1600 × 1200 Pixel 20" oder 21"
1920 × 1080 Pixel 21", 22", 23", 24" oder 27"
1920 × 1200 Pixel 22", 23", 24" oder 27"

Die Qualität von LCD-Monitoren hängt entscheidend vom Verfahren ab, mit dem die Pixel
angesteuert werden. Bei Passiv-Matrix-Displays werden alle Pixel gemeinsam über eine externe
Elektronik gesteuert. Diese Displays sind recht langsam und werden heute nur noch in einfachen
Geräten der Informationstechnik eingesetzt.

Aktiv-Matrix-Displays, auch als TFT-Displays (Thin Film Transistor) bezeichnet, steuern jedes Pixel
mit einem eigenen Transistor an. Die Transistoren sind im Display selbst integriert und erlauben
wesentlich schnellere Helligkeitswechsel (Reaktionszeiten bis zu 2 ms). Praktisch alle LCD-
Monitore für Computeranwendungen enthalten heute TFT-Displays.

© HERDT-Verlag Schulversion 57
6 Ausgabegeräte

LED-Monitore
Sie gehören eigentlich auch zu den LCD-Monitoren. Im Unterschied zu diesen übernehmen
bei LED-Monitoren aber LEDs (Leuchtdioden) die Hintergrundbeleuchtung des Flüssigkristall-
bildschirms. Derartige Geräte sind zwar etwas teurer, haben aber ein besseres Bild als her-
kömmliche LCD-Monitore, halten länger und verbrauchen weniger Energie.

Vergleich CRT- und LCD-Monitore


Monitortyp Vorteile Nachteile
CRT-  Farbechte Darstellung von Bildern  Größe und Gewicht sind erheblich
Monitor  Farbe, Helligkeit und Kontrast sind  Erzeugt elektromagnetische Felder
unabhängig vom Betrachtungs- und Röntgenstrahlung
winkel  Unter 72 Hz Bildwiederholfrequenz
 Auflösung ist in bestimmten wahrnehmbares Flimmern
Grenzen ohne deutliche Qualitäts-
einbuße einstellbar
LCD-  Deutlich flacher und leichter als  Helligkeit, Kontrast und Farbe sind
Monitor CRT-Monitore vom Betrachtungswinkel abhängig
 Keine nennenswerte Störstrahlung  Bewegungsunschärfe (Schlieren)
 Physikalische Begrenzung der Pixel bei schnell wechselnden Bildern
liefert in der optimalen Auflösung (bei Reaktionszeiten über 12 ms)
ein sehr scharfes Bild
 Kein Flimmern, geringer Energie-
verbrauch

DVI-Anschluss
Obwohl so gut wie jeder TFT-Monitor mit einem VGA-
Anschluss ausgestattet ist, liegt es auf der Hand, dass eine
Konvertierung der digitalen Bilddaten von der Grafikkarte
in ein analoges Signal auf dem VGA-Anschluss und eine
DVI-Anschluss an einer Grafikkarte
Rückgewinnung der digitalen Daten zur Anzeige auf dem
TFT für die Bildqualität nicht von Vorteil sein kann.

Mit der Einführung von TFT-Displays wurde der „Digital Video Interface“ oder DVI-Anschluss nor-
miert, um digitale Anzeigen an Grafikkarten anschließen zu können, ohne einen Umweg über ein
analoges Videosignal zu machen.

58 Schulversion © HERDT-Verlag
Ausgabegeräte 6

Vor- und Nachteile eines TFT-Monitors mit VGA- oder DVI-Anschluss


Analog – VGA Digital – DVI
Vorteile  Kompatibel mit älteren  Kostengünstiger, da kein A/D-Wandler
Grafikkarten benötigt wird
 Kein Signalverlust, da keine D/A-A/D-
Wandlung erfolgt
 Keine Synchronisationsprobleme –
optimales Bild
Nachteile  Taktsignal muss korrekt im TFT  Grafikkarte benötigt DVI-Anschluss
synchronisiert werden, sonst  TFTs werden heute mit DVI-Anschluss
entsteht Pixel-Jitter* angeboten. Nicht alle Modelle haben
 Elektrische Störanfälligkeit der auch noch einen VGA-Anschluss.
Kabel
 A/D-Wandler im TFT steigert
die Kosten
 Ein analog angesteuerter TFT
kann nicht nachträglich auf
Digital-Ansteuerung aufgerüstet
werden.

*Sind Clock und Phase des TFTs nicht vollständig mit dem Analogsignal synchron, fangen einige Pixel an zu
wackeln.

Aktuelle Grafikkarten haben meist einen DVI-Anschluss. Bei vielen Grafikkarten sind zusätzlich
noch ein VGA- oder HDMI-Anschluss sowie DisplayPort-Anschlüsse vorhanden. Manchen
Grafikkarten liegt ein VGA-/DVI-Adapter bei oder er kann im Fachhandel nachgekauft werden. Es
gibt auch TFTs mit integriertem TV-Tuner, die nicht nur als Computermonitor, sondern auch zum
Fernsehen genutzt werden können.

6.4 Übung

Ausgabegeräte verstehen
Level Zeit 5 Minuten

Übungsinhalte  Monitore unterscheiden


 Wie Laserdrucker arbeiten
Übungsdatei Uebung06.pdf
Ergebnisdatei Uebung06-E.pdf

© HERDT-Verlag Schulversion 59
7 Software und Software Engineering

7
7. Software und Software Engineering

7.1 Datei und Dateiformate

Was ist eine Datei?


Die CPU in einem Rechner im laufenden Betrieb wird gemäß dem von Neumann'schen Prinzip
immer einen Befehl aus dem Speicher lesen, diesen interpretieren und gemäß diesem Befehl die
nötigen Daten in der erforderlichen Art verarbeiten. Anschließend wird die CPU den nächsten
Befehl lesen und ihre Arbeit fortsetzen.

In diesem einfachen Modell eines Computers ist aber noch keine Möglichkeit vorgesehen, große
Datenmengen gemäß ihrem Inhalt dauerhaft zu speichern, um diese später wiederverwenden
oder weiterverarbeiten zu können. Aus diesem Grund werden Informationsmengen zu Dateien
zusammengefasst.

Eine Datei …
 ist eine Zusammenfassung von Informationen, die logisch zusammenhängen,
 ist an einem bestimmten Ort gespeichert,
 besitzt einen Namen.

Informationen, die dauerhaft auf Datenträgern, wie typischerweise Festplatten, gespeichert


werden, sind in Dateien untergliedert.

Dateiformate
Die Art und Weise, wie Informationen innerhalb einer Datei gespeichert werden und wie diese zu
interpretieren sind, wird als Dateiformat bezeichnet. Um den Inhalt einer Datei wieder benutzen oder
weiterverarbeiten zu können, muss bekannt sein, auf welche Weise und in welcher Reihenfolge die
Informationen in der Datei abgelegt wurden.

Für unterschiedliche Inhalte und Einsatzzwecke gibt es zahlreiche Methoden zur Speicherung in
Dateien, die unter dem Oberbegriff Dateiformat zusammengefasst werden. Um also z. B. den
Inhalt eines einfachen Briefes in einer Datei abzulegen, wird ein auf Textspeicherung ausge-
richtetes Format verwendet, während bei der Speicherung des Bildes einer Digitalkamera ein
entsprechendes Grafikformat benutzt wird.

60 Schulversion © HERDT-Verlag
Software und Software Engineering 7

Dateinamenerweiterung
Vor allem mit dem Einsatz von Microsoft-Betriebssystemen hat es sich eingebürgert, einen
Hinweis auf das verwendete Dateiformat durch einen Zusatz am jeweiligen Namen der Datei
anzubringen. Dieser Hinweis wird Dateinamenerweiterung (bzw. Dateiendung oder Extension)
genannt und üblicherweise durch einen Punkt getrennt an den Dateinamen angehängt.

Ein Brief im Textformat, der mithilfe des ASCII-Codes gespeichert wurde, könnte also brief.txt
heißen, während die Bilddatei foto.bmp genannt wird, wenn diese im Bildformat Bitmap
gespeichert wurde.

Zum Inhalt von Texten, als reine ASCII-Textdatei gespeichert, müssen


allerdings noch zusätzliche Informationen gespeichert werden, die auf 
den ersten Blick nicht sichtbar sind: Zeilenumbrüche, Zeilenvorschübe,
Tabulatoren und sonstige Steuerzeichen.

Der Inhalt der entsprechenden Datei präsentiert sich auf der Festplatte
wie nebenstehend abgebildet. 

Wie Sie erkennen können, sind einige zusätzliche Zeichen im Text


sichtbar, die jedoch nur durch ein kleines Quadrat wiedergegeben
Inhalt der ASCII-Datei
wurden : Hierfür gibt es kein ausdruckbares Symbol.

Wenn Sie die Position der kleinen Quadrate mit obigem Originaltext
vergleichen, werden Sie feststellen, dass sich die Steuerzeichen bei
jedem Zeilenumbruch finden.

Würden Sie versuchen, den Inhalt einer Datei so zu interpretieren, als


wäre es ein anderes Dateiformat, wäre das Resultat meist unsinnig.
Würde ein Bitmap-Bild als Textdatei interpretiert werden , so wäre
der dargestellte Text eine sinnlose Anhäufung von Buchstaben und
Sonderzeichen gemäß der ASCII-Tabelle.
Bitmap-Bild als Text
interpretiert
Gebräuchliche Dateiformate
Obwohl es im Prinzip eine kaum überschaubare Menge an unterschiedlichen Dateiformaten gibt,
werden Sie doch einigen häufiger begegnen als anderen. Die folgende Tabelle zeigt Endung,
Inhalt und Verwendung einiger wichtiger Dateiformate.

Endung Bedeutung Inhalt Verwendung


avi Audio Video Interleave Bild- und Tondaten (Containerformat) Videos
bmp Windows Bitmap Bilddaten (Rastergrafik bis True Color) Fotos
doc(x) Microsoft Word Document Texte, Grafiken, Fotos und weitere Dokumente
exe Executable Anweisungen für den Computer Programme
gif Graphics Interchange Bilddaten (Rastergrafik, max. 256 Grafiken*
Format Farben)
htm(l) Hypertext Markup Language Texte, Grafiken, Fotos und weitere Dokumente
jpg JPEG File Interchange Bilddaten (Rastergrafik bis True Color) Fotos*
Format

© HERDT-Verlag Schulversion 61
7 Software und Software Engineering

Endung Bedeutung Inhalt Verwendung


mp3 MPEG-1/2 Audio Layer III Tondaten Audio*
mp4 MPEG-4 Bild- und Tondaten (Containerformat) Videos
mpg Moving Picture Experts Bild- und Tondaten (Containerformat) Videos*
Group
pdf Portable Document Format Texte, Grafiken, Fotos und weitere Dokumente
rar Roshal Archive Beliebige Inhalte Archivierung/
Übertragung
txt Text ASCII-Text Textdokumente
wav Waveform Audio File Tondaten (Containerformat) Audio
Format
wma Windows Media Audio Tondaten Audio*
zip Zipper („Reißverschluss“) Beliebige Inhalte Archivierung/
Übertragung
*
Format zur Komprimierung (Verdichtung, Verkleinerung)

Suchen Sie im Internet nach dem Begriff „Dateinamenerweiterungen“, dann werden Sie zu einer
der umfangreichen Datenbanken gelangen, mit deren Hilfe Sie jede noch so unbekannte Datei-
endung einem Programm zuordnen können. Eine umfangreiche Liste finden Sie auch auf der Seite
https://de.wikipedia.org/wiki/Liste_von_Dateinamenserweiterungen.

So unterschiedlich die Einsatzzwecke der Datenverarbeitung sind, so unterschiedlich können die


Dateiformate sein, wenn sie die zu verarbeitenden Daten unter jeweils anderen Gesichtspunkten
betrachten und gemäß einem vorgegebenen Standard codiert speichern.

Damit Dateiinhalte auf verschiedenen Computern und sogar von verschiedenen Programmen
korrekt wiedererkannt werden, müssen die Dateiformate standardisiert werden. Dateien, die von
einem Programm erstellt wurden, können dann von einem beliebigen anderen korrekt gelesen
werden, wenn beide sich an den Standard gehalten haben.

7.2 Aktuelle Dateisysteme

Dateisystem als Inhaltsverzeichnis


Die Organisation von Informationen in Dateien reicht noch nicht, um Daten korrekt bearbeiten,
speichern und später wiederfinden zu können. Auch der Name der Datei alleine reicht nicht, um
die Informationen auf beispielsweise einer Festplatte wiederzufinden.

Eine Festplatte stellt grundsätzlich die Möglichkeit zur Verfügung, auf einzelnen Magnetscheiben
Daten zu lesen und zu schreiben. Diese Magnetscheiben sind in konzentrische Spuren unter-
gliedert, welche wiederum in Sektoren aufgeteilt sind. Die Daten werden sektorenweise gelesen
bzw. geschrieben. Eine typische Größe für einen Sektor sind 512 Bytes. Jeder Sektor besitzt
jeweils eine eigene Adresse.

62 Schulversion © HERDT-Verlag
Software und Software Engineering 7

Ist eine Datei größer als die Sektorgröße des Datenträgers, muss der Inhalt der Datei auf mehrere
Sektoren verteilt werden. In vielen Fällen werden die Dateien dann nicht in aufeinanderfolgende
Sektoren geschrieben, sondern in verschiedene freie Sektoren auf der Festplatte. Dieses Verhalten
wird als Fragmentierung bezeichnet. Je fragmentierter eine Datei ist, umso mehr muss sich der
Lesekopf der Festplatte bewegen, um die Datei komplett lesen zu können. Damit Dateien wieder
auf zusammenhängende Sektoren verteilt werden, sind in aktuellen Betriebssystemen
Defragmentierungsprogramme enthalten. Durch die hohe Geschwindigkeit von SSD und dem
Fehlen mechanischer Teile spielt die Fragmentierung bei diesen Platten keine Rolle. Deshalb sollte
die Defragmentierung bei SSD deaktiviert werden.

Der erste Zweck eines Dateisystems ist also, als eine Art Inhaltsverzeichnis zu dienen, das
Informationen darüber speichert, welche Datei in welchen Sektoren in welcher Reihenfolge
auf dem Datenträger zu finden ist.

Stellen Sie sich eine große Lagerhalle vor. Wenn Sie in diese einfach die angelieferte Ware von der
Rückwand an bis unter die Decke und bis zur Eingangstür stapeln (vgl. einen Umzugs-Lkw), werden
Sie bald nichts mehr wiederfinden bzw. viel Zeit brauchen, um an einen bestimmten Artikel zu
gelangen. Deshalb stellen Sie in der leeren Halle zuerst ein Regalsystem auf und beschriften dies.
Dann erst sortieren Sie die angelieferte Ware in dieses Regalsystem ein. Jetzt wissen Sie, wo
welcher Artikel zu finden ist, und haben jederzeit Zugang zu jedem Regal und damit zu jedem
Artikel.

Dateiattribute
In einem Dateisystem werden meist auch zusätzliche Informationen über eine Datei angelegt, die
üblicherweise als Attribute bezeichnet werden. Je nach verwendetem Dateisystem kann die Liste
der verfügbaren Attribute unterschiedlich sein.

 Erstellungsdatum
 Datum der letzten Nutzung
 Datum der letzten Änderung
 Datum der Löschung
 Größe
 Darf die Datei geändert oder gelöscht werden (Schreibschutz, nur les-, aber nicht änderbar =
read only)?
 Ist die Datei eine Systemdatei (system)?
 Soll die Datei in einem Inhaltsverzeichnis nicht angezeigt werden (versteckt, hidden)?
 Wurde die Datei seit dem letzten Backup geändert (archive)?
 Wem gehört die Datei?

Es gibt zahlreiche weitere Dateiattribute, je nach Leistungsfähigkeit oder Eignung für einen
bestimmten Einsatzzweck des Dateisystems. Unterstützt ein Dateisystem den „Besitz“ an einer
Datei (Dateiberechtigungen oder Datei-Zugriffsrechtesteuerung über eine Access Control List,
kurz ACL), so können z. B. die Rechte zum Lesen, Ändern und Löschen einer Datei an verschie-
dene Benutzer unterschiedlich erteilt werden. Das Windows-Dateisystem NTFS ist ein Beispiel
dafür. Dateisysteme ohne diese Eigenschaft erlauben grundsätzlich jedem Benutzer alle Aktionen
(beispielsweise das Dateisystem FAT32).

© HERDT-Verlag Schulversion 63
7 Software und Software Engineering

Ordner (Verzeichnisse)
Um bei vielen Dateien auf einem Datenträger die Dateien
sinnvoll ordnen zu können, wurde in Anlehnung an die
reale Welt ein Ordnersystem eingeführt. Anstatt also bei
der Anzeige des Inhaltsverzeichnisses Tausende von
Dateien auf einmal gelistet zu bekommen, wird das Datei-
system mit Ordnern (Verzeichnissen, Directories) struktu-
riert. Diese Ordner selbst können wiederum neue Unter-
ordner enthalten. Dateisysteme, die das Verschachteln von
Ordnern erlauben, werden als hierarchische Dateisysteme
bezeichnet. Fast alle Dateisysteme sind heute hierarchisch.

Wenn Sie in einem hierarchischen Dateisystem eine


bestimmte Datei suchen, müssen Sie zuerst in den richtigen
Ordner des Dateisystems wechseln, um die dort befind- Hierarchisches Dateisystem am Beispiel
von Windows
lichen Dateien auflisten zu können.

Der Ursprungspunkt des Dateisystems wird normalerweise als Stamm- oder Wurzelverzeichnis
(engl. „root“) bezeichnet.

Einige aktuelle Dateisysteme


Derzeit weit verbreitet sind:
 für Windows (seit XP bis Windows 10) das NTFS 3.1 (New Technology Filesystem)
 für Windows Server 2012/2012 R2, Windows Server 2016 und Windows Server 2019 das
Resilent File System (ReFS), kompatibel zu NTFS. Allerdings wird als Betriebssystem für den
Startdatenträger weiterhin nur FAT32 oder NTFS unterstützt.
 für Linux (seit Kernel 2.6) das ext4 (fourth extended Filesystem)
 Seit macOS 10.13 (High Sierra) hat Apple das neue Dateisystem APFS (Apple File System)
integriert. Das neue Dateisystem ersetzt das Dateisystem HFS+ in macOS.
 für Unix das ZFS

Aktuelle Dateisysteme sind normalerweise mit Journaling-Funktionen ausgestattet, akzeptieren


in der Regel Dateinamen bis 255 Zeichen, können Dateien und Datenträger bis zu 16 TB ver-
walten und verfügen über eine ausgeklügelte Rechteverwaltung. Beim Journaling werden alle
Änderungen am Dateisystem vor Ausführung zusätzlich in einem Journal, einem extra dafür
reservierten Speicherbereich auf dem Datenträger, aufgezeichnet. Bei Dateninkonsistenz, z. B.
infolge eines Stromausfalls, können mithilfe dieses Journals die ursprünglichen Daten wieder-
hergestellt, quasi repariert werden.

64 Schulversion © HERDT-Verlag
Software und Software Engineering 7

7.3 Programme

Was ist ein Programm (eine Anwendung)?


Ein Programm besteht aus einer Folge
von Befehlen, die in einer für den Com-
puter verständlichen Sprache (Pro-
grammiersprache) formuliert sind.

Es befindet sich in der Regel auf der


Festplatte und wird beim Aufruf von
dort in den Arbeitsspeicher gelesen und
dann schrittweise vom Steuerwerk
übernommen und ausgeführt.

Das Programm wird ab dann schritt-


weise abgearbeitet, bis es beendet ist,
und dann ggf. wieder aus dem Speicher
entfernt.

Programmdateien
Auch für Programmdateien gibt es unterschiedliche Dateiformate, die die Art und Weise
beeinflussen, wie Befehle und Daten in wiederverwertbarer Form gespeichert werden.

Die einfachste Bauart einer Programmdatei ist die, die eine 1:1-Kopie der Informationen aus dem
Arbeitsspeicher in Dateiform enthält. Da diese Programme im Prinzip Kernspeicherauszüge dar-
stellen, leitet sich ihr Name aus dem englischen „Core ImageF ab. In der DOS-Welt tragen diese
Programmdateien deswegen die Endung .com („Command“-Datei).

Für ausführbare Programmdateien, die keine direkte Speicherkopie darstellen, sondern bei
denen die Befehle und Daten nach verschiedenen Standards angeordnet sind, hat sich allgemein
die Endung .exe für „Executable“ eingebürgert. Damit beim Laden die möglichen Unterschiede
zwischen einzelnen EXE-Formaten berücksichtigt werden können, sind die hierzu nötigen Infor-
mationen innerhalb der Datei abgelegt. Ein Beispiel hierfür ist die Datei explorer.exe unter
Windows 7/8.1 oder Windows 10, die den Windows-Explorer beinhaltet.

7.4 Warum Software Engineering?

Definition Software Engineering (Softwaretechnik)


Die Tätigkeit, Arbeitsanweisungen für den Computer in geordneter Weise festzulegen, sodass
diese einen bestimmten Zweck erfüllen oder ein Problem lösen, wird als Programmieren
definiert. Der Begriff „Software Engineering“ geht noch einen Schritt weiter und erstreckt sich
nicht nur auf die reine Programmiertätigkeit.

© HERDT-Verlag Schulversion 65
7 Software und Software Engineering

Nach einer Definition des IEEE (Institute of Electrical and Electronic Engineering) ist Software
Engineering nicht das reine Erstellen eines Programms an sich, sondern der schöpferische Einsatz
wissenschaftlicher Methoden beim Entwerfen, Entwickeln und Testen eines Programms. Im
Gegensatz dazu steht das „einfache Hinschreiben“ eines Programms, das unter den Begriffen
Quick-&-Dirty-Programmierung oder Quick-&-Dirty-Hack bekannt ist.

Warum Software Engineering nötig ist


Solange die Aufgabe, die mit einem Programm #include <iostream.h>
zu lösen ist, nicht besonders komplex ist, es
sich nur um ein kurzes Programm handelt oder void main()
ein einziger Programmierer an einem Pro- {
gramm arbeitet, besteht keine zwingende cout << "Hallo Welt!";
Notwendigkeit, den großen Maßstab des }
Software Engineerings anzusetzen.
Ein C++-Programm, das „Hallo Welt!“ auf den
Ein Programm, das keine andere Aufgabe hat, Bildschirm schreibt
als einen Text auf dem Bildschirm auszugeben,
kann ohne große Überlegungen sofort
geschrieben werden.

Zunehmend problematisch wird allerdings die Entwicklung von Software, wenn komplexe
Probleme und vielfältige Aufgaben von einem mehrköpfigen Entwicklerteam unter Berück-
sichtigung von Ergonomierichtlinien und anderen Standards gelöst werden sollen und als End-
produkt ein möglichst fehlerfreies Produkt herauskommen soll.

Damit ein Softwareprojekt, das durchaus aus mehreren Millionen Zeilen Code bestehen kann,
nicht nur die Funktionen erfüllt, für die es geplant war, sondern auch in vernünftigem Umfang
gewartet oder sogar wiederverwendet werden kann, ist es nötig, hier einen wissenschaftlich
basierten, ingenieurmäßigen Ansatz zu wählen.

Als erstrebenswerte Ziele für Software sind hohe Ausprägungen gewünscht an:
 Funktionsumfang
 Bedienungs- und Benutzerkomfort
 Effizienz
 Zuverlässigkeit/Sicherheit
 Änderbarkeit
 Portabilität, d. h. leichte Übertragbarkeit auf andere Plattformen (z. B. andere Hardware,
Betriebssysteme)
 lange Einsatzdauer

Gleichzeitig sollen folgende Faktoren möglichst klein bleiben:


 Entwicklungskosten  Einsatzkosten
 Wartungskosten  Entwicklungsdauer

66 Schulversion © HERDT-Verlag
Software und Software Engineering 7

Ergänzende Lerninhalte: Phasen des Software Engineerings.pdf


Informationen zu den einzelnen Phasen des Software Engineerings und zu Modellen der
Softwareentwicklung erhalten Sie im oben angegebenen BuchPlus-Dokument.

7.5 Programme grafisch darstellen

Einen Programmablauf beschreiben


Obwohl die Möglichkeit besteht, die Arbeitsweise eines Pro-
gramms als reinen Text niederzuschreiben, sind die resultie-
renden Texte meist nicht präzise genug oder logisch zu schwer
zu erfassen, um als Vorlage für ein Programmierprojekt gut
geeignet zu sein.

Es existieren verschiedene grafische Methoden, Programm-


abläufe darzustellen, von denen die bekanntesten kurz
vorgestellt werden sollen.

 Programmablaufplan (PAP)
 Struktogramm (Nassi-Shneidermann)
 Strukturierte Analyse (SA)

Programmablaufplan

Programmablaufplan
Im Programmablaufplan (PAP) werden standardisierte Symbole (DIN 66001) benutzt, um ein
Programm zu beschreiben. Der PAP wird auch als Flussdiagramm bezeichnet. Er eignet sich zur
Darstellung kleinerer Programme, von Teilen von Programmen oder kurzen Unterprogrammen.
Er wird auch in Lehrbüchern gerne zur Beschreibung von Problemlösungen in Programmen (Algo-
rithmen) verwendet. Bei umfangreichen Programmen wird die Darstellung schnell unübersicht-
lich, besonders wenn sie sich über viele Seiten erstreckt.

Ausgehend von einem Startpunkt werden einzelne Aktionen aufgezeichnet. Die Reihenfolge der
Bearbeitung ergibt sich aus der Verknüpfung einzelner Aktionen durch entsprechende Pfeile.
Stellt eine Aktion eine Entscheidung dar, für die es mindestens zwei Ergebnisse gibt, so führt vom
entsprechenden grafischen Symbol (einer Raute) die entsprechende Anzahl an Pfeilen zu den un-
terschiedlichen alternativen Handlungsmöglichkeiten.

Einen Programmablaufplan zu lesen, ist relativ einfach, da Sie den Aktionen nur in Pfeilrichtung
folgen müssen. Das Entwerfen eines Programmablaufplans wird jedoch umso komplizierter, je
komplexer das Programm wird, da es sehr schwer wird, das gesamte Diagramm mit sämtlichen
Alternativen überschneidungsfrei zu zeichnen.

Jedoch lassen sich komplexe reale Probleme nur sehr schwer auf zweidimensionalem Papier
abbilden. Hier sollten Sie über eine Aufteilung des Gesamtproblems in kleinere Teilprobleme
(Modularisierung) nachdenken.

© HERDT-Verlag Schulversion 67
7 Software und Software Engineering

Struktogramme (Nassi-Shneidermann)
Eine andere Möglichkeit, Programmabläufe grafisch darzustellen, sind die Struktogramme, die
manchmal auch nach den Namen ihrer Entwickler Nassi-Shneidermann-Diagramme genannt
werden.

In einem Block werden hier die aus-


zuführenden Aktionen untereinander
geschrieben.

Eine Entscheidung zwischen zwei oder 
mehreren Alternativen wird in einem
Struktogramm als ein auf der Spitze
stehendes Dreieck dargestellt . Die
aus der Entscheidung resultierenden
Alternativen werden spaltenweise
unter dieses Dreieck eingeordnet.
Struktogramm

Sollen Aktionen wiederholt ausgeführt werden, so werden im Struktogramm die betroffenen


Aktionen von einem L-förmigen Block umschlossen . Ist eine Bedingung an die Wiederholung
geknüpft („wiederhole diese Aktion nur, solange folgende Bedingung zutrifft ...“), kann die
L-Struktur auch auf dem Kopf stehen, wenn die Bedingung schon vor dem Ausführen der
Aktionen überprüft werden soll.

Strukturierte Analyse
Die strukturierte Analyse (SA) ist eine Darstellungsmethode, die eher den Weg der Informationen
in einem System verfolgt als die Darstellung der einzelnen Arbeitsschritte. Mit SA kann zunächst
ein Gesamtprozess dargestellt werden, der anschließend schrittweise die Teilprozesse auf immer
detaillierterer Ebene betrachtet. Dies erleichtert u. a. die Modularisierung eines Projektes, da sich
üblicherweise die einzelnen Teilprozesse als Modularisierungsobjekte anbieten.

SA-Diagramm für einen Buchungsvorgang:


oberste Ebene eine Ebene tiefer

68 Schulversion © HERDT-Verlag
Software und Software Engineering 7

7.6 Programmiermethoden

Top down
Ein möglicher Ansatz, von der Idee für ein Softwareprojekt zum fertigen Produkt zu kommen,
besteht darin, zuerst den Gesamtrahmen für die Software zu erstellen und schrittweise die
einzelnen Komponenten hinzuzufügen, während man sich von oben nach unten durch die
Hierarchie des Projektes arbeitet.

SA-Diagramme eignen sich hier sehr gut, um die auf einzelnen Ebenen nötigen Arbeiten zu
identifizieren. So würde zuerst die oberste Ebene als Rahmen erstellt, und danach würden die
Funktionen der nächsttieferen Ebene in diesen Gesamtrahmen implementiert werden.

Bottom up
Die Bottom-up-Methode verfolgt genau den entgegengesetzten Weg. Hier wird zunächst bei der
tiefsten Ebene begonnen, indem sämtliche elementaren Funktionen geschrieben werden. Die
nächsthöheren Ebenen werden anschließend nach dem Bauklötzchen-Prinzip aus den Teil-
funktionen zusammengesetzt.

Prozedurale Programmierung
Eine weitere Möglichkeit, über die Art der Programmierung oder die Eigenschaft einer
Programmiersprache eine Aussage zu machen, ist die Frage, ob es sich um eine prozedurale
Sprache bzw. Planungsmethode handelt.

Wird eine Aufgabe in eine Reihe von Anweisungen und Entscheidungen zerlegt, stellt dies einen
prozeduralen Ansatz dar.

Modularisierung
Um auch große Projekte noch sinnvoll handhaben zu können, wird die Aufgabe in Teilprobleme
zerlegt, die dann jeweils einzeln leichter zu lösen sein sollten (Modularisierung). Die einzelnen
Module können dann zeitlich, räumlich oder personell unabhängig voneinander erstellt werden.
Es ist also möglich, dass mehrere Programmierteams die Arbeit eines großen Projektes unter sich
aufteilen, indem sie festlegen, welche Gruppe an welchen Modulen arbeitet.

Damit das Gesamtsystem, das sich aus den Modulen zusammensetzt, auch korrekt funktioniert, ist
es notwendig, dass ein korrekter Plan existiert (der z. B. mit einer der oben vorgestellten Methoden
entwickelt wurde) und sich alle an die Anforderungen der festgelegten Schnittstellen halten.

© HERDT-Verlag Schulversion 69
7 Software und Software Engineering

Objektorientierte Programmierung
Die heute übliche Methode, Software zu erstellen, ist der sogenannte objektorientierte Ansatz.
Durch den objektorientierten Ansatz soll ein besserer (d. h. weniger Fehler enthaltender) Code
geschrieben und die Wiederverwertbarkeit einzelner Module erhöht werden. Da die objekt-
orientierte Softwareentwicklung auf einem neuartigen Denkmodell beruht, gibt es hierzu auch
alternative Methoden, Spezifikationen schriftlich niederzulegen. Die vorherrschende Methode für
den Entwurf objektorientierter Software ist die Unified Modelling Language (UML).

Das HERDT-Buch Objektorientierter Softwareentwurf mit UML – Grundlagen stellt Ihnen UML und
die Anwendung von UML anschaulich vor.

7.7 Übung

Den Umgang mit Dateien verstehen


Level Zeit 15 Minuten

Übungsinhalte  Datei, Dateinamenerweiterung und Dateiattribute kennen


 Wissen, was Implementierung und objektorientierte Programmierung
bedeuten
Übungsdatei Uebung07.pdf
Ergebnisdatei Uebung07-E.pdf

70 Schulversion © HERDT-Verlag
Grundlagen der Programmierung 8

8
8. Grundlagen der Programmierung

8.1 Wie Computern Befehle erteilt werden


Computer sind Maschinen, die Berechnungen um ein Vielfaches schneller anstellen können als
ein Mensch. Damit ein Computer das macht, was von ihm erwartet wird, muss genau festgelegt
werden, welche Operationen in welcher Reihenfolge zu erledigen sind.

Die Operationen, die eine CPU ausführen kann, sind mathematischer oder logischer Natur; so
können Werte addiert, subtrahiert, multipliziert, negiert, verschoben, verneint oder verglichen
werden. Die menschliche Sprache, in der wir unsere Probleme aus der realen Welt beschreiben,
ist unvergleichlich komplexer und kann deswegen nicht direkt von einem Computer verarbeitet
werden.

Die Aufgabe eines Programmierers ist es, einen realen Sachverhalt oder eine Problemlösung so
in eine für den Computer verständliche Sprache zu übersetzen, dass damit das reale Problem
möglichst gut gelöst werden kann.

8.2 Überblick über Programmiersprachen

Maschinensprache
Zu den Pionierzeiten der Computerentwicklung war die bc. 12 06 b4 50 8c c3 cd
einzige Möglichkeit, ein Programm für einen Computer zu 21 b4 30 cd 21 3d 05 00
erstellen, dieses in binärem Maschinencode zu schreiben 74 15 ba 17 24 e8 5b fe
und bei Bedarf direkt in den Speicher des Computers ein- Maschinencode
zugeben. Aufgrund ihrer für Menschen extrem schwer (hexadezimal geschrieben)
verständlichen Form ist die Programmierung in Maschinen-
sprache nicht mehr gebräuchlich.

In einigen wenigen Spezialfällen (wenn z. B. der eigentliche Quellcode oder die ursprüngliche
Programmierumgebung nicht mehr verfügbar ist) kann es unter Umständen erforderlich sein,
direkt den Maschinencode zu bearbeiten.

© HERDT-Verlag Schulversion 71
8 Grundlagen der Programmierung

Im allgemeinen Sprachgebrauch wird mit dem Begriff „Maschinensprache“ meist die


Assemblerprogrammierung bezeichnet. Diese Gleichsetzung ist allerdings fachlich nicht
korrekt (vgl. nächsten Abschnitt).

Assembler
In Assembler gibt es als Erleichterung für den Programmierer sogenannte mnemonische Kürzel
(Mnemonics), die eine Gedächtnisstütze für die entsprechend möglichen CPU-Befehle sein sollen,
beispielsweise mov oder int.

Für jeweils einen CPU-Befehl existiert code segment


also ein Mnemonic in Assembler. Eine assume cs:code, ds:code
einzige Sprache namens Assembler org 0100h
start:
gibt es an sich nicht, da jede CPU-
mov ah,9
Familie durchaus über andere Befehle mov dx,offset msg
verfügen kann. Assembler-Programme int 21h
sind deswegen auch nicht ohne Weite- int 20h
res zwischen verschiedenen Platt- msg db 'Hello World!',13,10,'$'
formen portabel (d. h. übertragbar code ends
end start
und verwendbar), dafür aber sehr
platzsparend und sehr schnell in der Ausgabe von "Hello World!" in Assembler
Bearbeitung.

Programmierung in Assembler erfordert vom Programmierer extrem gute Kenntnisse in Aufbau


und Arbeitsweise des zu programmierenden Systems.

Aufgrund der mühseligen Programmierung ist Assembler nicht für komplexe Projekte zu empfehlen.
Für bestimmte zeitkritische Aufgaben (Echtzeit) bzw. wo es auf Geschwindigkeit ankommt
(Grafikkartentreiber) oder nur sehr wenig Speicherplatz zur Verfügung steht (eingebettete Systeme,
embedded systems), wird auch heute noch auf Assembler zurückgegriffen.

Für Assembler sowie für die im Folgenden vorgestellten Programmiersprachen wird jeweils ein
Beispielprogramm abgedruckt, das den Text "Hello World!" auf dem Bildschirm ausgibt.

Fortran
Ursprünglich als Formula Translation Program Hellow
konzipiert, also als Sprache zur Über- WRITE (UNIT=*, FMT=*) 'Hello World!'
setzung von Formeln vorwiegend für END
den technisch-wissenschaftlichen Ausgabe von "Hello World!" in Fortran
Bereich der Programmierung, wird diese
in den 60er-Jahren entwickelte Sprache
heute vorrangig für komplexe nume-
rische Simulationsberechnungen auf
entsprechenden Hochleistungsrechnern
eingesetzt, beispielsweise zur Simulation
von Autocrashs oder Klimamodellen.

72 Schulversion © HERDT-Verlag
Grundlagen der Programmierung 8

Cobol
Die Common Business Oriented IDENTIFICATION DIVISION.
Language, die ungefähr zum selben PROGRAM-ID. HELLOWORLD.
Zeitpunkt entstanden ist wie Fortran, ENVIRONMENT DIVISION.
DATA DIVISION.
zielte auf den Einsatz in der Daten-
PROCEDURE DIVISION.
verarbeitung von Firmen ab. Cobol- DISPLAY "Hello World!" UPON CONSOLE.
Programme werden heute kaum noch STOP RUN.
neu geschrieben. Zur Behebung der Ausgabe von "Hello World!" in Cobol
Jahr-2000-Fehler in noch existierenden
Softwareumgebungen in Firmen
wurden aber zur Jahrtausendwende
noch einmal händeringend Cobol-
Programmierer gesucht.

Cobol hat immer noch einen historisch gewachsenen Verbreitungsgrad (z. B. in Behörden), da es
nicht so einfach und teilweise sehr kostspielig ist, adäquaten Ersatz für die mit Cobol program-
mierten und noch im Einsatz befindlichen Applikationen zu finden. Teilweise sind diese Applika-
tionen nur mangelhaft dokumentiert. Zum anderen deckt auf dem Markt erhältliche aktuelle
Standardsoftware nur unzureichend oder gar nicht die Bedürfnisse des jeweiligen Kunden ab und
müsste deshalb angepasst werden.

Basic
Beginners All-purpose Symbolic Instruction Code PRINT "Hello World!"
wurde ebenfalls in den 60er-Jahren entwickelt und war Ausgabe von "Hello World!" in Basic
für die Ausbildung von Programmierern gedacht. BASIC
wurde aber auch in den 80er-Jahren auf vielen Heim-
computern standardmäßig mitgeliefert, sodass sich die
Sprache seit dieser Zeit relativ weit verbreitet hat.

Aktuelle Vertreter sind Visual Basic Classic und Visual Basic .NET sowie die abgeleiteten Skript-
sprachen Visual Basic Script und Visual Basic for Applications (alle von Microsoft).

Pascal
Pascal wurde Ende der 70er-Jahre als Sprache für den program HelloWorld;
Unterricht entwickelt und ist an Hochschulen immer noch begin
beliebt wegen der strengen Formvorschriften, die ein writeln('Hello World!');
end.
Pascal-Programmierer zu beachten hat. Pascal-Program-
miercode lässt sich durch die klaren Sprachenvorgaben Ausgabe von "Hello World!" in Pascal
einfacher kontrollieren oder warten, als dies in anderen
Programmiersprachen der Fall ist. Pascal wird gerade
wegen seiner strengen Programmiervorschriften heut-
zutage nicht nur in der Ausbildung, sondern auch in
sicherheitskritischen Bereichen eingesetzt (z. B. in der
Energieversorgung).

© HERDT-Verlag Schulversion 73
8 Grundlagen der Programmierung

C / C++ / C#
Die Sprache C ist eine Weiterentwicklung von BCPL #include <iostream.h>
(Basic Computer Programming Language). Da sie zu- using namespace std;
nächst für die Entwicklung des Betriebssystems UNIX
entworfen wurde, sind C und UNIX immer eng mit- int main()
einander verwoben. {
cout << "Hello World!"
C ist eine hardwarenahe Sprache und deswegen schnell << endl;
– trotzdem ist sie sehr portabel. Ein Hauptparadigma return 0;
}
von C hat zu seiner sehr weiten Verbreitung geführt,
war aber auch Grund für viele Probleme: Ausgabe "Hello World!" in C++

„Don't prevent the programmer from doing what needs to be done.“ (Hindere den Program-
mierer nicht daran, das zu tun, was getan werden muss.)

Die Direktive, dem Programmierer möglichst viel Freiheit einzuräumen, steht in direktem Gegen-
satz zu Sprachen wie Pascal, die den Programmierer relativ stark einschränken. Eben diese
Freiheit in C, Programme auf eine Art schreiben zu können, die andere Sprachen nicht erlauben
würden, führt zu sehr effektiven und schnellen Lösungen. Wenn die Programmierer diese Freiheit
allerdings falsch verstehen und schlampig programmieren, kann sich diese Freiheit negativ in
Form von unstrukturierten und schwer nachvollziehbaren Befehlsabfolgen (sogenanntem
Spaghetticode) oder schwer zu findenden Fehlern niederschlagen.

C, C++ und C# zusammengerechnet ergeben aktuell den größten Anteil an eingesetzten


Programmiersprachen, dicht gefolgt von Java.

Java
Von der Firma Sun (inzwischen Oracle) ursprünglich als Programmiersprache „Oak“ für interaktive
Fernsehgeräte und andere Konsumelektronik entwickelt, konnte die Firma keinen Interessenten für
diese Sprache finden. 1994 änderte Sun das Konzept angesichts des Internetbooms und legte Java
als hardwareunabhängige und vollständig objektorientierte Programmiersprache aus.

Der Java-Sourcecode lehnt sich in seinem Aufbau sehr stark an C++ an. Die Sprache verbietet je-
doch die für viele Programmierfehler verantwortlichen Zeigeroperationen und überwacht die
Speichernutzung eines Programms ständig.

Vor allem im Einsatz auf Websites public class HelloWorld


konnte sich Java einen großen {
Marktanteil verschaffen. Durch public static void main(String[] args)
die große Anzahl von standard- {
mäßig mitgelieferten fertigen Pro-
System.out.println("Hello World!");
grammteilen (Bibliotheken) ist die
}
Programmierung mit Java auch in
}
anderen Bereichen, z. B. der
Grafikprogrammierung oder der Ausgabe von "Hello World!" in Java
Arbeit mit Datenbanken, verbreitet.

74 Schulversion © HERDT-Verlag
Grundlagen der Programmierung 8

Prolog
Als Programmiersprache der sogenannten 5. Generation wurde Prolog als experimentelle
Sprache für das Gebiet der künstlichen Intelligenz entwickelt. Die Weiterentwicklung ISO-Prolog
basiert auf einem ISO-Standard, der 1995 veröffentlicht wurde. Wesentliches Merkmal dieser
Sprache ist nicht die Lösung eines Problems im Programm, sondern die Formulierung des
Problems mithilfe logischer Ausdrücke und Regeln. Deshalb wird Prolog heute vorrangig im
Bereich künstliche Intelligenz oder im Systemmanagement (z. B. IBM Tivoli) eingesetzt.

?- write('Hello World'), nl.


Ausgabe von "Hello World!" in Prolog

PHP
PHP (Abkürzung für: PHP Hypertext Preprocessor, früher auch Personal Home Page Tools) ist eine
Open-Source-Skriptsprache, die speziell für den Einsatz im Internet entwickelt wurde. Die Stärken
von PHP liegen einerseits in der recht leichten Erlernbarkeit, andererseits in der breiten Funk-
tionspalette. PHP setzt dort an, wo HTML, die Sprache in der Webseiten geschrieben sind, seine
Grenzen erreicht: HTML-Seiten sind starr, PHP setzt u. a. auf Dynamik und Interaktion. Mithilfe
von PHP können auf einer Webseite Interaktionen eingebaut, Datenbanken gesteuert oder die
Seite individuell an das Benutzerverhalten angepasst werden. PHP steuert durch Berechnungen
die Webseiten im Hintergrund. Content-Management-Systeme (CMS) wie TYPO3 oder Joomla!
basieren auf PHP.

echo "Hello World!";


Ausgabe von "Hello World!" in PHP

Perl
Bei Perl handelt es sich ebenfalls um eine Open- print "Hello World\n";
Source-Skriptsprache, die dem Programmierer viele
Ausgabe von "Hello World!" in Perl
Freiheiten bietet und ebenfalls häufig im Internet
eingesetzt wird, beispielsweise für Datenbank-
zugriffe. Des Weiteren findet man Perl in der Bio-
informatik, im E-Mail-Bereich oder in der Paket-
verwaltung von Linux-Distributionen.

Python
Analog zu Perl wird Python vorrangig als Skript- print "Hello World!";
sprache im Internet-Kontext eingesetzt.
Ausgabe von "Hello World!" in Python

© HERDT-Verlag Schulversion 75
8 Grundlagen der Programmierung

Verbreitung von Programmiersprachen


Eine monatlich aktualisierte Übersicht über die Verbreitung von Programmiersprachen finden Sie
unter: https://www.tiobe.com/tiobe-index.

Programmiersprachen in Bezug auf Smartphones und Tablets


Durch die immer weitere Verbreitung von Smartphones nimmt die Programmierung von Apps für
diese Geräte ständig zu. Dies gilt analog auch für mobile Endgeräte mit Google Android (auf Linux
basierend) oder Windows Phone, beziehungsweise dessen Nachfolger Windows 10 for Mobile als
Betriebssystem. Mittlerweile hat Microsoft die Entwicklung von Windows 10 for Mobile eingestellt.
Teilweise werden die Geräte aber noch als Spezial-Hardware eingesetzt, zum Beispiel für Inven-
turen in Unternehmen oder der Industrie.

Unter dem Begriff „Smartphone“ ist ein Gerätetyp zu verstehen, der aus der Kreuzung von Handy
und Notebook entstanden ist. Apps sind Anwendungsprogramme für diesen Gerätetyp oder auch
für Tablet-PCs. Die Installation von Apps erfolgt nicht wie bei einem PC von DVD/CD, sondern meist
direkt über Portale im Internet, auch App-Stores genannt. Einige Apps sind kostenlos, andere
wiederum muss man käuflich erwerben. In vielen kostenlosen Apps sind erweiterte Funktionen
integriert, die sich käuflich erwerben lassen. Diese tragen die Bezeichnung „In-App-Käufe“. Die
bekanntesten App-Portale sind der App Store (Apple), der Windows Store (Microsoft) sowie
Google Play (Google).

8.3 Befehle

Anweisungen
Wie Sie anhand obiger Beispiele zur Ausgabe von "Hello World!" nachvollziehen können, unter-
scheidet sich der Programmcode zur Lösung einer Aufgabe in den einzelnen Programmier-
sprachen teilweise sehr stark.

Aufgrund der großen Verbreitung und Akzeptanz von C/C++ wurde diese Programmiersprache
für die folgenden Codebeispiele herangezogen.

Allen gemeinsam ist jedoch, dass Anweisungen an den cout << "Hello World!";
Computer gegeben werden, die eine bestimmte Ver-
arbeitung anstoßen.

Während obige Programmzeile in C++ die Anweisung enthält, den in Anführungszeichen stehen-
den Text auf dem Bildschirm auszugeben, könnte durch eine längere Abfolge von Anweisungen
eine komplexere Aufgabe erledigt werden. Anweisungen werden normalerweise nacheinander
ausgeführt. In C++ muss das Ende einer Anweisung durch ein Semikolon ";" eindeutig gekenn-
zeichnet werden.

Sollen mehrere Anweisungen zusammengefasst werden, um {


als ein Anweisungsblock zu gelten, werden sie in C++ durch Anweisung1;
geschweifte Klammern { und } eingefasst. Aus Gründen der Anweisung2;
Lesbarkeit hat es sich bei der Programmierung eingebürgert, }
Anweisungen, die in einen Block gehören, einzurücken.

76 Schulversion © HERDT-Verlag
Grundlagen der Programmierung 8

Bedingungen
Viele Probleme können nicht über nacheinander ausgeführte Anweisungen gelöst werden.
Programmiersprachen müssen Möglichkeiten bieten, um zum Beispiel Situationen zu vergleichen
und abhängig davon verschiedene Wege einzuschlagen. Um Situationen zu vergleichen, können
sogenannte Bedingungen formuliert werden. Stellen Sie eine Bedingung auf, kann die Aussage
dieser Bedingung entweder wahr oder falsch sein. Je nach dem Wahrheitswert können Sie an-
schließend im Programm verschiedene Wege einschlagen.

Dieser Programmteil prüft, ob der Wert der Variablen i größer if (i>3)


als 3 ist, und führt, wenn dies zutrifft, Anweisung1 aus. {
Anschließend fährt das Programm mit Anweisung2 fort. Anweisung1;
Beachten Sie, dass Anweisung2 auch ausgeführt wird, wenn }
i kleiner oder gleich 3 ist. Anweisung2;

Wollten Sie zwischen alternativen Programmabläufen anhand if (i>3)


einer Bedingung auswählen, würden Sie dazu in C++ zusätzlich {
das Schlüsselwort else verwenden. Anweisung1;
}
Es wird geprüft, ob die Bedingung (i > 3) wahr ist. In diesem Fall else
wird Anweisung1 ausgeführt. Ist die Bedingung falsch (i ≤ 3), {
kommt Anweisung2 zur Ausführung. Anweisung2;
}
Für das Aufstellen von Bedingungen stehen sämtliche aus der
Mathematik bekannten logischen Verknüpfungen und Opera-
toren zur Verfügung.

Übliche Operatoren in Programmiersprachen


Operator in C++- Bedeutung
Schreibweise
+, -, *, / Addition, Subtraktion, Multiplikation, Division
>, < "größer als", "kleiner als"
>=, <= "größer gleich", "kleiner gleich"
==, != "ist gleich", "ist ungleich"
&&, || "und", "oder"

Durch das Verknüpfen von Aussagen und Operatoren in der richtigen Reihenfolge können Sie
auch komplexe Bedingungen im Programm wiedergeben.

Problem: „Wenn der Kunde über eine Monatskarte für den Nahverkehr verfügt und einen Gut-
schein für den Nahverkehr besitzt und der Reisetag auf seinen Geburtstag fällt, dann erhält er
eine Freifahrt, andernfalls muss der Fahrpreis berechnet werden.“

Dieses Problem kann, wenn es in ein Programm umgesetzt werden soll, als sogenannter Pseudo-
code geschrieben werden, der eine Hilfe für den Programmierer ist. Pseudocode orientiert sich
an Konstrukten von Programmiersprachen, enthält aber auch Elemente der normalen Sprache.

© HERDT-Verlag Schulversion 77
8 Grundlagen der Programmierung

Pseudocode
WENN ("Monatskarte" UND "Gutschein" UND "Reisetag ist Geburtstagstag")
{
"Freifahrt"
}
SONST
{
"Fahrpreis berechnen"
}

Mit C++-Operatoren würde if {monatskarte && gutschein &&


diese Bedingung so aussehen: reisetag==geburtstagstag}
freifahrt();
else
fahrpreis_berechnen();

Schleifen
Sollen bestimmte Anweisungen mehrmals hintereinander ausgeführt werden, wäre es möglich,
diese im Programm entsprechend oft untereinanderzuschreiben. Für eine Anweisung, die drei-
mal ausgeführt werden soll, wäre der Programmcode noch überschaubar. Aber schon eine
Anweisung, die zweihundertmal ausgeführt werden soll, würde zu einem Programmcode führen,
der nicht gut lesbar ist. Schleifen in Programmen erlauben die Wiederholung von Programm-
abschnitten. Damit die Anweisungen innerhalb einer Schleife nicht endlos abgearbeitet werden,
können Sie durch eine Bedingung festlegen, wann und wie lange die Schleife ausgeführt wird.

Diese sogenannte While-Schleife prüft, ob eine while ( Bedingung)


Bedingung gültig ist, und führt die entsprechenden {
Anweisungen aus, solange die Bedingung wahr ist. Anweisungen;
}
Pseudocode:
Solange ("Zahl kleiner 10")
{
"Erhöhe Zahl um 1";
"Gib Beispielsatz aus";
}

In C++ könnte diese Schleife folgendermaßen aussehen: while (zahl < 10)
{
erhoehe_zahl();
ausgabe();
}

78 Schulversion © HERDT-Verlag
Grundlagen der Programmierung 8

8.4 Variablen und Datentypen

Wozu Variablen gut sind


Wenn Sie nur Befehle und feste Werte in einem Programm bearbeiten können, sind Sie nicht
in der Lage, flexibel auf geänderte Bedingungen zu reagieren. Programmierung würde so auch
wenig Sinn machen, da bei immer gleichen Operationen auch immer dieselben Ergebnisse
produziert würden.

Die Daten, mit denen ein Programm letztendlich arbeitet, müssen also flexible Daten sein.
Möchten Sie beispielsweise in einem Zähler die Anzahl der bereits erfolgten Schleifendurchläufe
speichern, muss der Zähler nacheinander die Werte 1, 2, 3 etc. annehmen können.

Die Art der Information, die Sie in einer Variablen speichern wollen, kann ebenfalls variieren. Aus
diesem Grund können Variablen verschiedene Datentypen zugewiesen werden, beispielweise:
 Integer  Wahrheitswerte
 Fließkomma  Zeichen

Je nach verwendeter Programmiersprache unterscheiden sich die verfügbaren Typen möglicher-


weise. Andere Merkmale von Variablen sind:
 Lokal vs. global  Statisch  Konstant

Bevor Variablen das erste Mal verwendet werden, müssen bzw. sollten sie deklariert werden.
Dabei wird beispielsweise festgelegt, um welchen Typ von Variablen es sich handelt oder wie
der Name der Variablen lautet. Beispiel: int zaehler; weist der Variablen zaehler den
Typ int (Integer) zu. Erst danach kann der Variablen ein (Anfangs-)Wert zugewiesen werden.

Integer
Der Datentyp Integer ist für die Speicherung ganzzahliger Zahlenwerte zuständig. Je nachdem,
wie viele Bits für die Speicherung im Arbeitsspeicher verwendet werden, unterscheiden sich die
kleinst- und größtmöglich darstellbare Zahl. Die Unterscheidung der Bit-Breite einer Variablen
wird in den Programmiersprachen meist mit long und short angegeben, aber auch hier sind die
tatsächlich verwendeten Bit-Breiten von der Computerarchitektur und der Programmier-
umgebung abhängig. Auch die Unterscheidung zwischen Variablen mit (signed) und ohne
(unsigned) Vorzeichen ändert den Wertebereich.

16 Bit Integer signed: -32768 – +32767 unsigned: 0–65535


32 Bit Integer signed: -2.147.483.648 – +2.147.483.647 unsigned: 0–4.294.967.295

© HERDT-Verlag Schulversion 79
8 Grundlagen der Programmierung

Fließkomma
Eine Fließkomma- oder Gleitpunkt-Variable speichert im Prinzip die Ziffernfolge einer Dezimalzahl
und zusätzlich die Stelle, an welcher der Dezimalpunkt gesetzt werden muss.

 3.25 wird gespeichert als "325, Punkt nach 1. Stelle".


 127.6643 wird gespeichert als "1276643, Punkt nach 3. Stelle".
 0.0069 wird gespeichert als "69, Punkt 2 Stellen links von erster Ziffer".

Da auch bei Fließkomma-Variablen nur eine begrenzte Anzahl von Bits zur Speicherung der
Ziffernfolge zur Verfügung steht, ist die Darstellung von Brüchen im Computer nicht exakt.

Wahrheitswerte
Vor allem zur Speicherung der Ergebnisse von Bedingungen, die nur entweder wahr oder falsch
sein können, gibt es in vielen Programmiersprachen den Datentyp Boolean. Technisch gesehen
wird aber auch dieser Datentyp meist wie eine Integer-Variable gehandhabt, die nur die Werte
0 und 1 annehmen kann.

Zeichen
Zur Speicherung von Zeichen des Alphabets gibt es den Datentyp char, abgeleitet von Character.
Hier werden darstellbare Zeichen und Steuerzeichen als Zahlenwerte abgelegt. In den meisten
Fällen ist eine char-Variable 8 Bit breit und somit in der Lage, bis zu 256 verschiedene Werte/
Zeichen zu speichern.

Die Interpretation der Werte erfolgt in westlichen Ländern üblicherweise anhand der soge-
nannten ASCII-Tabelle (American Standard Code for Information Interchange). Im asiatischen
Sprachraum, in dem 256 Zeichen nicht ausreichen, um sämtliche Zeichen darzustellen, werden
üblicherweise 16 Bit verwendet, was 65.536 verschiedene Zeichen und deren Interpretation nach
z. B. der Unicode-Tabelle erlaubt.

Lokale/globale Variablen
Wenn Sie Variablen in einem Programm innerhalb eines Unterprogramms als Hilfsvariablen defi-
nieren und nicht möchten, dass die Inhalte dieser Variablen außerhalb dieses Unterprogramms
im selben Programm mitbenutzt oder gar geändert werden, spricht man von lokalen Variablen.

Im Gegensatz dazu stehen Variablen, die von jeder Stelle im Programm aus verwendbar sind.
Diese Variablen werden globale Variablen genannt.

Statische Variablen
Statische Variablen sind spezielle lokale Variablen, die in einer festen Speicheradresse abgelegt
werden. Dadurch kann der alte Wert einer statischen Variablen bei einem erneuten Aufruf durch
die Funktion, die diese Variable benutzt, wieder verwendet werden (quasi eine Art Kurzzeit-
gedächtnis).

80 Schulversion © HERDT-Verlag
Grundlagen der Programmierung 8

Konstante Variablen
Viele Programmiersprachen erlauben Variablen als Konstanten zu vereinbaren. Konstanten
erhalten einmalig einen Wert. Dieser Wert darf nicht geändert werden, er bleibt konstant.
Konstanten werden in Programmen z. B. für Angaben wie Mehrwertsteuer benutzt. Der Vorteil
besteht darin, dass bei einer Änderung der Mehrwertsteuer nur an einer Stelle im Programm eine
Änderung notwendig ist. Der Wert der Konstanten wird neu zugewiesen. Im restlichen Programm
wird auf diesen Wert über den Namen der Konstanten zugegriffen. Der Name der Konstanten
wurde nicht geändert.

Strukturen
Manchmal ist es sinnvoll, Variablen zu einer logischen Gruppe zusammenzuschließen, weil sie
Werte darstellen, die logisch ebenfalls zusammengehören. Eine derartig zusammengesetzte
Variable wird Struktur (struct oder auch type) genannt.

Um zum Beispiel beim Arbeiten mit Vektoren nicht immer mit struct vektor
zwei getrennten Variablen x und y rechnen zu müssen, können {
diese als Struktur vektor zusammengefasst werden. Anschlie- int x;
ßend können neue Variablen des Typs vektor angelegt werden, int y;
die alle diese Eigenschaften haben, und es ist dennoch möglich, };
bequem auf die x- bzw. y-Koordinate zuzugreifen. vektor v1, v2;

Nebenstehender Auszug aus einem C++-Programm erstellt zuerst v1.x = 5; v1.y = 3;


die Struktur vektor und definiert anschließend zwei neue v2.x = 8; v2.y = 2;
"vektor"-Variablen v1 und v2. Zuletzt werden den einzelnen
Vektorkomponenten Zahlen zugewiesen.

Vektoren
Mehrere Variablen gleichen Typs können zu einem Vektor (Array) aus Variablen unter einem
Namen zusammengefasst werden. Die einzelnen Variablen können dann immer noch mit einem
Index benutzt werden.

int x[10]; //definiert einen Vektor aus 10 Integervariablen

Der Zugriff auf die 4. Variable aus dem Vektor x kann mit x[3] erfolgen. Beachten Sie, dass in
C und C++ die Indizes für einen Vektor der Größe x von 0 bis x-1 laufen, in diesem Beispiel also
0 bis 9. Andere Programmiersprachen (beispielsweise Pascal) lassen den Index, wie für Menschen
gewohnt, von 1 bis 10 laufen. Diese Eigenschaft ist die Ursache zahlreicher Programmierfehler.

Üblicherweise sind Sie als Programmierer nicht auf einen Vektor beschränkt. Sie könnten im
nächsten Schritt einen Vektor aus Vektoren definieren und hätten so eine zweidimensionale
Matrix aus Variablen definiert, die Sie über die Zeilen- und Spaltenadresse benutzen können.

int x[10][10]; // definiert eine Matrix mit 10 Zeilen und 10


Spalten

© HERDT-Verlag Schulversion 81
8 Grundlagen der Programmierung

8.5 Funktionen

Was eine Funktion ist


Damit der Programmierer nicht für dieselben Vorgänge immer wieder dieselben Ketten von An-
weisungen schreiben muss, können diese zu einem Block zusammengefasst werden, der Funktion
genannt wird. Jede Funktion hat einen Namen. Soll ein bestimmter Vorgang ausgeführt werden,
brauchen Sie anstatt einer Kette von Anweisungen als einzige Anweisung nur die Funktion mit
ihrem Namen aufzurufen.

Bevor auf eine Funktion zugegriffen werden kann, muss diese im Programm definiert werden,
damit der Computer weiß, welche Anweisungen beim Aufruf einer bestimmten Funktion aus-
zuführen sind.

Parameter
Um Funktionen flexibler zu machen, können beim Aufruf Parameter mitgegeben werden, die
z. B. zu berechnende Daten enthalten oder das Verhalten der Funktion genauer definieren.
Sollen zum Beispiel in einer Funktion zwei ganze Zahlen addiert werden, können diese beiden
Zahlen als Parameter übergeben werden.

Rückgabewert
Wenn Daten nicht nur an eine Funktion übergeben werden sollen, sondern Sie auch erwarten,
dass Sie Berechnungsergebnisse von der Funktion zurückerhalten, wird dies mit dem soge-
nannten Rückgabewert erledigt.

Schreiben Sie also eine Programmfunktion, die zwei int addieren(int a, int b)
gegebene Zahlen addieren soll, hat diese Funktion zwei {  
Parameter  und einen Rückgabewert . Der Rück- int c;
gabetyp  der Funktion muss mit dem Typ der zurück- c = a + b;
gegebenen Variablen  übereinstimmen. Im Haupt- return c;
programm können Sie anschließend die Funktion mit } 
den nötigen Parametern aufrufen und so weiter-
arbeiten, als stünde anstelle des Funktionsnamens im
Programm das Ergebnis.

8.6 Objektorientierung

Vorteile der objektorientierten Programmierung (OOP)


Die Untersuchung des Problems stützt sich bei der objektorientierten Programmierung auf die
Erkenntnisse und Erfahrungen der strukturierten Analyse. Die Verteilung der Teilaufgaben wird
über Klassen vorgenommen. Um die entscheidenden Ziele bei der Entwicklung großer Software-
systeme, wie z. B. Produktivitäts- und Qualitätssteigerung, zu realisieren, werden bei objekt-
orientierten Programmiersprachen die Wiederverwendbarkeit, Erweiterbarkeit und Kompatibili-
tät korrekt arbeitender Programmelemente in den Vordergrund gestellt. Die Produktivität der
Programme wird durch grafische Benutzeroberflächen und aufwendige Kommunikationsschnitt-
stellen erhöht.

82 Schulversion © HERDT-Verlag
Grundlagen der Programmierung 8

Wichtige Konzepte der objektorientierten Programmierung sind:


 Kapselung  Vererbung  Polymorphismus

Kapselung
Die Idee der objektorientierten Programmierung (OOP) und des objektorientierten Designs
(OOD) besteht darin, Anweisungen und Daten nicht mehr zu trennen, sondern in logische
Einheiten zusammenzufassen (Kapseln). Soll ein Objekt aus dem realen Leben im Programm
nachgebildet werden, werden die dazu nötigen Variablen und die zur Bearbeitung dieser
Variablen erforderlichen Funktionen als Klasse definiert.

Eine Klasse stellt somit den Bauplan für Objekte aus dieser Klasse dar. Nur Funktionen, die zu
dieser Klasse gehören, haben das Recht, die entsprechenden Klassenvariablen zu ändern. Dies
schließt also versehentliches Überschreiben durch andere Programmteile aus. Soll eine Klassen-
variable von außen beeinflusst werden, muss dazu eine passende Klassenfunktion (Member-
funktion/Methode/Komponentenfunktion) existieren, die von außen aufgerufen werden kann
und diese Änderung vornimmt.

Auf diese Weise kann eine Klassendefinition sehr leicht für andere Softwareprojekte wieder-
verwendet werden, wenn die Klasse in sich schlüssig ist. Die Funktionen der Klasse stellen somit
die Schnittstelle zur Außenwelt dar.

Vererbung
Anstatt eine Klasse für einen Spezialfall völlig neu zu entwickeln, kann die neue Klasse sämtliche
Eigenschaften, Variablen und Funktionen von einer Vaterklasse erben. Anschließend brauchen
nur noch die Unterschiede zur Vaterklasse programmiert werden.

Beispiel: Es existiert eine Klasse „Mensch“, welche die Variablen Namen und Geburtsdatum und
entsprechende Komponentenfunktionen enthält. Soll in einem Softwareprojekt nun eine Klasse
„Angestellter“ verwendet werden, kann die Klasse „Angestellter“ Eigenschaften von „Mensch“
erben. Es müssen dann nur noch die Variablen Personalnummer und Gehalt mit passenden
Funktionen definiert werden. Anschließend stehen in der neuen Klasse sämtliche Variablen und
Funktionen von „Mensch“ und „Angestellter“ zur Verfügung.

Polymorphismus
In der OOP ist es möglich, Operatoren oder die Wirkungsweise von Funktionen davon abhängig
zu machen, auf welche Objekte sie angewendet werden. So wird zum Beispiel der +-Operator
zwei Zahlen addieren, könnte aber bei der Definition einer Klasse für Vektoren so gestaltet
werden, dass zwei Vektoren mit dem +-Operator gemäß den Rechenregeln addiert werden
können.

© HERDT-Verlag Schulversion 83
8 Grundlagen der Programmierung

8.7 Eingabeaufforderung unter Windows


Für die Eingabeaufforderung unter Windows gibt es eine Art Programmiersprache, mit der Sie
Befehle automatisieren und abspeichern können. Zum Schreiben von Batchdateien benötigen
Sie lediglich den Windows-Editor. Die Eingabeaufforderung wird immer mehr durch die
PowerShell abgelöst. Microsoft stellt diese Shell seit Version 6 auch als Open Source zur
Verfügung und ermöglicht somit die Installation auf Linux-Rechnern und macOS.

Beim Speichern wählen Sie unter Dateityp die Option Alle Dateien aus und fügen beim Dateinamen
die Endung *.bat oder *.cmd hinzu.

Nachdem Sie die Batchdatei gespeichert haben, können Sie die Datei über die Eingabeaufforderung
ausführen. Starten Sie dazu die Eingabeaufforderung und wechseln Sie zum Verzeichnis, in dem
sich die Batchdatei befindet.

Die wichtigsten Befehle in Batchdateien sind folgende:

Befehl Beschreibung
ECHO <Meldung> Ausgabe einer Meldung am Bildschirm
FOR <Bedingung> Führt Befehle aus, solange die Bedingung zutrifft
IF <Bedingung> Führt einen Befehl nur dann aus, wenn die Bedingung zutrifft
GOTO <Sprungmarke> Sprungbefehl zu einer Sprungmarke
: <Sprungmarke> Sprungmarke, zu der mittels GOTO gesprungen werden kann
PAUSE Wartet, bis eine Taste gedrückt wird
CALL <Datei> Führt eine andere Batchdatei aus
REM <Kommentar> Kennzeichnet Kommentare, diese werden beim Ausführen nicht
berücksichtigt.

Weiterführende Informationen zu Batchdateien finden Sie auf den folgenden Internetseiten:


 http://www.axel-hahn.de/batch
 http://de.wikipedia.org/wiki/Stapelverarbeitung

8.8 Die Entwicklungsumgebung

Editor
Als Ausgangsbasis für alle Programmiersprachen dient Text, der gemäß den Konventionen der
jeweiligen Programmiersprache aufgebaut sein muss, der sogenannten Syntax. Der Text in einer
bestimmten Programmiersprache wird als Quell- oder Sourcecode bezeichnet, oft auch kurz Code
genannt. Im Prinzip ist jedes Programm zum Erstellen von Sourcecode geeignet, solange es in der
Lage ist, den eingegebenen Text als reinen ASCII-Code ohne Formatierung zu speichern.

84 Schulversion © HERDT-Verlag
Grundlagen der Programmierung 8

Die Palette geeigneter Software reicht also vom VI (UNIX-Editor) über das MS-DOS-Programm
Edit zu Windows-Software wie Notepad oder speziell für bestimmte Programmiersprachen
optimierte Editoren.

Angepasste, moderne Editoren verstehen meist die Syntax der verwendeten Programmier-
sprache und stellen die unterschiedlichen Elemente des Programmcodes in verschiedenen
Farben und Schriften dar (Syntax Highlighting), um den Text logisch besser zu untergliedern und
dem Programmierer die Fehlersuche so einfach wie möglich zu machen.

Beispiel für einen Editor


Name des Editors

Sourcecode

Java-Sourcecode im Editor TextPad (http://www.textpad.com/) unter Windows

Ergänzende Lerninhalte: Entwicklungsumgebung.pdf


Hier finden Sie Informationen zu Programmen, die zur Entwicklungsumgebung gehören,
beispielsweise Interpreter und Compiler.

8.9 Übung

Programmierung verstehen
Level Zeit 15 Minuten

Übungsinhalte  Programmiersprachen kennen


 Datentypen und Befehle kennen
 Wissen, was eine Funktion ist
Übungsdatei Uebung08.pdf
Ergebnisdatei Uebung08-E.pdf

© HERDT-Verlag Schulversion 85
9 Betriebssysteme

9
9. Betriebssysteme

9.1 Was ist ein Betriebssystem?

Definition
Das Betriebssystem ist ein Programm, das die Verbindung zwischen dem Benutzer, der Software
und der Hardware herstellt. Für die Arbeit mit einem Computer ist die Installation eines Betriebs-
systems unbedingt notwendig.

Benutzer ⇔ Software ⇔ Hardware

Allgemeine Aufgaben eines Betriebssystems


 Dialog mit dem Benutzer führen (Benutzeroberfläche)
 Speichermedien verwalten (Festplatten, BD/DVD/CD, USB-Sticks, Speicherkarten etc.)
 Programme laden, starten und unterbrechen
 Zuteilung von Prozessorzeit für die laufenden Programme
 Zuteilung von Arbeitsspeicherplatz für die laufenden Programme
 Ein- und Ausgabe koordinieren, Hardware verwalten
 Fehlerbehandlung
 Dienstleistungsprogramme (z. B. zum Verwalten von Dateien) zur Verfügung stellen

Um diese Aufgaben zu erfüllen, besteht ein Betriebssystem aus einer Vielzahl von Programmen:
 Systemprogramme zur Steuerung der Hardware und Anwendungen,
 Dienstleistungsprogramme (Utilities) zur Verwaltung von Dateien, um Einstellungen am
System vorzunehmen oder um die Festplatte aufzuräumen.

86 Schulversion © HERDT-Verlag
Betriebssysteme 9

Beispiele aus der Arbeit des Betriebssystems


Einschalten des Computers
Laden des Nach dem Einschalten des Computers erhält das Steuerwerk vom ROM den
Betriebssystems Befehl, das Betriebssystem auf der Festplatte (DVD/CD-R/W, USB-Stick etc.) zu
suchen, in den Arbeitsspeicher zu laden und zu starten. Dann übernimmt das
Betriebssystem die Steuerung des Computers.
Bereitstellen der Anhand der Liste der installierten Zusatzgeräte werden die entsprechenden
Zusatzgeräte Treiberprogramme (Software zur Steuerung eines Gerätes) geladen, damit
der Anwender auf diese Geräte zugreifen kann.
Bereitmeldung Das Betriebssystem meldet sich bereit und wartet auf Befehle des
und Oberfläche Anwenders, bei älteren Betriebssystemen mit einer kurzen Meldung, bei
den neuen grafischen Betriebssystemen mit seiner Benutzeroberfläche.
Dateneingabe
Starten einer Der Anwender gibt den Befehl zum Starten einer Anwendung (z. B. eines
Anwendung Textverarbeitungsprogramms). Das Betriebssystem sucht die Programm-
dateien auf der Festplatte und lädt sie zur Ausführung in den
Arbeitsspeicher.
Eingabe der Jede Eingabe über die Tastatur wird vom Betriebssystem an das Anwen-
Daten dungsprogramm weitergegeben und dort weiterverarbeitet.
Speichern und Drucken der Daten
Speichern der Der Anwender erteilt über das Anwendungsprogramm den Befehl zum
Daten Speichern und gibt den Namen und den Speicherort auf dem Datenträger an.
Das Betriebssystem speichert die Daten in einer Datei mit dem entsprechen-
den Namen.
Ausdruck auf Beim Ausdruck werden die Daten vom Anwenderprogramm an das Betriebs-
dem Drucker system weitergegeben. Das Betriebssystem speichert die Daten zwischen
und gibt sie im Hintergrund an den Drucker weiter.
Beenden der Arbeit
Beenden der Nach Eingabe des entsprechenden Befehls entfernt das Betriebssystem das
Anwendung laufende Programm aus dem Arbeitsspeicher und gibt den Speicherbereich
wieder frei.
Beenden des Nach Eingabe des entsprechenden Befehls überprüft das Betriebssystem, ob
Betriebssystems die geöffneten Anwendungen noch laufende Arbeiten durchführen. Wenn
nicht, werden alle Anwendungen aus dem Arbeitsspeicher geschlossen und
das Betriebssystem schaltet den Computer aus (bzw. meldete bei älteren
Betriebssystemen, dass der Anwender den Computer ausschalten kann).

© HERDT-Verlag Schulversion 87
9 Betriebssysteme

9.2 Kennzeichen eines Betriebssystems

Allgemeine Kennzeichen
In den letzten Jahrzehnten wurden viele Betriebssysteme für den Personal Computer entwickelt
bzw. weiterentwickelt. Bei der Entwicklung musste auf den jeweiligen Leistungsstand der
Hardware Rücksicht genommen werden.

Betriebssystem mit Je nachdem, welche Befehle die Zentraleinheit des Computers verarbeitet,
16, 32 oder 64 Bit kann das Betriebssystem Anweisungen von 16, 32 oder 64 Bit Breite nutzen
(wobei 64 Bit den aktuellen Standard darstellen). Ein 32-Bit-Betriebssystem
läuft zwar auch auf einem 64-Bit-Prozessor, kann jedoch nur 32 Bit breite
Befehle senden und bremst damit den Prozessor aus. Für 64-Bit-
Prozessoren von Intel und AMD stehen sowohl von Windows als auch von
Linux und UNIX 64-Bit-Versionen der Betriebssysteme zur Verfügung.
Grafische Aktuelle Betriebssysteme stellen dem Anwender eine übersichtliche
Benutzeroberfläche grafische Oberfläche zur Verfügung, auf der mit der Maus durch Anklicken
von Schaltflächen und Symbolen Befehle ausgelöst werden. Alternativ
kann bei einigen Modellen die Steuerung auch per Finger oder Stift direkt
auf dem Display erfolgen (vergleichbar einem Smartphone).
Sicherheitsaspekte Das Betriebssystem regelt den Zugang des Anwenders zum Rechner und
zu den gespeicherten Daten durch einen Benutzernamen und ein Pass-
wort. Außerdem stellt es Programme zur Verfügung, um Daten auf Daten-
trägern zu sichern.
Verwaltbarer Die maximale Festplattengröße, die durch das Betriebssystem verwaltet
Festplattenspeicher (angesprochen) werden kann, ist von verschiedenen Faktoren abhängig:
zum einen von der Hardware des Rechners und dem Betriebssystem
selbst, zum anderen vom verwendeten Dateisystem.
Verwaltbarer Diese Größe hängt von der Befehlsbreite ab, die das Betriebssystem un-
Arbeitsspeicher terstützt. Je kleiner die Befehlsbreite, umso geringer ist die Anzahl der
Adressen, die im Arbeitsspeicher angesprochen werden können.
Multitasking Mehrere Programme (Prozesse) können gleichzeitig laufen. Dazu teilt das
Betriebssystem den einzelnen Programmen Zeitscheiben zu, die nur
wenige Millisekunden dauern. Das Betriebssystem hat beim sogenannten
präemptiven Multitasking die Kontrolle darüber, in welcher Reihenfolge
die Programme abgearbeitet werden.
Da die zugeteilten Zeitscheiben nur wenige Millisekunden dauern, ent-
steht für den Anwender der Eindruck, die Programme würden gleichzeitig
laufen. Während Sie beispielsweise eine Tabelle bearbeiten, wird im
Hintergrund gleichzeitig ein langer Text ausgedruckt.
Multithreading Mit einem Programm können gleichzeitig mehrere Aktionen durchgeführt
werden. Während Sie einen Text formatieren, laufen im Hintergrund die
automatische Rechtschreibprüfung und die Silbentrennung.

88 Schulversion © HERDT-Verlag
Betriebssysteme 9

Multiprocessing Multiprocessing erlaubt es dem Betriebssystem, auf Rechnern mit meh-


reren Prozessoren die Anforderungen gleichmäßig auf die vorhandenen
Prozessoren zu verteilen. Dadurch können mehrere Anwendungen gleich-
zeitig mit entsprechend höherer Geschwindigkeit laufen und einzelne
Anwendungen, die mehrere Prozessoren verwenden können, profitieren
von einer deutlichen Leistungssteigerung.
Netzwerkfähigkeit Zeigt an, ob sich das Betriebssystem in ein Netzwerk integriert bzw. sich
ein Netzwerk mit dem Betriebssystem aufbauen lässt.
Plug & Play Das Betriebssystem erkennt beim Start und Betrieb des Computers
Veränderungen an der Hardware (z. B. das Anstecken eines USB-Sticks)
und versucht automatisch, die gefundenen Hardwarekomponenten zu
installieren. Idealerweise geschieht dies, ohne dass Benutzereingriffe
notwendig sind.

9.3 Die Betriebssysteme Windows NT 3.1/3.51/4.0,


2000, XP, Vista und Windows 7/8/8.1/10

Windows NT 3.1/3.51 und 4.0


Die Buchstaben NT im Namen stehen für „New Technology“. Die Firma Microsoft hatte schon
1993 parallel zu Windows 3.x ein 32-Bit-Betriebssystem für professionelle und geschwindig-
keitsorientierte Anwender herausgebracht. In der Anfangszeit konnte sich das Betriebssystem
nicht durchsetzen, da die Anforderungen an die Hardware (Prozessor und Arbeitsspeicher) und
die Anschaffungskosten zu hoch waren. Mit stark gefallenen Hardwarekosten und der neuen
Version 4.0 konnte sich das Betriebssystem NT im Firmenbereich seit Ende 1996 behaupten.
Windows NT 3.1/3.51 arbeitete mit einer Benutzeroberfläche, die identisch mit der von Windows
3.x war. Erst mit Windows NT 4.0 wurde eine moderne, von Windows 95 bekannte objekt-
orientierte Benutzeroberfläche eingeführt. Dieses in Verbindung mit der hohen Zuverlässigkeit
und Datensicherheit verhalf dem Betriebssystem vor allem in vielen Firmen zum Durchbruch.

Eigenschaften von Windows NT


Ein reines 32-Bit- Bei Windows 95 handelte es sich zwar auch um ein 32-Bit-Betriebssystem,
Betriebssystem diverse Teile des Betriebssystems waren aber aus Abwärtskompatibilitäts-
gründen noch für die 16-Bit-Technologie programmiert. Bei Windows NT
handelte es sich um ein reines 32-Bit-System.
Die vorhandenen Viele Anwendungen, die für MS-DOS, Windows 3.x oder Windows 95
Anwendungen programmiert wurden, liefen auch unter NT. Die einzige Einschränkung be-
traf einige Spezialprogramme (wie beispielsweise MS-DOS-Spiele oder Pro-
gramme, die direkt auf die Hardware zugreifen mussten).
Umgekehrt liefen diverse Programme, die speziell für NT entwickelt
wurden, in der Regel nicht unter Windows 95.

© HERDT-Verlag Schulversion 89
9 Betriebssysteme

Die Festplatten- NT arbeitete mit einem neuen Dateisystem mit dem Kürzel NTFS (New
verwaltung Technology File System). Damit wurde neben den theoretisch möglichen
255 Zeichen langen Dateinamen auch ein gegenüber Windows 95 erheblich
sichereres Dateisystem realisiert, das über Journaling-Funktionen verfügte.
Verbessertes Windows 95 realisierte bereits ein effektives Multitasking. Mit NT wurde
Multitasking das Multitasking noch weiter verbessert, was insbesondere bei alten
16-Bit-Programmen eine höhere Betriebssicherheit bot.
Professionelle Mit Windows NT Server ließen sich professionelle Netzwerke aufbauen.
Netzwerkfähigkeit
Sicherheits- Eines der wichtigsten Merkmale von NT war der Sicherheitsstandard C2
kriterien (siehe auch das Grünbuch – Deutsche IT-Sicherheitskriterien – des BSI).
Anhand von Anmeldenamen, verbunden mit Zugangspasswörtern, wurde
festgelegt, welcher Benutzer welche Aktionen mit dem Computer oder im
Netzwerk durchführen durfte.

Windows 2000
Mit Windows 2000 wurde ein Betriebssystem entwickelt, das als Nachfolger von Windows NT 4.0
hauptsächlich im professionellen Bereich eingesetzt wurde und vereinzelt heute noch verwendet
wird (obwohl der offizielle Support von Microsoft im Juli 2010 eingestellt wurde und damit
keinerlei neue Sicherheitsupdates mehr bereitgestellt werden).

Windows 2000 vereinigte die Sicherheitsstandards von Windows NT 4.0 mit der Benutzerfreund-
lichkeit von Windows 98. Es verfügte über eine fast gleiche Benutzeroberfläche und unterstützte
die Plug-&-Play-Funktion aus Windows 98. Außerdem wurde die Datensicherheit erhöht durch die
Möglichkeit, Daten zu verschlüsseln.

Windows XP
Das Betriebssystem Windows XP trat die Nachfolge sowohl von Windows Me als auch von
Windows 2000 an und vereint in sich die sichere Technologie von Windows 2000 mit der
Benutzerfreundlichkeit und leichten Bedienung von Windows Me. Windows XP beruht in seinem
Kern auf der Technologie von Windows 2000 und kombiniert diese mit einer neu gestalteten
objektorientierten Oberfläche (Luna) und umgestalteten Menüs.

Zum April 2014 ist der offizielle Support von Windows XP eingestellt worden. Microsoft ver-
öffentlicht somit keine Aktualisierungen und Sicherheitspatches mehr für Windows XP.

Windows XP gehört bis heute zu den erfolgreichsten Betriebssystemen, die Microsoft jemals auf
den Markt gebracht hat. Diese Aussage bezieht sich vorrangig auf die 32-Bit-Varianten, da die
64-Bit-Versionen keinen großen Verbreitungsgrad erlangen konnten.

Windows XP wurde in folgenden Versionen angeboten:


 Windows XP Starter Edition für den Privatanwender in finanziell schwachen Ländern bzw.
auf Nettops
 Windows XP Home Edition für den Privatanwender
 Windows XP Professional Edition als Client in Windows-Netzwerken für Firmenkunden
 Windows XP Media Center Edition mit zusätzlichen multimedialen Anwendungen

90 Schulversion © HERDT-Verlag
Betriebssysteme 9

 Windows XP Tablet PC Edition für Tablet-PCs


 Windows XP Embedded für industrielle Geräte (z. B. Medizin, Terminals oder
Telekommunikationstechnik)
 Windows XP Professional x64 Edition für 64-Bit-Intel-/AMD-Prozessoren
 Windows XP 64-Bit-Edition für Intel-Itanium-Prozessoren.
Der Internet Explorer 6 wurde in das Betriebssystem integriert, und eine Vielzahl weiterer
Programme unterstützte bei der Hardwareinstallation, dem Rückgängigmachen von Änderungen
am Computer sowie der Datensicherung und Datenverschlüsselung. Mit dem Service Pack 2
wurden eine Firewall sowie ein Popup-Blocker installiert, das letzte verfügbare Service Pack für
Windows XP war SP3.


Benutzeroberflächen von Windows NT 4.0 Workstation , 2000 Professional  und XP 

Windows Vista
Windows Vista sollte Windows XP ablösen. Es beruht auf Komponenten aus dem Server-
Betriebssystem Windows Server 2003 und wurde auf einer DVD als 32- und 64-Bit-Version
ausgeliefert.
Die Editionen von Windows Vista waren:
 Windows Vista Starter, ähnlich der Windows XP Starter Edition, s. o.
 Windows Vista Home Basic für den Privatanwender mit nicht so leistungsfähiger Hardware
ohne die Aero-Oberfläche
 Windows Vista Home Premium mit zusätzlichen multimedialen Anwendungen und der
Aero-Oberfläche

© HERDT-Verlag Schulversion 91
9 Betriebssysteme

 Windows Vista Business als Client in Windows-Netzwerken für Firmenkunden mit Aero-
Oberfläche
 Windows Vista Enterprise enthält zusätzliche Programmkomponenten zur Virtualisierung
und stellt eine leistungsstarke Umgebung zur Entwicklung von Programmen zur Verfügung.
 Windows Ultimate enthält alle Komponenten aus allen Vista-Editionen.

Windows 7
Windows 7 ist der Vorgänger von Windows 8 und hat Windows Vista und XP ersetzt. Windows 7
beruht auf Komponenten aus dem Betriebssystem Windows Vista und wird auf einer DVD als
32- und 64-Bit-Version ausgeliefert.

Die Editionen von Windows 7 waren:


 Windows 7 Starter für den Privatanwender mit nicht so leistungsfähiger Hardware
(z. B. Netbooks und Nettops) ohne die Aero-Oberfläche und Windows Media Center.
Diese Version wird nur als OEM-Version auf PCs vorinstalliert ausgeliefert.
 Windows 7 Home Premium mit zusätzlichen multimedialen Anwendungen (Windows Media
Center) und der Aero-Oberfläche sowie der Unterstützung von Multi-Touch-Funktionen (die
Bedienung des Rechners erfolgt per Finger über den berührungsempfindlichen Bildschirm)
 Windows 7 Professional als Client in Windows-Netzwerken für Firmenkunden: mit Aero-
Oberfläche, verschlüsseltem Dateisystem und Remote-Desktop-Zugang
 Windows 7 Enterprise enthält zusätzliche Programmkomponenten zur Virtualisierung und
stellt eine leistungsstarke Umgebung zur Entwicklung von Programmen zur Verfügung. Diese
Version ist nur als Volumenlizenz für Geschäftskunden erhältlich.
 Windows 7 Ultimate vereint alle Programme und Funktionen aus allen Windows-7-Versionen.

Windows 8 und Windows 8.1


Windows 8 und die Aktualisierung Windows 8.1 sind die Vorgänger von Windows 10 und traten
die Nachfolge von Windows 7, Vista und XP an. Parallel zu Windows 8.1 hat Microsoft auch die
Serverversion Windows Server 2012 R2 zur Verfügung gestellt sowie sein Smartphone-Betriebs-
system Windows Phone 8 und dessen Aktualisierung Windows Phone 8.1. Das Smartphone-
System wurde mittlerweile eingestellt und findet sich nur noch auf älteren Geräten.

Oberfläche von Windows 8.1

92 Schulversion © HERDT-Verlag
Betriebssysteme 9

Windows 10
Windows 10 ist ein Client-Betriebssystem für x86-Computer und stellt den Nachfolger von
Windows 8/8.1 dar. Die Version 9 hat Microsoft übersprungen. Es gab mit Windows 8 die spezielle
Version Windows RT als eine Variante für mobile Geräte mit ARM-Prozessor. Auf der RT-Version
laufen jedoch keine x86-Anwendungen.

Mit Windows 10 hat Microsoft Windows RT eingestellt. Als Server-Betriebssystem dienen Windows
Server 2012/2012 R2 und die neuen Versionen Windows Server 2016/2019. Alle Systeme auf allen
Plattformen basieren auf demselben Windows-Kern, unterscheiden sich jedoch in Funktionsumfang
und Einsatzzweck. Die Benutzer sollen ihre Aufgaben auf verschiedenen Geräten ortsunabhängig
erledigen können. Besonders wichtig ist, dass Mitarbeiter einer Firma auch unterwegs niemals den
Unternehmenskontext mit seinen detaillierten Sicherheitseinstellungen und Vorgaben verlassen.
Ein Smartphone oder Tablet soll genauso zu administrieren sein wie der herkömmliche
Arbeitsplatzrechner.

Editionen von Windows 10


Mögliche Windows-10-Editionen und ihre Unterscheidungsmerkmale:

Windows 10 Diese Edition ist für Privatbenutzer vorgesehen. Sie enthält keine Datei-
(Home) und Festplattenverschlüsselung und kann keine VHD-Images (Installation
von Windows 10 in einer einzelnen Datei, einer virtuellen Festplatte, VHD
genannt) booten. Auf Rechner mit dieser installierten Windows-10-Version
kann nicht per Remote Desktop (Computerzugriff per Netzwerk) zugegrif-
fen werden, sie können keiner Domäne (Zusammenfassung von Windows-
Computern mit Authentifizierung über zentralen Rechner, Domänen-
Controller genannt) beitreten und lassen sich nicht per Gruppenrichtlinien
verwalten. Windows-Updates werden automatisch installiert, Benutzer
können die Installation nicht beeinflussen.
Windows 10 Pro Professionelles Betriebssystem für Unternehmen. Was in der oben
genannten Version nicht geht, ist unter der Pro-Edition freigeschaltet.
Zusätzlich gibt es zur Desktop-Virtualisierung den Hyper-V-Client. Die
Installation von Windows-Updates lässt sich anpassen.
Windows 10 Für die Enterprise-Edition ist der Abschluss eines speziellen Vertrages zur
Enterprise Lizenzierung, Software Assurance Agreement genannt, zwingend
erforderlich. Damit richtet sich diese Version ganz klar an Unternehmen.
Aus diesem Grund sollen in diese Edition zusätzlich zu den Features der
Pro-Version Funktionalitäten für große IT-Strukturen implementiert
werden, was Management, Deployment, Sicherheit und Virtualisierung
betrifft. Der Enterprise-Edition vorbehalten bleiben Windows To Go,
DirectAccess, AppLocker und BranchCache sowie die Möglichkeit,
Windows-10-Apps unter Umgehung des Windows Stores zu installieren.
Auch hier lässt sich die Installation von Windows-Updates konfigurieren.
Windows 10 for Windows 10 for Mobile ist die Windows-Version für Smartphones und
Mobile kleine Tablets. Sie wird von den Providern vorinstalliert, aber von
Microsoft aktualisiert. Microsoft hat das Betriebssystem mittlerweile
eingestellt.

© HERDT-Verlag Schulversion 93
9 Betriebssysteme

Windows 10 (Home) unterstützt nur einen physischen Prozessor, während die Pro- und
die Enterprise-Edition zwei physische Prozessoren unterstützen. Alle 32-Bit-Versionen von
Windows 10 unterstützen bis zu 32 Prozessorkerne und alle 64-Bit-Versionen bis zu
256 Prozessorkerne.

Ergänzende Lerninhalte: MS-DOS Windows 3.x bis Me.pdf


Hier finden Sie Informationen zu den Betriebssystemen MS-DOS, Windows 3.x,
Windows 95, 98 und Me.

9.4 Das Betriebssystem macOS

Entwicklung von macOS


Apple Computer wurde 1976 von Steven P. Jobs und Stephen G. Wozniak in Kalifornien gegrün-
det. In einer Garage entwickelten sie die erste funktionstüchtige PC-Platine, den Apple I. 1977
firmierte Apple Computer bereits als Aktiengesellschaft und stellte im gleichen Jahr den Apple II
vor. Er akzeptierte einen Fernseher als Bildschirm und war der erste vollwertige Personal
Computer. 1983 stellte Apple Computer die Lisa vor, den ersten PC mit Mausführung. 1984 folgte
der erste Macintosh (kurz: Mac) mit einer grafischen Oberfläche, Tonausgabe und einem hoch
auflösenden Schwarz-Weiß-Bildschirm.

1994 stellte Apple Computer eine völlig neue Rechnergeneration vor, den PowerPC. In diesem
Rechner arbeitete nicht mehr der 68000-Prozessor, der schon beim ersten Macintosh zum Ein-
satz kam, sondern ein wesentlich leistungsfähigerer RISC-Prozessor. Trotz dieses großen Schrittes
blieben die neuen Rechner voll kompatibel zu den älteren Macintosh-Modellen.

Die ständige Weiterentwicklung sorgte dafür, dass macOS eines der robustesten und anerkann-
testen Systeme ist. Die Benutzeroberfläche wurde stets weiterentwickelt und die Stabilität und
die Geschwindigkeit wurden optimiert. Mac OS X (gesprochen „10“) Server, die erste Endkunden-
version einer Serverplattform für Publishing- und Internet-Lösungen, kam 1998 zur Auslieferung.
Mac OS X Server und das klassische Mac OS haben eine gemeinsame Grundlage: Mac OS X basiert
auf einer Teilmenge der Macintosh-Programmierschnittstellen (APIs), die Programmierer schon
seit Jahren zur Entwicklung von Macintosh-Anwendungen einsetzen. Auf diese Weise können
Entwickler mit geringem Aufwand ihre Applikationen anpassen, um die fortgeschrittenen
Leistungsmerkmale von Mac OS X zu nutzen.

Apple-Hardware wird immer mit Desktop-Publishing sowie Bild-/Audio-/Videobearbeitung in


Verbindung gebracht, weil entsprechende Software anfangs nur auf Apple-Rechnern unter der
grafischen Oberfläche von Mac OS lief. In vielen Werbeagenturen z. B. werden Sie Apple-
Rechnern begegnen. Apple steht ebenso schon lange für trendige Geräte wie z. B. den iMac oder
den Mac mini. Apple Hardware basiert seit Anfang 2006 auf Intel-Prozessortechnik.

Apple hat die Bezeichnung Mac OS X mittlerweile zu macOS geändert. Das Betriebssystem für
Apple-Smatphones (iPhone) trägt die Bezeichnung iOS, das Betriebssystem für Apple-Tablets
(iPad) trägt die Bezeichnung iPadOS.

94 Schulversion © HERDT-Verlag
Betriebssysteme 9

Eigenschaften von macOS


Als Besonderheit ist zu erwähnen, dass macOS bis auf das Einstiegsmodell voll multiprozessor-
fähig ist, ohne dass der Rechner dafür optimiert werden muss. Das Betriebssystem erkennt, ob
eine Aufteilung auf zwei Prozessoren sinnvoll und möglich ist, und handelt entsprechend.
macOS ist auch multitasking- und multiuserfähig.

macOS basiert auf UNIX und darf ausschließlich auf Apple-Hardware eingesetzt werden.

Mit dem Betriebssystem macOS lassen sich Apple-Rechner auch von ungeübten Benutzern einfach
und intuitiv bedienen. In macOS sind bereits viele Programme integriert, die für die tägliche Arbeit
benötigt werden. Fehlendes kann von der Apple-Website heruntergeladen werden. Auch im App-
Store von macOS stehen viele Anwendungen bereit. Im Vergleich zu Windows ist das verfügbare
Softwareangebot für Büro- und Heimanwendungen (z. B. Spiele) auf dem Markt allerdings weitaus
geringer. Einige Apple-Softwareprodukte gibt es auch für andere Plattformen, z. B. die Medien-
verwaltung iTunes, das Multimedia-Format QuickTime oder den Webbrowser Safari.

Trotz Umstieg auf Intel-Prozessortechnik sind Apple-Rechner im Vergleich zu technisch vergleich-


baren PCs oder Laptops immer noch etwas teurer. Vor dem Kauf zusätzlich anzuschließender
Hardware sollten Sie sich informieren, ob das gewünschte Gerät von macOS unterstützt wird.

9.5 Das Betriebssystem Linux

Entwicklung von Linux


Linux, dessen Entstehung in den 1990er Jahren vom finnischen Studenten Linus Torvalds initiiert
wurde, ist an UNIX angelehnt. Das „Betriebssystem Linux“ gibt es nicht. Es gibt einen Linux-
Kernel, den eigentlichen Betriebssystemkern. Dieser stellt z. B. grundlegende Funktionen für die
Verwaltung der Hardware bereit und ist die Schnittstelle zu Anwenderprogrammen. Um diesen
Linux-Kernel wird weitere Software gruppiert, beispielsweise die grafische Benutzeroberfläche
oder Anwendungsprogramme. Diese Gesamtheit bezeichnet man dann als Linux-Distribution.
Folgendes Bild soll das verdeutlichen: Kaufen Sie Windows 10, erhalten Sie entweder einen
Product Key, mit dem Sie das Betriebssystem bei Microsoft herunterladen können, oder einen
Karton mit DVD und Handbuch – und auf dem Karton steht immer Microsoft. Bei Linux dagegen
könnte auf dem Karton Ubuntu, openSUSE oder Novell, Fedora oder Red Hat, Debian, Mandriva,
Knoppix usw. stehen.

Der Linux-Kernel kann dabei vom jeweiligen Distributor genauso wie von versierten Nutzern
angepasst werden.

Im Laufe der Entwicklung haben sich viele verschiedene Linux-Distributionen herausgebildet, die
sich teilweise erheblich voneinander unterscheiden. Das betrifft weniger den eigentlichen Linux-
Kernel als vielmehr alles das, was darauf aufbaut – angefangen bei der grafischen Benutzerober-
fläche über installierte Software bis hin zur Paketverwaltung. Letztgenannte ist verantwortlich für
das Installieren/Deinstallieren von Software bzw. das Einspielen von Updates. Die große Vielfalt
an Linux-Distributionen und -Varianten hat der Verbreitung von Linux aber mit Sicherheit auch im
Weg gestanden. An diesem Punkt setzt übrigens Ubuntu an, indem für jeden Anwendungsfall
genau ein Programm von Ubuntu ausgewählt wurde und bei einer Ubuntu-Standardinstallation
automatisch installiert wird. Hat der jeweilige Benutzer aber ein anderes „Lieblingsprogramm“
für diesen Anwendungsfall, muss er es per Hand nachinstallieren.

© HERDT-Verlag Schulversion 95
9 Betriebssysteme

Es gibt auch kostenpflichtige Enterprise-Distributionen (z. B. von Novell oder Red Hat), die spe-
ziell angepasst sind bzw. einen umfangreichen Support beinhalten. Diese werden aber eher in
Unternehmen benötigt, wenn Linux auf Servern eingesetzt wird.

Linux läuft auch auf vielen Smartphones (Android; http://www.android.com), Routern (AVM;
http://www.avm.de) oder Multimedia-Endgeräten wie MP3-Playern.

Zwei typische Vertreter großer Linux-Distributionen sind openSUSE (Novell) und Ubuntu. Ubuntu ist
weniger umfangreich und richtet sich vor allem an Linux-Anfänger. Ebenfalls weit verbreitet ist
Kubuntu. Hierbei handelt es sich um eine Ubuntu-Distribution, die die grafische Desktopoberfläche
KDE verwendet:
 openSUSE (http://de.opensuse.org/Hauptseite)
 Ubuntu (http://www.ubuntu.com/)
 Kubuntu (http://www.kubuntu.org/getkubuntu)

Hinweise zu Ubuntu finden Sie auf den beiden folgenden Webseiten:


 http://wiki.ubuntuusers.de/Dualboot
 http://wiki.ubuntuusers.de/Ubuntu_Installation

Eigenschaften von Linux


Linux ist ein quelloffenes, frei verfügbares, unixtypisch stabiles und flexibles Multitasking- und
Multiuser-Betriebssystem. Linux wird als GNU General Public License (GPL) vertrieben. Das
bedeutet, dass nur der Vertrieb Geld kostet, die Lizenz des Betriebssystems bzw. der Software ist
kostenlos. Durch die GPL bietet Linux ein gutes Preis-Leistungs-Verhältnis. Ein einmal erworbenes
Softwarepaket kann auf beliebig vielen PCs installiert werden. Viele Programmierer auf der ganzen
Welt sorgen für eine ständige Weiterentwicklung des Betriebssystems und seiner Programme.

Für Linux kann bei vielen Distributionen zwischen KDE oder Gnome als grafischer Benutzer-
oberfläche gewählt werden. Diese beiden Oberflächen sind unterschiedlich gestaltet, enthalten
unterschiedliche Anwendungen und werden kontinuierlich weiterentwickelt. Sie lassen sich aber
ohne großen Aufwand so einstellen, dass sie den von Windows bekannten Startmenüs von der
Optik und Bedienbarkeit her ziemlich nahe kommen. Ubuntu hat mit Unity eine eigene Ober-
fläche entwickelt (standardmäßig gehörte Ubuntu bis dato zur Gnome-Fraktion), die ähnlich wie
bei Windows 10 in Richtung Smartphone geht. Daneben gibt es aber noch eine Vielzahl weiterer
Benutzerober-flächen für Linux, die mehr oder weniger leichtgewichtig und benutzerfreundlich
gestaltet sind (beispielsweise Xfce). „Leichtgewichtig“ bezieht sich auf den Ressourcenverbrauch
der Benutzeroberfläche bezüglich grafischer Effekte wie Transparenz oder Animationen, also
darauf, inwieweit die Grafikkarte gefordert ist.

Mit LibreOffice bzw. OpenOffice stehen Microsoft Office ebenbürtige komplette Office-Suiten zur
Verfügung. Diese können Sie sich kostenlos herunterladen und auch auf einem Windows-Rechner
installieren:
 OpenOffice: http://de.openoffice.org
 LibreOffice: http://de.libreoffice.org

96 Schulversion © HERDT-Verlag
Betriebssysteme 9

Linux wird sowohl auf Clients als auch auf Servern in jeder Größenordnung eingesetzt. Im Desk-
topbereich allerdings konnte sich Linux bis heute weder in Unternehmen noch in Privathaus-
halten gegen Windows durchsetzen. Im Serverbereich sind Linux-Server dagegen sehr weit
verbreitet (beispielsweise als Webserver mit Apache, Datenbank-Server mit MySQL oder File-
Server mit Samba). Informationen bezüglich Einsatz und Statistiken von Webservern und
Technologien finden Sie unter http://news.netcraft.com.

9.6 Das Betriebssystem UNIX

Entwicklung von UNIX


Als Ken Thompson 1969 bei Bell Laboratories die Entwicklung eines neuen Betriebssystems
begann, waren die meisten der vorhandenen Systeme ausgesprochene Batch-Systeme: Der
Programmierer gab seine Lochkarten oder Lochstreifen beim Operator ab, diese wurden in den
Rechner eingelesen und ein Rechenauftrag nach dem anderen wurde abgearbeitet. Nach einiger
Zeit konnte der Programmierer dann seine Ergebnisse abholen.

Ziel von Ken Thompsons Entwicklung war es deshalb, ein System zu schaffen, auf dem mehrere
Programmierer im Team und im Dialog mit dem Rechner arbeiten, Programme entwickeln,
korrigieren und dokumentieren konnten, ohne von einem Großrechner mit allen seinen
Einschränkungen abhängig zu sein. Dabei standen Funktionalität, strukturelle Einfachheit und
Transparenz sowie leichte Bedienbarkeit im Vordergrund der Entwicklung.

Eigenschaften von UNIX


UNIX ist ein netzwerkfähiges Multitasking- und Multiuser-Betriebssystem mit dem mehrere
Benutzer gleichzeitig mehrere Programme auf einem Rechner laufen lassen können. Ähnlich wie
bei Linux gibt es nicht „das UNIX“, vielmehr Derivate, die sich auf zwei Hauptstammlinien
reduzieren lassen. UNIX ist vor allem im Serverumfeld oder auf CAD-Workstations anzutreffen.
Kommerzielle Unix-Varianten sind AIX (IBM), HP-UX (HP) und vor allem Solaris (Oracle/Sun). Die
letzte Version von Solaris 11 finden Sie unter https://www.oracle.com/solaris/solaris11/
downloads/solaris-downloads.html. Neben Solaris erwähnenswert ist die Gruppe der freien BSD-
Derivate (Berkley Software Distribution, http://www.bsd.org), bekanntester Vertreter ist
FreeBSD.

Da UNIX von Anfang an für mehrere Benutzer konzipiert war, ist es notwendig, sich vor dem
Arbeiten am PC mit Benutzername und Passwort anzumelden. Durch diese eindeutige
Identifikation ist es möglich, für bestimmte Benutzer oder Benutzergruppen Zugriffsrechte
(Schreiben, Lesen oder Ausführen) für jede Datei festzulegen.

Bezüglich Benutzeroberfläche gilt für UNIX das für Linux Gesagte, wobei es in der Vergangenheit
auch herstellerspezifische Lösungen gab.

© HERDT-Verlag Schulversion 97
9 Betriebssysteme

 

Benutzeroberflächen von Solaris 10 , Solaris 11  und OpenIndiana , jeweils mit Gnome als Standard

9.7 FreeBSD
Entwicklung von FreeBSD
Mit dem OpenSource-Betriebssystem FreeBSD steht ein mächtiges und kostenloses System zur
Verfügung. FreeBSD baut auf BSD Unix der University of California, Berkeley auf und bietet seit
Jahren eine recht stabile Plattform. Es wird von einer sehr großen Entwicklergemeinde ständig
gepflegt und ist eines der größten OpenSource-Projekte.

Vorteile des Systems sind zum Beispiel die recht hohe Sicherheit, die Stabilität und eine effiziente
und schnelle Netzwerkanbindung. Das ist auch der Grund, warum viele Webserver auf FreeBSD
aufbauen und Anbieter wie Yahoo oder Strato auf das System setzen. In der Netcraft-Wertung der
zuverlässigsten Webhoster belegt FreeBSD drei der ersten fünf Plätze.

Einsatzgebiete von FreeBSD


Das Betriebssystem ist zwar für Server optimiert, lässt sich aber problemlos auch auf dem Desktop
installieren. Dazu stehen zum Beispiel Gnome und KDE zur Verfügung. Auf der Webseite der
Entwickler (http://www.freebsd.org/de) steht jeweils die aktuelle Version als ISO-Datei zur Verfü-
gung. FreeBSD gibt es als 32-Bit und 64-Bit. Auch ältere Editionen stehen hier zum Download bereit.

Viele große Unternehmen setzen intern auf FreeBSD, zum Beispiel Apple, Cisco oder Juniper. Die
Webauftritte von Yahoo, Experts Exchange und Apache laufen ebenfalls auf FreeBSD-Servern.

98 Schulversion © HERDT-Verlag
Betriebssysteme 9

Eigenschaften von FreeBSD


FreeBSD war eines der ersten Betriebssysteme, das IPv6 unterstützt hat. Mac OS X baut zu Teilen
ebenfalls auf FreeBSD auf. Bei FreeBSD handelt es sich nicht nur um einen Kernel. Die Entwickler-
gemeinde beaufsichtigt auch sämtliche Software, die sich im System integrieren lässt. Das sorgt
für eine hohe Stabilität und Leistung.

FreeBSD unterstützt Netzwerkprotokolle wie 802.1q, VLANs, PPP, L2TP. Technologien wie
10 Gigabit Ethernet, WLAN, ATM, ISDN, FDDI und UMTS sind mit FreeBSD problemlos möglich.
FreeBSD ermöglicht auch den Betrieb als Virtualisierungs-Host auf Basis von jails.

Durch die starke Spezialisierung auf Netzwerksicherheit und -geschwindigkeit verwenden viele
Switches und Router FreeBSD als Betriebssystem, auch Geräte von namhaften Herstellern wie
Cisco, Juniper oder NetApp. Das OS ist kompatibel zu x86-Systemen, amd64-Systemen, inklusive
Opteron, Athlon64 und EM64T, UltraSPARC-, IA-64, PC-98- sowie ARM-Architekturen. USB 2.0,
Bluetooth, PCMCIA, SCSI- und S-ATA-RAID-Controller werden ebenfalls unterstützt. Der Kernel
unterstützt Stateful IP-Firewalling, IP Proxy Gateways und verschiedene Verschlüsselungs-
technologien. Neben dem Betrieb als Webserver lässt sich in FreeBSD auch der E-Mail-Server
Sendmail betreiben. Die Installation erfolgt als Port oder als Paket.

9.8 Betriebssysteme im Einsatz


Heutige Betriebssysteme lassen sich meist einem der folgenden grundlegenden Zweige zuord-
nen: Windows, Linux oder UNIX. Die größte Verbreitung auf dem Markt für PC-Betriebssysteme
haben Produkte der Firma Microsoft. Linux und vor allem UNIX spielen im Desktop-Bereich eine
eher untergeordnete Rolle, sind aber im Serverbereich stark verbreitet.

9.9 Übung

Betriebssysteme verstehen
Level Zeit 5 Minuten

Übungsinhalte  32-Bit Anwendungen und 64-Bit-Betriebssysteme unterscheiden


 Windows-Versionen kennen
Übungsdatei Uebung09.pdf
Ergebnisdatei Uebung09-E.pdf

© HERDT-Verlag Schulversion 99
10 Software

10
10. Software

10.1 Aufteilung der existierenden Programmarten

Übersicht über die unterschiedlichen Programmarten

Einzelplatz Interpreter Verwaltungshilfen Textverarbeitung Individuell für


Mehrplatz Compiler (PC-Tools) Tabellenkalkulation bestimmte Berufs-
Netzwerk Programmierhilfen Datenbank gruppen erstellte
Präsentation Programme
Grafik- und (z. B. Buchhaltung
Bildbearbeitung für Ärzte)

Oft ist ein Computer mit mehr als nur einem Softwaretyp ausgestattet. Erst im Zusammenspiel
von Systemprogrammen und Anwendungssoftware wird ein PC in die Lage versetzt, Benutzer-
anforderungen zu verarbeiten.

Die Office-Pakete der großen Hersteller


In den letzten Jahren haben sich bei den Standardanwendungen (Text, Tabelle, Grafik und Daten-
bank) nach diversen Veränderungen einige Hersteller etabliert. Diese Hersteller verkaufen ihre
jeweiligen Einzelprogramme in einem Paket – Office-Paket oder auch Office-Suite genannt.

 Microsoft Office von Microsoft  WordPerfect Office von Corel


 iWork von Apple  SoftMaker Office von SoftMaker

Oftmals lohnt sich schon bei zwei benötigten Programmen der Kauf des Gesamtpaketes
gegenüber der Anschaffung der Einzelprogramme.

100 Schulversion © HERDT-Verlag


Software 10

Kostenlos sind die beiden freien Office-Suiten OpenOffice.org (http://de.openoffice.org) und


LibreOffice (http: //de.libreoffice.org) im Internet verfügbar. Mit einem annähernd vergleichbaren
Funktionsumfang ausgestattet sind sie schon seit längerer Zeit eine ernsthafte Konkurrenz für das
weitverbreitete Office-Paket von Microsoft.

Individualsoftware und Software für den Heimanwender


Neben den Standardprogrammen existieren auf dem Markt noch viele branchen- und firmen-
spezifische Programme. Dabei handelt es sich um Programme, die speziell für Problemstellungen
einer Firma bzw. einer gesamten Branche entwickelt wurden (z. B. Krankentransportwesen).

Um den Programmieraufwand möglichst gering zu halten, bieten besonders die neueren


Individualprogramme Schnittstellen zu Standardprogrammen.

Beispielsweise kann ein Krankentransportprogramm eine Schnittstelle für die Datenübergabe an


Access oder Excel enthalten, um die Auswertungen und Kalkulationen mit dem Standard-
programm durchzuführen.

Zur Individualsoftware zählen auch viele Programme für den Heimanwender. Auf dem Markt sind
viele preisgünstige Spezialprogramme erhältlich, die den Anwender bei der Erledigung
verschiedener Aufgaben unterstützen sollen:
 Steuererklärung, Haushaltsbuchführung, Immobilien- und Depotverwaltung
 Garten- und Wohnungsgestaltung
 Vorbereitung auf unterschiedlichste Prüfungen (Führerschein, Abitur usw.)
 Routenplanung usw.

10.2 Merkmale der Textverarbeitung

Die Möglichkeiten eines Textverarbeitungsprogramms


Texte werden am Bildschirm erfasst, geändert und aufbereitet. Nach Namensvergabe und Spei-
cherung auf USB-Stick oder Festplatte kann der Text beliebig oft geändert und gedruckt werden.

Neben diesen grundlegenden Funktionen bieten moderne Textprogramme noch weitere Mög-
lichkeiten, zum Beispiel …
 Zeichenhervorhebung (Zeichenformatierung)
 Seitengestaltung (Seitenformatierung)
 Kopf- und Fußzeilen
 Inhalts- und Stichwortverzeichnisse
 Fußnotenverwaltung für wissenschaftliche Texte
 Textbausteine für häufig wiederkehrende Textteile
 Absatzgestaltung (Absatzformatierung)
 Grafiken oder multimediale Inhalte einbinden
 Synonymwörterbuch (Alternativwörter)

© HERDT-Verlag Schulversion 101


10 Software

 Serienbriefe
 Automatische Silbentrennung und Rechtschreibprüfung
 Linien und Rahmen zeichnen
 Abspeichern als Webseite für das Internet, als PDF-Datei oder als E-Mail-Briefpapier

Bekannte Textverarbeitungsprogramme
 Word von Microsoft
 WordPerfect von Corel
 Writer von OpenOffice.org/LibreOffice

10.3 Tabellenkalkulation

Merkmale der Tabellenkalkulation


Das Haupteinsatzgebiet der Tabellenkalkulationsprogramme sind die Aufbereitung und Aus-
wertung von Zahlenmaterial in tabellarischer Form und die grafische Darstellung in Form von
Diagrammen.

In die Felder der Tabelle werden Zahlen und Texte eingetragen. Ergebnisse werden nicht manuell
berechnet, stattdessen werden Formeln in die Ergebnisfelder eingetragen, um festzulegen, wie
das Ergebnis berechnet werden soll.

Der Vorteil besteht darin, dass bei jeder Änderung in der Tabelle alle Formelfelder automatisch
neu berechnet werden.

Bekannte Tabellenkalkulationsprogramme
 Excel von Microsoft
 Calc von OpenOffice.org/LibreOffice
 Numbers von Apple

10.4 Datenbanken

Merkmale der Datenbankverwaltung


Das Hauptaufgabengebiet der Datenbankprogramme ist die Verwaltung von Daten, die früher auf
Karteikarten oder in Listen und Ordnern bearbeitet wurden. In der folgenden Liste finden Sie eine
Übersicht der wichtigsten Vorteile:
 Karteikarteninhalte eintragen, verändern und löschen
 Individuelle Ein- und Ausgabemasken gestalten

102 Schulversion © HERDT-Verlag


Software 10

 Listen sortieren und Berichte erstellen


 Selektion von Daten (z. B. Umsatz > 1000 €)
 Etikettendruck
 Serienbriefe
 Auswertungen, Statistiken
 Arbeiten lassen sich mit der Programmierung automatisieren
 Zugriff von verschiedenen Benutzern auf gemeinsame Daten

Bekannte Datenbanken
 Access von Microsoft  Base von OpenOffice.org/LibreOffice
 Microsoft SQL Server von Microsoft  Oracle Database/MySQL von Oracle
 MariaDB/MySQL  IBM DB2

10.5 Präsentationen und Grafiken


Präsentationsprogramme
Das Hauptanwendungsgebiet von Präsentationsprogrammen liegt in der Darstellung von Infor-
mationen für ein bestimmtes Publikum. Präsentationsprogramme ermöglichen die einfache und
schnelle Darstellung von Texten, Zahlen, Diagrammen und Organigrammen auf übersichtlichen
Folien. Die Folien können Sie entweder ausdrucken (farbig bzw. schwarz-weiß) oder auch direkt
mit dem Computer über einen sogenannten Beamer und einen Overhead-Projektor an die Wand
projizieren.

Ein großer Vorteil bei den neuen Präsentationsprogrammen liegt in den mitgelieferten Folien-
vorlagen. Damit lassen sich sehr schnell und einfach individuelle Folien erstellen.

Bekannte Präsentationsprogramme
 PowerPoint von Microsoft
 Impress von OpenOffice.org/LibreOffice
 Keynote von Apple
 Prezi

Pixelgrafik (Bildbearbeitung)
Pixelgrafiken, auch Bitmaps genannt, sind Bilder, die sich aus einzelnen Punkten (Pixel) zusam-
mensetzen. Beim „Malen“ werden hier den einzelnen Punkten Farben zugeordnet. Eine Linie ist
demzufolge eine Aneinanderreihung mehrerer Bildpunkte.

Eines der Hauptanwendungsgebiete der Pixelgrafik ist die Nachbearbeitung von Digitalfotos oder
eingescannten Vorlagen.

© HERDT-Verlag Schulversion 103


10 Software

Bekannte Bildbearbeitungsprogramme
 Photoshop/Photoshop Elements von Adobe  GIMP (Open Source)
 Paint Shop Pro/Photo Paint von Corel  Paint.NET (Open Source)

Buchstaben aus einem Logo als Pixelgrafik Blüte als Pixelgrafik

Vektorgrafik
Vektorgrafiken bestehen (im Unterschied zu Pixelgrafiken) aus einzelnen Objekten (Linien, Kurven,
Rechtecken, Kreisen usw.). Diese Objekte werden durch ihre Anfangs- und Endkoordinaten bzw.
durch die Koordinaten ihrer Knotenpunkte definiert. Hierdurch ist eine Nachbearbeitung der
einzelnen Objekteigenschaften (Größe, Position) möglich.

Besonders bei Vergrößerungen wird der Unterschied zwischen beiden Grafikkategorien deutlich.
Während die Linien einer Vektorgrafik unabhängig von der Vergrößerung stets gleichmäßig ver-
laufen, werden bei vergrößerten Pixelgrafiken die einzelnen Bildpunkte sichtbar (Treppeneffekt).

Bekannte Vektorgrafikprogramme
 Illustrator/Fireworks von Adobe  Draw von OpenOffice.org/LibreOffice (Open Source)
 CorelDRAW von Corel  lnkscape (Open Source)

Buchstaben aus einem Logo als Vektorgrafik Blüte als Vektorgrafik

10.6 Weitere typische Standardanwendungen

Browser
Der Browser ist ein Programm, das HTML-Dokumente und Grafiken darstellen kann. Der Browser
lädt die angeforderten Informationen und Bilder aus dem Internet und zeigt Internetseiten auf
dem Bildschirm an.

104 Schulversion © HERDT-Verlag


Software 10

Bekannte Internetbrowser
 Internet Explorer von Microsoft  Safari von Apple  Opera von Opera
 Microsoft Edge von Microsoft  Firefox von Mozilla  Chrome von Google
(Windows 10)

Desktop-Publishing (DTP)
DTP steht für Desktop-Publishing, das rechnergestützte Setzen von Publikationen. Mit diesen
Programmen lassen sich unter anderem Prospekte, Berichte und Bücher drucktechnisch aufbe-
reiten und am Laserdrucker bzw. Belichter (für den Offset-Druck) ausgeben. In Textverarbeitungs-
programmen finden sich zwar mittlerweile viele Funktionen aus dem Bereich DTP, wenn es sich
aber um die professionelle Gestaltung von farbigen Prospekten oder Büchern handelt, ist der
Einsatz eines DTP-Programms am sinnvollsten.

Beispiel für ein DTP-Programm (Microsoft Office Publisher unter Windows)

Bekannte DTP-Programme
 InDesign von Adobe  QuarkXPress von Quark  Publisher von Microsoft
 Corel Ventura von Corel  Scribus (Open Source)

Das DTP-Programm Publisher ist in Microsoft Office Standard und Professional standardmäßig
bereits enthalten.

© HERDT-Verlag Schulversion 105


10 Software

Mail-Systeme
Mit der Verbreitung der PC-Netzwerke und des Internets hat sich das Versenden von elektro-
nischer Post sowohl im privaten Bereich als auch in Betrieben und Unternehmen fest etabliert.
Mit diesen Mail-Systemen lassen sich Nachrichten und Dateien im lokalen Netzwerk oder über
das Internet verschicken. Voraussetzung dafür ist, dass alle Beteiligten an das Netzwerk bzw. das
Internet angeschlossen sind.

Bekannte Mail-Programme
 Outlook und Windows Mail  Thunderbird von Mozilla  Apple Mail

Terminplaner
Auch bei den Terminplanern bietet die elektronische Variante weit mehr Vorteile als die Variante
aus Papier. Insbesondere bei der Gruppenterminplanung bzw. dem Zugriff auf einen Termin-
kalender durch mehrere Personen (z. B. Abteilungsleiter, Sekretärin) bieten Terminplanungs-
programme effektive Möglichkeiten der Termin-, Ressourcen- und Besprechungsplanung.

Bekannte Terminplanungsprogramme
 Outlook von Microsoft  HCL Notes

Groupware (Workflow)
Bei Groupware-Programmen handelt es sich um Programme, die die Arbeit von Gruppen (z. B. Ab-
teilungen) unterstützen. Zum einen dienen sie zur transparenten Darstellung von Informationen für
alle Beteiligten, zum anderen sorgen sie für den Fluss von Daten bei Arbeitsabläufen, in die
mehrere Personen integriert sind.

Bekannte Groupware-Lösungen
Die bekanntesten Programme sind Microsoft Exchange und Microsoft SharePoint. Häufig wird
mittlerweile auf Lösungen in der Cloud gesetzt, zum Beispiel Microsoft Office 365.

Wissenschaftliche Programme
Wissenschaftliche Programme sind Programmsysteme, die zur wissenschaftlichen Auswertung
großer Datenmengen (Fragebogendaten oder Messwerte größerer Versuchsreihen) nach mathe-
matischen bzw. mathematisch-statistischen Methoden dienen. Hierzu gehören Programm-
systeme, die mathematische Formeln auswerten und grafische Darstellungen liefern sowie
Berechnungen aus den Bereichen der Elementarstatistik erstellen.

CAD – Computer Aided Design


Mithilfe dieser Programme lassen sich Konstruktionspläne für Häuser bzw. Maschinen erstellen
und überarbeiten. Die geplanten Produkte lassen sich schnell aus verschiedenen Perspektiven
betrachten. Weiterhin existieren zu den verschiedenen Fachgebieten Zusatzdateien und
Anwendungen. Sie können beispielsweise im Bereich Architektur die verschiedensten (liefer-
baren) Fenster oder Treppen über Tastendruck einblenden.

106 Schulversion © HERDT-Verlag


Software 10

CAM – Computer Aided Manufacturing


CAM bedeutet so viel wie „computerunterstütztes Fertigen“. Diese Programme werden oft in
Verbindung mit CAD-Programmen zur Steuerung von Maschinen anhand vorgefertigter Pläne
eingesetzt.

Komplettlösungen für Unternehmen


Für viele Unternehmen ist es wirtschaftlich sinnvoll, die gesamte Informationsverarbeitung von
der Komplettsoftware eines einzigen Herstellers bewerkstelligen zu lassen. Auf diese Weise
lassen sich unter anderem Kosten für Anschaffung und Wartung der Software, aber auch Fort-
bildungskosten für Mitarbeiter einsparen. Hersteller von Komplettsoftware für Unternehmen ist
unter anderem die Firma SAP.

SAP (Systeme, Anwendungen, Produkte in der Datenverarbeitung) wurde 1972 von ehemaligen
IBM-Mitarbeitern gegründet. SAP hat sich seitdem zu einem führenden Unternehmen in der Soft-
warebranche entwickelt und ist insbesondere durch die Komplettsoftware für Betriebe bekannt
geworden. Die Software SAP R/2 und ihr Nachfolger SAP R/3 sind in der Lage, alle Geschäfts-
vorgänge eines Betriebs in einem einzigen System zusammenzufassen.

10.7 Der Einsatz von Standardsoftware im Unternehmen

Einzelsoftware und Softwarepakete


Üblicherweise wird Anwendungssoftware für jeden Anwendungsbereich einzeln entwickelt und
vertrieben, die Anwender müssen sich die benötigte Software selbst zusammenstellen. Diese
Option bietet hohe Flexibilität bei der Anpassung der Software an die Anforderungen des
Anwenders.

Eine große Zahl von Anwendern benötigt jedoch gleichzeitig mehrere sehr ähnliche Funktionen.
Diesen Bedarf versuchen die Softwarepakete verschiedener Hersteller zu decken. Sie enthalten
zum Beispiel typische Anwendungssoftware für den Büroalltag:
 Textverarbeitung  Präsentation
 Tabellenkalkulation  Kommunikation
Softwarepakete bieten für den Anwender vor allem folgende Vorteile:
 Günstigerer Preis als die Summe der Einzelkomponenten
 Einheitliche Bedienoberfläche
 Nahtlose Zusammenarbeit zwischen den Komponenten
Diese Vorteile haben dazu geführt, dass sich einige Produkte zu weitverbreiteten Marktführern in
der Bürosoftware entwickelt haben, zum Beispiel Microsoft Office. Als Nachteile müssen aller-
dings oft Einschränkungen in der Sicherheit und Flexibilität der Software oder der Zusammen-
arbeit mit Produkten anderer Hersteller hingenommen werden.

Softwarepakete existieren auch für Heimanwender. Sie werden oft bereits als vorinstallierte
Software mit einem neuen PC vertrieben. Besondere Bedeutung haben Komplettlösungen aber
auch für Unternehmen.

© HERDT-Verlag Schulversion 107


10 Software

Vorteile und Nachteile von Standardsoftware


Vorteile der Standardsoftware Nachteile der Standardsoftware
Günstiger Preis durch Massenproduktion Monopolstellung des Softwareherstellers
Etablierung von Standards bei Standardisierter Funktionsumfang, der vom Anwender
Installation und Bedienung der Software nicht oder nur eingeschränkt eigenen Bedürfnissen
angepasst werden kann
Problemloser Datenaustausch durch Zwang zur Aktualisierung, wenn bei einem Versions-
einheitliches Datenformat, oft auch wechsel der Software das Dateiformat geändert
zwischen verschiedenen Hardware- wird. Nur dann ist der problemlose Datenaustausch
plattformen weiterhin gewährleistet.
Rasche Entdeckung und Sicherheitslücken und Fehler in der Software
Veröffentlichung von Mängeln betreffen sehr viele Anwender gleichzeitig.

Viele Anwender entscheiden sich aufgrund der Vorteile für eine Standardsoftware und nehmen
die Nachteile in Kauf. Namhafte Softwarehersteller bemühen sich außerdem, Sicherheitslücken
und Fehler bei Standardsoftware so schnell wie möglich zu beheben und so einen der Nachteile
zu entschärfen. Teilweise ist dieses Patchen (engl. patch = flicken) von System und Anwendungen
sogar automatisierbar, wie etwa bei Microsofts Windows Update. Auch die meisten neuen
Komplett-PCs werden üblicherweise mit einem Paket von Standardsoftware ausgestattet, aller-
dings teilweise mit einem beschränkten Funktionsumfang oder zeitlich begrenzt.

Individualsoftware einsetzen
Im Gegensatz zur Standardsoftware wird Individualsoftware nur in geringen Stückzahlen oder für
einzelne Kunden bzw. -gruppen produziert. Sie hat deshalb andere Eigenschaften als übliche
Standardsoftware:

Vorteile der Individualsoftware Nachteile der Individualsoftware


Genaue Anpassung an den Bedarf des Hoher Preis wegen der geringen Stückzahl an ver-
Anwenders kauften Endprodukten
Optimale Ausnutzung der Ressourcen Abhängigkeit von einer einzigen Hardware- und
von Hardware und Betriebssystem Betriebssystem-Plattform
möglich

Trotz der Nachteile ist es für manche Anwender und Unternehmen unumgänglich, einen Teil der
Informationsverarbeitung mit Individualsoftware zu bewerkstelligen.

Spezielle Aufgaben in der Datenverarbeitung, beispielsweise die Steuerung von wissenschaft-


lichen Analysegeräten oder Produktionsanlagen, sind nicht mit Standardsoftware durchführbar,
weil diese auf dem Markt gar nicht erhältlich ist.

Beachten Sie, dass die Grenze zwischen Standardsoftware und Individualsoftware nicht
klar abgesteckt werden kann. Viele Standardsoftware bietet inzwischen weitreichende
Anpassungsmöglichkeiten, während manche Individualsoftware aus einzelnen standardi-
sierten Funktionsbausteinen besteht, die zwar variabel kombiniert werden können, aber
keine wirkliche Optimierung auf den Bedarf des Anwenders zulassen.

108 Schulversion © HERDT-Verlag


Software 10

10.8 Softwarelizenzierung

Lizenzierungsmethoden für Software


Software darf, sofern sie vom Anwender nicht selbst entwickelt wurde, üblicherweise nur genutzt
werden, wenn dazu eine Lizenz vorliegt. Auf diese Weise wird die Wahrung der Urheberrechte
des Herstellers einer Software gesichert. Lizenzen zur Nutzung einer Software können dem
Anwender auf verschiedene Weise zur Verfügung gestellt werden, beispielsweise gegen Bezah-
lung einer kommerziellen Software oder kostenfrei bei Freeware. Innerhalb der Freeware gibt es
auch Software, deren Einsatz im privaten Umfeld kostenfrei erlaubt ist. Soll die gleiche Software
im Unternehmensumfeld eingesetzt werden, ist sie kostenpflichtig.

Die meisten Softwarehersteller beschränken die Lizenz ausschließlich auf die Nutzung ihrer
Software. Eine Änderung des Programmcodes (Quellcode) durch Dritte ist nicht gestattet. Der
Quellcode wird auch nicht veröffentlicht, sondern als Betriebsgeheimnis eingestuft. Nur im
Modell der General Public License (GPL), mit der zum Beispiel das Betriebssystem Linux und
zugehörige Anwendungssoftware vertrieben werden, steht dem Anwender der Quellcode unter
bestimmten Bedingungen zur Verfügung und kann modifiziert werden.

Die wichtigsten Lizenzierungsmethoden


Lizenzierung Software allgemein Preis Quellcode
zugänglich verfügbar
Freeware Ja Kostenfrei In der Regel nein
Shareware Ja Niedrig In der Regel nein
GNU-GPL Ja Kostenfrei bis niedrig Ja
Einzelplatzlizenz Nein, nur für Kunden Normal Nein
Volumenlizenz Nein, nur für Kunden Meist hoch, aber je Benutzer Nein
niedriger als Einzelplatzlizenz

System- und Anwendungssoftware, die in Unternehmen kommerziell eingesetzt wird, unterliegt


fast immer der kostenpflichtigen Lizenzierung, entweder für den einzelnen Anwender oder für
das gesamte Unternehmen.

Manche Softwarehersteller erteilen Nutzungslizenzen nur noch für einen bestimmten Zeitraum,
beispielsweise ein Jahr. Nach Ablauf dieser Frist verliert die Software entweder einen wesent-
lichen Teil ihrer Funktion, oder die weitere Nutzung verstößt gegen die Lizenzbedingungen. Als
Marketing-Argument für dieses Vorgehen wird angeführt, die Kunden hätten auf diese Weise
stets die aktuelle, beste und sicherste Programmversion im Einsatz.

Ähnlich verhalten sich beispielsweise Virenschutzprogramme. Lizenzierte Programmversionen


können nach einer Registrierung kostenlos über das Internet aktuelle Virendefinitionen vom
Hersteller beziehen. Nach Ablauf einer bestimmten Nutzungsdauer kann die weitere Aktuali-
sierung der Virendefinitionen nur noch als kostenpflichtige Dienstleistung abonniert werden.

© HERDT-Verlag Schulversion 109


10 Software

Softwarelizenzen im Unternehmen
Ein Unternehmen, das ein Netzwerk verschiedener Server- und Clientcomputer einsetzt, muss in
der Regel verschiedene Lizenzen besitzen:
 für das Betriebssystem jedes Servers,
 für die auf dem Server installierte Anwendungssoftware,
 Client-Zugriffslizenzen für jeden Computer, der mit dem Server verbunden werden soll,
 für das Betriebssystem jedes Client-Computers,
 für die Anwendungssoftware jedes Client-Computers.

Besonders in großen Unternehmen oder Behörden kann die Lizenzierung der eingesetzten Software
schnell unübersichtlich werden. Für weitere Informationen zum Thema Lizenz-Management sollten
Sie sich an Ihren jeweiligen Softwarelieferanten wenden, der Sie diesbezüglich beraten kann.

Lizenzverletzungen verhindern
Die Verwendung nicht lizenzierter Software ist grundsätzlich strafbar. Kann einem Anwender die
illegale Nutzung nachgewiesen werden, drohen ihm strafrechtliche und zivilrechtliche Ver-
folgung. Lesen Sie deshalb vor Verwendung einer Software sorgfältig die Lizenzbedingungen,
denen Sie bei der Installation meist zustimmen müssen.

Viele Hersteller sind inzwischen zu einer der Zwangsregistrierung vergleichbaren Aktivierung


ihrer Software übergegangen. Ohne einen Code zur Freischaltung, der dem Anwender erst bei
der Aktivierung einer legal installierten Software übergeben wird, kann sie nicht dauerhaft
verwendet werden. Dieses Verfahren wird zum Beispiel bei Produkten von Microsoft, Adobe,
Corel oder AutoDesk eingesetzt. Damit soll die Verwendung nicht lizenzierter Software unter-
bunden werden.

10.9 Software beurteilen

Kriterien zur Auswahl und Beurteilung von Software


Vor der Entscheidung zur Anschaffung einer Software sollten verschiedene Produkte miteinander
verglichen und hinsichtlich ihrer Qualität und vor allem ihres Nutzwertes beurteilt werden.
Fehlentscheidungen bei der Anschaffung von Software können erhebliche wirtschaftliche
Verluste nach sich ziehen, besonders wenn die Software in einem Unternehmen produktiv
eingesetzt werden soll.

Die Beurteilung der Software sollte u. a. folgende Aspekte umfassen:


 Leistungsfähigkeit
 Anforderungen an Hardware, weitere Software und Anwender
 TCO (Total Cost of Ownership, Gesamtkosten für ein Produkt während der Nutzungsdauer)
Testen Sie eine Software, bevor Sie sich für deren Anschaffung entscheiden. Viele Hersteller
bieten die Möglichkeit, kostenlose Evaluierungssoftware zu beziehen, die für einen bestimmten
Zeitraum zu Testzwecken eingesetzt werden kann. Oft erhalten Sie diese Software per Download
von der Website des betreffenden Herstellers oder können sie dort bestellen. Meist müssen Sie
sich vorher beim Hersteller registrieren.

110 Schulversion © HERDT-Verlag


Software 10

Leistungsfähigkeit beurteilen
Zur Leistungsfähigkeit einer Software tragen verschiedene Faktoren bei, die sich größtenteils
durch Beantwortung einiger Fragen überprüfen lassen:

Funktionalität  Bietet die Software alle benötigten Funktionen?


überprüfen  Ist sie bei Bedarf sinnvoll erweiterbar (modular)?
 Sind Sicherheitslücken bekannt und bereits behoben worden?
 Welche Moral zeigte der Hersteller bisher beim Bekanntwerden von
Sicherheitslücken oder Programmfehlern und beim anschließenden
Erstellen von Patches?
Kompatibilität  Ist die Software kompatibel mit anderen Produkten (Software, Hard-
überprüfen ware), die bereits im Unternehmen eingesetzt werden? Lassen sich bei-
spielsweise alle Daten problemlos mit anderen benötigten Programmen
austauschen?
Ergonomie  Ist die Bedienoberfläche übersichtlich und benutzerfreundlich gestaltet
überprüfen (Standard Application Architecture, SAA)?
 Wie steil verläuft die Einarbeitungskurve bei völlig neuer Software?
 Gibt es im Bedarfsfall Schulungsangebote zur Bedienung der Software
vom Hersteller, anderen Institutionen oder ist ein Fachmann/eine Fach-
frau innerhalb des Unternehmens verfügbar?
 Reagiert die Software schnell und korrekt auf Eingaben des Anwenders?
 Sind Arbeitsabläufe logisch gestaltet und liefern sie nachvollziehbare
Ergebnisse?
Marktakzep-  Welche Akzeptanz hat die Software auf dem Markt (Marktbedeutung,
tanz prüfen Verbreitung)?
 Welche Erfahrungen haben andere Anwender gemacht?

Anforderungen der Software beurteilen


Jede Software stellt Anforderungen an die Hardware, die Betriebssystemumgebung und die
bereits installierte Anwendungssoftware des Computers, auf dem sie eingesetzt werden soll.
Auch auf die Benutzer kommen zusätzliche Anforderungen zu, wenn eine neue Software
eingesetzt wird. Berücksichtigen Sie dabei folgende Aspekte:

Hardwareanforderungen  Für welche Hardwareplattform ist die Software konzipiert?


 Welche Anforderungen stellt sie an Prozessorleistung,
Festplattenkapazität, Arbeitsspeicher, Ein-/Ausgabegeräte und
Schnittstellen?
Softwareanforderungen  Welches Betriebssystem benötigt die Software mindestens?
 Welche zusätzliche Software ist möglicherweise notwendig,
etwa Treiber oder weitere Module eines Softwarepakets?
Benutzerkompetenz  Welche Fähigkeiten müssen Benutzer im Umgang mit der
Software haben oder zusätzlich erwerben?

© HERDT-Verlag Schulversion 111


10 Software

TCO ermitteln
Wenn eine Software aufgrund ihrer Leistungsfähigkeit und ihrer Anforderungen interessant
erscheint, muss abschließend festgestellt werden, ob ihr Einsatz auch unter ökonomischen
Gesichtspunkten sinnvoll ist. Diese Wirtschaftlichkeit einer Software darf keinesfalls nach dem
Anschaffungspreis alleine beurteilt werden. Oft erweisen sich Produkte mit einem geringeren
Anschaffungspreis insgesamt als deutlich teurer, weil viele Folgekosten (beispielsweise für
Mitarbeiterschulungen) bei der Anschaffung nicht berücksichtigt wurden:

Komponenten  Wie hoch ist der Anschaffungspreis?


der TCO  Wie ist der Produktzyklus bisher verlaufen? Müssen jedes Jahr neue
Lizenzen für neue Versionen gekauft werden?
 Welche Kosten entstehen durch Service und Support der Software?
 Welche Kosten entstehen durch Sicherheitsaufwendungen wie dem Ein-
spielen von Patches, dem Beheben von Problemen oder durch entstehen-
de Ausfallzeiten?
 Welche Kosten entstehen durch Neuanschaffung von Hardware und
weiterer Software aufgrund der Anforderungen der neuen Software?
 Ist möglicherweise eine Mitarbeiterschulung erforderlich?

10.10 Neue Tendenzen bei der Nutzung von Software


Neben der lokalen Installation und Nutzung von Software auf einem Arbeitsplatz- oder Privat-
rechner bzw. über einen Terminalserver wird inzwischen viel Standardsoftware in der Cloud
(Bereich im Internet, der durch Anmeldenamen und Kennwort zugreifbar ist) angeboten.
Zusätzlich zum lokalen Betrieb eines Dokumenten-Management-Systems (DMS) macht es für
viele Unternehmen Sinn, Dokumente auch in der Cloud zu speichern. Mobile Mitarbeiter können
so schneller und effizienter ihre Dokumente speichern und nutzen. Unternehmen ersparen sich
dadurch den Betrieb eines eigenen Servers. Der Einstieg ist auf diesem Weg schnell möglich. Mit
Dokumenten-Management-Systemen werden zum Beispiel Rechnungen, Geschäftsbriefe und
andere gedruckte Dokumente digitalisiert und über Computer zugreifbar gemacht.

Microsoft stellt mit der Cloud-Anwendung Office 365 auch die Cloud-Anwendung SharePoint
Online zur Verfügung. SharePoint online ist eine sehr umfangreiche Lösung, auch um Dokumente
zu verwalten. Der Funktionsumfang entspricht in etwa einem SharePoint Server, der im lokalen
Rechenzentrum betrieben wird.

Fileee (https://www.fileee.com) ist zum Beispiel ein bekannter deutscher Clouddienst für DMS.
Das Tool kann Dokumente auch per E-Mail erhalten. Wenn ein Dokument in Fileee importiert ist,
besteht die Möglichkeit, wichtige Daten wie Adresse, Kontonummern und mehr auszulesen und
zu verwenden. Für den Dienst gibt es Apps für Android und iPhones/iPads. Mit diesen Apps
können Anwender Dokumente fotografieren und direkt in die Cloud zu ihrem Konto hochladen.
Wenn Sie ein Konto eröffnet haben, können Sie ein Dokument sogar auf dem Postweg versenden
und auf diesem Weg in der Cloud verfügbar machen.

112 Schulversion © HERDT-Verlag


Software 10

Weitere bekannte Cloud-Anwendungen sind Microsoft Office 365 oder Google Docs. Die Cloud-
Anwendungen verfügen meist nur über die wichtigsten Funktionen. Die Nutzung von Cloud-
Anwendungen ist oft wesentlich kostengünstiger, zudem können Sie als Betriebssystem beispiels-
weise auch eine kostenfreie Linux-Distribution einsetzen (die zudem meist eine kostenfreie
Office-Suite oder Freeware für die Bildbearbeitung etc. enthält).

Prüfen Sie deshalb vor dem Kauf von Software oder der Nutzung von Software in der Cloud sehr
genau, welches Ziel mit deren Einsatz erreicht werden soll, und erstellen Sie ein Pflichtenheft.
Arbeiten Sie dieses Schritt für Schritt ab und Sie werden genau zu der für Ihren Anwendungsfall
optimalen Lösung gelangen. Und das könnte beispielsweise Microsoft Office 365 statt der lokalen
Office-Installation sein, wie aktuelle Zuwachsraten auf dem deutschen Markt untermauern.

10.11 Übung

Programme verstehen
Level Zeit 15 Minuten

Übungsinhalte  Office-Pakete kennen


 Merkmale einer Tabellenkalkulation
 Bestandteile einer Vektorgrafik
 Anwendungsprogramme unterscheiden
 Anforderungen an Softwarelizenzen im Unternehmen
Übungsdatei Uebung10.pdf
Ergebnisdatei Uebung10-E.pdf

© HERDT-Verlag Schulversion 113


11 Datenbanken

11
11. Datenbanken

11.1 Was ist eine Datenbank?

Datenbank oder Datenbanksystem (DBS)?


Sicher haben Sie eine vage Vorstellung davon, was Sie unter dem Begriff Datenbank erwartet.
Üblicherweise wird mit diesem Begriff die computergestützte Speicherung und Aufbereitung von
Daten in Verbindung gebracht.

Streng genommen wird der Ausdruck Datenbank in der Umgangssprache oft missverständlich
verwendet, wenn von den bekannten Datenbanksystemen Microsoft Access, SQL Server oder
Oracle-Datenbank gesprochen wird.

Die Gesamtheit aller gespeicherten Informationen bezeichnet man als Datenbank. Zum Verwalten
der Datenbank (beispielsweise zum Abspeichern von Daten) wird eine Verwaltungssoftware
benötigt, das Datenbank-Managementsystem (DBMS). Beide zusammen (Datenbank und DBMS)
bilden das Datenbanksystem (DBS).

Beispiel einer Datenbank


Würden Sie ohne den Einsatz von Computern die Aufgabe bekommen, die Adressen und
Telefonnummern von Kunden einer Firma zu verwalten, wäre Ihre Vorgehensweise relativ
eindeutig: Sie würden eine Adresskartei anlegen und auf den einzelnen Karteikarten jeweils
die Anschrift und Telefonnummer jedes Kontaktes notieren.

Anschließend müssten Sie noch dafür sorgen, dass diese Karteikarten in alphabetischer Reihen-
folge sortiert würden, damit Sie bei Bedarf bestimmte Adressen möglichst schnell finden
könnten.

Wollten Sie auch die Bestellungen der einzelnen Kunden in die Kartei aufnehmen, wäre das im
Prinzip kein großes Problem – auf den Karteikarten wäre sicher genug Platz, um die Daten einiger
Bestellungen aufzunehmen. Allerdings würden Sie feststellen, dass es nicht mehr ganz so einfach
wäre, wenn Sie einen Umsatzbericht über die Bestellungen eines bestimmten Monats erstellen
sollten.

114 Schulversion © HERDT-Verlag


Datenbanken 11

Da Ihre Kartei nach Kunden geordnet wäre, würde Ihnen nichts anderes übrigbleiben, als sämtliche
Karten einzusehen und die Bestelldaten zu überprüfen.

Prinzipiell speichert das DBMS eben diese Karteikarten für uns ab – meistens in Tabellenform.

Eine Adresstabelle in einem Datenbanksystem

Wenn Sie eine Adresskartei erstellen, legen Sie die notwendigen Einträge fest: z. B. Firma,
Ansprechpartner, Anschrift, Telefonnummer, Faxnummer, E-Mail-Adresse, Website etc. Analog
dazu müssen Sie beim Einrichten einer Datenbank angeben, welche Einträge in einer bestimmten
Tabelle notwendig sind (Spalten). Die einzelnen Zeilen in dieser Tabelle spiegeln dann unter-
schiedliche Karteikarten wider (Datensätze oder auch Tupel genannt).

Welche Aufgaben hat ein DBMS?


Wird das Konzept von Karteikartensystemen auf elektronische Datenverarbeitung übertragen,
so wird klar, dass neben der rein technischen Abwicklung (Speicherung von Daten auf der Fest-
platte) zusätzliche Vorkehrungen getroffen werden müssen, damit die Verwendung und die
Pflege der gespeicherten Daten nicht umständlicher ist, als sämtliche Geschäfte ohne Computer
abzuwickeln, und damit es nicht zu falschen Ergebnissen kommt.

 Unabhängigkeit von logischer und physikalischer Datenstruktur: Wie das DBMS die Daten
physikalisch speichert, ist für den Benutzer der Datenbank uninteressant. Die Tabelle, die
der Benutzer am Bildschirm bearbeitet, kann einen Auszug von Daten aus verschiedenen
physikalischen Tabellen (sogar von verschiedenen Datenbanken) darstellen. Wenn sich diese
logische Sicht (View oder Ansicht) des Benutzers ändert, weil er zusätzliche Informationen
sehen will oder überflüssige Informationen nicht mehr benötigt, muss nur diese logische
Sicht geändert werden, nicht aber die physikalische Gesamtstruktur der Datenbank.
 Minimale Datenredundanz: Daten können in der Logik einer Datenbank durchaus an
mehreren Stellen identisch vorkommen. Allerdings sollten die Daten physikalisch möglichst
nur einmal an einer bestimmten Stelle gespeichert sein, um den Umfang der Datenbank
möglichst gering zu halten und die Aktualisierung der gespeicherten Daten möglichst einfach
zu machen. Steht z. B. der Mehrwertsteuersatz nur ein einziges Mal an einem bestimmten
Ort in der Datenbank und beziehen sich alle Berechnungen und Tabellen auf diesen Wert, so
muss bei einer Steuererhöhung nur dieser eine Wert geändert werden. Andernfalls müsste
die komplette Datenbank nach jedem Auftreten des Mehrwertsteuersatzes durchsucht und
entsprechend angepasst werden.
 Datenintegrität: Offensichtlich falsche Eingaben sollten schon bei der Eingabe der Daten
abgefangen werden, sodass diese gar nicht erst in das Datenbanksystem gelangen. Wurde
ein Datenfeld als „Monat“ definiert, so wäre es logisch, hier keine Eingaben von Monats-
ziffern kleiner 1 oder größer 12 zuzulassen. Des Weiteren muss gewährleistet bleiben, dass
die bereits gespeicherten Daten nicht durch Änderungen an der Datenbank in einen
inkonsistenten Zustand kommen. Ein Kunde und dessen Adresse dürfen z. B. nicht gelöscht
werden, wenn noch offene Bestellpositionen für diesen Kunden in der Datenbank stehen.

© HERDT-Verlag Schulversion 115


11 Datenbanken

 Konkurrierender Datenzugriff: Vor allem bei größeren Datenbanken muss davon ausge-
gangen werden, dass auf dieselben Daten von mehreren Benutzern gleichzeitig zugegriffen
wird. Dieses Problem muss vom Datenbanksystem (zum Beispiel durch die Sperrung eines
gerade in Bearbeitung befindlichen Datensatzes für weitere Zugriffe) gelöst werden. Es darf
zum Beispiel nicht vorkommen, dass gleichzeitig von zwei Benutzern vom selben Girokonto
mit dem ursprünglichen Kontostand von 100 Euro jeweils 100 Euro abgebucht werden und
als Kontostand am Ende 0 Euro in der Datenbank erfasst sind.
 Datensicherheit: Ein Datenbanksystem sollte auch bei Ausfällen von Soft- oder Hardware
sicherstellen, dass dieser Ausfall entweder keine negativen Effekte auf den Datenbestand
hat oder zumindest ein konsistenter Zustand relativ einfach wiederhergestellt werden kann
(Backups). In bewährten Datenbanksystemen existieren spezielle Methoden, die in der Lage
sind, einen konsistenten Datenbestand zu garantieren, auch wenn ein Ausfall während einer
Schreiboperation oder Änderung aufgetreten ist.
 Datenschutz: Es darf nicht jeder alle Daten der Datenbank sehen oder sogar verändern. Dies
wird über ein System von Zugriffsrechten auf Datenbankebene, Tabellenebene und für
bestimmte Spalten (oder auch Zeilen) realisiert.

Datenbanken verstehen
SQL Server und andere Datenbanksysteme lassen sich häufig mit mehreren Instanzen installieren.
Instanzen laufen parallel auf einem einzelnen Server und lassen sich getrennt verwalten, sichern
und mit Datenbanken füllen. Datenbanken gehören daher immer zu einer einzelnen Instanz. Jede
Datenbank besteht bei Microsoft SQL Servern mindestens aus zwei Dateien: einer Datenbank-
datei (.mdf), welche die eigentlichen Daten enthält, und einem Transaktionsprotokoll (.ldf), in
dem die einzelnen Transaktionen gespeichert werden. Der Datenbankdienst verwaltet die
Datenbank und stellt sicher, dass die Transaktionen aus den Transaktionsprotokollen in die
Datenbankdatei geschrieben werden, sodass diese immer über eine korrekte Datenbankstruktur
verfügt. Dadurch ist sichergestellt, dass die Daten immer konsistent sind und sich Transaktionen
nicht beeinflussen.

Hierbei arbeiten SQL Server nach dem bekannten ACID-Prinzip:


 Atomic (atomar): Es müssen entweder alle Operationen einer Transaktion durchgeführt werden
oder gar keine.
 Consistent (konsistent): Die Datenbank wird immer konsistent gehalten. Wenn eine
Transaktion die Datenbank in einen inkonsistenten Zustand bringen würde, wird die
Transaktion nicht durchgeführt.
 Isolated (isoliert): Änderungen werden erst sichtbar gemacht, wenn alle Operationen der
Transaktion durchgeführt wurden. Sind die Vorgänge abgeschlossen, ist sichergestellt, dass
der SQL-Server die Daten in die Datenbank geschrieben hat.
 Durable (dauerhaft): Die Transaktion bleibt selbst dann erhalten, wenn das System ausfällt.

Durch diese ACID-Vorgehensweise ist vor und nach jeder Transaktion sichergestellt, dass das
System stabil und konsistent bleibt.

Administratoren können Datenbanken sichern, um eine Kopie der SQL-Server-Daten zu erstellen,


die zum Wiederherstellen der Daten nach einem Fehler verwendet werden kann. Eine Sicherung
der SQL-Server-Daten wird immer auf Datenbankebene für Dateien oder Dateigruppen erstellt.
Sicherungen auf Tabellenebene können Sie nicht erstellen. Beim vollständigen Wiederher-
stellungsmodell werden auch die Transaktionsprotokolle der Datenbanken mit gesichert.

116 Schulversion © HERDT-Verlag


Datenbanken 11

Primär- und Fremdschlüssel


Da das DBMS in der Lage sein muss, einzelne Datensätze voneinander zu unterscheiden, muss
eine der gespeicherten Eigenschaften als sogenannter Primärschlüssel dienen. Um zu gewähr-
leisten, dass jeder Schlüssel nur einmal existiert, sollte der Schlüssel nicht aus den Attributen
selbst gebildet werden. Der Primärschlüssel wird daher meist durch ein separates Attribut mit
einer fortlaufenden Seriennummer dargestellt (Kundennummer, Auftragsnummer etc.).

Dient ein Attribut, das in einer Tabelle A vorkommt, in einer Tabelle B als Primärschlüssel, so wird
es in Tabelle A als Fremdschlüssel bezeichnet.

Die meisten Datenbankmodelle, die in Abschnitt 11.2 dargestellt werden, benutzen das Konzept
von Primär- und Fremdschlüsseln.

Datenspeicherung von Datenbankservern mit SQL Servern verstehen


Die Datenbearbeitung in SQL Servern oder anderen Versionen von Microsoft Datenbankservern
laufen verkürzt dargestellt wie folgt:
 Ein Client will Daten auf dem Server ändern, zum Beispiel durch eine Anwendung.
 Der Server überprüft, ob sich die Daten bereits im Arbeitsspeicher befinden, und lädt bei
Bedarf den Bereich aus der Datenbank in den Arbeitsspeicher. Der Bereich wird Seite
genannt.
 Anschließend protokolliert der Server die Änderungen im Transaktionsprotokoll der Daten-
bank (.ldf-Datei). Die Änderungen liegen im Arbeitsspeicher, sodass die Pflege der Daten
sehr schnell abläuft.
 Der Server teilt der Anwendung mit, dass die Änderungen entgegengenommen und
gespeichert wurden.
 Der Server führt zu einem beliebigen Zeitpunkt einen Prüfpunkt (Checkpoint) durch.
 Der Server erkennt Änderungen in den Datenseiten des Arbeitsspeichers und schreibt die
Seiten vom Arbeitsspeicher auf die Festplatte in die Datenbankdatei (.mdf-Datei). Hierbei
fasst er mehrere Änderungen zusammen, um den Zugriff auf die Datenbankdatei so selten
wie möglich durchführen zu müssen.
 Bei der Pflege der Daten in der Datenbank spielen mindestens zwei Dateien eine Rolle: das
Transaktionsprotokoll (.ldf) und die Datenbankdatei (.mdf).
 Abhängig vom Wiederherstellungsmodell der Datenbank belässt er die Transaktionen im
Transaktionsprotokoll (Wiederherstellungsmodell Vollständig). Beim Wiederherstellungs-
modell Einfach löscht der Server die Transaktionen im Protokoll, die in die Datenbank
geschrieben wurden.
 Der Administrator führt eine Sicherung des Transaktionsprotokolls durch, sodass die Ände-
rungen erfasst sind. Der Server erkennt die Sicherung und löscht die Änderungen aus dem
aktiven Transaktionsprotokoll.
 Startet ein Server mit SQL Servern, überprüft der Datenbankdienst, ob die Datenbanken auf
dem Server konsistent sind, also alle bestätigten Änderungen im Transaktionsprotokoll in die
Datenbankdatei geschrieben wurden. Er prüft daher, ob alle Daten nach dem letzten
Prüfpunkt (Checkpoint) in die Datenbank geschrieben sind. Ein Prüfpunkt stellt sicher, dass
alle Daten vor dem Prüfpunkt bereits in der Datenbank integriert sind.

© HERDT-Verlag Schulversion 117


11 Datenbanken

Findet der Server noch Transaktionen im Transaktionsprotokoll, die der Server den Anwendun-
gen bestätigt, aber noch nicht in die Datenbankdatei geschrieben hat, schreibt er diese jetzt in
die Datenbankdatei. Der Vorgang heißt Rollforward und ist eine wichtige Vorgehensweise im
Bereich SQL Server.

Vorgänge, die abgebrochen wurden, also Daten, deren Änderung der Server nicht an den Client
bestätigt hat, die sich aber im Transaktionsprotokoll befinden, löscht er aus dem Protokoll. Dieser
Vorgang heißt Rollback.

Ist der Vorgang abgeschlossen, ist die Datenbank mit den Transaktionsprotokollen und den
Änderungen an den Clients konsistent und wird online geschaltet. Dies führt der Server für alle
Datenbanken durch.

11.2 Datenbankmodelle
Hierarchische Datenbanken
Das hierarchische Datenmodell wurde entwickelt, um unterschiedlich lange Datensätze zu ver-
arbeiten. Datensätze werden so aufgeteilt, dass gleichartige Daten zu kleineren Datengruppen
zusammengefasst werden. Diese Gruppen bilden die Knoten der Hierarchie. So entsteht eine
baumartige Struktur, die streng hierarchisch geordnet ist. Jeder untergeordnete Knoten ist von
seinem übergeordneten Knoten abhängig. Die Struktur entspricht einer Vater-Sohn-Beziehung.
Ein Vater kann mehrere Söhne haben, ein Sohn aber nur einen Vater. Die Struktur kann nicht
ohne den Wurzelknoten existieren.

Beispiel
Die Abbildung zeigt die hierarchische Struktur einer Kundenverwaltung. Jeder Kunde kann eine
unterschiedliche Anzahl von Bestellungen mit einer bestimmten Anzahl von Posten aufgeben.
So ist nicht vorhersehbar, wie lang ein bestimmter Datensatz ist. Die Daten der Kunden,
Bestellungen und Posten bilden im hierarchischen Datenmodell die Knoten des Hierarchiebaums.
Für jeden Knoten wird ein Datensatz angelegt.

Allgemeine Darstellung mit Beispieldaten


Darstellung

118 Schulversion © HERDT-Verlag


Datenbanken 11

Netzwerkdatenbanken
Beim Netzwerkmodell werden gleichartige Daten in Recordsets gespeichert, die miteinander in
Beziehung stehen. Einem Record eines Recordsets können dabei mehrere Records eines anderen
Recordsets zugeordnet werden, was als Pfeil in der grafischen Darstellung erscheint.

Beispiel
Es wird die Projektverwaltung einer Abteilung betrachtet. Zu dieser Abteilung gehören mehrere
Mitarbeiter. In jeder Abteilung wird an mehreren Projekten gearbeitet. An jedem Projekt
arbeiten mehrere Mitarbeiter der Abteilung mit, jeder Mitarbeiter kann aber auch an mehreren
Projekten mitarbeiten. Diese Beziehungen sind in der Abbildung durch Pfeile dargestellt.


Allgemeine Darstellung

Darstellung mit Beispieldaten

Beim Netzwerkmodell darf eine Beziehung zwischen zwei Recordsets immer nur in eine Richtung
zeigen. Zwischen den Recordsets Mitarbeiter und Projekt wäre eine beidseitige Beziehung not-
wendig. Das Problem wird durch das Einfügen eines zusätzlichen Recordsets Mitarbeiter-Projekt
gelöst .

Relationale Datenbanken
Relationale Datenbanken sind am weitesten verbreitet. Die Daten werden in Tabellenform, in
sogenannten Relationen, gespeichert. Zwischen den Tabellen können Beziehungen definiert
werden. Es sind verschiedene Beziehungsarten möglich, die sich durch die Anzahl der mitein-
ander in Beziehung stehenden Datensätze (Tabellenzeilen, Tupel) unterscheiden (einer mit
einem 1 : 1, einer mit mehreren 1 : n, mehrere mit mehreren n : m). Die grafische Darstellung
der Relationen und der zugehörigen Beziehungen erfolgt meist im Entity-Relationship-Modell
(ERM). Die Beziehungen werden dort durch Linien dargestellt, die mit der Anzahl der möglichen
Beziehungen (1, n, m) versehen sind.

© HERDT-Verlag Schulversion 119


11 Datenbanken

Über Abfragen ist es möglich, für bestehende Datenbanken unterschiedliche Auswertungen


durchzuführen. Für die Abfrage und Auswertung der Daten hat sich die Abfragesprache SQL
(Structured Query Language, vgl. 11.6) durchgesetzt.

Beispiel
Die Projektverwaltung lässt sich im relationalen Modell wie folgt darstellen: Einer Abteilung
gehören mehrere Mitarbeiter an, jeder Mitarbeiter ist aber nur in einer Abteilung beschäftigt.
Zwischen den Relationen Abteilung und Mitarbeiter besteht eine 1:n-Beziehung. Jeder Mit-
arbeiter kann an mehreren Projekten mitarbeiten, ein Projekt kann wiederum von mehreren
Mitarbeitern bearbeitet werden. Zwischen den Relationen Mitarbeiter und Projekt besteht eine
n:m-Beziehung.

Darstellung im ER- Darstellung mit Beispieldaten


Modell

Objektorientierte Datenbanken
Objektorientierte Datenbanken (OODB) sind Datenbanken der neuesten Generation. Das Ziel der
Entwicklung der OODB war es, ein Datenbanksystem zu schaffen, in welchem Objekte unserer
Umwelt mit ihren Eigenschaften und ihrem Verhalten nachgebildet und ohne großen Aufwand in
einer Datenbank gespeichert und verwaltet werden können. Diese Idee ist analog zur objekt-
orientierten Programmierung, die dieselben Konzepte für die Erstellung von Software einsetzt.

Jedes Objekt der Datenbank enthält Dateninformationen (Attribute) und Operationen


(Methoden, Komponentenfunktionen), die das Verhalten des Objekts widerspiegeln. Die
Definition der Objekte (Daten, Verweise, Methoden) erfolgt über Klassen. Durch die freie
Beschreibung von Objekt-Klassen lassen sich selbst komplexeste Datenstrukturen in einer
Datenbank verwalten.

In den zuvor beschriebenen Datenmodellen ist diese Spezifikation von Operationen nicht
möglich, es werden dort generische Operationen (die auf alle Datentypen der Datenbank
anwendbar sind) verwendet.

120 Schulversion © HERDT-Verlag


Datenbanken 11

Beispiel
Für die Projektverwaltung werden drei verschiedene Objekt-Klassen (Abteilung, Mitarbeiter und
Projekt) definiert. Bestandteile der Klassendefinition sind auch die Verweise auf andere Objekte
sowie die verschiedenen Operationen. So hat ein Objekt der Klasse Abteilung einen Verweis auf
eine unbestimmte Menge von Objekten der Klasse Mitarbeiter. Jeder Mitarbeiter besitzt einen
eindeutigen Verweis auf seine Abteilung und einen Verweis auf eine unbestimmte Anzahl von
Projekten. Jedes Projekt hat einen Verweis auf eine unbestimmte Anzahl von Mitarbeitern. Die
Methoden der Klasse Abteilung könnten beispielsweise neuerMitarbeiter, umbenennen oder
abteilungsberichtDrucken sein.

Darstellung im objektorientierten Datenbankschema

Darstellung mit Beispieldaten

NoSQL-Datenbanken
Dieser Open-Source-Datenbanktyp verzichtet gänzlich auf SQL als Datenbanksprache. Die
eigentliche Datenbank besteht nicht aus einem genau definierten Gefüge von Tabellen, die in
Abhängigkeiten zueinander stehen, sondern aus einzelnen Dateien. Das können z. B. XML-Dateien
sein. Mit NoSQL-Datenbanken sollen Performanceprobleme, die bei anderen Datenbankmodellen
auftreten können, umgangen sowie der Umgang mit der Datenbank vereinfacht werden.

Beispiel
NoSQL wird vorrangig im Internet-Kontext eingesetzt. Eine Aufstellung der verschiedenen Typen
und Einsatzbereiche finden Sie unter http://nosql-database.org.

© HERDT-Verlag Schulversion 121


11 Datenbanken

Bekannte Datenbank-Managementsysteme
Hersteller DBMS Bemerkung
Oracle Oracle Der wohl bekannteste Datenbankanbieter; hochleistungsfähiges
Datenbanksystem für große Datenmengen
IBM DB2 Marktbedeutung und Leistungsfähigkeit vergleichbar mit Oracle und
MS SQL Server
Informix Ähnlich leistungsfähig wie Oracle, etwas weniger weit verbreitet
Oracle MySQL/ Vor allem eingesetzt zur Entwicklung dynamischer Webseiten mit
MariaDB reduziertem SQL-Umfang. Bei MariaDB handelt es sich um eine
Abspaltung von MySQL.
Open PostgreSQL Ebenfalls häufig eingesetzt zur Entwicklung dynamischer Webseiten
Source
Microsoft Access Am weitesten verbreitetes PC-Datenbanksystem
Microsoft SQL Server Datenbankserver für Windows Server mit hohem Verbreitungsgrad
(betrachtet über alle Editionen)

11.3 Datenbankentwicklung

Ablauf eines Datenbankprojektes


Analog zur Entwicklung von Software kann auch bei der Entwicklung einer Datenbank zur Lösung
eines bestimmten Problems folgende Aussage gemacht werden:
Einfache Problemstellungen können sicher ohne großes Nachdenken in eine Datenbankform
umgesetzt werden, so wie einfache Programme von den Programmierern oft „nebenbei“
geschrieben werden. Wird aber der Anspruch an die Datenbank komplexer – und das ist bei
Datenbanken, die im Unternehmensbereich zum Einsatz kommen, meistens der Fall – so ist von
dieser Vorgehensweise dringend abzuraten.

Bei Datenbanken geht es nicht um die Fragestellung, wie ein Programm entworfen werden muss,
damit es seinen Anforderungen gerecht wird, sondern um die Frage, wie Daten organisiert
werden müssen, damit die Datenbank letztendlich ihren Zweck gut erfüllt.

Die Methoden des Software-Engineerings werden daher analog auf Datenbanken im Data-
Engineering oder Database-Engineering übertragen, um Anforderungen und Probleme von
Beginn des Projektes an klar formulieren zu können und ein strukturiertes, möglichst fehlerfreies,
erweiterbares und effizientes Produkt zu erhalten.

Der Entwurf der Datenbank beginnt bei der Analyse der Anforderungen und ist mit dem physischen
Entwurf der Datenbank abgeschlossen, wie es in der unten stehenden Tabelle zum Datenbank-
Lebenszyklus dargestellt ist. Wie im Software-Engineering beschreibt das sogenannte Wasserfall-
modell (vgl. Abschnitt 7.5) die Vorgehensweise, die immer noch sehr häufig genutzt wird.

122 Schulversion © HERDT-Verlag


Datenbanken 11

Anforderungs- In der Anforderungsanalyse werden die Anforderungen aller Benutzer an die


analyse neue Datenbank zusammengetragen. Diese Anforderungen werden meist
nach bestimmten Kriterien klassifiziert, z. B. nach Abteilungen bzw. Benut-
zergruppen. Wichtig ist, dass festgelegt wird, welche Daten gespeichert
werden sollen (was zu speichern ist) und wie die Daten zu bearbeiten sind.
Konzeptioneller Am Ende dieser Phase liegen die logischen Sichten (Views) und das konzep-
Entwurf tionelle Gesamtschema (meist als Entity-Relationship-Diagramm) vor. Beim
Entwurf können Sie verschiedene Vorgehensweisen verwenden. Entweder
Sie entwerfen zuerst die Sichten und fügen diese dann zu einem konzeptio-
nellen Schema zusammen (Top-down-Methode – Methode der schrittweisen
Verfeinerung) oder umgekehrt (Bottom-up-Methode – Methode der schritt-
weisen Verallgemeinerung). In den Ergebnisdiagrammen ist genau definiert,
welche Daten(objekte) mit welchen Eigenschaften in der Datenbank
abgebildet werden sollen, welche Beziehungen zwischen den
Daten(objekten) bestehen, ob es Abhängigkeiten oder/und Integritäts-
bedingungen gibt usw.
Bevor der logische Entwurf durchgeführt werden kann, muss festgelegt wer-
den, für welches Datenbanksystem die Datenbank aufgebaut werden soll.
Logischer Nun erfolgt die Umsetzung des konzeptionellen Schemas in das Datenmodell
Entwurf des Datenbanksystems. Dafür stehen meist entsprechende Transformations-
regeln zur Verfügung. Anschließend wird das Datenbankschema normali-
siert, wodurch z. B. Redundanzen beseitigt werden.
Verfeinerung Nun kann der logische Entwurf z. B. im Hinblick auf häufige bzw. bevorzugte
des logischen Abfragen, die in den Anforderungen formuliert wurden, nochmals optimiert
Entwurfs werden. Dabei werden Erweiterungen und ggf. Änderungen am relationalen
Schema durchgeführt (z. B. durch das Einfügen von Indizes).
Physischer In der letzten Entwurfsphase erfolgt die Definition des internen Schemas. Es
Entwurf/ werden geeignete Speicherstrukturen und Zugriffsmechanismen darauf fest-
Implemen- gelegt. Ein wichtiger Aspekt ist auch das Laufzeitverhalten des DBS, welches
tierung durch einen effizienten Zugriff auf die relevanten Daten verbessert werden
kann. In der Datendefinitionssprache (DDL) des DBS wird nun die Struktur
der Daten implementiert. Bei relationalen Datenbanksystemen werden auch
die Relationen und Views (Sichten) definiert. Die Festlegung der Zugriffs-
rechte erfolgt ebenfalls in dieser Phase.

Datenbank-Entwurfsphasen (Wasserfallmodell)

© HERDT-Verlag Schulversion 123


11 Datenbanken

11.4 ER – Entity Relationship

Entitäten und Attribute


Das Entity-Relationship-Modell (kurz: ER-Modell oder ERM) ist das bekannteste und meist-
verwendete grafische Hilfsmittel für den Datenbankentwurf. Das ER-Modell ermöglicht es, die
konzeptionellen Entwürfe einer Datenbank auf leicht verständliche Art grafisch darzustellen und
die Abstraktionskonzepte anzuwenden. Die zwei Grundbausteine des ER-Modells sind die Entities
(Entitäten) und die Relationships (Beziehungen). Entities und Relationships haben Attribute.

Als Entitäten (Entity) werden unterscheidbare (identi-


fizierbare) Dinge aus der realen Welt bezeichnet. Dies
können Personen, Gegenstände, Firmen oder Ähn-
liches sein. Entitäten unterscheiden sich voneinander
durch ihre jeweiligen Eigenschaften bzw. Eigenschafts- PROJEKT besitzt den Primär-
werte. Eine Entität wird synonym als Objekt be- schlüssel Projektnummer
zeichnet.

Attribute bzw. Eigenschaften charakterisieren eine Entität, einen Entity-Typ, eine Beziehung bzw.
einen Beziehungstyp. Die Attribute besitzen einen Namen und einen Wert (Value).

Beziehungen (Relationships)
Durch Beziehungen werden die Wechselwirkungen Beziehung
oder Abhängigkeiten von Entitäten ausgedrückt.
Beziehungen unterscheiden sich voneinander durch Mitarbeiter Schmidt arbeitet an Pro-
ihre jeweiligen Eigenschaften. jekt 1009.

Ein Beziehungstyp ist, analog zum Entity-Typ, die Beziehungstyp ohne und mit Attribut
Abstraktion gleichartiger Beziehungen.
Mitarbeiter arbeitet an Projekt.
Ein Beziehungstyp wird grafisch durch eine Raute
dargestellt, die durch zwei Kanten mit den Entity-
Typen verbunden ist, die assoziiert werden sollen. In
der Raute kann der Name des Beziehungstyps stehen. Mitarbeiter arbeitet an Projekt in der
Tätigkeit als ... und zu ... Prozent.
Beziehungen können durch Attribute beschrieben
werden, beispielsweise, in welcher Tätigkeit ein
Mitarbeiter an einem Projekt mitarbeitet und zu wie
viel Prozent.

124 Schulversion © HERDT-Verlag


Datenbanken 11

Über die Kardinalität wird festgelegt, wie viele


Kardinalitäten:
Entitäten einer Entitätsmenge mit Entitäten einer
anderen Entitätsmenge in Beziehung stehen können, 1 Abteilung besteht aus n Mitarbeitern.
z. B. wie viele Mitarbeiter an einem Projekt mit- n Mitarbeiter arbeiten an m Projekten.
arbeiten. In der Regel erfolgt die Kennzeichnung von
Kardinalitäten durch folgende Angaben:
 1 – genau eine Zuordnung
 n, m – eine oder mehrere Zuordnungen

11.5 Normalisierung

Normalformen
Um in einer Datenbank Redundanzen zu vermeiden, muss im Rahmen des Datenbankdesigns der
Prozess der Normalisierung durchgeführt werden. In diesem Prozess werden u. a. alle komplexen
Beziehungen (n : m) in einfache (1 : 1) bzw. mehrfache (1 : n) Beziehungen aufgelöst.

Es existieren mehrere Stufen der Normalisierung, die sich bezüglich der Strenge der Normalisie-
rungskriterien unterscheiden. Eine Rohtabelle, die alle zu verwaltenden Informationen enthält,
befindet sich in der 0. Normalform, wenn sämtliche aus anderen Werten ableitbaren Daten
entfernt wurden. Also muss beispielsweise der Gesamtbetrag einer Rechnung aus der Tabelle
entfernt werden, da sich dieser Posten leicht aus den Artikelpreisen und den jeweils bestellten
Mengen neu berechnen lässt.

Eine Tabelle für ein Bestellsystem könnte folglich so aussehen:

Name Adresse Artikel Preis in € Bestelldatum


Andrea Müller Langer Weg 5 Baumwolljacke 75,00 01.05.2019
55294 Mainz Bluse, Gr. S 45,60
NY Baseballcap 12,80
Jens Meier Heldenstr. 1 2 Jeans, blau, Gr. 32/32 120,00 02.05.2019
65193 Wiesbaden Ledergürtel 15,50
Pauline Müller Langer Weg 5 Wickelrock, Gr.36, schwarz 60,90 07.05.2019
55294 Mainz Pullover, Gr. S 79,90

Diese Tabelle enthält zwar alle erfassten Daten, ist jedoch für die Verwendung in einer Daten-
bank ungeeignet, da mehrere Daten in einzelnen Zellen zusammengefasst sind.

© HERDT-Verlag Schulversion 125


11 Datenbanken

Erste Normalform
Damit eine Relation in der ersten Normalform ist, muss folgende Definition erfüllt sein: „Eine
Relation ist in der ersten Normalform, wenn jeder Attributwert atomar ist.“

Das heißt im Prinzip nichts anderes, als dass in jeder Zelle der Tabelle auch nur ein einziger Wert
stehen darf.

Die Spalte Artikel aus obigem Beispiel müsste demnach aufgespalten werden, da hier mehrere
Artikel einer einzigen Bestellung erfasst sind bzw. zu einem Artikel weitere Daten (Anzahl, Größe
oder Farbe) gespeichert werden. Andrea Müller hätte in der neuen Tabelle z. B. jetzt drei Zeilen,
da sie drei Artikel bestellt hat.

Zweite Normalform und dritte Normalform


Die zweite und dritte Normalform fordern, dass Nicht-Schlüsselattribute weder direkt noch
indirekt von anderen Nicht-Schlüsselattributen oder nur Teilen des Gesamtschlüssels abhängen.
Wird eine solche Abhängigkeit gefunden, so werden die betroffenen Daten in eine neue Tabelle
ausgelagert.

Im obigen Beispiel hängen beispielsweise die Adressdaten nicht von den Bestelldaten, sondern
vom Namen des Bestellers ab. Um die zweite bzw. dritte Normalform herzustellen, muss die
Beispieltabelle in zwei Tabellen aufgeteilt werden:

Tabelle Sie enthält alle Kontaktinformationen der Kunden, z. B. Name, Adresse,


Kundendaten Telefonnummer und das Feld Kundennummer, das als Primärschlüssel dient.
Tabelle Sie enthält alle Daten der Bestellungen, z. B. Artikel, Datum, Menge und das
Bestellungen Feld Kundennummer, das als Fremdschlüssel dient.

In der Tabelle Bestellungen verweist die jeweilige Kundennummer auf den entsprechenden
Datensatz der Tabelle Kundendaten.

Auf dieselbe Weise werden die einzelnen Bestellpositionen ausgegliedert und die Daten, die
jeweils nur einen Artikel beschreiben. Würde dieses Beispiel weitergeführt, so erhielten Sie
automatisch mehrere Tabellen: Kundendaten, Bestellungen, Bestellposition und Artikel.

Beim Normalisierungsprozess darf keine der Informationen verloren gehen. Das heißt, dass
bei der Aufteilung einer Tabelle in kleinere Tabellen jeweils über einen Fremdschlüssel die
Beziehung der Daten der einen Tabelle zu den Daten der anderen Tabelle erhalten bleiben
muss.

126 Schulversion © HERDT-Verlag


Datenbanken 11

Mit Normalisierung erreichte Ziele


 Vermeidung von Datenredundanz
 Stabile und flexible Datenstrukturen
 Wahrung der Datenintegrität (beim Einfügen, Ändern und Aktualisieren von Datensätzen)
Üblicherweise werden drei Normalformen unterschieden, die im Idealfall im Rahmen der
Normalisierung schrittweise erreicht werden. Wenn eine Tabelle in der dritten Normalform ist,
stehen darin nur thematisch zusammengehörige Daten (z. B. nicht Daten über Kunden und
gleichzeitig über Artikel) und es werden Redundanzen, also überflüssige Mehrfachspeicherung
(z. B. des Artikelnamens), vermieden.

Um bei der Zerlegung in kleinere Tabellen einen Verlust an Information zu vermeiden, müssen
Daten wie Kundennummer, Bestellnummer und Artikelnummer als Primär- und Fremdschlüssel
erscheinen.

Über die dritte Normalform hinaus existieren noch die weiterführende Boyce-Codd-Normalform
sowie die vierte und fünfte Normalform, die aber im Rahmen dieses Buches nicht weiter erläutert
werden sollen.

11.6 SQL
SQL steht für Structured Query Language und wurde Ende der 70er-Jahre bei IBM in San Jose,
Kalifornien, als Abfragesprache für die relationale Datenbank DB2 entworfen.

Der Sprachumfang von SQL wird in drei Bereiche unterteilt:

DDL (Data Definition Language) Erstellen von Datenbanken, Tabellen, Indizes


DML (Data Manipulation Language) Abfragen von Daten, Einfügen, Ändern und Löschen von
Datensätzen
DCL (Data Controlling Language) Vergeben und Entziehen von Zugriffsrechten

DDL – Data Definition Language


Über die Datendefinitionssprache kann die Struktur der Datenbank und der Tabellen angelegt
und verändert werden. Zur Datendefinitionssprache gehören vor allem folgende Anweisungen:

CREATE DATABASE CREATE TABLE CREATE INDEX


DROP DATABASE DROP TABLE DROP INDEX
ALTER TABLE RENAME TABLE RENAME COLUMN

In diesem Bereich ist der Sprachumfang bei manchen Datenbanksystemen (wie Access) reduziert,
da es dafür komfortablere Möglichkeiten über die grafische Oberfläche gibt.

© HERDT-Verlag Schulversion 127


11 Datenbanken

DDL-Beispiel CREATE TABLE:


Syntax
CREATE TABLE tabellenname
(datenfeld1 datentyp1 [DEFAULT standardwert1 | NULL | NOT
NULL] [AUTO_INCREMENT],
...
datenfeldX datentypX [DEFAULT standardwertX | NULL | NOT
NULL] [AUTO_INCREMENT],
PRIMARY KEY(datenfeldname));

 Mit der Anweisung CREATE TABLE wird eine neue leere Tabelle erstellt. Danach folgt der
gewünschte Tabellenname.
 In runden Klammern folgen die Definitionen der einzelnen Datenfelder. Für jedes Datenfeld
müssen dabei ein Name und ein Datentyp angegeben werden.
 Mit der Angabe PRIMARY KEY kann ein Datenfeld als Primärschlüssel festgelegt werden.

Beispiel
 CREATE TABLE kunde1
 (KdNr INTEGER NOT NULL, Name TEXT(30), Vorname TEXT(20), PLZ
TEXT(5), Ort TEXT(20), Strasse TEXT(20), Telefon TEXT(15))
 Mit dieser Anweisung wird eine neue Tabelle mit dem Namen kunde1 erstellt.
 Die Spalten enthalten die in Klammern angegebenen Attributwerte. Die Kundennummer
KdNR wird als Ganzzahl definiert; sie darf nicht undefiniert sein (NOT NULL), der Name des
Kunden ist ein Text-Eintrag mit bis zu 30 Zeichen Länge usw.

DML – Data Manipulation Language


Mit den Anweisungen der DML können die Daten im weiteren Sinne manipuliert werden.

Die DML umfasst genau vier Anweisungen:


SELECT Suche nach Daten in einer oder mehreren Tabellen; dabei kann die Suche auf
bestimmte Zeilen (Selektion) und bestimmte Spalten (Projektion) beschränkt
werden.
INSERT Einfügen von Daten in eine Tabelle
UPDATE Ändern von Daten in einer Tabelle
DELETE Löschen von Daten aus einer Tabelle

128 Schulversion © HERDT-Verlag


Datenbanken 11

SELECT-Anweisung
Die weitaus am häufigsten gebrauchte und vom Sprachumfang umfangreichste SQL-Anweisung
ist die SELECT -Anweisung.

Syntax
SELECT {Feldname, Feldname,..| * } FROM Tabelle [, Tabelle,
Tabelle...] [WHERE-Bedingung] [ORDER BY Feldname [ASC | DESC]...]

Beispiel
 SELECT Vorname, Name, BestNR, BestDatum FROM Kunde, Bestellung
 WHERE Name="Meier" AND Kunde.KdNR=Bestellung.KdNr

 Mit dieser Anweisung werden der Name des Kunden, die Bestellnummer und das Bestell-
datum ausgewählt. Für die Suche werden die Tabellen Kunde und Bestellung herangezogen.
 Zusätzlich wird festgelegt, dass ein Eintrag nur angezeigt wird, wenn der Name des Kunden
Meier ist und die Kundennummer des Kunden (Meier) gleich der Kundennummer ist, für die eine
Bestellung eingetragen wurde.

Mit dieser SELECT-Anweisung erhalten Sie also sämtliche Bestellungen des Kunden Meier
aufgelistet.

INSERT-Anweisung
Mit der Anweisung INSERT können Sie in eine bestehende Tabelle einen weiteren Datensatz
einfügen.

Syntax
INSERT INTO Tabellenname (Feld1, …, FeldX)
VALUES (Wert1, …, WertX)

Beispiel
 INSERT INTO Artikel (Bestellnr, Name, Preis, Groesse, Anzahl)
 VALUES (10237, "Bluse", 75, s, 1)

 An dieser Stelle wird ein vollständiger Datensatz in die Tabelle eingefügt. Die Daten, die in
Textfeldern gespeichert werden, sind in Anführungszeichen eingeschlossen. Da der Wert für
das Feld id automatisch erstellt wird, kann er bei der Eingabe entfallen.

© HERDT-Verlag Schulversion 129


11 Datenbanken

UPDATE-Anweisung
UPDATE ermöglicht es Ihnen, bereits bestehende Datensätze zu aktualisieren.

Syntax
UPDATE Tabellenname set Feldname=Wert1, …, FeldX=WertX [WHERE
Bedingung]

Beispiel
UPDATE artikel set preis=preis*1.1 WHERE ArtikelNR=10237

In der Tabelle artikel wird für alle Artikel, deren Artikelnummer 10237 ist (die oben erwähnte
Bluse), der Preis um 10 Prozent erhöht.

DELETE-Anweisung
Mit DELETE können Sie Datensätze aus der Datenbank löschen.

Syntax
DELETE FROM Tabellenname [WHERE Bedingung]

Beispiel
DELETE FROM artikel WHERE ArtikelNR=10237

In der Tabelle artikel wird der Eintrag mit der Artikelnummer 10237 gelöscht.

DCL – Data Controlling Language


Die Data Controlling Language umfasst die Anweisungen GRANT und REVOKE. Mit diesen
Anweisungen können bei vielen Datenbanksystemen Zugriffsrechte erteilt bzw. entzogen
werden. Access unterstützt diese Anweisungen nicht.

Syntax
GRANT Rechteliste ON datenbankobjekt TO benutzername

REVOKE Rechteliste ON datenbankobjekt FROM benutzername

130 Schulversion © HERDT-Verlag


Datenbanken 11

Möglichkeiten für das Vergeben von Rechten


Folgende Rechte können mit der GRANT-Anweisung z. B. vergeben werden:
ALL Gewährt alle Rechte für das entsprechende Datenbankobjekt
DELETE Recht zum Löschen von Datensätzen, zum Ausführen der DELETE-Anweisung
INSERT Recht zum Einfügen neuer Datensätze, zum Ausführen der INSERT-Anweisung
SELECT Leserecht, Recht zum Ausführen der SELECT-Anweisung
UPDATE Recht zum Ändern von Datensätzen, zum Ausführen der UPDATE-Anweisung

Je nach Datenbanksystem sind auch zusätzliche Rechte möglich. MySQL erlaubt beispielsweise
zusätzlich das Definieren der Rechte ALTER, DROP, CREATE, INDEX, RELOAD und SHUTDOWN.
Mehr Informationen erhalten Sie im Hilfesystem des jeweiligen Datenbanksystems.

Beispiele
GRANT UPDATE ON artikel TO anton

Dies würde dem Benutzer anton erlauben, Updates an der Tabelle artikel durchzuführen.

GRANT INSERT, SELECT ON BestellDetails TO jenny

Hiermit erlauben Sie der Benutzerin jenny, in den Bestelldetails Suchanfragen zu stellen und
neue Einträge hinzuzufügen.

11.7 Übung

Datenbanken verstehen
Level Zeit 15 Minuten

Übungsinhalte  Datenbanksysteme kennen


 ACID kennen
 Rollforward und Rollback unterscheiden
 NoSQL-Datenbanken kennen
 Wissen, was Beziehungen (Relationships) sind
Übungsdatei Uebung11.pdf
Ergebnisdatei Uebung11-E.pdf

© HERDT-Verlag Schulversion 131


12 Einführung in Computernetze

12
12. Einführung in Computernetze

12.1 Wichtige Begriffe

Netzwerk
Allgemein ausgedrückt stellt ein Netzwerk eine Gruppe
miteinander verbundener Systeme dar, die unterein-
ander kommunizieren können. Ein Computernetzwerk
entsteht, wenn zwei Rechner so miteinander verbunden
sind, dass Datenaustausch zwischen ihnen möglich ist. Zwei Rechner, mit einem Netzwerkkabel
direkt verbunden

LAN – Local Area Network


Ein LAN ist gekennzeichnet durch zwei wesentliche Merkmale: Seine geografische Ausdehnung ist
begrenzt, wobei die Größe eines Privat- bzw. Firmengeländes nicht überschritten wird. Außer-
dem befindet sich die gesamte Hardware vollständig im rechtlichen Entscheidungsbereich und
unter der Aufsicht einer Privatperson bzw. einer Firma.

MAN – Metropolitan Area Network


Die Ausdehnung eines MANs ist begrenzt auf das Gebiet einer Stadt oder eines Ballungszentrums
und umfasst Entfernungen bis circa 100 km.

WAN – Wide Area Network


Ein WAN, auch Weitverkehrsnetz genannt, ist bezüglich seiner geografischen Ausdehnung nicht
begrenzt. In seiner klassischen Form dient es zur Verbindung räumlich getrennter Rechen-
anlagen. Daten werden dabei meistens auf öffentlichen Leitungen übertragen, für deren Nutzung
Gebühren anfallen. Firmen können ein WAN als Verbindung zwischen einzelnen LANs nutzen.

132 Schulversion © HERDT-Verlag


Einführung in Computernetze 12

GAN – Global Area Network


Der Begriff GAN beschreibt die Ausdehnung eines WANs auf eine weltweite und damit globale
Dimension.

GAN mit Funk- und Satellitenverbindungen über weite Strecken

WLAN – Wireless Local Area Network


Der Unterschied zwischen einem WLAN und einem LAN betrifft nur das eingesetzte Über-
tragungsmedium. Zur Datenübertragung wird anstelle von Kabeln Funktechnologie eingesetzt.

VLAN – Virtual Local Area Network


Ein VLAN bezeichnet ein LAN, das nicht mehr ausschließlich durch die physikalischen Ver-
bindungen der einzelnen Komponenten strukturiert ist. Durch den Einsatz moderner Netzwerk-
geräte und Software ist es möglich, einzelne Ressourcen zusammenzuschalten und dadurch in
sich geschlossene Gruppen innerhalb eines Netzwerks zu bilden. Auf diese Art können einzelne
Geräte anhand inhaltlicher Kriterien (Arbeitsgruppen) zusammengeschaltet werden. Die
bestehenden Übertragungswege spielen dabei eine untergeordnete Rolle.

Internet
Das Internet ist das größte WAN (oder GAN), das derzeit existiert. Es ist ein internationales
Netzwerk, daher die Bezeichnung Internet. Wichtig dabei ist, dass das Internet niemandem
gehört, sich jeder mit ihm verbinden und Inhalte darin veröffentlichen kann. Das Internet ist ein
Verbund von Millionen PCs. Hierbei handelt es sich um PCs von Privathaushalten, Firmen,
Schulen, Behörden, Vereinen usw., die weltweit verteilt sind. Am Internet nehmen nicht nur
einzelne PCs teil, sondern ganze Netzwerke von Computern. Nutzen können Anwender nur die
Dienste und Server, die mit dem Internet verbunden sind. Die Vernetzung des Internets findet
über Telefonleitungen, spezielle Datenleitungen, Funknetzwerke und Satellitenverbindungen
statt. Das Internet dient dem Datenaustausch zwischen diesen vernetzten Computern.
Das WWW ist die geläufigste Funktion des Internets.

Intranet
Als Intranet wird ein LAN bezeichnet, das unter Verwendung der Internettechniken aufgebaut ist
(quasi ein Firmen-Internet). Dadurch wird u. a. auch die interne Kommunikation auf der Basis von
sogenannten Browsertechnologien (z. B. Internet Explorer, Microsoft Edge, Mozilla Firefox,
Google Chrome) unterstützt.

© HERDT-Verlag Schulversion 133


12 Einführung in Computernetze

Extranet
Von einem Extranet spricht man, wenn einzelne Intranets (verschiedener Firmen) kontrolliert
zusammengeschlossen werden. Der wesentliche Punkt ist die Öffnung des firmeneigenen Intra-
nets nach außen zur Kopplung mit anderen Intranets oder für legitime Zugriffe aus dem Internet.

12.2 Ziele einer Vernetzung

Anforderungen an ein Computernetz


Gegenüber einer Einzelplatzumgebung bietet ein Computernetzwerk viele Vor-, aber auch
Nachteile.

Vorteile
 Die Kommunikation wird schneller, einfacher und oft kostengünstiger.
 Die Effektivität steigt, da stets aktuelle Daten vorhanden sind.
 Die Kosten sinken, da einige Geräte, z. B. Drucker, gemeinsam genutzt werden können.
 Die Datensicherung wird durch zentrale Speicherorte vereinfacht.
 Die Verfügbarkeit von Arbeitsmitteln wird verbessert, da beim Ausfall eines PCs leicht zu
einem anderen gewechselt werden kann.

Nachteile
 Aufbau und Betrieb eines Netzes sind mit einigem finanziellen und zeitlichen Aufwand
verbunden.
 Die Verbindung der Rechner untereinander bzw. weltweit über das Internet birgt viele
Sicherheitsrisiken, z. B. Datendiebstahl oder Manipulation und Missbrauch von Rechnern für
gesetzeswidrige Zwecke.
 In Verbindung mit mobilen Endgeräten (Smartphones oder Nettops beispielsweise) und
sozialen Netzwerken gestaltet sich der Schutz der Privatsphäre schwierig, da Sie quasi
komplett überwacht werden können.

Verbesserte Kommunikation
Im firmeneigenen Netzwerk können Neuigkeiten veröffentlicht werden, die jeder berechtigte
Mitarbeiter abrufen kann. Der Einsatz von E-Mail (elektronischer Post) und Gruppentermin-
planung ermöglicht eine gezielte, schnelle und kostengünstige Art der Verbindungsaufnahme zu
spezifischen Adressaten. Ist eine Anbindung an das Internet gegeben, wird damit eine Plattform
zum weltweiten Austausch von Informationen aller Art geschaffen.

134 Schulversion © HERDT-Verlag


Einführung in Computernetze 12

Steigerung der Effektivität im Datenverbund


Unter einem Datenverbund versteht man den möglichen Zugriff auf Datenbestände von jeder
angeschlossenen Station aus. Die Daten können dabei auch räumlich getrennt auf verschiedenen
Rechnern gespeichert sein und logisch so gekoppelt werden, dass sie einem Benutzer als ein
einziger großer Datenpool erscheinen.

Arbeiten mehrere Personen am gleichen Thema, so sind alle Informationen für alle Beteiligten
zugänglich.

Kostensenkung im Funktionsverbund
Funktionsverbund bedeutet, dass verfügbare Ressourcen, wie z. B. Festplattenspeicherkapazität,
für den Einsatz im Netzwerk freigegeben und damit von anderen am Netz Beteiligten genutzt
werden können.

Das beste Beispiel hierfür ist die gemeinsame Nutzung hochwertiger Multifunktionsgeräte
(Drucker, Scanner, Kopierer und Fax in einem Gerät, auf Lasertechnologie basierend), die über
das Netzwerk von allen angeschlossenen Stationen aus verwendet werden können.

Datensicherung
Die Datensicherung ist ein häufig unterschätzter Grund für die Vernetzung. Werden alle Daten nach
einem durchdachten Schema zentral im Netzwerk gespeichert, können sie anhand eines einfachen
Konzepts automatisch gesichert werden. Dies ist deutlich einfacher als eine Datensicherung auf
oder von vielen Einzelplatzrechnern.

Absicherung der Verfügbarkeit


Verfügbarkeitsverbund bedeutet, dass das Netz auch beim Ausfall einzelner Komponenten
arbeitsfähig bleibt. Fällt beispielsweise ein Arbeitsplatzrechner aus, sollte es jederzeit möglich
sein, einen anderen Computer mit den gleichen Programmen einzusetzen. Die Daten sind
anderswo im Netz zentral gespeichert.

Physikalische Komponenten zum Aufbau eines Netzwerks


Soll ein Computernetzwerk aufgebaut werden, sind zunächst einige Anschaffungen und Arbeiten
zu erledigen. Dies beginnt auf der einen Seite mit der Verkabelung und endet auf der anderen
mit der Vorbereitung der einzelnen Rechner. Dazwischen gibt es Geräte, um das Netzwerk zu
strukturieren.

Überblick über wesentliche Komponenten


 Die Übertragungsmedien transportieren die Daten. Bei der leitergebundenen Übertragung
werden Kupfer- bzw. Glasfaserkabel verwendet, bei der leiterungebundenen Übertragung
Funkwellen.
 Die physikalische Topologie beschreibt die Wege, das heißt, wie die Kabel verlegt werden.

© HERDT-Verlag Schulversion 135


12 Einführung in Computernetze

 Über Netzwerkadapter werden die einzelnen Geräte mit dem Übertragungsmedium


verbunden.
 Eine Vielzahl an Geräten dient zur Strukturierung von Netzen und zur Verbindung der Über-
tragungsmedien. Die wichtigsten werden im Folgenden kurz vorgestellt.

Übertragungsgeschwindigkeiten in Computernetzen werden in Bit und nicht in Byte pro Sekunde


angegeben. Die übliche Schreibweise dabei ist bit (bit pro Sekunde, bits per second), z. B. Mbit/s
für Megabit pro Sekunde.

In der Computerwelt beziehen sich die Begriffe Kilo-, Mega-, Giga- usw. auf eine Multiplikation mit
dem Faktor 1024. Das bedeutet dann beispielsweise: 1 Kilobyte = 1.024 Bytes; 1 MB = 1.024 KB
oder 1 GB = 1.024 MB. Das gilt allerdings meist nicht für Festplatten, bei denen nach wie vor der
Faktor 1.000 verwendet wird. So erscheint die Speicherkapazität größer, als sie tatsächlich ist.

12.3 Übertragungsmedien

Wege für den Datentransport


Vergleicht man den elektronischen Datenverkehr mit dem „normalen“ Verkehr, dann entsprechen
diese Medien den Straßen-, Luft- oder Wasserwegen, die zum Transport verwendet werden.

Leitergebundene Übertragung
Leitergebundene Medien werden in Form von Kabeln verlegt. Ein Kabel besteht dabei aus min-
destens einer leitenden Ader bzw. Faser. Mehrere solcher Adern werden durch entsprechende
Isolationsschichten voneinander getrennt. Alle Adern eines Kabels werden von einer gemein-
samen Schutzhülle umgeben: dem Mantel.

Die Übertragung der Informationen erfolgt entweder durch elektrische Impulse (metallische
Leiter) oder durch Lichtimpulse (Glasfaser).

Thin Ethernet
Das veraltete Thin Ethernet nach dem Standard 10Base2 arbeitete mit einer Übertragungs-
geschwindigkeit von 10 Megabit pro Sekunde (Mbit/s). Es verwendete prinzipiell eine Bus-
Topologie, bei der alle Netzwerkgeräte ein gemeinsames Koaxialkabel nutzten (vergleichbar dem
Ihnen bekannten Antennenkabel für Rundfunk/Fernsehen). Dieses Kabel – der Bus – wurde an
jedem Gerät entlanggeführt. In größeren Netzwerken kamen Verteiler zum Einsatz, die mehrere
Busse zu einem größeren Stern zusammenfassten. Verbindungselemente wie Stecker, T-Stücke,
Endwiderstände oder Buchsen trugen die Typenbezeichnung BNC.

Thin-Ethernet-Netzwerke und ebenfalls eingesetzte 10-Mbit/s-Netze mit Twisted-Pair-Kabeln


(10BaseT) dürften heute kaum mehr zu finden sein, zu gering waren die Übertragungsraten.
Zudem ist Gigabit-Netzwerktechnik inzwischen billiger geworden. Der Vollständigkeit halber und
zum besseren Verständnis der historischen Entwicklung seien sie aber an dieser Stelle erwähnt.

136 Schulversion © HERDT-Verlag


Einführung in Computernetze 12

Fast Ethernet
Fast Ethernet bietet mit maximal 100 Megabit pro Sekunde die 10-fache Übertragungsgeschwin-
digkeit. Hierbei wird die Stern-Topologie verwendet, d. h., einzelne Computer sind sternförmig
durch Kabel mit einem zentralen Verteiler verbunden. Der Anschluss erfolgte früher mittels
Kategorie-5-Twisted-Pair-Kabel (TP-Kabel). Heute sind Gigabit-taugliche Cat-5e- oder hoch-
wertigere Kabel nach dem Standard Cat 7 und 7A in Gebrauch.

Gigabit Ethernet
Mit Gigabit Ethernet (1000BaseT) ist es möglich, auf den gleichen Twisted-Pair-Kabeln (TP-Kabeln)
wie bei Fast Ethernet Daten mit 1000 Megabit pro Sekunde zu übertragen.

Erreicht wird dieser Geschwindigkeitszuwachs durch Nutzung aller Adern des Netzwerkkabels
(Fast Ethernet hat nur vier von acht Leitungen genutzt) in beide Richtungen (vollduplexfähig).

Im Folgenden erhalten Sie Informationen über die wichtigsten leitergebundenen Medien:

Kupferkabel mit den Hauptformen:

 Koaxialkabel  Twisted-Pair-Kabel  Glasfaserkabel

Kupferkabel
Es gibt zwei grundsätzliche Arten von Kupferkabeln, die für die Datenübertragung in Computer-
netzen eingesetzt werden können: die inzwischen völlig veralteten Koaxialkabel und die aktuellen
Twisted-Pair-Kabel.

Koaxialkabel
Koaxialkabel stellten lange Zeit die gängigste Form der Netzwerkverkabelung dar. Die folgende
Abbildung skizziert den Aufbau des Kabels:

Koaxialkabel

Ausführungen
Koaxialkabel gab es in Ausführungen mit unterschiedlichen Eigenschaften für verschiedene
Einsatzgebiete. Für die Computervernetzung waren vor allem Kabel von Bedeutung, die den
Spezifikationen RG 8 (Thicknet) und RG 58 (Thinnet, BNC-Kabel) entsprachen. Sie besaßen eine
Impedanz von 50 Ω und boten eine Datenübertragungsrate von 10 Mbit/s. Je nach Typ ließen
sich mit Koaxialkabeln in einem Netzwerkabschnitt zwischen 185 und 500 m Entfernung
überbrücken.

Am bekanntesten dürften die Koaxialkabel der Spezifikation RG 59 sein. Sie werden für den
Anschluss ans Kabelnetz (Rundfunk/Fernsehen) benutzt.

© HERDT-Verlag Schulversion 137


12 Einführung in Computernetze

Twisted-Pair-Kabel (TP)
Twisted-Pair in seiner einfachsten Form besteht aus zwei isolierten Adern, die umeinander
gedreht sind. In einem Kabel können mehrere Adernpaare zusammengefasst werden. Die
einfachste und billigste Form stellt das Telefonkabel dar.

Twisted-Pair-Verkabelung wird heute sehr häufig eingesetzt. Je nach verwendetem Kabel und
dessen Länge sind Distanzen bis 100 m und Übertragungsraten bis 1000 Mbit/s erreichbar. Für
den Einsatz in Computernetzen gibt es verschiedene Arten von Twisted-Pair-Kabeln.

Unshielded Twisted-Pair (UTP)


Unshielded (ungeschirmt) bedeutet, dass die einzelnen
verdrillten Adernpaare keine extra Abschirmung
besitzen.

Shielded Twisted-Pair (STP)


Ungeschirmtes und geschirmtes Twisted-
Shielded (geschirmt) bedeutet, dass jedes Adernpaar
Pair-Kabel
durch einen Mantel abgeschirmt wird. Dadurch sind
STP-Kabel weniger anfällig gegenüber elektrischen
Störeinflüssen als UTP-Kabel. Deshalb können Daten
mit höheren Übertragungsraten und über weitere
Strecken übertragen werden.

Screened
Sowohl UTP- als auch STP-Kabel gibt es in einer S-Version, bei der alle Adernpaare zusätzlich
durch einen Gesamtmetallschirm (Screen) gegen Störstrahlungen von und nach außen abge-
sichert werden. Dieser Gesamtmetallschirm kann entweder aus einem Drahtgeflecht (S) oder
einer Folie (F) oder aus beidem zusammen (SF) bestehen. Die Bezeichnungen für Kabel dieser
Art sind S/STP-, F/STP- oder S/FTP-, F/FTP- oder SF/FTP-Kabel.

Kategorien
TP-Kabel werden in verschiedene Kategorien eingeteilt, die Auskunft über die elektrischen
Eigenschaften der Kabel geben. Bei den meisten Kategorien werden vier verdrillte Adernpaare
verwendet. Für die Computervernetzung sind heutzutage Cat-6/7-Kabel (Kategorie 6/7) mit RJ-
45-Steckern/-Buchsen sowie Übertragungsraten von 1 Gbit/s Standard. 10 Gbit/s wären mit den
Kabeln ebenfalls möglich, erfordern aber u. U. ein Umrüsten der gesamten Technik (Patchfelder,
Switche, Netzwerkdosen, Netzwerkanschlüsse an den Rechnern, Netzwerkkabel etc.), da andere
Stecker und Buchsen statt RJ-45 zum Einsatz kommen müssen. Im Notfall können Sie auch mit
Cat-5-Kabeln ein Gigabit-Netzwerk realisieren.

Verbindungselemente
Für den Anschluss von Twisted-Pair-Kabeln werden
sogenannte RJ-45-Stecker benutzt. Sie ähneln den
RJ-Telefonsteckern, sind jedoch etwas größer und
besitzen acht statt vier Kabelanschlüsse.

138 Schulversion © HERDT-Verlag


Einführung in Computernetze 12

Glasfaserkabel
Glasfaserkabel, oft auch Lichtwellenleiter (LWL)
genannt, bestehen aus einem dünnen Glaszylinder
(Kern oder Core), der von einer konzentrischen
Glasschicht (Cladding) umgeben ist. Das Ganze
wird von einem Schutzschirm ummantelt, der für
Zugfestigkeit und Bruchsicherheit sorgt. Glasfaserkabel

Die Signalübertragung erfolgt in der Regel uni-direktional über Lichtimpulse, d. h., auf einer Faser
wird üblicherweise in eine Richtung gesendet. Für das Senden in die andere Richtung wird eine
zweite Faser verwendet. Daher sind Glasfaserkabel häufig doppeladerig aufgebaut, es gibt aber
auch technische Möglichkeiten für das bidirektionale (in beide Richtungen) Übertragen auf einer
Faser. Die Lichtimpulse werden mittels einer Laser-Diode oder einer Lumineszenz-Diode (LED =
light emitting diode) in den Kern übertragen.

Glasfaserkabel gibt es in den zwei grundsätzlichen Ausführungen Monomode und Multimode.


Die wesentlichen Unterschiede betreffen den Durchmesser des Kerns. Bei einer Monomode-
Faser beträgt er 3,5 bis 10,4 µm, bei einer Multimode-Faser 50 bis 1500 µm. Durch den dünneren
Durchmesser sind mit Monomode-Kabeln höhere Datenübertragungsraten und größere
Distanzen möglich. In Deutschland sind …
 Monomode-Verkabelungen mit 9 µm und
 Multimode-Verkabelungen mit 50 µm möglich.
Beachten Sie bei der Auswahl aktiver optischer Komponenten (beispielsweise Glasfaser-Switche),
dass auch diese für den entsprechenden Kerndurchmesser ausgelegt sind. Sonst müssen Sie mit
unnötigen Dämpfungsverlusten des Lichtsignals rechnen.

Je nach verwendetem Kabel und dessen Länge sind Distanzen bis zu mehreren 100 km und
Übertragungsraten bis zum Terabit-Bereich erreichbar. Für die direkte Arbeitsplatzverkabelung
wird Glasfaser eher selten eingesetzt, beispielsweise an Universitäten. Bei der Verbindung
einzelner Gebäude (Backbone) dagegen ist der Einsatz von Glasfaser heute üblicher Standard.

Leiterungebundene Übertragung
Leiterungebundene Informationsübertragung erfolgt über Funk in unterschiedlichen Frequenz-
bereichen. Prinzipiell brauchen Sie zur Nutzung nur einen geeigneten Netzwerkadapter für Ihren
Rechner (Einbaukarte, USB-Stick etc.). Besonders in mobilen Endgeräten (Notebooks, Smart-
phones, Tablet-PCs etc.) ist WLAN inzwischen Standard.

Die Protokolle, die vom IEEE (Institute of Electrical and Electronics Engineers) für die Standards
der drahtlosen Netzwerke definiert wurden, sind in 802.11 zusammengefasst. Sie definieren
unter anderem die Geschwindigkeiten und Zugriffsverfahren. Die wichtigsten sind:

Standard Spezifikationen
802.11 a max. 54 Mbit/s auf dem 5-GHz-Band (proprietäre Herstellerlösungen bis zu
108 Mbit/s)
802.11 b max. 11 Mbit/s auf dem 2,4-GHz-Band (proprietäre Herstellerlösungen bis zu
44 Mbit/s)

© HERDT-Verlag Schulversion 139


12 Einführung in Computernetze

Standard Spezifikationen
802.11 g max. 54 Mbit/s auf dem 2,4-GHz-Band (proprietäre Herstellerlösungen bis zu
125 Mbit/s)
802.11 n max. 600 Mbit/s auf den 2,4- und 5-GHz-Bändern (Einsatz von MIMO*)
802.11ac Manche Hersteller verwenden als Bezeichnung auch 5G Wifi oder 5G VHT. Auch
wenn die Hersteller eine Geschwindigkeit von 1.300 Mbit/s und schneller
angeben, ist realistisch mit einer Geschwindigkeit von etwa der Hälfte zu
rechnen. Der Rest geht z. B. durch die Verwaltung der Hardware und Fehler-
korrekturen verloren.
802.11ax Der neueste Standard soll die Leistung weiter verbessern und darüber hinaus
energiesparender sein. Der Standard wird auch als WiFi 6 bezeichnet, da es sich
um die 6. Generation der WLAN-Standards handelt.

* Das Verfahren MIMO (Multiple Input Multiple Output) wird zur Nutzung mehrerer Sende- und Empfangs-
antennen für die drahtlose Kommunikation verwendet.

Vorteile dieser Technologie


 Bauliche Maßnahmen innerhalb eines Gebäudes oder zwischen verschiedenen Gebäuden
sind nicht notwendig.
 Speziell dieser Punkt ist wichtig, wenn z. B. der Denkmalschutz verbietet, Veränderungen an
Gebäuden vorzunehmen, oder wenn ein entsprechender Zugriffspunkt schnell installiert
werden muss, z. B. auf Messen oder eine Scannerkasse in Einkaufszentren.
 Die Mobilität der Benutzer steigt. Drahtlos ist theoretisch jeder Punkt auf dem Firmen-
gelände erreichbar.
 Es wird eine hohe Flexibilität erreicht, z. B. wenn immer wieder unterschiedliche Netz-
teilnehmer zu unterschiedlichen Gruppen zusammengefasst werden sollen.

Die Datenübertragung erfolgt im Mikrowellenbereich im sogenannten ISM-Band (Industrial,


Scientific and Medical; diese Abkürzung wird gelegentlich um ein „O“ für Office ergänzt) bei
2,4 GHz bzw. im 5,4-GHz-Band.

Das Betreiben von Funknetzwerken mit geschlossenen Benutzergruppen im ISM-Band ist


gebühren- und genehmigungsfrei.

Nachteile dieser Technologie


 Bei falscher Konfiguration oder nicht ausreichender Absicherung des Funknetzes besteht
eine erhöhte Gefahr, dass sich Unberechtigte im WLAN einbuchen und auf diese Weise quasi
zu einem „Gratis“-Internetzugang kommen.
 Ebenso ist es bei mangelnder Absicherung des drahtlosen Netzwerkes möglich, dass
Unberechtigte sich ins WLAN einbuchen und private Daten oder Geschäftsgeheimnisse
ausspähen und so dem Unternehmen oder dem Besitzer der Daten erheblichen Schaden
zufügen.

140 Schulversion © HERDT-Verlag


Einführung in Computernetze 12

Sicherheitsmechanismen bei Wireless LANs


 Keine Absicherung: Diese Methode sollte in einem WLAN nur gewählt werden, wenn wirk-
lich absolut erwünscht ist, dass jeder, der in Funkreichweite ist, sich in das Netzwerk
anonym einbuchen kann.
 WEP, Wired Equivalency Protocol, ist der älteste Sicherheitsstandard, der für eine
Verschlüsselung der Daten sorgt, wenn sie per Funk übertragen werden. Bei WEP wurden im
Laufe der letzten Jahre gravierende Mängel festgestellt. WEP kann einem Angreifer nicht
lange standhalten, wenn dieser sich die Mühe macht, mit entsprechend geeigneter Software
einen Einbruchsversuch zu starten. Schon seit längerer Zeit gibt es Tools, mit denen WEP in
relativ kurzer Zeit geknackt werden kann. WEP ist besser als gar keine Verschlüsselung, Sie
sollten aber nur darauf zurückgreifen, wenn Sie keine sicheren Methoden zur Verfügung
haben.
 WPA, Wifi Protected Alliance, ist nach dem katastrophal schlechten Abschneiden von WEP
der erste Versuch einer Nachbesserung und behebt die grundlegenden Probleme, denen ein
WEP-gesichertes WLAN zum Opfer fiel. Die Sicherheitsmechanismen konnten jedoch nicht
von Grund auf verworfen und neu konzipiert werden, da WPA auch noch auf bereits ver-
kaufter und somit alter Hardware lauffähig sein musste. Zugunsten dieser Rückwärts-
kompatibilität mussten also einige Kompromisse eingegangen werden.
Heutzutage ist WPA das unterste Niveau einer WLAN-Sicherung, die für Neuanschaffungen
vorausgesetzt werden sollte. Da die Hardwareanforderungen von WPA und dem älterem
WEP gleich sind, sollten Sie keine Ausrüstung mehr kaufen, die keine WLAN-Verschlüsselung
oder lediglich das unsichere WEP-Protokoll beherrscht.
 WPA2 bzw. 802.11i: Der WLAN-Standard 802.11i, der von Herstellern nun auch WPA2
genannt wird, ist die Konsequenz aus den Fehlern, die im WEP gemacht wurden. Hier wurde
in einem öffentlichen Prozess ein Sicherheitsstandard entwickelt, an dem sich viele Experten
beteiligen konnten und bei dem bereits im Einsatz befindliche und bewährte kryptografische
Algorithmen wie der sogenannte AES-Verschlüsselungsalgorithmus verwendet wurden.
WPA2 ist inzwischen Standard auf aktueller Hardware und bietet dafür derzeit ein Optimum
an Sicherheit, was Abhör- und Fälschungssicherheit der gefunkten Daten angeht. Wenn
möglich ersetzen Sie in Ihrem eigenen Interesse ältere nicht WPA2-fähige Hardware.

12.4 Physikalische Topologien

Die Streckenführung der Verkehrswege


Die physikalische Topologie gibt an, auf welchen Wegen die verwendeten Kabel verlegt werden
müssen. Sie hängt wiederum direkt zusammen mit der Art der verwendeten Kabel.

Bus-Topologie
Sie stammt noch aus der Zeit der Koaxialkabelnetzwerke
(BNC) mit ihren T-Stücken und Endwiderständen. Sie wird
hier nur der Vollständigkeit halber erwähnt, spielt heute
aber keine Roll mehr.

Bus-Topologie

© HERDT-Verlag Schulversion 141


12 Einführung in Computernetze

Stern-Topologie
Der Einsatz von Twisted-Pair-Kabeln führt zu einer Stern-
Topologie. Hier wird jede einzelne Station über ein eigenes
Kabel mit einem zentralen Verteiler (dem Switch)
verbunden. Es existiert eine Punkt-zu-Punkt-Verbindung
zwischen dieser Zentrale und jedem angeschlossenen Gerät.

Stern-Topologie
Maschennetz
Maschennetze verfügen über mehrere Verbindungen zwischen den einzelnen Netzknoten. Sinn
dieser Vernetzung ist, beim Ausfall einer Verbindung auf eine andere zurückgreifen zu können.

Deshalb werden Maschennetze vorrangig beim Aufbau von WANs eingesetzt. Das beste Beispiel
hierfür ist das Internet, welches technisch als Maschennetz ausgelegt ist. Eine teilweise Maschen-
netz-Struktur findet sich heutzutage in mittleren und großen Netzwerken in deren Kernnetz-
werkbereich. Damit wird deren Ausfallsicherheit über redundante physikalische Verkabelungs-
strukturen gewährleistet.

12.5 Geräte in Computernetzen

Geräte zur Strukturierung von Netzen


Zum Aufbau eines Computernetzes gehören noch einige Geräte, von denen die wichtigsten im
Folgenden kurz vorgestellt werden. Alle aufgezählten Geräte dienen unter anderem dazu,
einzelne Kabel oder Teilstrecken im Netz zu verbinden. Darüber hinaus erfüllen sie weitere
unterschiedliche Aufgaben.

Repeater
Jedes Übertragungsmedium unterliegt Längenrestriktionen. Nach einer gewissen Entfernung
schwächt sich das übertragene Signal so sehr ab, dass es nicht mehr brauchbar ist. Ein Repeater
nimmt dann das Signal auf, verstärkt es, befreit es von Störungen und sendet es schließlich
weiter. Es handelt sich demnach um einen Signalverstärker, der dazu dient, größere Strecken zu
überwinden.

Da Wände und Decken die Ausbreitung der Funksignale teilweise stark einschränken, werden
besonders in WLAN-Netzen (drahtlosen lokalen Funknetzen) häufig WLAN-Repeater eingesetzt,
um mit deren Hilfe die Reichweite der Signale zu vergrößern.

142 Schulversion © HERDT-Verlag


Einführung in Computernetze 12

Hub
Switche haben Hubs inzwischen komplett vom Markt verdrängt, deshalb soll an dieser Stelle nur
kurz auf das Hauptproblem des Hubs hingewiesen werden. Hubs wurden beispielsweise in
Koaxialkabelnetzwerken (BNC) eingesetzt und hatten mit dem Problem der Kollisionen zu
kämpfen. Aufgrund der logischen Verkabelungsstruktur der BNC-Netzwerke bzw. der „Dumm-
heit“ der Hubs (sie konnten sich nicht merken, welches Endgerät über welchen Port zu erreichen
war) wurden immer alle Datenpakete an alle Adressaten geschickt. Dadurch kam es zu Kollisio-
nen und die Performance des gesamten Netzwerkes wurde durch den überflüssigen Traffic
schlechter. In Zeiten immer größer werdender Netzwerke war das inakzeptabel.

Switch
Ein Switch ist ein Netzwerkverteiler mit einem internen Speicher. In dem merkt sich der Switch
quasi, welche Geräte (Rechner, weitere Netzwerkgeräte wie Switche oder Router) mit welcher
Adresse an welchem Port angeschlossen sind. Die ankommenden Datenpakete werden gezielt an
den jeweiligen Empfänger weitergeleitet. Sendet beispielsweise Rechner A Daten an Rechner B,
weiß der Switch, an welchem Port Rechner B angeschlossen ist, und schaltet die Daten nur an
diesen Anschluss durch. Dadurch entstehen weniger Kollisionen (vgl. Hub).

2 Switche, eingebaut in einen professionellen 19"-Wandschrank

Switches werden mit 4–48 Anschlüssen (Ports) für 100-Mbit- bzw. 1- oder 10-Gbit-Netze
angeboten. Es gibt sie als sogenannte Desktop-Variante und zum Einbau in ein 19"-Rack (letztere
auch in Modulbauweise). Ein 19"-Rack ist ein flexibles Regalgestell mit genau definierten
Abmessungen für den stationären oder transportablen Einsatz und wird vorrangig im IT- und
Tontechnik-Bereich eingesetzt. Dieses Gestell kann in einen Wand- oder Standschrank integriert
sein, letzterer weist in der Regel Laufräder auf und ist somit einfach zu transportieren oder an
einen anderen Stellplatz zu verschieben.

Mit spezialisierten Switches lassen sich auch sogenannte VLANs erstellen. Dazu werden einzelne
Ports zusammengeschaltet, die dann wie ein eigenständiges (Teil-)LAN funktionieren und von den
restlichen Anschlüssen getrennt arbeiten.

Router
Ein Router ist ein Gerät, das getrennte Netzwerke koppeln oder Netzwerke in Subnetze trennen
kann. Diese Kopplung kann eine Verbindung zwischen zwei oder mehr lokalen Netzen oder die
Verbindung zwischen LAN und WAN bzw. WAN und WAN sein. Die wesentliche Funktion ist die
„Vermittlung“, also die Kenntnis der verschiedenen Netze und der Wege zu diesen Netzen.

Router werden häufig eingesetzt, um ein LAN mit einem WAN (z. B. dem Internet) zu verbinden.
Denken Sie z. B. an Ihr Netzwerk zu Hause. Alle Rechner oder mobilen Endgeräte Ihres Netzwerks
(LAN) können parallel im Internet surfen (WAN).

© HERDT-Verlag Schulversion 143


12 Einführung in Computernetze

Netzwerkadapter
Es gibt verschiedene Netzwerkadapterformen. Die lange Zeit
wichtigste war eine Einsteckkarte (NIC für Network Interface
Card). Netzwerkadapter, auch LAN-Adapter genannt, sind
die Schnittstelle zwischen dem Computer und dem Über-
tragungsmedium. Sie bereiten die Daten aus dem Computer
auf und setzen sie in entsprechende Signale für das Über-
tragungsmedium um beziehungsweise umgekehrt.

Auf modernen Computern und Notebooks sind die Chips, die


die Netzwerkfunktionen bereitstellen, häufig bereits auf dem
Motherboard integriert und ein entsprechender RJ-45- Netzkarte mit RJ-45-Anschluss zum
Anschluss findet sich am Gehäuse. Einbau in ein PC-Gehäuse

Jede Netzwerkkarte besitzt eine weltweit eindeutige Identifikationsnummer, die sogenannte


MAC-Adresse, die bei der Herstellung der Karte fest vergeben wird. Die Kommunikation zwischen
Komponenten in LANs erfolgt letztendlich immer über diese MAC-Adresse.

12.6 Merkmale eines Servers


Unterschiede zwischen einem normalen PC und einem Server
Grundsätzlich könnte jeder moderne PC als Server eingesetzt werden. Dazu müsste nur ein ent-
sprechendes Server-Betriebssystem installiert werden. Eine hohe Leistungsfähigkeit von Hard-
und Software ist allerdings Voraussetzung, denn es greifen auf den Server viele Clients zu. Fällt
ein Client aus, ist davon normalerweise nur ein einzelner Benutzer betroffen. Fällt dagegen ein
Server aus, betrifft dies viele Clients, was mit erheblichen Kosten verbunden sein kann. Bedingt
durch die Anforderungen ist der Einsatz einfacher PCs als Server eher unüblich und nicht mehr
vertretbar. Heutige Server laufen üblicherweise auf spezieller, für den Dauerbetrieb ausgelegter
Hardware. Ein immer wichtiger werdendes Thema ist die Virtualisierung. Damit ist es möglich:
 den Auslastungsgrad der Server zu erhöhen,
 eine feinere Anpassung des Servers an die geforderten Dienste vorzunehmen (die
Ressourcen des Servers können besser aufgeteilt oder zusammengefasst werden)
 und somit Kosten zu reduzieren.

Dementsprechend sind Server besser ausgestattet als „normale“ PCs. Dies betrifft vor allem die
folgenden Punkte:
 Leistungsfähigkeit: z. B. mehrere schnelle Prozessoren und hohe Kapazität von Arbeits-
speicher und Festplattensystem
 Skalierbarkeit: Die flexible Erweiterbarkeit oder Aufstockung einzelner Komponenten ist
problemlos möglich.
 Ausfallsicherheit: Eine defekte Komponente (z. B. Festplatte) darf nicht das gesamte System
beeinträchtigen; ein Server muss rund um die Uhr verfügbar sein.

Der wichtigste Begriff bezüglich der Ausfallsicherheit ist das Stichwort „Hochverfügbarkeit“.
Hier werden oft Prozentwerte angegeben, die beschreiben, wie hoch die Ausfallzeiten sind,
umgerechnet auf ein Jahr. Zur Ausfallsicherung können dabei zwei grundlegend verschiedene
Ansätze verfolgt werden:

144 Schulversion © HERDT-Verlag


Einführung in Computernetze 12

 Redundanz im Server selbst: Möglichst alle Subsysteme (z. B. Festplatten, Controller, Netz-
teile) werden mehrfach eingebaut. „Hot-plugable“ heißt, dass diese Komponenten im
laufenden Betrieb auswechselbar sind.
 Redundanz der Server: Hier kann mit einer Server-Spiegelung (sogenannten Clustern)
gearbeitet werden. Beim Ausfall eines Servers übernimmt ein anderer im Cluster dessen
Aufgaben.

Zum Schutz gegen Stromausfall gehört eine unterbrechungsfreie Stromversorgung (USV) zu


beiden oben aufgeführten Redundanzlösungen.

12.7 Software zum Zugriff auf Computernetze


Netzwerk-Betriebssysteme
Im Zusammenhang mit Computernetzen tauchen immer wieder Begriffe auf, die in mehr oder
minder engem Zusammenhang mit den verwendeten Betriebssystemen stehen.

Allgemein werden Betriebssysteme als OS (Operating System) bezeichnet. Damit lassen sich dann
Computernetze aufbauen, die hinsichtlich ihrer Verwaltungsstruktur sehr unterschiedlich sein
können. Im Folgenden erhalten Sie grundlegende Informationen über:
 die Merkmale eines Client-Betriebssystems
 die Merkmale eines Server-Betriebssystems
 die grundlegenden Dienste, die ein Server zur Verfügung stellt
 die beiden Verwaltungsstrukturen, nach denen Computernetze unterschieden werden
 den Begriff TCO, mit dem versucht wird, die Gesamtkosten eines Computernetzes zu erfassen.

Client-Betriebssysteme
Ein Client ist ein Rechner in einem Netzwerk, an dem einzelne Benutzer arbeiten und von dem aus
sie auf Server zugreifen. Unter einem Client-Betriebssystem wird ein OS verstanden, in dem die
wesentlichen Komponenten zum Zugriff auf Computernetze (und damit auch auf Server) bereits
enthalten sind. Jedes moderne Betriebssystem für PCs ist mit dieser Funktionalität ausgestattet.

Als Betriebssysteme auf Clients werden am häufigsten verschiedene Versionen von Microsoft
Windows eingesetzt.

Server-Betriebssysteme
Ein Server ist ein Computer, der Dienste für Clients im Netz zur Verfügung stellt. Direkt am Server
wird normalerweise nur zu Wartungszwecken gearbeitet. Ein Server-Betriebssystem ist ein OS,
das für den Zugriff mehrerer Clients optimiert wurde. Darüber hinaus unterstützen Server-
Betriebssysteme weitere Aufgaben, die für Computernetze heute unumgänglich sind. Diese
häufig als „Core Services“ bezeichneten Dienste sind:
 File Service: Dateien im Netz zur Verfügung stellen
 Print Service: Drucker im Netz zur Verfügung stellen

© HERDT-Verlag Schulversion 145


12 Einführung in Computernetze

 Authentification: Benutzer eindeutig identifizieren (Anmeldung mit Benutzername und


Kennwort)
 Directory Service: netzwerkspezifische Informationen (z. B. Benutzer) zentral verwalten
 Backup Service: regelmäßige Sicherung aller Benutzerdaten
Als Betriebssysteme auf Servern werden sehr häufig verschiedene Versionen von Microsoft
Servern eingesetzt, daneben aber auch Linux und UNIX.

Directory Service
Der Begriff Directory Service bezeichnet die Möglichkeit, die Vielzahl der Einzelkomponenten
eines Netzwerks übersichtlich und skalierbar (flexibel erweiterbar) zu organisieren. In erster Linie
geht es dabei um die Verwaltung der Benutzer und der Ressourcen (Speicherplatz, Drucker,
Applikationen etc.), d. h. um die Frage: Wer darf was an welcher Stelle im Netz?

Der Begriff Directory Service hat nichts mit dem Begriff Directory im Sinne von Ordnern bzw.
Verzeichnissen bei PC-Betriebssystemen zu tun.

Die folgende Abbildung zeigt einige Objekte eines Directory Services am Beispiel von Microsoft
Windows Server.

Active Directory unter Microsoft Windows Server

146 Schulversion © HERDT-Verlag


Einführung in Computernetze 12

Grundsätzliche Arten von Computernetzen


Unabhängig davon, welche Betriebssysteme Sie einsetzen, können Computernetze hinsichtlich
ihrer Verwaltung in drei Gruppen eingeteilt werden:

Peer-to-Peer-Netze – Arbeitsgruppen
Sie benötigen für ein Peer-to-Peer-Netz nicht unbedingt spezielle Server-Betriebssysteme, weil es
sich mit Client-Betriebssystemen aufbauen lässt. Vom Prinzip her sind dabei alle Rechner gleich-
berechtigt. Sie können Ressourcen für andere zur Verfügung stellen (als Server dienen) und als
Client auf freigegebene Ressourcen anderer Rechner zugreifen.

Der größte Nachteil solcher Netze ist das Fehlen einer zentralen Verwaltung. Das heißt, jeder einzelne
Benutzer ist lokal eigenverantwortlich für die Sicherheit und Freigabe von Ressourcen. Soll eine
Absicherung über lokale Benutzerkonten (Anmeldung am Rechner mit Benutzernamen und Kenn-
wort) erfolgen, müssen diese Konten für jeden Benutzer auf jedem einzelnen Rechner angelegt und
verwaltet werden. Ab einer bestimmten Größe des Netzes wird der Verwaltungsaufwand damit
unüberschaubar.

Ein weiterer großer Nachteil ist, dass die freigegebenen Ressourcen natürlich nur zur Verfügung
stehen, wenn der Computer, auf dem die Ressourcen freigegeben sind, eingeschaltet ist.

Als Fazit lässt sich festhalten, dass Peer-to-Peer eine kostengünstige Alternative für kleine Netze
mit zehn oder weniger Stationen ist, wenn kein größerer Wert auf Sicherheit gelegt wird.

Der Begriff Peer-to-Peer wird auch in sogenannten Filesharing-Netzwerken verwendet, die dazu
dienen, Dateien effizient unter den beteiligten Computern zu tauschen. Der Begriff Peer-to-Peer
bezieht sich jedoch auf die Organisationsstruktur der Tauschsoftware und ist nicht mit der
Organisationsstruktur von Betriebssystemen und deren Netzwerkfunktionen verwandt.

Client-Server-Netze
Überschreitet ein Netzwerk eine bestimmte Größe, wird es nötig, eine gewisse Zentralisierung
durch Server zu erreichen. Mit Servern werden Ressourcen zentral zur Verfügung gestellt. Dabei
wird dann auch die Benutzerverwaltung auf die entsprechenden Directory Services umgestellt
und zentralisiert.

Ein Benutzer meldet sich nur noch einmalig (mit Benutzername und Kennwort) am Netzwerk an
und erhält somit Zugriff auf alle Ressourcen, die für ihn zur Verfügung gestellt wurden, egal
welcher Computer diese Ressourcen beherbergt.

Die Administration ist von zentraler Stelle steuerbar. Der Administrator legt einmal einen neuen
Benutzer mit den entsprechenden Rechten auf dem Server an. Über entsprechende Werkzeuge
kann der Administrator alle Computer im Netz verwalten oder benötigte Software und Updates
auf allen Computern installieren.

© HERDT-Verlag Schulversion 147


12 Einführung in Computernetze

3-Schichten-Modell (3-Tier-Modell)
Aktuell häufiger anzutreffen in Computernetzwerken ist das 3-Schichten-Modell als grundlegende
Organisationsstruktur. Dabei werden die einzelnen Schichten logisch voneinander getrennt,
somit ist das gesamte Netzwerk besser skalierbar. Sie haben eine Daten-, eine Logik- und eine
Präsentationsschicht. Ein Beispiel für dieses Modell sind die Produkte der Firma Citrix, wo neben
dem interagierenden Benutzer auf der einen Schicht (Präsentation) auf einer weiteren Schicht ein
Citrix-Server läuft, der Funktionen bereitstellt (Logik). Auf einer dritten Schicht schließlich läuft
ein Datenbankserver (Daten).

TCO – Total Cost of Ownership


In Bezug auf Computernetze stellt sich oft die Frage, was denn angeschafft werden soll und was
das alles kostet. Hier fällt, wie schon bei der Entscheidung für eine bestimmte Software, der
Begriff TCO (Total Cost of Ownership). Mit ihm wird versucht, die Gesamtkosten eines Com-
puternetzes zu erfassen.

Neben den Anschaffungskosten für Hard- und Software entstehen auch Kosten für den laufenden
Betrieb, durch den Ausfall und die Instandsetzung von Rechnern sowie die Schulung des Perso-
nals. Betriebs- und Schulungskosten lassen sich deutlich reduzieren, wenn die Systeme stabil
laufen und möglichst intuitiv eingesetzt werden können.

12.8 Übung

Netzwerke verstehen
Level Zeit 15 Minuten

Übungsinhalte  Merkmale von LAN und VLAN


 Geschwindigkeit in Netzwerken
 Kilo-, Mega-, Giga-Byte umrechnen
 Switch und Router kennen
Übungsdatei Uebung12.pdf
Ergebnisdatei Uebung12-E.pdf

148 Schulversion © HERDT-Verlag


Kommunikation in Computernetzen 13

13
13. Kommunikation in Computernetzen

13.1 Das OSI-Modell


Geschichte des OSI-Modells
Das ISO/OSI-Modell (auch OSI-Modell) wurde 1984 von der International Standards Organisation
(ISO, einem Zusammenschluss von Normungsausschüssen) entwickelt, um die im Zuge der Ent-
wicklung des ARPANet gemachten Erfahrungen in einem normierenden, theoretischen Modell
zur Darstellung von Netzwerkkommunikation zu gebrauchen. Da das Modell keiner bestimmten
Protokollfamilie zugeordnet ist, wird es als Open-System-Interaktion-Modell (OSI-Modell)
bezeichnet.

Beschreibung des OSI-Modells


Es umfasst sieben Schichten, die von Informationen auf dem Weg zwischen zwei Systemen
zweimal durchlaufen werden müssen. Dies lässt sich am einfachsten mittels eines Modells aus
der menschlichen Kommunikation darstellen.

Im Folgenden wird sehr detailliert auf die einzelnen Komponenten des OSI-Modells eingegangen.
Je besser Sie verstehen, was auf den einzelnen Schichten passiert, umso leichter fällt es Ihnen,
in der Praxis mögliche Ursachen für Probleme in Netzen zu identifizieren. Auch wenn es sich bei
dem OSI-Modell um einen theoretischen Ansatz handelt, sollten Sie es so weit verinnerlichen,
dass Sie beliebige Protokolle und Dienste sofort ihren Schichten zuordnen können.

Beispielszenario zum OSI-Modell


Angenommen, ein Mitarbeiter A einer Firma befindet sich im Außendienst. Er muss einem
Kunden Informationen zu einem Produkt geben, die sich in einer Unterlage auf seinem Schreib-
tisch befinden. Also ruft er seinen Kollegen B in der Hauptstelle an, der ihm die Informationen
vorliest. Anschließend kann Mitarbeiter A mit dem Kundengespräch fortfahren.

Was aber sind die einzelnen Schritte, die nötig sind, damit der Außendienstmitarbeiter die
Information erhält?

© HERDT-Verlag Schulversion 149


13 Kommunikation in Computernetzen

Physikalische Schicht
Erst einmal muss A auf ein Medium zugreifen, das auch B zur Verfügung steht. In diesem Fall ist
dies das Telefon. Es werden also zuerst auf physikalischer Ebene kompatible Medien benötigt.

Verbindungsschicht
Nun muss A die richtige Telefonnummer wählen, um im Telefonnetz mit dem korrekten Haus-
anschluss von B verbunden zu werden. Auch auf der Verbindungsschicht muss also eine korrekte
Adressierung stattfinden.

Netzwerkschicht
Innerhalb des Firmennetzes wird über die Telefonanlage eine logische Unterteilung vorgenommen.
Diese dient nur der logischen Strukturierung des Hausnetzes. So kann z. B. mit der 1xx die erste
Etage und mit der 2xx die zweite Etage gekennzeichnet werden. Auf der Netzwerkschicht muss
entsprechend der richtige Anschluss angesprochen werden.

Transportschicht
Die Informationen von A müssen für B in verständlicher Form ankommen. Dazu müssen beide
dieselbe Sprache verstehen und es müssen bestimmte Konventionen eingehalten werden.
Spricht A zu leise oder zu schnell oder knackt es in der Leitung, muss B nachfragen, was gemeint
war. Auf der Transportschicht wird also sichergestellt, dass alle Informationen korrekt ankommen
und von beiden Seiten in derselben Art und Weise verarbeitet werden können.

Sitzungsschicht
Wenn A zu sprechen beginnt, ohne dass B den Hörer abgenommen hat, wird die Kommunikation
nicht erfolgreich sein. Erst wenn Kommunikationsaufbau und -kontrolle durch eine Begrüßung
stattgefunden haben, kann A eine Handlungsanweisung an B weiterleiten. Auch muss sich A bei B
identifizieren. B wird schließlich nicht jedem beliebigen Anrufer Zugriff auf Informationen von As
Schreibtisch gewähren. Auf der Sitzungsschicht werden also Regeln des Zugriffs und der
Kommunikationsaufbau überprüft.

Präsentationsschicht
A kann in diesem Beispiel die Informationen nicht selbst lesen; und auch wenn B die Information
liest, kann A sie nicht verwenden. Erst indem B die Information laut wiedergibt, kann sie A
erreichen. Die Information muss also für den Transport über das Telefon aufbereitet werden. Auf
der Präsentationsschicht erfolgt quasi eine Umleitung von der Verarbeitungsform „Lesen“, die
nicht netzwerktauglich ist, zur Verarbeitungsform „Sprechen“, die für den Transport geeignet ist.

Anwendungsschicht
Und damit schließlich der eigentliche Zugriff auf die Informationen erfolgen kann, muss B wissen,
in welcher Unterlage die benötigten Daten stehen, er muss seine Lesebrille holen, die Unterlage
öffnen usw. Erst wenn dies erfolgt ist, kann er mit dem eigentlichen Lesen der Informationen
beginnen. Auf der Anwendungsschicht wird also das Umfeld für die Verarbeitungsform „Lesen“
vorbereitet.

150 Schulversion © HERDT-Verlag


Kommunikation in Computernetzen 13

Anwendung
Die Aktion des Lesens als solche ist nicht mehr Bestandteil des Kommunikationsmodells, sie
könnte auch ohne Telefonat stattfinden und spielt deswegen hier keine Rolle. Entsprechend wird
sie auch nicht im Modell berücksichtigt.

Übersicht der Schichten des OSI-Modells


In der Tabelle finden Sie die Schichten dieses Beispiels der Nomenklatur des OSI-Modells
gegenübergestellt:

Beispiel OSI-Modell (Deutsch) OSI-Modell (Englisch)


Schicht 7 Informationsauswahl Anwendungsschicht Application Layer
Schicht 6 Lesen/Sprechen Darstellungsschicht Presentation Layer
Schicht 5 Begrüßung/Identifizierung Kommunikationsschicht, Session Layer
Sitzungsschicht
Schicht 4 Verständniskontrolle Transportschicht Transport Layer
Schicht 3 Interne Durchwahl Netzwerkschicht, Network Layer
Vermittlungsschicht
Schicht 2 Anschlussnummer Datensicherungsschicht, Data Link Layer
Verbindungsschicht
Schicht 1 Auswahl des Mediums Physikalische Schicht, Physical Layer
Bitübertragungsschicht

Lernen Sie auch die englischen Begriffe, denn in der Fachliteratur werden auf Deutsch manchmal
andere Übersetzungen der Begriffe verwendet. Diesen sind aber fast immer in Klammern die
englischen Begriffe nachgestellt.

Funktionsprinzip des OSI-Referenz-Modells


Die Funktionsweise des OSI-Referenz-Modells entspricht der Kommunikation zwischen den
einzelnen OSI-Schichten.

 Über eine definierte Schnittstelle, den sogenannten Service Access Point (SAP), stellt jede
Schicht der nächsthöheren eine Gruppe von Methoden (Dienste bzw. Primitive) zur Ver-
fügung. Diese Dienste ermöglichen den Zugriff auf die Datenstrukturen.
 Mit steigender Schicht nimmt die Komplexität der Aufgaben zu. Die Funktionalität jeder
Schicht baut auf die Standards der darunterliegenden auf.
 Bei Datenverkehr agieren die einzelnen Schichten der beteiligten Netzknoten so, als ob sie
mit der jeweiligen Schicht des anderen beteiligten Netzwerkknotens kommunizieren würden
(horizontale Kommunikation über eine logische Verbindung). Tatsächlich aber durchlaufen
alle Daten immer alle Schichten (vertikale Kommunikation): beim Sender von Schicht 7
abwärts nach Schicht 1 auf das Übertragungsmedium und beim Empfänger dann vom
Übertragungsmedium zur Schicht 1 aufwärts zu Schicht 7.
 Es interagieren immer nur Schichten, die direkt übereinander liegen, d. h., einzelne
Schichten können nicht übersprungen werden.

© HERDT-Verlag Schulversion 151


13 Kommunikation in Computernetzen

Die zwischen den Schichten weitergereichten


Daten werden als Protokolldateneinheiten
(PDU für Protocol Data Unit) bezeichnet. Sie
setzen sich zusammen aus einem Programm-
kopf (Header), in dem sich Protokoll-
Kontroll-Informationen (PCI für Protocol
Control Information) der jeweiligen Schicht
befinden, sowie den eigentlichen Nutzdaten
Kommunikation zwischen den Schichten
(SDU für Service Data Unit).

Beim Weiterreichen stellt also jede einzelne Schicht des Senders den erhaltenen Daten einen
Header voran, der von der entsprechenden Schicht auf der Seite des Empfängers interpretiert
und wieder entfernt wird.

Schichtenmodell

Vorteile des Schichtenkonzepts


Obwohl das Schichtenmodell sehr abstrakt ist, ergeben sich daraus für Hersteller und Entwickler
etliche Vorteile.

Unabhängigkeit der einzelnen Schichten voneinander


Die eigentliche Umsetzung des Inhalts einer Schicht ist unerheblich. Wichtig sind nur die Dienste,
die an den Schnittstellen zur Verfügung stehen. So können einzelne Schichten unabhängig von-
einander, z. B. von verschiedenen Institutionen, entwickelt werden.

Flexibilität
Änderungen an einzelnen Schichten wirken sich nicht auf darüber oder darunter liegende
Schichten aus, solange die definierten Schnittstellen erhalten bleiben.

Physikalische Trennung der Schichten


Jede Schicht kann in der für ihre Aufgabenstellung günstigsten Technik entwickelt werden,
als Hard- oder Softwarelösung.

Vereinfachte Standardisierung
Die genaue Festlegung der Funktion einer Schicht erlaubt es, Standardschichten zu entwickeln.

152 Schulversion © HERDT-Verlag


Kommunikation in Computernetzen 13

Einfache Wartung und Implementation


Die Entwicklung komplexer Systeme wird durch die Modularität mit klar definierten Schnittstellen
vereinfacht.

Nachteil
Der Nachteil dieses Schichtenkonzepts besteht in dem immensen Aufwand an Steuerinformationen
(jede Schicht schreibt ihren eigenen Header), wodurch die Übertragung der Daten länger dauert.

13.2 Die sieben Schichten des OSI-Modells


1. Bitübertragungsschicht (Physical Layer)
Die Bitübertragungsschicht definiert alles, was für den direkten Übertrag und
Empfang einzelner Bits auf bzw. von einem Medium notwendig ist.

Im mechanischen Teil werden die Verbindungselemente (Stecker, Art des Über-


tragungsmediums) spezifiziert.

Der elektrische Bereich definiert z. B. die zu verwendenden Spannungspegel,


den Widerstand der Kabel, die Zeitdauer von Signalelementen und Spannungs-
wechseln, die zu verwendenden Codierungsverfahren (wie ein Bit dargestellt wird).
Aus diesen Spezifikationen ergibt sich die maximal erreichbare Daten-
übertragungsrate.

Die funktionalen Spezifikationen befassen sich mit der Funktion von Verbindungen, wie z. B.
der Unterscheidung Datenleitung – Steuerungsleitung, der Taktgebung oder der Pin-Belegung.

Die verfahrenstechnischen Spezifikationen definieren z. B. den Übertragungsmodus (Halb-, Voll-


duplex) oder wie lange welcher Spannungspegel anliegen muss, um eine 1 bzw. 0 zu definieren.

2. Sicherungs-/Datensicherungsschicht (Data Link Layer)


Die Sicherungsschicht bereitet die Daten der Vermittlungsschicht in sogenannte
Frames (Datenrahmen definierter Größe) auf und reicht sie an die Bitübertragungs-
schicht weiter. Dazu werden größere Datenpakete ggf. in kleinere aufgelöst. Das
Zerlegen von Frames in einzelne Bits für die Bitübertragungsschicht bzw. das
Zusammensetzen einzelner Bits zu Frames (aus Schicht 1) gehört ebenfalls zu den
Aufgaben der Sicherungsschicht.

Ein einfacher Frame besteht aus einem sogenannten Header (den Adressen von
Empfänger und Sender sowie Steuerinformationen), den eigentlichen Daten sowie
einem angehängten Trailer (FCS für Frame Check Sequence), um zu erkennen, ob
die Daten fehlerfrei übertragen wurden. Für die Berechnung der Frame Checksum
wird in der Regel der CRC-Algorithmus (Cyclic Redundancy Check) verwendet.

© HERDT-Verlag Schulversion 153


13 Kommunikation in Computernetzen

Anhand der FCS kann der Empfänger beurteilen, ob die Daten während des Transports verändert
wurden. Protokolle der Sicherungsschicht stellen durch Fehlerüberwachungsmethoden sicher,
dass beschädigte oder bei der Übertragung verloren gegangene Rahmen erneut gesendet
werden.

Letzte Aufgabe der Sicherungsschicht ist die Flusssteuerung. Hierbei geht es darum, einen
schnellen Sender daran zu hindern, einen langsamen Empfänger mit Daten zu überschwemmen.

Fehlerüberwachung und Flusssteuerung werden häufig so realisiert, dass der Sender wartet, bis
er eine Bestätigung des gesendeten Rahmens erhält. Nicht bestätigte Rahmen werden erneut
gesendet.

Ergänzende Lerninhalte: Zugriffsverfahren.pdf


Hier werden Zugriffsverfahren wie CSMA/CD betrachtet.

3. Vermittlungs-/Netzwerkschicht (Network Layer)


Die Vermittlungsschicht legt den optimalen Verbindungsweg im Netz fest. Sie
realisiert eine Ende-zu-Ende-Verbindung zwischen den beiden kommunizierenden
Stationen über verschiedene Netzwerkknoten hinweg.

Hierzu gehören die Adressierung und Adressinterpretation, die Festlegung des


Übertragungswegs (Routing) und die Kopplung verschiedener Transportnetze.

Wenn Router die ankommenden Pakete nicht in der gewünschten Größe über-
tragen können, erfolgt in dieser Schicht eine weitere Fragmentierung der
Datenpakete.

4. Transportschicht (Transport Layer)


Die Transportschicht realisiert eine „feste“ Verbindung zwischen zwei Prozessen
und liefert den darüber liegenden Schichten einen transparenten Datenkanal.

Die Transportschicht vermittelt zwischen den anwendungsorientierten (7.–5.) und


den transportorientierten Schichten (3.–1.) und bereitet die Daten entsprechend auf.
Da verschiedene Protokolle unterschiedlich große Datenpakete für die Datenüber-
mittlung benötigen, werden die Daten in der Transportschicht in entsprechende
Pakete unterteilt und durchnummeriert. Der Empfang eines Pakets wird bestätigt.

Hier erfolgt eine weitere Flusskontrolle und Fehlerbehandlung. Es wird überprüft, ob die Pakete
vollständig, korrekt, in der richtigen Reihenfolge und ohne Duplikate ankommen.

154 Schulversion © HERDT-Verlag


Kommunikation in Computernetzen 13

5. Kommunikationssteuerungs-/Sitzungsschicht (Session Layer)


Die Kommunikationssteuerungsschicht steuert die sogenannten Sitzungen. Sie ist
zuständig für den Aufbau, die Verwendung und den Abbau von Verbindungen
zwischen Netzwerkressourcen. Hierzu gehören die Namensauflösung von Netz-
werkressourcen sowie das Aushandeln von Flusskontroll-Parametern (wer wann
wie lange wie viele Daten auf einmal senden darf usw.). Sie stellt einen universalen
Transportservice (Prozess-zu-Prozess-Verbindung) dar.

Zur Sitzungsverwaltung gehört vor allem auch die Synchronisation. Bei kurzfristigen
Netzausfällen muss es möglich sein, fehlende Daten erneut zu übertragen. Um dies
zu gewährleisten, werden entsprechende Prüfpunkte in die Daten eingefügt. Reißt
der Datenstrom ab, müssen nur die Daten nach dem letzten erhaltenen Prüfpunkt
erneut übertragen werden.

6. Darstellungs-/Präsentationsschicht (Presentation Layer)


Die Darstellungsschicht konvertiert die Daten in ein allgemeines, vereinbartes
und für die beteiligten Computer verständliches Standardformat (ASN.1 Abstract
Syntax Notation One). Das ist nötig, da sich die interne Darstellung von Daten
(z. B. in den Zeichencodes ASCII, ANSI, EBCDIC) je nach eingesetztem System
unterscheidet.

Weitere Aufgaben dieser Schicht sind die Protokollumwandlung, die Datenverschlüs-


selung sowie die Datenkomprimierung zur Reduzierung der zu übertragenden Daten-
menge.

Der sogenannte Redirector, der Ein-/Ausgabeoperationen zwischen lokalen Festplatten und


Netzwerkressourcen verteilt, ist ebenfalls hier angesiedelt.

7. Anwendungsschicht (Application Layer)


Die Anwendungsschicht stellt die Schnittstelle zwischen Anwendungen (Pro-
gramme und Benutzer) und Netzwerkdiensten dar. Hier sind Netzwerkzugang,
Flusskontrolle und Fehlerbehebung sowie Anwendungsdienste (Services)
angesiedelt, z. B. Dateitransfer, Datenbankzugriffe, E-Mail oder Freigaben.

Mehrfache Kontrolle
Verschiedene Mechanismen, wie z. B. Fehler- oder Flusskontrolle sind mehrfach auf verschiede-
nen Ebenen aufgeführt. Jede Schicht regelt dabei „ihren“ Teil der Kontrolle. Erst wenn diese
Schicht nicht mehr weiterkommt, wird eine entsprechende Meldung nach „oben“ zur nächsten
Schicht gegeben. Dort setzen dann andere Mechanismen an, um das Problem zu beseitigen.

© HERDT-Verlag Schulversion 155


13 Kommunikation in Computernetzen

Merksätze
Folgende zwei Sätze erleichtern es, sich die Reihenfolge der Schichten anhand der englischen
Bezeichnung einzuprägen:

Von Schicht 1 bis 7: Please Do Not Throw Sausage Pizza Away


Von Schicht 7 bis 1: All People Seem To Need Data Processing

Überblick über die Aufgaben


So weit zur reinen Darstellung des OSI-Modells. Die folgende Tabelle gibt eine kurze
Zusammenfassung:

Nr. OSI-Schicht (Bedeutung) Aufgaben


7 Application (Anwendung) Anwendungen
6 Presentation (Darstellung) Datenformate, Darstellungs-, Verschlüsselungsinformationen
5 Session (Sitzung) Verbindungen, Flusskontrolle (Kommunikationsparameter),
Datenfluss-Prüfpunkte
4 Transport (Transport) Pakete, Flusskontrolle, Fehlerbehandlung und
Empfangsbestätigung
3 Network (Vermittlung) Adressinformationen, Routing
2 Data Link Frames, Fehlerbehandlung
(Sicherungsschicht)
1 Physical (Bitübertragung) Definition physikalischer Werte

Schichtengruppen
Häufig werden die Schichten in zwei Gruppen zusammengefasst, da sie von generell unterschied-
lichem Charakter geprägt sind.

Schichten-Gruppe Nr. OSI-Schicht Beispiele


Anwendungsnahe Systemspezifische Netzwerk-
Protokolle Dienste Protokolle
Anwendungs- 7 Application HTTP/HTTPS, FTP,
schichten SMTP, LDAP, NCP
6 Presentation
5 Session SMB, WinSocket
Netzwerkschichten 4 Transport TCP, UDP, SPX
3 Network IP, IPsec, ICMP
2 Data Link MAC, Ethernet,
Token-Ring
1 Physical

156 Schulversion © HERDT-Verlag


Kommunikation in Computernetzen 13

Einerseits gibt es die Schichten 1 bis 4, die sich mit den netzwerkspezifischen Aufgaben der Kom-
munikation befassen. Und andererseits gibt es die Schichten 5 bis 7, in denen betriebssystem-
spezifische Dienste, Datenaufbereitungen und Anwendungsunterstützungen bereitgestellt
werden.

Unterschichten der Datensicherungsschicht


In der Praxis hat sich gezeigt, dass es einer weiteren theoretischen Unterteilung der Daten-
sicherungsschicht (Data Link Layer) bedarf, da sie auf zwei sehr unterschiedliche Weisen
Funktionen übernimmt.

Unterschicht der Aufgaben


Datensicherungs-
schicht
Logical Link SAPs
Control (LLC) Die LLC stellt der MAC-Unterschicht SAPs zur Verfügung, sodass die Daten
von der MAC-Unterschicht an die korrekten Dienste in Schicht 3 gesendet
werden können (z. B. wird ein ICMP-Paket anders verarbeitet als ein ARP-
Paket).
Trennung von Netz und Protokoll
Die LLC ermöglicht es, die Protokolle der höheren Schichten unabhängig von
der Art des Netzwerkes zu betreiben. So kann z. B. IP durch IPX ersetzt
werden oder Ethernet nach IEEE-Standard 802.3 durch Token-Ring, ohne
dass dies sich jeweils beeinflusst.
Flusskontrolle
Kontrolliert die Geschwindigkeit, mit der die oberen Schichten Daten
erreichen. So wird vermieden, dass vom Netzwerk Daten einen Host
überfluten.
Sequenzierung der Frames
In der LLC werden die Frames, die vom Netzwerkadapter empfangen
werden, wieder in die richtige Reihenfolge gebracht.
Media Access Physikalische Adressierung
Control (MAC) Über die MAC-Adresse wird jeder Netzwerkadapter weltweit eindeutig
identifiziert. Die MAC-Adresse setzt sich aus der Herstellerkennung (OUI =
Organizationally Unique Identifier) und der herstellerspezifischen Adresse
zusammen. Beide sind jeweils sechsstellige, hexadezimale Werte.
Wenn ein Frame auf der physikalischen Schicht empfangen wird, überprüft die
MAC-Schicht, ob er für den Netzwerkadapter bestimmt ist, und leitet ggf. die
Verarbeitung ein.
Framing
Die Pakete, die von der Netzwerkschicht verarbeitet werden, werden als Frames
über das Netzwerk transportiert. Hierzu verwaltet sie Header und Trailer und
führt eine Fehlerprüfung durch.

© HERDT-Verlag Schulversion 157


13 Kommunikation in Computernetzen

Das OSI-Modell in der Praxis


Mit dem OSI-Modell wurde eine Definition von Kommunikationsmerkmalen geschaffen, die von
Gremien (wie etwa IEEE) genutzt werden kann, um Standards zu schaffen, die sich auf einzelne
oder mehrere Schichten des Modells beziehen.

Aufgrund der Allgemeingültigkeit des OSI-Modells ist es zugleich außerordentlich komplex. Wenn
in einzelnen Bereichen diese Komplexität nicht gebraucht wird, kommen häufig andere, simplere
Modelle zum Einsatz, die sich auf – für das Einsatzgebiet – wesentliche Faktoren der Netzwerk-
theorie beschränken. Als Alternative zum OSI-Modell wird häufig das TCP/IP-Modell verwendet.
Hier werden die OSI-Schichten 1 und 2 zur Netzzugangsschicht und die OSI-Schichten 5–7 zur An-
wendungsschicht zusammengefasst. Die Transportschicht des OSI-Modells korrespondiert mit
der Transportschicht des TCP/IP-Modells und die Vermittlungs-/Netzwerkschicht des OSI-Modells
mit der Internetschicht des TCP/IP-Modells (vgl. Abschnitt 13.6, „Einordnung“, Tabelle).

Da sie aber stets auf das OSI-Modell zurückgehen müssen und diesem nicht widersprechen dürfen,
sollen sie nur als Detailergänzungen für bestimmte Anwendungen verstanden werden. Sie können
niemals das OSI-Modell ersetzen, denn erst eine genaue Kenntnis vom OSI-Modell erlaubt eine
exakte Bewertung von Problemen oder Lösungsansätzen in der Netzwerkkommunikation.

13.3 Protokolle
Allgemein betrachtet bezeichnen Protokolle Kommunikationsregeln, die angeben, wie sich die
einzelnen Kommunikationspartner zu verhalten haben. Bezogen auf Computernetze handelt es
sich um die Sprache, in der die Kommunikation erfolgt.

Protokoll-Stack
Ein einzelnes Protokoll kümmert sich immer nur um eine Teilaufgabe im Rahmen der Kommuni-
kation. Deshalb werden mehrere Protokolle zu Protokollsammlungen oder Protokollfamilien, den
sogenannten Protokoll-Stacks, zusammengefasst. Die wichtigsten Einzel-Protokolle werden dann
stellvertretend zur Bezeichnung des gesamten Protokoll-Stapels benutzt.

Kommunikation zwischen Netzwerkkomponenten funktioniert nur dann, wenn sie denselben


Protokoll-Stack benutzen oder wenn Geräte eingesetzt werden, die zwischen verschiedenen Stacks
vermitteln können. Spätestens bei der Installation eines Netzwerks bzw. bei der Konfiguration eines
Netzwerkadapters müssen Protokoll-Stacks angegeben und bei Bedarf konfiguriert werden.

Im Folgenden werden die gängigsten Protokoll-Stacks aufgezählt und TCP/IP als das wichtigste
wird etwas ausführlicher erläutert.

158 Schulversion © HERDT-Verlag


Kommunikation in Computernetzen 13

13.4 DHCP im Netzwerk einsetzen und verstehen


Was DHCP ist
DHCP ist die Abkürzung für Dynamic Host Configuration Protocol. Ein DHCP-Server hat eine
gewisse Anzahl von IP-Adressen (vgl. nachfolgende Erläuterungen) in seinem Vorrat, die er an
Computer automatisch verteilen kann. Dazu müssen die Geräte so konfiguriert sein, dass sie eine
IP-Adresse von einem DHCP-Server annehmen. Die meisten Betriebssysteme, auch Windows, sind
standardmäßig so eingestellt. Ist die Netzwerkkarte eines Rechners ordnungsgemäß installiert und
haben Sie Ihren Computer an das Netzwerk mit einem DHCP-Server angeschlossen, ist der
Computer bereits mit einer dynamischen IP-Adresse versorgt. Hier müssen Sie keine besonderen
Einstellungen vornehmen, da Windows und viele andere Betriebssysteme DHCP unterstützen.

TCP/IP einsetzen
TCP/IP (vgl. Abschnitt 13.5) wird benötigt, um Verbindungen ins Internet aufzubauen und um Ihre
Computer miteinander zu vernetzen. Das Netzwerkprotokoll zur Verbindung Ihrer Rechner im
Unternehmen zu einem LAN und das Netzwerkprotokoll ins Internet sind ein und dasselbe,
TCP/IP genannt (Transport Control Protocol/ Internet Protocol).

TCP/IP läuft auf allen Netzwerkgeräten Ihrer Computer: auf Switches, auf Routern und Firewalls.
TCP/IP unterteilt den ganzen Datenverkehr in einzelne kleine Stücke, Pakete genannt, die von
Gerät zu Gerät weitergegeben werden. Aus diesem Grund spricht man häufig auch von TCP/IP-
Paketen. Alle Daten, die Sie ins Internet übertragen, und alle Daten, die Sie intern von einem
Computer zu einem anderen schicken, werden in TCP/IP-Pakete unterteilt und an den
Empfängercomputer geschickt.

Eine weitere Aufgabe des TCP/IP-Protokolls ist das Zuweisen einer sogenannten IP-Adresse (vgl.
Abschnitt 13.5). Jedes Gerät in einem Netzwerk und im Internet erhält eine IP-Adresse. Die IP-
Adresse können Sie sich wie eine Hausnummer vorstellen, über die einzelne TCP/IP-Pakete den
Empfänger identifizieren. In jedem Netzwerk erhalten jedes Gerät, jeder Computer, jede Firewall
und jeder Router zur eindeutigen Identifizierung eine eindeutige IP-Adresse.

Adressen im Netzwerk zuteilen

© HERDT-Verlag Schulversion 159


13 Kommunikation in Computernetzen

Erster Blick auf IP-Adressen


Eine IP-Adresse (vgl. Abschnitt 13.5) besteht aus vier maximal dreistelligen Zahlengruppen, die
durch Punkte getrennt sind. Die einzelnen Bereiche dürfen jeweils eine Zahl von 0 bis 254 ein-
nehmen, wobei der erste Bereich und der vierte größer 0 sein müssen, z. B. 192.168.172.100. Es
muss nicht jeder Bereich aus drei Stellen bestehen, es reicht auch eine Stelle, beispielsweise ist
10.0.0.1 eine gültige IP-Adresse.

Da IP-Adressen auch im Internet zur öffentlichen Kommunikation verwendet werden, wurden


bestimmte IP-Adressbereiche vorgesehen, die in Privatnetzwerken (vgl. Abschnitt 13.5) ein-
gesetzt werden dürfen, während andere für die Kommunikation im Internet vorgesehen sind.

Nachdem Sie einem Gerät eine gültige IP-Adresse zugeteilt haben, kann das TCP/IP-Protokoll in
einzelne Pakete unterteilte Daten zu diesem Gerät schicken. Ohne eine IP-Adresse kann ein
Computer nicht im Netzwerk kommunizieren. Sie können sich das wie eine Paketbestellung ohne
Angabe einer Lieferadresse vorstellen. Eine IP-Adresse ist nichts anderes als die Adresse eines
Routers oder einer Firewall.

Subnetzmaske verstehen
Zu jeder IP-Adresse gehört eine sogenannte Subnetzmaske (engl.: Subnet Mask, vgl. Abschnitt
13.5). Die Subnetzmaske ist wie die IP-Adresse in vier Zahlengruppen unterteilt, die durch Punkte
getrennt sind und maximal drei Stellen haben dürfen. Wenn Sie sich die IP-Adresse als Haus-
nummer vorstellen, ist die Subnetzmaske die Straße in Ihrer Adresse.

Die Subnetzmaske ist die Adresse Ihres gesamten Netzwerks. Alle Computer und alle Netzwerk-
geräte in einem internen Netzwerk müssen exakt die gleiche Subnetzmaske haben. IP-Adresse
und Subnetzmaske hängen immer zusammen.

Die korrekte IP-Konfiguration eines Computers besteht immer aus der IP-Adresse mit der dazu-
gehörigen Netzwerkadresse. Die Netzwerkadresse fasst mehrere Computer zu einem Netzwerk
zusammen, und alle Computer können durch das TCP/IP-Protokoll feststellen, welche Geräte zum
internen Netzwerk gehören. Insgesamt gibt es für Privathaushalte und Unternehmen nur drei
Subnetzmasken (A-, B-, C-Klasse, vgl. Abschnitt 13.5), die verwendet werden.

In Privathaushalten wird meistens die C-Klasse (255.255.255.0) verwendet, in Unternehmen


meistens die B-Klasse (255.255.0.0).

Eine richtige IP-Adresse besteht immer aus zwei Bereichen, aus der eigentlichen IP-Adresse, zum
Beispiel 10.0.0.1, und der dazugehörigen Subnetzmaske, zum Beispiel 255.255.255.0. Sie müssen
bei der Kombination von IP-Adresse und der dazugehörigen Subnetzmaske Folgendes beachten,
damit die IP-Adresse gültig ist:

 Alle Geräte in Ihrem internen Netzwerk, die miteinander kommunizieren sollen, müssen die
gleiche Subnetzmaske haben. In komplizierten Netzwerken können Geräte wie Router
getrennte Netzwerke in verschiedenen Subnetzen miteinander verbinden.
 Die Bereiche der Subnetzmaske, die mit 255 gefüllt sind – bei der C-Klasse (255.255.255.0) die
ersten drei -, müssen bei allen Computern im Netzwerk und allen Netzwerkgeräten identisch
sein. Nur die letzte Zahl der IP-Adressen darf sich unterscheiden.

160 Schulversion © HERDT-Verlag


Kommunikation in Computernetzen 13

Wenn Sie zum Beispiel für den ersten Rechner die IP-Adresse 10.0.0.1 sowie die Subnetzmaske
255.255.255.0 festlegen, können alle anderen PCs und Ihr DSL-Router nur IP-Adressen
zwischen 10.0.0.2 und 10.0.0.254 einnehmen. Ihr Netzwerk kann somit maximal 254 Geräte
umfassen. Wenn Sie in Ihrem Netzwerk eine Subnetzmaske von 255.255.0.0 wählen, dürfen
sich die IP-Adressen in den letzten beiden Ziffern unterscheiden, entsprechend dem
vorherigen Beispiel von 10.0.0.1 bis 10.0.254.254. Insgesamt haben Sie so die Möglichkeit,
über 65.000 Geräte in Ihrem Netzwerk zu betreiben.

Für Privathaushalte und viele Unternehmen reicht die C-Klasse aus. Wenn Sie sich an die richtige
Normierung halten, sind die Subnetzmasken streng mit den privaten IP-Bereichen verbunden. Es
besteht allerdings keine Notwendigkeit, sich an diese strenge Richtlinie zu halten, auch Firmen
folgen ihr nicht immer. Wichtig ist jedoch die Einhaltung der privaten IP-Adressbereiche. Erfah-
rungsgemäß ist der Bereich 10.0.0.1 bis 10.0.0.254 mit der Subnetzmaske 255.255.255.0 für
Privathaushalte der beliebteste Adressbereich.

Wenn Sie eine IP-Adresse vergeben oder überprüfen wollen, ob die IP-Adresse richtig gewählt ist,
sollten Sie sich an die folgende Checkliste halten. Erst wenn die IP-Adressierung in Ihrem internen
Netzwerk korrekt vorgenommen wurde, kann Ihr Router oder Ihre Firewall unterscheiden,
welche TCP/IP-Pakete ins Internet sollen und welche im internen Netzwerk bleiben. Alle Netz-
werke überall auf der Welt halten sich an diese Regeln. Erst dadurch können die vielen Millionen
Router die Pakete unterscheiden und entsprechend verschicken.

Checkliste für richtige IP-Adressierung


 Besteht die Adresse aus vier Zahlengruppen (weniger ist nicht erlaubt)?
 Sind diese Zahlengruppen durch einen Punkt „.“ getrennt?
 Sind die erste und letzte Ziffer keine 0?
 Ist die Zahl in jeder Zahlengruppe eine Ziffer zwischen 0 und 254?
 Liegt die IP-Adresse in den privaten Bereichen 10.0.0.1 bis 10.254.254.254 oder 172.16.0.1
bis 172.31.254.254 oder 192.168.0.1 bis 192.168.254.254?
 Haben alle Geräte in Ihrem internen Netzwerk die gleiche Subnetzmaske?
 Die Bereiche der Subnetzmaske, die mit 255 gefüllt sind, bei der C-Klasse (255.255.255.0)
die ersten drei, müssen bei allen Computern im Netzwerk und allen Netzwerkgeräten gleich
sein. Nur die letzte Zahl der IP-Adressen muss sich unterscheiden.
 Hat jedes Gerät in Ihrem Netzwerk eine einzigartige IP-Adresse? Es darf keine zwei
identischen IP-Adressen geben.

© HERDT-Verlag Schulversion 161


13 Kommunikation in Computernetzen

Beispiel einer Hausvernetzung mit dem Internet

13.5 TCP/IP (Transmission Control Protocol/


Internet Protocol)
Die Protokollfamilie Transmission Control Protocol/Internet Protocol hat sich heute als Standard
durchgesetzt. Jedes modernere Betriebssystem unterstützt diese Protokollsammlung, und die
meisten Netze arbeiten damit. Internetverkehr läuft immer mit diesem Protokoll-Stapel.

Einordnung
TCP/IP geht von einem vierschichtigen Architekturmodell aus, das sich in Einklang mit dem OSI-
Referenz-Modell bringen lässt:

Schicht TCP/IP OSI Schicht


Application Layer 7
Anwendungsschicht
4 Presentation Layer 6
(http, ftp, smtp, pop3 ...)
Session Layer 5
3 Transportschicht (TCP) Transport Layer 4
2 Internetschicht (IP) Network Layer 3

Netzwerk- oder Data Link Layer 2


1
Linkschicht Physical Layer 1

162 Schulversion © HERDT-Verlag


Kommunikation in Computernetzen 13

IP-Adressierung (IPv4/IPv6)
IPv4-Adressen sind 32 Bit lange Binärzahlen (4 Byte), die zur besseren Lesbarkeit im sogenannten
„Dotted-Decimal-Format“ angegeben werden: vier durch einen Punkt getrennte Dezimalzahlen
(Oktette = Bytes), wie z. B. 193.96.1.200. Mit 32 Bit können knapp 4,3 Milliarden IP-Adressen
dargestellt werden. Der mit IPv4 zur Verfügung stehende Adressraum reicht jedoch nicht mehr
aus. Mit den 128 Bit Adresslänge von IPv6 stehen 340 Sextillionen = 3,4·1038 verschiedene
Adressen zur Verfügung, das entspricht 667 Billiarden IPv6-Adressen pro Quadratmillimeter
Erdoberfläche.

Gegenwärtig ist im europäischen Raum aber immer noch das alte IP-Protokoll Version 4 das
vorherrschende. Eine Vorreiterrolle bezüglich IPv6 hat China übernommen. Gezwungen durch
seine immense Bevölkerungszahl hat China seine Marktchancen bezüglich Entwicklung und
Einsatz von IPv6 erkannt. Der größte Teil der Hard- und Software ist heutzutage IPv6-fähig.

Bei Verwendung von TCP/IP muss jedem Netzwerkadapter innerhalb eines Netzwerkverbunds
eine eindeutige IP-Adresse zugewiesen werden. Dadurch werden den physikalischen Netzwerk-
adapter-Adressen (MAC-Adressen) logische IP-Adressen zugeordnet. Für Rechner, die direkt mit
dem Internet verbunden sind, heißt das, dass deren IP-Adressen weltweit eindeutig sind.

Vergleich IP-Adresse – Telefonnummer


Netze setzen sich meistens aus mehreren Segmenten zusammen. Entsprechend besteht eine
Telefonnummer aus einer Vorwahl (für das Segment) und einer Teilnehmernummer. Führen Sie
ein Ortsgespräch, müssen Sie die Vorwahl nicht angeben und eine (ortsübergreifende)
Vermittlungsstelle ist nicht erforderlich.

Eine IP-Adresse ist ähnlich aufgebaut und besteht aus den folgenden zwei Teilen, wobei die
Abkürzung ID für „Identifikation“ steht:
 Die Netzwerk-ID im vorderen linken Teil entspricht der Vorwahl und gibt das entsprechende
IP-Subnetz an.
 Die Host-ID im hinteren rechten Teil kennzeichnet einen einzelnen Netzwerkadapter und
entspricht der Teilnehmernummer im Ortsnetz.

Entsprechend können Rechner im selben Subnetz direkt miteinander kommunizieren. Kommu-


nikation zwischen Subnetzen erfordert eine Vermittlungsstelle, einen Router (Standardgateway),
der bei der IP-Konfiguration anzugeben ist.

Um zu erkennen, wo die Netzwerk-ID endet und die Host-ID beginnt, muss zusätzlich zur IP-Adresse
zwingend eine sogenannte Subnet Mask angegeben werden.

Subnet Mask (Subnetzmaske)


Eine Subnet Mask ist ebenfalls ein 32-stelliges Bitmuster, das (von links nach rechts) Teile der
IP-Adresse „maskiert“, um den Übergang zwischen Netz-ID und Host-ID zu kennzeichnen. Binär
betrachtet besteht eine Subnetzmaske aus einer Folge von Einsen, die ab einer bestimmten Stelle
umschlägt in eine Folge von Nullen. Dieser Umschlagpunkt kennzeichnet in der IP-Adresse das
Ende der Netzwerk-ID. Die Schreibweise erfolgt dabei ebenfalls im „Dotted-Decimal-Format“,
was die folgenden drei Beispiele zeigen:

© HERDT-Verlag Schulversion 163


13 Kommunikation in Computernetzen

Beispiel 1 Beispiel 2 Beispiel 3


IP-Adresse 120.96.1.200 172.96.1.200 193.96.1.200
Subnet Mask 255.0.0.0 255.255.0.0 255.255.255.0
Netz-ID 120.0.0.0 172.96.0.0 191.96.1.0
Host-ID 96.1.200 1.200 200

Zur korrekten und vollständigen Angabe einer Rechneradresse gehört neben der IP-Adresse auch
die Subnet Mask, da Netz-ID und Host-ID nur mit beiden Angaben voneinander getrennt werden
können. Dafür hat sich eine weitere Schreibweise eingebürgert, die zunächst die Netz-ID angibt,
gefolgt von einem Schrägstrich mit der Anzahl der gesetzten Bits in der Subnetzmaske. Zum
Beispiel entspricht die Angabe 193.96.1.0/24 den Informationen Netz-ID 193.96.1.0 mit Subnetz-
maske 255.255.255.0.

IP-Adressklassen
Internetanschlüsse werden durch ihre IP-Adresse weltweit eindeutig identifiziert. Die Eindeutig-
keit wird durch zentrale Vergabestellen gesichert, bei denen IP-Adressen beantragt werden
müssen. Die zentrale Behörde heißt InterNIC (Internet Network Information Center). In Deutsch-
land ist die zuständige Stelle das DENIC (Deutsches Network Information Center).

Diese Stellen vergeben jedoch keine einzelnen Adressen, sondern nur ganze Adressgruppen, die
dann von einzelnen Providern an ihre Kunden weitergegeben werden. Die Anbieter können
jeweils eine Anzahl mehrerer IP-Adressen verlangen. Deshalb wurden IP-Adressen in verschie-
dene Adressklassen aufgeteilt. Für die Adressierung von Rechnern in der üblichen Form sind die
Klassen A, B und C vorgesehen. Ferner gibt es noch die Klassen D und E, auf die hier aber nicht
weiter eingegangen werden soll.

Class Netzwerk-ID Subnet Mask Anzahl Netzwerke Anzahl Netzwerkknoten


A 0 bis 126 255.0.0.0 126 16.777.216 (224)
B 128.0 bis 191.255 255.255.0.0 16.384 65.536 (216)
C 192.0.0 bis 223.255.255 255.255.255.0 2.097.152 256 (28)

Adressen, die mit 127 beginnen, dürfen nicht vergeben werden, da sie für spezielle interne
Funktionen vorgesehen sind.

Private IP-Netze
Für die Einrichtung privater IP-Netze (mit „privat“ ist hier 'nicht öffentlich von außen zugänglich'
gemeint), wurde aus den aufgezeigten Netzklassen je ein Bereich ausgeschlossen. Adressen in
diesen drei Bereichen werden nicht als gültige Internetadressen vergeben und von Routern im
Internet generell auch nicht weitergeleitet. Dadurch sind diese Adressen prädestiniert für den
Einsatz in einem privaten oder Firmennetzwerk (LAN). Es handelt sich um die offiziellen Bereiche:

 10.0.0.0 bis 10.255.255.255; entspricht 1 x Class A mit ca. 16,8 Millionen Hosts
 172.16.0.0 bis 172.31.255.255; entspricht 16 x Class B mit je ca. 65.500 Hosts
 192.168.0.0 bis 192.168.255.255; entspricht 256 x Class C mit je maximal 254 Hosts

164 Schulversion © HERDT-Verlag


Kommunikation in Computernetzen 13

Verwenden Sie am besten die Zehneradressen von 10.0.0.1 bis 10.0.0.x. Diese Adressen sind
leicht zu merken und übersichtlich.

Domain Name Service (DNS)


Der gesamte Internetverkehr benutzt TCP/IP. Dennoch geben Sie beim Surfen nicht die IP-Adresse
ein, sondern Adressen, die in der Regel mit www beginnen. Ermöglicht wird dies durch einen
Dienst namens DNS (Domain Name Service), den spezielle Internetserver zur Verfügung stellen.
DNS ist vergleichbar mit einem automatischen Telefonbuch für IP-Adressen und erlaubt es, statt
der unhandlichen numerischen IP-Adressen einen Computer mit einem sogenannten Host-
Namen anzusprechen. Ein Beispiel für die Zuordnung ist der Name www.herdt.com, der zur IP-
Adresse 195.243.78.74 gehört.

Aufgelöst werden diese Namen von rechts nach links. Rechts steht die Bezeichnung einer soge-
nannten Top-Level-Domain, z. B. com für kommerzielle Organisationen oder ein zweistelliges
Kürzel für Länder, z. B. de für Deutschland oder fr für Frankreich. Je durch einen Punkt getrennt
folgen ein oder mehrere Domain-Namen, z. B. herdt für eine Second-Level-Domain. Der letzte
Eintrag (links) entspricht einem Host-Namen.

Ebenso wie IP-Adressen müssen Domain-Namen eindeutig sein, beantragt und genehmigt werden.

TCP/IP in der Zukunft


Die Subnet Mask anstelle von Adressklassen und die privaten Adressbereiche wurden erforder-
lich, weil sich die Zahl der Netzwerkknoten im Internet deutlich stärker erhöht hat als jemals
angenommen. Die neue Version des Internet Protocols (IPv6) wird sich in absehbarer Zeit weiter
ausbreiten. Darüber hinaus sind unter anderem Verbesserungen vorgesehen, die das heute recht
einfache Fälschen und Verschleiern von Absenderadressen unterbinden. So dürfte sich das
unerkannte Hacken und Verbreiten von Viren oder unerwünschter E-Mail im Internet besser
verhindern lassen.

Veraltete Protokolle
Folgende Protokolle sind veraltet, wurden durch TCP/IP ersetzt bzw. spielen heute keine Rolle
mehr:

 NetBEUI (NetBIOS Extended User Interface) war die Standardprotokollfamilie von Windows
for Workgroups (WfW 3.11) bis Windows NT 4.0. Die Unterstützung des Protokolls kann
unter Windows XP noch nachträglich installiert werden, unter Windows Vista und Windows
7 allerdings nicht mehr (für Windows 8 ist Ähnliches zu erwarten). Inzwischen läuft NetBIOS
über TCP/IP.
 IPX/SPX (Internetwork Packet Exchange/Sequenced Packet Exchange) war die Standard-
protokollfamilie von Novell NetWare und wurde inzwischen von TCP/IP abgelöst. Microsoft
hatte unter dem Namen NWLink eine eigene Version von IPX/SPX entwickelt, die aus
Windows-Netzen heraus den Zugriff auf NetWare-Netze ermöglichte und ebenfalls durch
TCP/IP ersetzt wurde.
 Apple/LocalTalk: Für die Vernetzung von Apple-Macintosh-Rechnern entwarf der Hersteller
Apple 1983 LocalTalk. Inzwischen benutzt Apple ebenfalls nur noch TCP/IP.

Router müssen deshalb heute nur IPv4/v6 routen.

© HERDT-Verlag Schulversion 165


13 Kommunikation in Computernetzen

13.6 Übung

Netzwerke verstehen
Level Zeit 15 Minuten

Übungsinhalte  OSI-Modell kennen


 Wissen, was DHCP und Subnetzmaske ist
Übungsdatei Uebung13.pdf
Ergebnisdatei Uebung13-E.pdf

166 Schulversion © HERDT-Verlag


Netzwerke und Netzwerkdienste 14

14
14. Netzwerke und Netzwerkdienste

14.1 Telekommunikation in öffentlichen Netzen

Entwicklungsgeschichte der Telekommunikation


Als Telekommunikation wird jeglicher Informationsaustausch über größere Distanzen bezeich-
net, der auf der Verwendung von Übertragungstechniken und Nachrichtennetzen basiert.

Die Entwicklung der Telekommunikation war ein Meilenstein auf dem Weg zur modernen
Industriegesellschaft:
 Die ältesten Formen zur Kommunikation über größere Entfernungen beruhten auf dem
Einsatz von Kurieren, Brieftauben sowie Rauch- oder Feuerzeichen.
 Mitte des 19. Jahrhunderts führten genauere Erkenntnisse über die Wirkungsweise von
Magnetismus und Elektrizität zur Entwicklung eines Systems, mit dem kurze oder lange
Stromstöße übermittelt werden konnten. Daraus entstanden der Schreibtelegraf des
Amerikaners Samuel Morse und das nach ihm benannte Morse-Alphabet. Kurz darauf
wurden erste Kabelverbindungen zwischen Nordamerika und Europa geschaffen.
 1876 stellte Alexander Graham Bell das erste Telefon vor. Noch im selben Jahrzehnt wurden
die ersten kommerziellen Telefonzentralen in den USA eingerichtet.
 Mit der Entdeckung elektromagnetischer Wellen war der Weg zum Funk nicht mehr weit.
Die ersten drahtlosen Telegrafenverbindungen über den Nordatlantik wurden 1901 ein-
gerichtet. 1906 fanden die ersten Rundfunkübertragungen (Radio) in den USA statt.
 Ende der 20er-Jahre war es dann möglich, zwischen Europa und den USA zu telefonieren.
Es dauerte keine zehn Jahre, bis die verfügbaren Wellenbereiche in Bänder und Kanäle
aufgeteilt werden mussten, um sicherzustellen, dass sich einzelne Funkübertragungen nicht
gegenseitig störten.
 Anfang der 30er-Jahre entstand das Fernsehen. Die Olympischen Spiele in Berlin 1936
wurden über das Fernsehen ausgestrahlt. Ab 1950 wurden Fernsehgeräte serienmäßig
produziert. Das Farbfernsehen wurde in den USA 1954 und in Deutschland 1967 eingeführt.
 Seit Anfang der 60er-Jahre werden zur Übertragung auch Satelliten eingesetzt.
 1983 wurde in der BRD begonnen, von analogen auf digitale Übertragungstechniken um-
zustellen. Damit waren unter anderem die Voraussetzungen für ISDN geschaffen, und es
wurde möglich, einzelne Dienste wie Sprach-, Bild- und Datenübertragung zu multimedialen
Systemen zusammenzufassen.

© HERDT-Verlag Schulversion 167


14 Netzwerke und Netzwerkdienste

 Seit 1990 finden mobile Telekommunikationsmittel immer weitere Verbreitung. Das Mobil-
telefon (Handy) ist inzwischen praktisch überall einsetzbar und bietet immer mehr
Funktionen, die weit über das Führen von Telefongesprächen hinausgehen.
 Seit Mitte bis Ende der 90er-Jahre steigt die Zahl an breitbandigen Anschlüssen rapide.
Kabel, Satellit, Funknetze und DSL-Techniken bringen Daten mit dem Vielfachen der
Geschwindigkeit eines ISDN-Anschlusses zum Endkunden. Auch Mobilfunkstandards wie
4G (LTE) und 5G werden immer mehr für die Anbindung von Endgeräten an das Internet
genutzt.
 Um die Jahrtausendwende etwa hat der Siegeszug der Smartphones begonnen, die quasi
Handy und Laptop in einem Gerät vereinen und immer leistungsfähiger werden.

Nachrichtennetze
Telekommunikation erfolgt über Nachrichtennetze. Diese Netze müssen sehr groß und gut
ausgebaut sein, was sehr viel Geld kostet. Bezüglich solcher Netze lassen sich interessante Fragen
stellen, z. B.:
 Welche Daten werden in derartigen Netzen übertragen?
 Wer nutzt solche Netze?
 Wie lassen sich Nachrichtennetze einteilen?
Die Frage, welche Art von Daten in solchen Netzen übertragen werden, lässt sich einfach beant-
worten: Durch die Digitalisierung der Daten erfolgt eine Trennung zwischen Übertragungsmedien
und der Art der übertragenen Daten. Das Netzwerk bemerkt nicht, welche Art von Daten es
transportiert. Solange es möglich ist, jedes übertragene Informationspaket eindeutig wieder-
zuerkennen, ist es möglich, beliebige Daten zu übertragen. Über die meisten großen physikali-
schen Netze (z. B. Übersee-Kabel) werden alle Arten von Daten übertragen. Hier wird nur die
Frage nach Übertragungskapazitäten gestellt, d. h., wie viele Informationseinheiten pro Zeit-
einheit übermittelt werden.

Je kleiner die angebundenen Netze werden, desto spezieller wird die Art der übertragenen
Informationen. Am Ende dieser Kette ist oft auch keine Digitalisierung mehr vorhanden. Denken Sie
an ein einzelnes Gebäude: Hier gibt es den Anschluss ans öffentliche Netz, vielleicht ein kleines LAN,
die Verkabelung für die Haussprechanlage etc.; alles ist bestenfalls lose miteinander verbunden.
In den kommenden Jahren werden diese vereinzelten Strukturen zusammenwachsen (Stichwort:
Konvergenz).

Wer nutzt solche Netze? Das ist sehr unterschiedlich. Normalerweise wird nur ein Teil eines
Netzes gemietet, eine bestimmte Bandbreite. Wofür dieser Teil des Netzes genutzt wird,
bestimmt dann der Mieter. Er kann es zur gemeinsamen öffentlichen Nutzung zur Verfügung
stellen oder weitervermieten (z. B. Telefon oder Internet) oder den Zugang einschränken. Es ist
also möglich, Bandbreiten zur exklusiven Nutzung und/oder für exklusiven Zugriff zu mieten. Aus
dem Gesagten lässt sich eine Definition von öffentlichen Nachrichtennetzen und damit die
Abgrenzung zu anderen (z. B. privaten) Nachrichtennetzen gut ableiten.

Definition: Öffentliches Netz


Unter einem öffentlichen Netz wird eine verbundene Struktur aus Übertragungsmedien (Kabel-,
Funk- und Satellitenverbindungen) verstanden, die (theoretisch) für jeden zugänglich ist. Sie
benötigen nur einen Anschluss sowie die entsprechenden Geräte und müssen für die Nutzung
Gebühren zahlen.

168 Schulversion © HERDT-Verlag


Netzwerke und Netzwerkdienste 14

Definition: Unternehmensnetzwerk
Ein Unternehmensnetzwerk ist eine verbundene Struktur aus Übertragungsmedien, die einem
Unternehmen zur exklusiven, d. h. ausschließlichen Nutzung zur Verfügung steht.

Im Fall eines LANs versteht sich das von selbst. Sollen allerdings verschiedene Standorte mit-
einander verbunden werden, greifen Unternehmen in der Regel auf die vorhandene Kommuni-
kationsinfrastruktur zurück und mieten sich in ein bestehendes Netz ein. Welche Daten sie dann
dort übertragen, liegt in ihrem Ermessen.

Dabei kann es sich auch um unternehmensinterne Telefonate handeln.

Auf den verwendeten Übertragungsmedien kann dabei durchaus auch öffentliche Kommunika-
tion stattfinden, allerdings wird durch entsprechende Mechanismen sichergestellt, dass die
angemieteten Bandbreiten nur vom jeweiligen Mieter genutzt werden können.

14.2 Zugang zu Netzen

Komponenten des Netzzugangs


Die Grafik gibt einen Überblick über die Themen des folgenden Abschnitts:

 Die Last Mile (letzte Meile) verbindet


Haushalte mit dem öffentlichen Telefon-
netz. Auch Computerkommunikation nutzt
diese Verbindung.
Als Last Mile wird die Strecke zwischen
dem Hausanschluss und dem Vermitt-
lungsknoten zum Datennetz bezeichnet.
Eigentümer dieser Verbindungen ist
in Deutschland meist die Deutsche
Telekom AG. Kommunikationsinfrastruktur

 Auf der Last Mile werden die unterschiedlichen Übertragungsverfahren analog, ISDN, DSL
oder Funktechnologien (Schicht 2) eingesetzt.
 Das Internet-Protokoll arbeitet auf OSI-Schicht 3 und kann die Dienste von Schicht 2 nutzen.
 Ein Internet Service Provider (ISP) vermittelt den Zugang zum Internet.
 Standleitungen verbinden zwei Punkte fest miteinander. Handelt es sich dabei um eigene
Leitungen, können auch eigene Übertragungsverfahren eingesetzt werden.

Grundvoraussetzung zur Nutzung eines bestimmten Netzes ist immer der Zugang. Im Folgenden
wird der Zugang zu Kommunikationsnetzen für den Haus- und Heimbereich betrachtet. Der Über-
gangspunkt ist hier meist der Telefonanschluss. Kabel- oder Satellitenanschlüsse werden aus-
geklammert, da oft nur Empfang möglich ist, während für ein „Zurücksenden“ von Daten zum
Kabelanschluss bzw. Satelliten ein hoher finanzieller und technischer Aufwand betrieben werden
muss.

© HERDT-Verlag Schulversion 169


14 Netzwerke und Netzwerkdienste

Last Mile
Die Technologie der Last Mile muss nicht dieselbe sein, die danach im eigentlichen WAN zum
Einsatz kommt. Auf der letzten Meile können Daten auf unterschiedliche Art übertragen werden:
analog oder digital.

Digitaler Netzzugang mit DSL


DSL (Digital Subscriber Line) ist der Oberbegriff für verschiedene Übertragungsverfahren, die auf
einfachen Kupferkabeln hohe Übertragungsraten ermöglichen.

Das Ziel dabei sind die vorhandenen Hausanschlüsse. Es geht darum, die bereits existierende
Telefonverkabelung so zu nutzen, dass darüber Daten mit hoher Geschwindigkeit übertragen
werden, ohne dabei den „normalen“ analogen oder digitalen Telefonverkehr zu beeinträchtigen.

Neben dem schnellen Internetzugang wird der DSL-Anschluss aber auch für Voice-over-IP-Techniken
(VoIP) genutzt, bei denen über die DSL-Leitung zusätzlich telefoniert werden kann oder das Senden/
Empfangen von Faxen möglich ist.

Die wichtigsten Randbedingungen für die erreichbaren Übertragungsraten bei DSL sind der
jeweilige Leitungsdurchmesser und die Entfernung zwischen Teilnehmer und Vermittlungsstelle.

ADSL für den Hausanschluss


Wenn Sie sich heute einen DSL-
Anschluss besorgen, steckt dahinter in
der Regel das Übertragungsverfahren 
ADSL (Asymmetric Digital Subscriber 
Line). Die Bezeichnung „asymmetrisch“
deutet an, dass diese Technologie mit
unterschiedlichen Übertragungsraten
für Upstream  (Senderichtung) und
Downstream  (Empfangsrichtung)
arbeitet.

Angebote hierzu werden von allen bekannten Telekommunikationsunternehmen (z. B. 1 & 1,


Telekom, Vodafone, O 2 ) angeboten.

Bezeichnung Maximalwert Download Maximalwert Upload


ADSL 6 Mbit/s 0,5 Mbit/s
ADSL2+ 24 Mbit/s 1 Mbit/s
VDSL 50 Mbit/s 10 Mbit/s
VDSL2 200 Mbit/s und mehr 200 Mbit/s und mehr

Lassen Sie sich von diesen Zahlen nicht zu sehr beeindrucken. Sie geben an, wie viele Daten die
Last Mile übertragen kann. Nicht jeder Server im Internet ist auch in der Lage, seine Daten zu
jedem Zeitpunkt so schnell zu liefern.

170 Schulversion © HERDT-Verlag


Netzwerke und Netzwerkdienste 14

Benötigte Hardware
Das in den DSL-Router integrierte DSL-Modem funktioniert ähnlich wie ein analoges Modem,
arbeitet allerdings in höheren Frequenzbereichen ab 20 kHz. Analoge oder ISDN-Übertragung
erfolgt in niedrigeren Bereichen. Der DSL-Router wird normalerweise mit einem Netzwerkkabel
an einem Switch oder direkt an der Netzwerkkarte im Computer angeschlossen.

Drahtlose Verbindungen
Einen entsprechenden DSL-Router vorausgesetzt, können Sie innerhalb einer Wohnung oder
eines Büros den Zugang zum Internet auch drahtlos realisieren. Der Router enthält dazu einen
Access Point, der mit mehreren mobilen Computern oder auch weiteren Access Points/Routern
gleichzeitig kommunizieren kann. Daten werden per Funk beispielsweise vom Laptop zum WLAN-
Router übertragen. WLAN ist in allen modernen Laptop-Bauarten, Smartphones oder Tablet-PCs
bereits integriert.

Viele DSL-Router (insbesondere die von Internet-Providern bei Vertragsabschluss zur Verfügung
gestellten) haben WLAN bereits an Board.

Digitaler Netzzugang mit Mobilfunk


Die Palette reicht von Geräten, die über die USB-Schnittstelle eines Computers oder Laptops
angeschlossen werden, bis zu UMTS-WLAN- oder LTE-Routern, die Anschluss auch über Ethernet
und WLAN bieten. In etlichen Geräten wie Smartphones, Notebooks, iPads etc. ist ein Mobilfunk-
Modem oft schon fest eingebaut. Mit eingelegter SIM-Karte ist damit über das eingebaute Mobil-
funk-Modem eine direkte Verbindung ins Internet möglich. Je nach Übertragungsstandard bzw.
gewähltem Tarif variieren die Übertragungsgeschwindigkeiten stark. In vielen Tarifen wird ab
einem bestimmten übertragenen Datenvolumen die Geschwindigkeit vom jeweiligen Anbieter
gedrosselt. Positiv ist in jedem Fall die Ortsungebundenheit, negativ Überwachungsmöglichkeiten
oder Sicherheitsrisiken.

Heutige Smartphones sind vergleichbar mit PCs und sollten entsprechend auch genauso
vor Bedrohungen aus dem Internet oder per E-Mail geschützt werden. Hier sind vor allem
Android-Geräte gefährdet, da hier der Hersteller des Betriebssystems, Google, die
Anwendungen vor der Veröffentlichung nicht prüft.

Weitere Netzzugänge
Neben den genannten existieren weitere mehr oder weniger verbreitete Zugangsmöglichkeiten.
Eine davon ist der Zugang über das Fernsehkabel (Kabelfernsehen). Vorteil: Daten, Telefon, Video
und Fernsehen laufen über ein Medium. Des Weiteren kann man auch per Satellit oder über das
Stromkabel ins Netz gelangen.

Wie bei ADSL stellen Ihnen die jeweiligen Provider die erforderliche Technik entweder kostenlos
oder zu subventionierten Preisen bei Vertragsabschluss zur Verfügung.

© HERDT-Verlag Schulversion 171


14 Netzwerke und Netzwerkdienste

Zugang zum Internet über Provider


Ein Provider versorgt Sie mit dem Zugang zu einem Netz, beispielsweise zum Internet. Bieten
Provider neben dem reinen Internetzugang zusätzliche Dienste (Services) an, beispielsweise:
 E-Mail-Postfächer,
 Speicherplatz für eine Internetpräsenz (Webhosting),
 Speicherplatz für Filesharing,
 Unified Messaging (Faxe oder SMS über das Internet versenden, Faxe als E-Mail empfangen
usw.),
 Telefonflatrates für Fest- und Handynetz u. v. m.,
so werden sie auch als Internet Service Provider (ISP) bezeichnet.

Setzen Sie einen DSL-Router für den Zugang zum Internet ein, werden die Zugangsdaten zum
Computer des Providers im Router hinterlegt. Ist der Router eingeschaltet, wird automatisch eine
Internetverbindung hergestellt und aufrechterhalten. Ihr DSL-Anschluss verhält sich je nach Einrich-
tung wie eine Standleitung ins Internet.

Alle Provider bieten Flatrates an, Volumen- und Zeittarife sind nicht mehr üblich. Sie bezahlen bei
einer Flatrate jeden Monat den gleichen Preis.

Flatrates, egal ob für das Telefonieren oder das Surfen im Internet, sind Pauschaltarife. Die Höhe
der Flatrates wird vom jeweiligen Anbieter anhand von Durchschnittswerten pauschal kalkuliert,
ohne das persönliche Telefon- oder Surfverhalten der Nutzer detailliert auswerten zu müssen.
Der Provider hat dadurch geringere Kosten und gibt diese an seine Kunden weiter.

Einen Internetdienstanbieter auswählen


Aktuelle Preis-Leistungs-Vergleiche zwischen verschiedenen Internetdienstanbietern und
Informationen zur Kontaktaufnahme finden Sie in PC-Zeitschriften oder im Web, z. B. unter
 https://www.billiger-surfen.de  https://www.teltarif.de/internet
 http://www.check24.de

Schauen Sie auf den Websites der großen Anbieter nach zeitlich befristeten Angeboten:
 1 & 1 (https://www.1und1.de)  Unitymedia (https://www.unitymedia.de)
 Telekom (https://www.telekom.de)  O2 (https://www.o2online.de)
 Vodafone (https://www.vodafone.de)
Vielleicht gibt es in Ihrer Wohngegend aber auch einen der wenigen Regionalanbieter.

Bei den heutigen DSL-Paketen sollten Sie nicht nur die Preise vergleichen, sondern überprüfen,
was für Sie persönlich wichtig ist (wollen Sie z. B. vor allem ins deutsche Festnetz ohne Begren-
zung telefonieren können oder sind für Sie SMS sehr wichtig?).

172 Schulversion © HERDT-Verlag


Netzwerke und Netzwerkdienste 14

Standleitung
Eine Standleitung bezeichnet eine permanente Verbindung zwischen zwei Kommunikations-
punkten. Dabei kann es sich beispielsweise um einen Router und den Internetzugang eines
Providers handeln. Es erfolgt keine automatische Trennung durch den Provider. Mit einer
Standleitung zum Internet ist auch eine feste IP-Adresse verbunden. Der Hauptunterschied
zwischen einer Standleitung und einem DSL-Anschluss besteht üblicherweise in gleicher Up- und
Downloadgeschwindigkeit (SDSL-Symmetric Digital Subscriber Line) bei der Standleitung. Dazu
kommt ein höherer Preis, deshalb werden Standleitungen vorrangig von Unternehmen oder
Verbänden angemietet.

14.3 Dienste in Netzen

Zum Begriff Dienst (Service)


Jedes Netzwerk arbeitet mit verschiedenen Diensten, für deren Nutzung Sie Gebühren an den
jeweiligen Provider zahlen. Der Begriff „Dienst“ wird dabei ausgesprochen uneinheitlich ver-
wendet. Je nachdem, in welchem Zusammenhang er benutzt wird, bezeichnet er sehr unter-
schiedliche Dinge:
 Übertragungsverfahren werden häufig als Dienste bezeichnet, z. B. DSL.
 Einzelne Übertragungsverfahren stellen dabei unterschiedliche Dienste zur Verfügung,
z. B. beim Telefon: Rückruf bei „besetzt“, Anrufweiterleitung oder Konferenzschaltungen.
 Unterschiedliche Arten von Netzen (z. B. Telefon-Festnetz und Internet) stellen
unterschiedliche Dienste zur Verfügung, z. B. Sprach-, Bild- oder Datenübertragung.

Dienste im Internet
Haben Sie erst einmal Zugang zum Internet, können Sie es auf unterschiedliche Art nutzen, d. h.,
Sie können mit unterschiedlichen Internetdiensten arbeiten:
 World Wide Web: zum Surfen im Internet
 E-Mail: zur Kommunikation per elektronischem Brief
 Chatten: zur Online-Kommunikation

World Wide Web – WWW


Das Word Wide Web wird gelegentlich auch als w3 bezeichnet und stellt heute den bekanntesten
Dienst im Internet dar. Er bezeichnet die Möglichkeit, Anwendungen sowie Text-, Bild- und
Toninformationen weitgehend nahtlos miteinander zu verbinden, zu übertragen und in einem
sogenannten Webbrowser (z. B. Internet Explorer, Mozilla Firefox, Google Chrom, Opera, Apple
Safari) darzustellen.

Die Erstellung und Übertragung der Web-Pages (Internetseiten) basiert auf einem Protokoll
namens HTTP (Hypertext Transport Protocol). Bisher haben Sie das TCP/IP-Protokoll kennen-
gelernt, über das die ganze Kommunikation im Internet stattfindet. Beim Surfen im Internet steht
das Kürzel HTTP – HyperText Transfer Protocol – vor der Internetadresse (URL) in der Adresszeile
Ihres Browsers, z. B. http://www.herdt.com.Das HTTP-Protokoll baut auf dem TCP/IP-Protokoll
auf.

© HERDT-Verlag Schulversion 173


14 Netzwerke und Netzwerkdienste

Ohne die Datenkommunikation mit TCP/IP funktioniert das HTTP-Protokoll nicht, es ist lediglich
ein Aufsatz. Die Aufgabe des Aufsatzes HTTP ist die Übertragung der Internetseiten aus dem
Internet zu Ihrem Browser. HTTP bestimmt, wie und wann der Text, die Grafiken oder Filme
heruntergeladen werden und wie der Text angezeigt wird.

Mit dem Aufbau und der Gestaltung von Web-Pages befasst sich der Beruf des Webdesigners.
Dieser nutzt für seine Arbeit meist grafische Web-Editoren.

Für Firmen oder Unternehmen gehört eine Web-Präsenz heute zum Muss. Das heißt, die Firma
verfügt über eigene Web-Pages mit einer eigenen Internetadresse. Häufig haben solche Adressen
die Form:
http://www.Name-der-Firma.de (de steht für Deutschland),
z. B. http://www.regensburger-it-akademie.de
oder
http://www.Name-der-Firma.com (com steht für kommerzielle Organisation),
z. B. http://www.herdt.com.

E-Mail
Die elektronische Post stellt wahrscheinlich die häufigste Internetnutzung dar. Sie ermöglicht das
Versenden und Empfangen von Nachrichten auf elektronischem Weg. Die Übertragung verläuft
sehr schnell (im Vergleich zum Postbrief beispielsweise) und verursacht nur geringe Kosten.

Vergleich zwischen Briefpost und E-Mail


Briefpost E-Mail
Zum Schreiben benötigen Ein entsprechend konfiguriertes Programm (z. B. Outlook, Windows
Sie einen Stift, Papier und Mail, Windows Live Mail, Mozilla Thunderbird, Apple Mail) muss
einen Briefumschlag. vorhanden sein.
Zum Bezahlen benötigen Oder Sie nutzen die entsprechenden Internetseiten von Providern
Sie eine Briefmarke. und geben die Informationen über Ihren Webbrowser in bereit-
gestellte Formulare ein (Webmail).
Der eigentliche Versand ist kostenfrei, Sie zahlen nur Online-
Gebühren.
Sie müssen die Adresse Bei der E-Mail-Adresse handelt es sich um eine Postfach-Adresse,
des Empfängers angeben. die Sie angeben müssen.
Zum Versenden benötigen Im E-Mail-Programm müssen Sie die Adresse eines Servers angeben,
Sie Zugang zu einem der den Versand übernehmen soll, oder Sie öffnen direkt auf dem
Briefkasten. Server Ihr Postfach und erstellen eine neue Mail (bei Webmail).
Ihr Brief wird in den Brief- E-Mails müssen Sie vom richtigen „Postamt“ abholen (eine Server-
kasten der angegebenen Adresse, die Sie in Ihrem E-Mail-Programm eingeben müssen). Um
Adresse zugestellt. Zugriff auf Ihr Postfach zu erhalten, müssen Sie sich mit einem
Kennwort ausweisen.
Da der Zugriff auf Ihr Postfach über das Internet erfolgt, sind Sie
nicht an einen geografischen Punkt gebunden. Wo sich der
Internetanschluss befindet, spielt dabei keine wesentliche Rolle.

174 Schulversion © HERDT-Verlag


Netzwerke und Netzwerkdienste 14

Hinweise zu E-Mail
 Mit einem E-Mail-Programm können Sie nach dem Abrufen Ihrer Mails die Internet-
verbindung trennen und offline (ohne Internetverbindung) weiterarbeiten.
Erst zum Versenden müssen Sie sich wieder kurz verbinden. Bei einfachen Textnachrichten
reichen dazu jeweils wenige Sekunden.
 Bezüglich der Sicherheit des Inhalts lassen sich E-Mails eher mit Postkarten als mit Briefen
vergleichen. Erst der Einsatz zusätzlicher Verschlüsselungsprogramme macht die Inhalte
sicherer.
 E-Mails lassen sich zusammen mit einem Anhang (Attachment) versenden, d. h., Sie können
Dateien zusammen mit der Nachricht verschicken. So gesehen sind E-Mails eher mit Paketen
als mit Briefen zu vergleichen.
Bedenken Sie: Je mehr Daten Sie versenden, desto länger dauern Versand und Empfang.
Außerdem können Sie auf Postämtern nur Pakete bis zu einem bestimmten Gewicht
abgeben. Die meisten Anbieter für E-Mails beschränken sowohl die Größe des Postfachs als
auch die Versandgröße der E-Mails. Dies trifft insbesondere für Freemailanbieter zu. Wollen
Sie beispielsweise Dateien per E-Mail austauschen, stoßen Sie relativ schnell an die Grenzen.
Zudem hat Ihr DSL-Anschluss (wie vorhin schon erwähnt) unterschiedliche Up-/Download-
geschwindigkeiten, unabhängig von der eigentlichen Geschwindigkeit des DSL-Anschlusses.
Ihr Upload dauert also wesentlich länger als der Download auf Empfängerseite.
 E-Mail-Adressen haben üblicherweise den folgenden Aufbau:
Name@abc.xyz, z. B. info@regensburger-it-akademie.de
Das Zeichen @ steht hier für den englischen Begriff „at“ (an, bei). Links vom @ steht die
Bezeichnung des Postfachs, rechts davon der eindeutige Name des Postamts.
 Das Versenden von E-Mails verläuft über ein Protokoll namens SMTP (Simple Mail Transport
Protocol), der Empfang über POP3 (Post Office Protocol) oder IMAP (Internet Message
Access Protocol).

Eine eigene E-Mail-Adresse können Sie sich bei vielen Anbietern im Internet kostenlos einrichten,
z. B. bei GMX, freenet, Google, WEB.DE oder Microsoft. Häufig können Sie bei solchen Anbietern
auch Online-Kalender anlegen oder SMS-Nachrichten und Faxe verschicken und empfangen.
Nicht alle angebotenen Dienste sind dabei kostenfrei.

E-Mail-Protokolle
Rufen Sie E-Mails direkt von einem Server über das Internet ab, arbeiten Sie häufig mit POP3
oder IMAP4. In Unternehmen kommen die Protokolle HTTP und MAPI dazu. Der Server ist –
einfach erklärt – der Computer beim Provider, der E-Mails entgegennimmt (Postausgangsserver)
und diese an die Empfänger verschickt. Der Server nimmt E-Mails von anderen Absendern
entgegen und stellt diese in Ihr Postfach (Posteingangsserver).

Bei der E-Mail-Kommunikation spielt das HTTP-Protokoll eine eher untergeordnete Rolle. Dafür
kommen drei neue Protokolle ins Spiel, die Sie beim Umgang mit E-Mails kennen sollten:
 POP3 (Post Office Protocol Version 3)
 IMAP4 (Internet Message Access Protocol Version 4)
 SMTP (Simple Mail Transfer Protocol)
POP3 und IMAP4 sind für das Empfangen von E-Mails aus dem Internet zuständig. SMTP dient
zum Versenden Ihrer E-Mails ins Internet.

© HERDT-Verlag Schulversion 175


14 Netzwerke und Netzwerkdienste

Beispiel eines E-Mail-Flusses

Wie Sie der Abbildung entnehmen können, müssen Sie sich bei der Einrichtung des Posteingangs
entscheiden, ob Sie POP3 oder IMAP4 einsetzen wollen. Zum Versenden von E-Mails steht das
SMTP-Protokoll zur Verfügung.

Was ist der Unterschied zwischen POP3 und IMAP4?


POP3 Die E-Mails werden vom Posteingangsserver des Providers auf Ihren PC herunter-
geladen und im Posteingang angezeigt. Auf dem Server werden die E-Mails gelöscht.
In manchen Umgebungen können Sie Kopien der E-Mails auf dem Server belassen.
Sie können die E-Mails offline lesen und bearbeiten.
IMAP Bei IMAP verbleiben die E-Mails auf dem Server des Providers. Die E-Mails werden nur
in Ihrem Posteingang angezeigt. Da die E-Mails auf dem Server bleiben, verringert sich
der Datenverkehr zwischen Client und Server. Sie können E-Mails im Postfach löschen,
wenn Sie diese nicht mehr benötigen.
Damit Sie auf ein Postfach per IMAP zugreifen können, müssen Sie online sein. Wenn
keine Internetverbindung besteht, können Sie Ihre E-Mails nicht lesen.

Usenet – Newsgroups
Diese Nachrichtengruppen werden häufig auch als Schwarze Bretter bezeichnet. Es gibt Tausende
davon zu allen möglichen Themen. Sie dienen zum Meinungsaustausch oder zur Informations-
suche innerhalb der jeweiligen Interessensgruppen.

Zur Teilnahme am Usenet brauchen Sie entweder einen entsprechenden Newsreader (E-Mail-
Programme wie z. B. Outlook, Windows Mail, Mozilla Thunderbird) oder Sie suchen einen News-
Server, der auch Webbrowser unterstützt, was zunehmend häufiger der Fall ist.

Ein Newsreader bietet Ihnen den Vorteil, dass Sie die Foren auf einem News-Server nach
Schlüsselwörtern durchsuchen und einzelne Newsgroups abonnieren, d. h. speichern können. Sie
sparen sich dann in Zukunft die Suche nach interessanten Diskussionsgruppen und müssen nur
noch die neuesten Beiträge herunterladen, die Sie dann offline lesen und bearbeiten können.

Wollen Sie das Usenet nur auf bereits vorhandene Informationen durchsuchen, dann können Sie
dafür auch spezialisierte Internetseiten benutzen, z. B. http://groups.google.com.

176 Schulversion © HERDT-Verlag


Netzwerke und Netzwerkdienste 14

Usenet-Server arbeiten ähnlich wie E-Mail-Server: Es gibt dort eine Vielzahl an Postfächern, die
thematisch geordnet und öffentlich zugänglich sind. Jeder kann hier Nachrichten veröffentlichen
(Sie schicken dann tatsächlich eine E-Mail an die entsprechende Newsgroup) und jeder kann die
Veröffentlichungen beantworten bzw. kommentieren. Auf diese Art können Sie Fragen stellen, zu
denen Sie in der Regel auch eine Antwort erhalten werden. Das dauert meist einige Stunden oder
Tage.

In diesen Foren gibt es Regeln, wie Postings (so werden Veröffentlichungen dort genannt) aussehen
sollten. Diese Regeln werden als Netiquette bezeichnet, eine Kombination der Begriffe „Netz“ und
„Etikette“ (Benimmregeln). Halten Sie sich an diese Regeln, sonst kann es Ihnen passieren, dass Sie
gleich als Newbie (Neuling, Computer-Anfänger) beschimpft oder einfach ignoriert werden.

Datenübertragung mit FTP – File Transfer Protocol


Dieses Dateiübertragungsprotokoll dient zum Austausch von Dateien zwischen einzelnen Rech-
nern. Zum Download von einem FTP-Server, d. h., um Dateien auf Ihren Rechner zu kopieren,
können Sie einen Webbrowser benutzen, da die meisten Webbrowser auch das FTP-Protokoll
beherrschen. Allerdings gibt es auch spezialisierte FTP-Software mit erweiterten Funktionen bzw.
Dateimanager mit integriertem FTP-Client (z. B. den Total Commander). Viele Hardwarehersteller
z. B. lagern ältere Treiberarchive auf FTP-Server (ohne eine grafische Weboberfläche) aus, da sie
weniger Verwaltungsaufwand erfordern als eine designte Website.

Eine Internetadresse, von der Dateien per FTP heruntergeladen werden können, beginnt mit ftp://.

Dienste in Unternehmensnetzen
Viele der eben aufgezählten Dienste werden immer häufiger auch im Unternehmensnetz
(Intranet) eingesetzt. Die Zugriffsmöglichkeiten sind dabei in den meisten Fällen auf Mitarbeiter
eingeschränkt.
Viele Unternehmen nutzen darüber hinaus zusätzliche Dienste, von denen einige unter dem
Begriff Groupware zusammengefasst werden. Damit ist es möglich, dass einzelne Mitarbeiter
gemeinsam Daten (z. B. Kalender oder Adresslisten) bearbeiten.
Dazu ein Beispiel anhand eines Terminkalenders (z. B. in Microsoft Outlook/SharePoint): Mit
einem entsprechenden Server im Hintergrund ist es möglich, Teile des Kalenders zu veröffent-
lichen, auf Wunsch auch mit Schreibzugriff. Dadurch entfallen lästige Terminvereinbarungen.
Jeder kann selbstständig im Kalender nachschauen und sich bei freien Terminen eintragen.
Arbeitsgruppen können damit einen zentralen, gemeinsamen Terminkalender führen, auf den
von überall aus zugegriffen werden kann.

14.4 Weitere populäre Angebote im Netz


Social Networking (soziales Netzwerk)
Neben den genannten Diensten haben sich in den letzten Jahren weitere Angebote entwickelt,
die sich unter dem Oberbegriff „Soziale Netzwerke“ zusammenfassen lassen. Dabei handelt es
sich um Interessengemeinschaften von Menschen, deren Kommunikation vorrangig über das
Internet stattfindet.

© HERDT-Verlag Schulversion 177


14 Netzwerke und Netzwerkdienste

Die entsprechenden Portale vereinen unter einer einfach zu bedienenden Oberfläche mehrere
Funktionen. Darin ist auch einer der Vorzüge dieser Netzwerke zu sehen. Der Nutzer muss nicht
mehrere Programme aufrufen, um beispielsweise eine E-Mail zu schreiben, zu chatten oder seine
Urlaubsfotos Freunden zu zeigen. Er muss sich nur über das Internet von einem beliebigen Ort
auf der Welt in sein Portal einloggen und kann dann die entsprechenden Funktionen nutzen.
Es gibt viele Arten von sozialen Netzwerken, einige sind eher für Selbstständige oder Unter-
nehmen interessant. Andere wiederum richten sich an Schüler, Studenten oder Privatpersonen.
Eine weitere Gruppe hat sich auf spezielle Funktionen spezialisiert, z. B. auf das Blogging.
Hier eine Aufstellung der bekanntesten Social-Networking-Anbieter:
 Facebook (https://www.facebook.com)  Twitter (http://twitter.com)
 XING (http://www.xing.com)  Instagram (https://www.instagram.com)
 Linkedln (http://de.linkedin.com)

Weitere viel genutzte Angebote


Name Beschreibung Beispiel
Social Internetbrowser-Lesezeichen, die von  LinkArena (http://linkarena.com)
Bookmarking mehreren Benutzern gemeinsam
verwaltet und gepflegt werden. Diese
sind nicht lokal auf dem Rechner des
Benutzers, sondern zentral auf Servern
im Internet gespeichert.
Webblogs Online-Tagebuch oder -Journal, in dem  Blogger (inzwischen von Google
der Autor chronologische Aufzeich- übernommen,
nungen führt bzw. Sachverhalte http://www.blogger.com)
protokolliert oder persönliche Sicht-  WordPress (http://wordpress.com)
weisen auf die verschiedensten Dinge
niederschreibt. Dementsprechend gibt
es zu den verschiedenartigen
Themenbereichen eigene Blogs.
Videoportale Ermöglichen zentrales Bereitstellen  YouTube (http://www.youtube.de)
von Videos zu jedem erdenklichen
Themenbereich, die online jederzeit
abrufbar sind
Fotoportale Zentrales Bereitstellen von Fotos  Instagram
zu jedem erdenklichen Themen- (https://www.instagram.com)
bereich, die online jederzeit abrufbar  Flickr (http://www.flickr.com)
sind
 Picasa-Webalben (Google,
https://picasaweb.google.com)
 ipernity (http://www.ipernity.com)

Wenn Sie Angebote in Netzen in Anspruch nehmen wollen oder müssen, überlegen Sie sich
genau, welche Daten Sie von sich an welcher Stelle preisgeben. Einmal irgendwo im Internet
eingetragene Daten zu löschen kann schwierig sein. Zudem werden soziale Netzwerke inzwischen
auch von Unternehmen als Werbeplattform eingesetzt und auch Mitarbeiter von Personal-
abteilungen nutzen soziale Netzwerke. Seien Sie sich der Gefahren für Ihre Privatsphäre bewusst.

178 Schulversion © HERDT-Verlag


Netzwerke und Netzwerkdienste 14

14.5 Übung
Netzwerke verstehen
Level Zeit 10 Minuten

Übungsinhalte  Last Mile und DSL kennen


 POP3 und IMAP4 unterscheiden
Übungsdatei Uebung 14.pdf
Ergebnisdatei Uebung 14-E.pdf

© HERDT-Verlag Schulversion 179


15 Datensicherheit

15
15. Datensicherheit

15.1 Daten absichern: wofür, wovor, wogegen?


Überall, wo mit Daten gearbeitet wird, sind diese Daten auch diversen Gefahrenquellen aus-
gesetzt. Das betrifft den PC zu Hause genauso wie das Netzwerk einer Firma. Bevor wir uns
Gedanken zur Absicherung machen, erscheint es zunächst sinnvoll, die möglichen Gefahren-
quellen zusammenzufassen:
 Unbefugter Zugriff: Hier geht es darum, dass jemand Daten liest, die nicht für ihn bestimmt sind.
Denken Sie z. B. an den Schaden, der entstehen kann, wenn geheime Daten aus einem
Forschungsprojekt in die falschen Hände geraten.
 Veränderung von Daten: Dieser Punkt kann in vielerlei Form in Erscheinung treten. Ändert
ein Virus bestehenden Programmcode, führt dies dazu, dass die betroffene Anwendung
nicht mehr (korrekt) funktioniert. Werden Dokumente, beispielsweise Verträge, verändert,
kann dies zu sehr unerwünschten Ergebnissen führen. Es reicht aber auch, wenn Sie aus
einem Dokument, an dem Sie eine Woche gearbeitet haben, versehentlich den halben Inhalt
löschen.
 Verlust von Daten: Wenn Daten versehentlich oder absichtlich gelöscht werden, sind sie
nicht mehr greifbar. Denken Sie an eine große Datenbank, vielleicht an die Kredite, die eine
Bank gespeichert hat.
 Zu diesem Punkt gehört aber nicht nur das Löschen von Daten, sondern auch ein möglicher
Hardwareschaden. Geht eine Festplatte kaputt, sind die Daten darauf meist nicht mehr
lesbar. Aber auch Katastrophen wie Hochwasser oder ein Brandfall können Daten unrettbar
zerstören.

Grundsätzlich sollte bei den aufgezählten Gefahrenquellen unterschieden werden, wo bzw. wann
diese auftreten:
 Direkt auf den Datenträgern: Hier werden letztendlich die Inhalte von Festplatten
manipuliert. Ohne Sicherungskopie sind die Daten verloren.
 Während der Datenübertragung: Manipulationen, die während der Übertragung auftreten,
bemerken Sie wahrscheinlich nicht sofort, sondern erst später an den Konsequenzen.
 Dieser Punkt betrifft in erster Linie das Mitlesen von Netzwerkverkehr. Theoretisch kann jeder,
der Zugriff auf ein Übertragungsmedium hat, alle Daten, die darüber transportiert werden,
mitlesen und auch verändern.

180 Schulversion © HERDT-Verlag


Datensicherheit 15

15.2 Zugriffsschutz

Voraussetzungen
Beim Thema Zugriffsschutz geht es darum, festzulegen, wer auf welche Art auf Daten zugreifen darf.
Im Zusammenhang mit Dateizugriffen geht es hier um die Unterscheidung zwischen den Rechten:
kein Zugriff, Lesen und Ändern.

Jedes Betriebssystem hat Mechanismen eingebaut, die den Zugriff auf seine Daten regeln. Sie
bauen normalerweise auf zwei Voraussetzungen auf:
 Das verwendete System muss die Vergabe von Zugriffsrechten unterstützen.
 Einzelne Benutzer müssen voneinander unterscheidbar sein.

Dies wird über Benutzerkonten realisiert. Zur Anmeldung an einem Computer oder Netzwerk
müssen Sie einen gültigen Benutzernamen mit dem dazu passenden Kennwort eingeben. Dieser
Vorgang wird Authentifizierung genannt und ermöglicht es, einen Netzwerkbenutzer (eindeutig,
wenn jeder Benutzer über ein eigenes Konto verfügt) einer Person zuzuordnen.

Lokale Zugriffe – Zugriffsrechtevergabe


Mit den Benutzerkonten können Sie also festlegen,
wer etwas darf, und mit den Zugriffsrechten
bestimmen Sie, was er/sie darf.

Dazu müssen Sie noch wissen, dass jedes Objekt, das


Sie mit Rechten versehen können, diese Rechte in einer
Zugriffsliste speichert. Im Weiteren geht es also darum,
die entsprechenden Benutzerkonten in die jeweiligen
Zugriffslisten einzutragen, und zwar mit den vor-
gesehenen Rechten.

Ein solches direktes Vorgehen wäre in großen Netzen


mit vielen Benutzern sehr zeitaufwendig und fehler-
anfällig. Deshalb werden einzelne Benutzerkonten
üblicherweise zu Gruppen zusammengefasst.

Wie das im Einzelnen genau funktioniert und was dabei


alles möglich ist, unterscheidet sich teilweise sehr stark Zugriffsrechtevergabe unter Windows
und ist abhängig vom eingesetzten Directory Service
bzw. dem verwendeten Betriebssystem.

Die Abbildung zeigt ein Beispiel für die Vergabe von Zugriffsrechten auf die Datei
HP_USB_Boot_Utility.exe unter Windows.

© HERDT-Verlag Schulversion 181


15 Datensicherheit

Überwachung
Ein anderer Aspekt des Zugriffsschutzes ist der Überblick über die Vorgänge: Wer hat wann was
womit gemacht? Systeme, die es ermöglichen, Rechte zu vergeben, sind normalerweise auch in
der Lage, die Ausübung dieser Rechte zu protokollieren.

Denken Sie daran, dass es ein Recht ist, sich an einem Netzwerk an- und wieder abzumelden. Damit
lässt sich dann protokollieren, wann Sie Ihren Rechner ein- und wieder ausgeschaltet haben. Dazu ein
Hinweis: Protokolliert werden darf viel, aber sobald es um die Auswertung dieser Daten geht, hat der
Betriebsrat oft Mitspracherecht.

In größeren Netzen gibt es oft einzelne Personen oder ganze Abteilungen, die überwiegend mit
der Rechtevergabe beschäftigt sind.

Ist die Rechtevergabe gut gelöst, dann kann unerwünschter Datenzugriff eigentlich nur noch während
der Datenübertragung im Netzwerk erfolgen. Ein wirksamer Zugriffsschutz setzt voraus, dass niemand
Sicherungsdatenmedien entwendet und dass zum Gelingen der guten Lösung jeder einzelne Benutzer
verantwortungsvoll mit seinem Account (Benutzername und Passwort) umgeht.

Schreiben Sie niemals irgendwelche Zugangsdaten auf Zettel, die Sie dann auf Ihren Monitor
kleben oder unter Ihre Schreibtischunterlage legen. Genauso wenig sollten Sie solche
Informationen in Dateien abspeichern, auf die andere Benutzer Zugriff haben.

Zugriffe während der Datenübertragung


Unerwünschter Zugriff während der Datenübertragung kann an zwei relevanten Punkten erfolgen: in
Ihrem LAN oder während der Übertragung über ein WAN. In beiden Fällen hat jemand entweder
direkten Zugriff auf das verwendete Übertragungsmedium oder auf ein Netzwerkgerät, das einzelne
Medien miteinander verbindet, z. B. einen Router.

Zugriffe im LAN
Erfolgen die Zugriffe in Ihrem LAN, so heißt das normalerweise: Der Angriff erfolgt von innen,
wahrscheinlich über einen Netzwerkanschluss oder ein Netzwerkkabel auf dem Firmengelände.

Auch der Monitor sendet Signale, die sich mit entsprechenden Geräten auch aus einiger Ent-
fernung aufzeichnen lassen. Denken Sie daran, dass kabellose Tastaturen und Mäuse dazu
dienen, auf Distanz zu funktionieren.

Schwachstellen können durch Viren entstehen, die Zugangsdaten auslesen, Tastatureingaben


protokollieren und die Daten in das Internet übertragen. Über eingerichtete Hintertüren (Back-
doors) verschaffen sich so Unbefugte Zugang zu Firmendaten oder nutzen die infizierten PCs zum
Versenden unerwünschter Reklame-Mails (Spam).

Zugriffe im WAN
Findet der Zugriff während einer WAN-Übertragung statt, haben Sie nur die Möglichkeit der
Datenverschlüsselung (vgl. folgenden Abschnitt). Diese kann man auch im LAN einsetzen.

Verschlüsselte Datenübertragung verhindert zwar nicht, dass Daten während der Übertragung
mitgelesen werden, aber diese Daten sind für den Lauscher nicht verwertbar.

182 Schulversion © HERDT-Verlag


Datensicherheit 15

Verschlüsselung kann auch nicht verhindern, dass Daten während der Übertragung verändert
werden. Allerdings lässt sich damit sicherstellen, dass Manipulationen bemerkt werden.

Eine mögliche Umsetzung zur verschlüsselten Datenübertragung wird VPN (Virtual Private Net-
work) genannt. Diese Technik ermöglicht eine gesicherte Übertragung über öffentliche Netze wie
z. B. das Internet. Die Privatheit rührt unter anderem daher, dass die Kommunikationspartner
sich bei der Verbindungsaufnahme auf eine verschlüsselte Datenübertragung einigen, die kein
anderer entziffern kann.

Es gibt auch noch andere Möglichkeiten zur verschlüsselten Datenübertragung. Als weiteres
Beispiel sei das Protokoll IPSec genannt, eine Erweiterung vom bzw. ein Zusatz zum IP-Protokoll.

In jedem Fall muss hierfür zusätzliche Software installiert und konfiguriert werden. Diese
Funktionen gehören nicht zum Standard-Installationsumfang gängiger Betriebssysteme, lassen
sich aber meistens nachinstallieren.

15.3 Verschlüsselung

Klartext in Geheimtext umwandeln


Datenverschlüsselung gibt es, seitdem Informationen in schriftlicher Form festgehalten werden.
Heute beschäftigt sich ein ganzer Wissenschaftszweig der Mathematik, die Kryptografie, mit dem
Thema, wie Daten am günstigsten chiffriert, d. h. verschlüsselt werden. Dabei kommen relativ
komplexe mathematische Verfahren (Algorithmen) zum Einsatz. Eine Kenngröße, anhand der
Verschlüsselungsalgorithmen unterschieden werden, ist die verwendete Schlüssellänge.

Das Kennwort, das häufig bei Verschlüsselungen eingegeben werden muss, darf nicht mit dem
Schlüssel selbst verwechselt werden. Es dient oft zur Berechnung des Schlüssels, der meist eine
konstante Länge aufweist.

Kurze Kennwörter lassen sich einfacher erraten als lange, im Zweifelsfall durch Ausprobieren aller
möglichen Zeichenfolgen. Solche Angriffe werden dann als Bruteforce-Attacke bezeichnet.
Eine Verschlüsselung kann verschiedene Ziele verfolgen:
 Vertraulichkeit: Beim Hauptziel jeglicher Verschlüsselung geht es darum, dass nur derjenige
die Informationen lesen kann, für den sie auch bestimmt sind.
 Integrität: Es geht darum sicherzustellen, dass die Daten während der Übertragung nicht
verändert wurden.
 Authentizität: Hier muss sichergestellt werden, dass die Informationen wirklich von dem-
jenigen stammen, der behauptet, der Absender zu sein.
 Verbindlichkeit: Es geht um die Frage, ob die Information vertrauenswürdig ist. Hierbei kann
z. B. Rechtsverbindlichkeit im Sinne einer Unterschrift gemeint sein.

Die letzten drei Punkte sind im Zusammenhang mit der digitalen Unterschrift von Bedeutung.

Bevor wir uns mit möglichen Anwendungen der Verschlüsselung auseinandersetzen, erhalten Sie
einige Erläuterungen zu Verschlüsselungsalgorithmen. Hier gibt es zwei Grundverfahren:
symmetrische und asymmetrische Verschlüsselung.

© HERDT-Verlag Schulversion 183


15 Datensicherheit

Symmetrische Verschlüsselung
Symmetrische Kryptoverfahren stellen die klassische Form der Verschlüsselung dar. Zum Ver-
schlüsseln eines Textes (auch Klartext genannt) und Entschlüsseln eines verschlüsselten Textes
(auch Chiffretext genannt) wird derselbe Schlüssel verwendet. Daher ist beim Austausch der
Schlüssel besondere Sorgfalt zu wahren.

Symmetrische Verschlüsselungsverfahren arbeiten sehr schnell und sind bei ausreichender


Schlüssellänge (ab 128 Bit) auch sehr sicher.

Die folgende Aufzählung der bekanntesten symmetrischen Verfahren gibt in Klammern auch
immer die verwendete Schlüssellänge mit an: DES (Data Encryption Standard; 56 Bit), 3DES
(Triple DES; 168 Bit), IDEA (International Data Encryption Algorithm; 128 Bit), Blowfish (bis zu
448 Bit), AES (Advanced Encryption Standard, auch bekannt als Rijndael-Verschlüsselung; 128,
192 oder 256 Bit).

Symmetrische Verschlüsselung

Asymmetrische Verschlüsselung
Asymmetrische Verfahren benutzen zwei unterschiedliche Schlüssel, die fest zusammengehören.
Alles, was mit dem einen Schlüssel verschlüsselt wird, kann nur mit dem anderen wieder ent-
schlüsselt werden.

Diese Art der Verschlüsselung arbeitet deutlich langsamer und aufgrund der verwendeten Algo-
rithmen mit größeren Schlüssellängen als symmetrische Verfahren. Sie ist aber als genauso sicher
einzustufen wie die symmetrische Verschlüsselung.

Die bekanntesten Algorithmen sind RSA, der nach seinen Erfindern Rivest, Shamir und Adleman
benannt ist, der sogenannte Diffie-Hellmann-Schlüsseltausch und das darauf basierende Ver-
fahren El-Gamal. Die Schlüssellängen dieser Verfahren sind nicht fest vorgegeben, sollten aber
mindestens 2048 Bit betragen.

Public-Key-Verfahren
Public-Key-Verfahren bauen auf asymmetrischer Verschlüsselung auf. Einer der beiden Schlüssel
wird zum Public-Key, der andere zum Private- oder Secret-Key:
 Der Public-Key ist der öffentliche Schlüssel, der zum Verschlüsseln der Nachrichten benutzt
wird.

184 Schulversion © HERDT-Verlag


Datensicherheit 15

 Der Private- oder Secret-Key ist der geheime Schlüssel und bleibt grundsätzlich beim Besitzer
des Schlüssel-Paares. Er dient zum Entschlüsseln der empfangenen Nachrichten oder zum
Signieren (digitales Unterschreiben) ausgehender Nachrichten.

Eine bekannte Anwendung zur Public-Key-Verschlüsselung ist Gpg4win (GNU Privacy Guard for
Windows). Gpg4win ist für die Verschlüsselung von E-Mails gedacht. Sie können dieses Programm
unter http://www.gpg4win.de/ herunterladen. Die mitgelieferten Hilfedateien liefern hervor-
ragende Erklärungen zu den meisten Verschlüsselungsthemen.

Digitale Signatur
Einer der größten Vorteile der Public-Key-Verfahren ist die Möglichkeit zur digitalen Signatur, die
Sie auch ohne Verschlüsselung einsetzen können. Dieser Vorgang läuft folgendermaßen ab:
 Aus den zu signierenden Informationen wird ein sogenannter Hash-Code berechnet.
 Dabei handelt es sich um eine Art Prüfsumme, die so aufgebaut ist, dass es rechnerisch
nahezu unmöglich ist, andere Daten zu finden, die zum selben Hash-Code führen.
 Dieser Hash-Code wird mit Ihrem Secret-Key verschlüsselt und dadurch zur digitalen
Signatur.
 Die Signatur wird zusammen mit den Informationen übertragen.

Um die Signatur zu überprüfen, führt der Empfänger die folgenden Schritte aus:
 Aus den erhaltenen Informationen berechnet er ebenfalls den Hash-Code.
 Dann entschlüsselt er die mitgelieferte digitale Signatur mit Ihrem öffentlichen Schlüssel.
 Stimmt die entschlüsselte Signatur mit dem selbst berechneten Hash-Code überein, weiß
der Empfänger zweierlei:
 Die Informationen wurden während der Übertragung nicht verändert (Integrität).
 Der Ersteller der digitalen Signatur besitzt den geheimen Schlüssel des angegebenen
Absenders.

Die beiden bekanntesten Hash-Algorithmen sind MD5 (Message Digest 5), der einen Hashwert
von 128 Bit Länge liefert, und SHA-1 (Secure Hash Algorithm), der zu Hashwerten mit einer Länge
von 160 Bit führt.

Die folgende Grafik veranschaulicht diesen Vorgang:

Digitale Signatur

© HERDT-Verlag Schulversion 185


15 Datensicherheit

Vertrauenswürdige Zertifikate
Das Problem der Verbindlichkeit ist mit dem eben geschilderten Verfahren zur digitalen Signatur
noch nicht abschließend gelöst. Die digitale Signatur bestätigt zwar den Besitz des geheimen
Schlüssels, aber ob dahinter auch wirklich die angegebene Person steckt, ist damit noch nicht
geklärt. Es muss sichergestellt werden, dass ein Schlüsselpaar tatsächlich zu einer bestimmten
Person gehört.

Für diese Aufgabe gibt es sogenannte Certificate Authorities, kurz CAs; in Deutschland werden sie
auch Zertifizierungsstellen (Trust-Center) genannt. Hier können Sie Zertifikate in unterschied-
lichen Klassen erwerben. Diese Zertifikatsklassen sagen nichts über die Qualität der Verschlüsse-
lung aus. Sie beziehen sich darauf, wie streng die Identität einer Person überprüft wurde. Ver-
gleichbar ist dies mit den Unterschieden zwischen einem Bibliotheksausweis ohne Lichtbild, dem
Führerschein und Ihrem Reisepass oder Personalausweis.

Am häufigsten werden X.509-Zertifikate verwendet, die den Namen oder eine andere Kennung
sowie den öffentlichen Schlüssel einer Person enthalten und von der CA digital signiert wurden.
Die CA bürgt also dafür, dass ein bestimmter Schlüssel zu einer bestimmten Person gehört.

Als Public-Key-Infrastruktur (PKI) wird die Gesamtheit von Trust-Centern, Zertifikaten,


Anwendungen und Schlüsselspeicher-Speicher- und -Verteilungs-Infrastruktur bezeichnet.

Das Web of Trust – Alternative für CAs?


So wie eine CA einen öffentlichen Schlüssel signieren kann, kann das beispielsweise auch ein
Gpg4win-Benutzer; er arbeitet dadurch quasi als Mini-CA.

Bei diesem System kann gleichzeitig festgelegt werden, welchen Unterschriften anderer
Personen wie stark vertraut wird. Auf diese Art kommen Sie dann irgendwann zum öffentlichen
Schlüssel eines unbekannten Benutzers, der von jemandem unterschrieben wurde, dem Sie
entsprechendes Vertrauen eingeräumt hat. Es entsteht ein Web of Trust.

Zur Verbreitung unterschriebener Schlüssel existieren zahlreiche Schlüsselserver, auf denen Sie
Ihren Public-Key veröffentlichen können. Entsprechend können dort auch die Schlüssel anderer
Personen abgefragt werden.

Verschlüsselungsverfahren für Websites


Geht es um vertrauliche Informationen im Webverkehr, z. B. Online-Bestellungen unter Angabe
der Kreditkartennummer, sollte die Datenübertragung in verschlüsselter Form erfolgen. Dazu
steht eine Technologie mit der Bezeichnung SSL (Secure Sockets Layer) zur Verfügung.

Sie erkennen solche Verbindungen an Internetadressen, die mit https beginnen, oder an dem
Schlosssymbol unten rechts im Webbrowser und einer farbigen Hinterlegung der Internet-
adresse. Die Kommunikation mit solchen Webservern funktioniert folgendermaßen:
 Der Server schickt Ihnen seinen Public-Key zu, genauer gesagt: ein beglaubigtes Zertifikat,
dessen Installation Sie eventuell erst zustimmen müssen.
 Ihr Rechner erstellt für jede neue Verbindung einen zufälligen, symmetrischen Schlüssel.
 Dieser Schlüssel wird mit dem Public-Key des Servers verschlüsselt und an ihn geschickt.
 Die weitere Kommunikation läuft über symmetrische Verschlüsselung mit Ihrem erstellten
Schlüssel.

186 Schulversion © HERDT-Verlag


Datensicherheit 15

Damit ist dann die Datenübertragung gesichert. Soll zusätzlich eine Authentifizierung stattfinden,
also festgestellt werden, wer auf den Server zugreift, ist entweder eine Anmeldung mit Benutzer-
name und Kennwort erforderlich, oder auf Ihrem Rechner muss ein entsprechendes Zertifikat
installiert sein.

Allgemeine rechtliche Situation


Die allgemeine rechtliche Situation für den Einsatz von Verschlüsselungssystemen ist sehr
uneinheitlich. Sie reicht vom völligen Verbot in Staaten wie Frankreich oder Russland über die
Einschränkung von Schlüssellängen, Exportverboten für Software oder die Hinterlegung der
verwendeten Schlüssel bis hin zu keinerlei Einschränkungen, wie z. B. in Deutschland.

Ob bzw. wann in Deutschland digitale Signaturen dieselbe Rechtswirksamkeit wie eine eigen-
händige Unterschrift haben werden, wird nicht zuletzt von einer einheitlichen EU-Gesetzgebung
abhängen.

Sicherheit in WLANs
Aufgrund der Problematik, dass bei einem drahtlosen Netz die Daten durch sich frei ausbreitende
Funkwellen übertragen werden, sollten Sie der Absicherung Ihres WLAN besondere Aufmerksam-
keit schenken.

Durch den Einsatz von Funkwellen muss ein Angreifer beispielsweise nicht bis in Ihre Firma vor-
dringen. In der Regel reicht die Sendeleistung eines WLAN über den gewünschten Abdeckungs-
bereich hinaus. Die Art eines Netzwerkangriffs, bei der nicht in das entsprechende Gebäude
eingedrungen werden muss, wird als Parking Lot Attack (Parkplatz-Attacke) bezeichnet.

Durch das Plug&Play-Networking bei WLANs entstehen weitere Probleme. Die Anbindung,
Authentifizierung und Identifizierung der WLAN-Teilnehmer sollen möglichst automatisiert
erfolgen. Derzeit sind fast alle gängigen WLAN-Geräte mit Sicherheitsmechanismen ausgestattet,
doch haben diese Sicherheitslücken oder sind in der Grundeinstellung der Geräte deaktiviert.

Hat es ein Angreifer geschafft, sich mit Ihrem Wireless LAN zu verbinden, wird dieser grund-
sätzlich als normales Netzwerkmitglied Ihres WLAN behandelt. Dies hat zur Folge, dass
Informationen, die Sie anderen Benutzern im Netzwerk bereitstellen, eingesehen, manipuliert
oder im schlimmsten Fall vernichtet werden können.

Auch ohne eine direkte Teilnahme an Ihrem bestehenden Windows-Netzwerk wird es dem
Angreifer aufgrund niedriger Sicherheitsstandards relativ einfach gemacht, auf nicht freigegebene
Dateien zuzugreifen. Ein Angreifer könnte zum Beispiel mit einem Protokollierungstool den
gesamten Datenverkehr aufzeichnen und die gesammelten Daten zu einem späteren Zeitpunkt
auslesen. Die Absicherung und richtige Konfiguration in Bezug auf Sicherheit ist sehr wichtig.

Bei vollständig unverschlüsselten Netzwerken braucht der Angreifer nicht nach einer Lücke im
System zu suchen, sondern kann sofort und ohne Umwege am Netzwerk teilnehmen. Sie können
sich gegen unerwünschte Zugriffe auf Ihr Wireless LAN schützen. Die verfügbaren Sicherheits-
mechanismen müssen richtig konfiguriert und aktiviert werden, um sich vor Übergriffen und
Missbrauch zu schützen.

© HERDT-Verlag Schulversion 187


15 Datensicherheit

WEP-Protokoll
Für die Absicherung eines Funknetzwerks wird oft das WEP-Protokoll (Wired Equivalent Privacy)
verwendet. Das Protokoll hat einige Sicherheitslücken und kann durch Auslesen der Verschlüsse-
lung in wenigen Sekunden geknackt werden. Das WEP-Protokoll ist dennoch eine wichtige
Sicherheitskomponente, da geringer Schutz besser ist als kein Schutz.

Bei der Verschlüsselung mit WEP legt der Anwender auf seinem Access Point einen WEP-Key fest.
Ein WEP-Key ist eine Zeichenkette von Zahlen und Buchstaben. Gültige Zeichen beim WEP-Key
sind die Zahlen 0 bis 9 und die Buchstaben a bis f sowie A bis F. Der WEP-Key sollte möglichst aus
einer komplexen Zahlen- und Buchstabenreihe bestehen. Grundlage für die Berechnung der
Zufallszahlen ist der vom Anwender festgelegte WEP-Key, ein rein statischer Schlüssel, der auf
allen Access Points und Clients zum Einsatz kommt.

Dieses Verfahren birgt Sicherheitsrisiken. Ein Angreifer kann versuchen, den Schlüssel rechnerisch
zu rekonstruieren. Nur sehr wenige WLAN-Lösungen sehen für jeden Client einen eigenen Schlüssel
vor. Um die Sicherheit zu erhöhen, sollte der definierte WEP-Key in regelmäßigen Abständen
geändert werden. Nachteilig wirkt sich allerdings der sinkende Datendurchsatz aus, der durch den
Ver- und Entschlüsselungsvorgang verursacht wird. Der verwendete WEP-Key muss jeder Station im
drahtlosen Netzwerk bekannt sein, sonst kann kein Zugriff erfolgen.

Für den Fall, dass Ihr Access Point oder einer Ihrer Computer keine Verschlüsselung mit WPA
(siehe folgenden Abschnitt) unterstützt, können Sie die ältere WEP-Verschlüsselung nutzen. Sie
können Ihr Netzwerk mit WEP weitgehend vor Attacken schützen, allerdings erreichen Sie nie
denselben Schutz wie mit WPA. Aus diesem Grund ist es empfehlenswert, schon vor der
Anschaffung der Hardware zu überprüfen, ob die gewünschte Hardware WPA-tauglich ist oder
noch besser WPA2-tauglich.

Bei einer 128-Bit-Verschlüsselung muss der Schlüssel zudem exakt 26 Zeichen lang sein. Bei der
Vergabe des WEP-Schlüssels sollten Sie auf sich wiederholende Zeichen verzichten und den Key
so komplex wie möglich gestalten. Ein WEP-Key für eine 128-Bit-Verschlüsselung wäre zum
Beispiel F384baCe13D61bfA95deE38c7c.

WPA-Protokoll
Die Abkürzung WPA steht für Wi-Fi Protected Access. Mithilfe der WPA-Verschlüsselung können
Sie Ihr drahtloses Netzwerk relativ unkompliziert und schnell absichern. Der Pre-Shared Key (PSK)
ist ein Schlüssel, der dem Access Point und allen WLAN-Teilnehmern zur Verfügung stehen muss.
Mithilfe dieses Master-Schlüssels ändert der Access Point in regelmäßigen Intervallen die Ver-
schlüsselung. Dieser Vorgang wird dynamischer Schlüsselwechsel genannt.

Wie beim Verwaltungskennwort für den Access Point empfiehlt es sich, für den PSK eine kom-
plexe Reihe aus Buchstaben, Zahlen und Sonderzeichen zu wählen. Der PSK sollte zudem aus
mindestens 20 Zeichen bestehen. Zum Aktivieren von WPA mit PSK am Access Point öffnen Sie
dessen Verwaltungswebseite. Wenn Sie die WPA-Verschlüsselung erfolgreich aktiviert haben,
erhöht sich die Sicherheit Ihres drahtlosen Netzwerks um ein Vielfaches. Zusammen mit den
anderen Methoden haben Sie Ihr WLAN bestmöglich abgesichert.

188 Schulversion © HERDT-Verlag


Datensicherheit 15

WPA2
WPA2 stellt eine deutlich verbesserte Variante seiner Vorgängerversion WPA dar. Durch ein neu
aufgenommenes Verschlüsselungsverfahren mit der Bezeichnung AES-CCM (Advanced
Encryption Standard – Counter with CBC-MAC) konnte die Sicherheit gegenüber WPA nochmals
erheblich verbessert werden. Das Verfahren stellt allerdings auch deutlich höhere Anforderungen
an die Hardware, sodass Geräte, die mit WPA umgehen können, nicht unbedingt auch WPA2
beherrschen.

Viele Router, auch im Heimbereich, unterstützen sichere WLANs auf Basis von WPA oder WPA2.

15.4 Computerviren

Erklärung des Begriffs


Viren sind eine stets gegenwärtige Gefahr für Computersysteme. Im Folgenden werden die
Fragen behandelt:
 Was sind Viren?
 Wie verbreiten sich Viren?
 Welche Maßnahmen gibt es gegen Viren?

Ein Computervirus ist ein Programm (genauer: ausführbarer Code), das versteckt arbeitet und
dabei bestimmte Funktionen ausführt. Eine dieser Funktionen ist meist die eigene Verbreitung.
Da es sehr unterschiedliche Arten von Viren gibt, erfolgt hier eine grobe Einteilung:
 Bootsektorviren speichern sich im Startsektor eines Speichermediums und werden bei
jedem Systemstart von dem Medium aktiviert.
 Programmviren speichern sich an bestimmten Stellen innerhalb von Programmen ab.
Handelt es sich dabei nicht um das Dateiende, dann ersetzen sie die Befehle, die dort
gespeichert waren, mit ihren eigenen, was oft zu Fehlfunktionen führt.

© HERDT-Verlag Schulversion 189


15 Datensicherheit

 Trojanische Pferde sind Programme, die sich als nützliches Programm oder Systemdienst
tarnen. Es könnte sich um ein nützliches Tool handeln, das im Hintergrund ganz andere
Funktionen ausführt, z. B. Daten versendet oder Netzwerkzugriffe auf Ihren Rechner
ermöglicht. In diesem Fall wird auch von einer Backdoor gesprochen, einer Hintertür.
Trojaner kommen in den meisten Fällen per E-Mail auf den PC.
 Makroviren werden mit Office-Dokumenten verbreitet und basieren darauf, dass es viele
moderne Anwendungen ermöglichen, wiederkehrende Abläufe durch sogenannte Makros zu
automatisieren. Diese Makros werden dann innerhalb des Dokuments gespeichert. Benutzt
wird für diese Makros oft die Programmiersprache VBA (Visual Basic for Applications), die es
auch ermöglicht, auf Funktionen des Betriebssystems zuzugreifen. Seit Office 2007 werden
Dokumente standardmäßig ohne Makros gespeichert. Microsoft hat ein spezielles Datei-
format (.docm bzw. .xlsm) eingeführt, um zusätzlich Makros im Dokument zu speichern.
 Würmer sind E-Mails mit gefährlichen Anhängen. Während ein klassischer Virus noch eine
Interaktion des Benutzers (z. B. Starten eines infizierten Programms oder Systems) benötigt,
um aktiv zu werden, greifen Würmer ihr Ziel durch das Ausnutzen von Schwachstellen im
Betriebssystem oder in Anwendungen an. Dazu nutzen die meisten Würmer auf dem befalle-
nen Rechner gespeicherte E-Mail-Adressen und verschicken sich (als Attachment) an diese
potenziellen neuen Opfer.

Was ein Virus letztlich bewirkt, hängt einzig und allein davon ab, welche Befehle der Viren-
Programmierer seinem Schädling mitgegeben hat. Das reicht von gelegentlichen Programm-
abstürzen oder merkwürdigen Meldungen bis hin zum kompletten Ausfall eines Rechners. Wenn
Sie über eine Datensicherung verfügen, liegt der maximale Schaden meist beim zeitweiligen
Ausfall Ihres Systems. Hinzu kommen noch die Schäden, die dadurch entstehen können, dass
vertrauliche Daten in die falschen Hände gelangen.

Welche Schädlinge gibt es noch?


Früher gab es nur Viren. Inzwischen gibt es eine Vielzahl weiterer Schädlinge. Der Sammelbegriff
für alle Schädlinge lautet Malware.
 Dialer: Dialer sind kleine Programme, die Computern mit Modem oder ISDN-Karte einen
neuen Internetzugang unter einer 0190er- oder 0900er-Nummer einrichten. Pro Einwahl
können mehrere Hundert Euro Kosten verursacht werden.
 Adware und Spyware: Ihre Daten und Surfgewohnheiten sind für manche Werbefirmen viel
wert. Sie wollen Ihnen daher Software einschleusen, die Ihre Internetaktivitäten aufzeichnet
und Ihre Privatsphäre ausspioniert. Werbemodule verändern zum Beispiel die Startseite
Ihres Browsers.
 Keylogger: Diese speziellen Programme zeichnen Ihre Tastatureingaben auf und kommen so
an Ihre Benutzernamen und Kennwörter, zum Beispiel für Ihr Homebanking.
 Phishing und Pharming-Mails: Weit verbreitet ist dieser E-Mail-Typ, mit dem Betrüger ver-
suchen, an Ihre Zugangsdaten für Online-Banking zu kommen. Phishing ist ein Kunstwort aus
Password und Fishing in der Bedeutung von „Passwort fischen“.
 Rootkits: Der Begriff Rootkit kommt ursprünglich aus dem Bereich des Betriebssystems Unix.
Ein Rootkit ist eine Sammlung von Programmen, die es Administratoren erlaubt, Zugriff auf
einen Computer zu erlangen. Rootkits werden von Hackern verwendet, um nach einem Ein-
bruch in einen PC immer Zugriff zu bekommen, ohne dass der Besitzer des PCs das merkt.
 Ransomware: Dabei handelt es sich um eine spezielle Art von Trojanern, welche die Dateien
eines Computers verschlüsseln. Der Anwender erhält erst wieder Zugriff auf seinen PC und
seine Daten, wenn er an den Angreifer Geld bezahlt.

190 Schulversion © HERDT-Verlag


Datensicherheit 15

Verbreitung von Viren


Bevor ein Virus aktiv werden kann, müssen zwei Schritte erfolgen: Er muss auf Ihr System gelangen
und er muss dort aktiviert werden.

Auf Ihr System gelangen kann ein Virus dann, wenn Sie auf Daten zugreifen, die noch nicht lokal
gespeichert sind. Das sind in erster Linie Anhänge in E-Mails, Datenträger (USB-Datenträger,
Speicherkarten oder optische Medien wie BDs/DVDs/CDs), Netzwerk- und Internetzugriffe. Dabei
ist es in der Regel so, dass Sie eine virenverseuchte Datei jederzeit auf Ihrem Rechner speichern
können, ohne den Virus zu aktivieren.

Um einen Virus zu aktivieren, müssen Sie die Datei öffnen, in der er gespeichert ist. Es reicht im
Zweifelsfall aus, ein Programm auf einer CD zu starten oder die Ausführung von Skripten beim
Internet-Surfen zuzulassen. Das Speichern übernimmt oft der Virus selbst.

Am weitesten verbreitet sind heute Würmer. Die häufigste Form der Verbreitung erfolgt über
Attachments (Anhänge) bei E-Mails. Wenn Sie sich den Inhalt eines Attachments anschauen, öffnen
Sie dabei die Datei. Enthält diese Datei einen Virus, wird dieser aktiviert und infiziert Ihr System.
Einige Mail-Würmer nutzen Sicherheitslücken in Programmen. Für eine Infektion kann es dann
ausreichen, die E-Mail zu lesen oder eine Vorschau einzublenden, denn dadurch wird der Virus
aktiviert.

Für die Infektion durch einen „echten“ Wurm reicht es schon, Ihren Computer eingeschaltet und
eine bestehende Internetverbindung zu haben. Wenn Ihr Rechner durch keine weiteren Maß-
nahmen wie z. B. eine Firewall oder installierte Updates geschützt wird, kann er also theoretisch
schon kurz nach dem Herstellen der Internetverbindung infiziert sein.

Maßnahmen gegen Viren


Hundertprozentigen Schutz haben Sie nur dann, wenn Sie keine fremden Datenträger nutzen und
Ihr Rechner keinerlei Netzwerkzugriffe ermöglicht. Da dies ziemlich unrealistisch ist, müssen Sie
versuchen, die Gefahr weitestgehend zu minimieren.

Ein Antivirenprogramm stellt die wichtigste Schutzmaßnahme dar, die Sie auch unbedingt nutzen
sollten. Jedes dieser Programme bietet Ihnen die Möglichkeit, Ihren Rechner auf Virenbefall zu
überprüfen. Viele von ihnen arbeiten im Hintergrund. Dateien werden dann beim Öffnen auto-
matisch auf vorhandene Viren überprüft.

Bedenken Sie: Ein Virenscanner findet nur solche Viren, die er auch kennt. Die Informationen
hierzu werden in sogenannten Signaturdateien gespeichert, die Sie regelmäßig aktualisieren
sollten. Nach der Aktualisierung sollten Sie Ihre Festplatte auf Virenbefall untersuchen.

Wird ein Virus gefunden, bieten die meisten Virenscanner verschiedene Optionen an. Oft ist es
möglich, die befallenen Dateien zu reparieren. Das funktioniert allerdings nicht immer, und bei
manchen Viren bleibt Ihnen sowieso keine andere Möglichkeit, als die befallene Datei zu löschen.
Handelt es sich dabei dann um eine wichtige Betriebssystem-Datei, wird Ihr Rechner nicht mehr
(richtig) arbeiten. In diesen Fällen ist es vorteilhaft, wenn Sie über eine funktionierende
Datensicherung verfügen.

Fährt ein Rechner gar nicht mehr hoch, hilft nur noch ein entsprechendes Boot-Medium
(Installations-DVD/CD), auf dem sich im Idealfall gleich noch der Virenscanner (mit den aktuellen
Signaturdateien) und ein Programm zum Zurückspielen der Datensicherung befinden. Einige
Hersteller von Virenscannern liefern solche Medien gleich mit.

© HERDT-Verlag Schulversion 191


15 Datensicherheit

Programmeinstellungen
Da Würmer heute am weitesten verbreitet sind, sollten Sie in makrofähigen Programmen ent-
sprechende Einstellungen vornehmen. Die meisten Anwendungen bieten hier die Möglichkeit,
vor dem Ausführen der Makros erst beim Benutzer nachzufragen, ob dies gewünscht ist.

Die E-Mail-Programme Outlook und Windows Mail lassen sich verschiedenen Sicherheitszonen
zuordnen. Wählen Sie hier am besten die Zone „eingeschränkte Sites“. Zusätzliche Sicherheit
erreichen Sie, wenn Sie die Anzeige von E-Mails im HTML-Format deaktivieren.

Öffnen Sie niemals direkt die Anhänge in E-Mails, sondern speichern Sie zuerst die Datei auf
Ihrem Rechner. Überprüfen Sie die Datei mit einem aktuellen Virenscanner, bevor Sie sie
öffnen.

Updates
Viele Sicherheitsprobleme entstehen durch Programmfehler. Zu den meisten geben die Hersteller
der Software regelmäßig entsprechende Patches und Updates heraus. Sie können Ihr Computer-
system auch sicherer gegenüber Gefahren durch Viren und Würmer machen, indem Sie Patches für
alle benutzte Software in das System einspielen, wenn sie verfügbar gemacht werden.

Bei einigen Programmen werden häufiger Sicherheitslücken bekannt (z. B. Internet Explorer oder
Adobe Reader). Nutzen Sie, falls möglich, alternative Anwendungen (z. B. Firefox oder Foxit
Reader), damit diese Sicherheitslücken nicht ausgenutzt werden können.

Phishing
Eine kriminelle Methode, sich ohne Einsatz von Computerviren Zugang zu geheimen Daten zu
verschaffen, ist das sogenannte Phishing. Bei dieser Art der Computerkriminalität werden E-Mails
verschickt, die im Layout E-Mails von bekannten Dienstleistern (Banken, Online-Auktionshäusern
etc.) täuschend ähnlich sehen. In diesen E-Mails werden die Empfänger aufgefordert, entweder
direkt die gesuchten Daten als Antwort zu senden oder sich auf der Homepage einzuloggen, um
dort Einstellungen vorzunehmen. Die vermeintliche Homepage ist in so einem Fall nur ein optisch
gut gemachter Klon der Original-Seite. Der Urheber der Phishing-Mail kommt allerdings in den
Besitz der Zugangsdaten, die unwissende Benutzer auf diesem gefälschten Server eingeben. Mit
diesen Zugangsdaten können dann z. B. die echten Bankkonten der Opfer leer geräumt werden.
Da kein Antivirusprogramm einen naiven Benutzer davor schützen kann, auf einer Website seine
geheimen Passwörter einzugeben, sollten Sie bei allen E-Mails, die Sie auffordern, geheime Daten
irgendwo preiszugeben, extrem skeptisch sein.

Fazit
Die sogenannte Cyberkriminalität (Computer- und Internetkriminalität) hat inzwischen gigan-
tische Ausmaße erreicht. Der angerichtete Schaden geht in die Milliarden. Mit der weiter
zunehmenden Verbreitung von mobilen Endgeräten wie Smartphones u. Ä. wird sich dieser
Zustand noch verschlimmern.

192 Schulversion © HERDT-Verlag


Datensicherheit 15

15.5 Datensicherung – Backups

Datensicherung für Notfälle


Um ein Gespür für diese Thematik zu entwickeln, gehen Sie beispielsweise einmal davon aus,
dass die Festplatte in Ihrem Rechner defekt ist. Die Inhalte sind damit verloren. Wenn Sie jetzt
den Verlust und die Möglichkeiten zur Wiederherstellung betrachten, können Sie zwei Arten von
verlorenen Daten unterscheiden:
 Betriebssystem und installierte Anwendungen lassen sich neu installieren. Das kostet Zeit,
die für andere produktive Arbeit verloren geht. Setzen Sie pro Rechner einen Arbeitstag an.
 Alle Daten, das heißt Dokumente, die Sie erstellt oder bearbeitet haben, sind verloren.

Anhand dieser beiden Faktoren können Sie nun versuchen, den Verlust zu beziffern. Der Auf-
wand, den Sie für die Datensicherung betreiben, sollte in einem vernünftigen Verhältnis zu
diesem Verlust stehen. Um den Aufwand abzuschätzen, müssen Sie diese Fragen beantworten:
 Was bzw. welche Daten sichern?
 Wohin, also auf welches Medium sichern?
 Wie oft sichern?
 Womit sichern?

Was sichern?
Unwiederbringlich verloren sind im Ernstfall alle Dateien, die Sie selbst erstellt oder überarbeitet
haben. Sie sollten auf jeden Fall gesichert werden. Alles, was installiert wurde, ändert sich nor-
malerweise eher selten und muss dementsprechend auch nicht so oft gesichert werden.

Eine durchdachte Ablagestruktur (wo werden welche Dateien gespeichert?) verringert hierbei
den Aufwand immens. Wenn Sie zum Speichern von Daten-Dateien eigene Ordner oder Lauf-
werke benutzen, ist es einfacher, die relevanten Dateien auszuwählen. In Netzwerken speichern
die Benutzer solche Dateien üblicherweise auf Servern in speziellen Laufwerken. Dies erleichtert
die Datensicherung ungemein, da sie nur noch an wenigen zentralen Stellen erfolgen muss.

Wohin sichern?
Ziel sollte immer die Datensicherung auf ein externes Medium sein, d. h., nach der Sicherung
befinden sich die Daten auf einem Datenträger, der physikalisch vom Computer getrennt ist.
So haben Viren oder Hacker keine Chance. Es bieten sich unterschiedliche Möglichkeiten an,
die mit verschiedenen Vor- und Nachteilen behaftet sind:

Medium Vorteile Nachteile


Anderer Ort auf Schnell und einfach Kein Schutz vor Schadcode, Anwender-
derselben fehlern oder Festplattendefekten;
Festplatte Lagerung der Daten an ein und dem-
selben Ort

© HERDT-Verlag Schulversion 193


15 Datensicherheit

Medium Vorteile Nachteile


Andere Festplatte Gute und schnelle Lösung, wenn Erfordert den Einbau eines Wechselrah-
die Festplatte in einem mens, den Kauf eines Leergehäuses und
Wechselrahmen oder externen zusätzlicher Festplatten oder einer
USB-Gehäuse steckt und nach kompletten externen Festplatte
der Sicherung entfernt werden
kann
USB-Stick oder Schnell, einfach zu bedienen und Ab einer bestimmten Speicherkapazität
Speicherkarte zu transportieren sowie ist eine externe USB-Platte preiswerter.
preiswert (wenn die Speicher- Die Lebensdauer ist beschränkt durch
kapazität ausreicht) eine bestimmte mögliche Anzahl von
Schreib- und Lesevorgängen der Medien.
BDs/DVDs/CDs Preiswert (bis auf BDs); Nur mittlere Speicherkapazität, ein
gut geeignet für den geeigneter Brenner muss vorhanden
Hausgebrauch sein. Die Beschichtung der Medien altert
im Laufe der Zeit, irgendwann sind diese
dann nicht mehr lesbar.
Sicherungsbänder Professionelles Verfahren mit Setzt spezielle Hardware (Streamer)
hohen Speicherkapazitäten und voraus, die teuer in der Anschaffung ist
mehrfach verwendbaren Medien
zu akzeptablen Preisen; verschie-
dene Ausführungen für
unterschiedlichen Bedarf
Cloud-Speicher Flexibler Datenspeicher und Die Daten liegen im Rechenzentrum
überall zugreifbar. Es ist keine beim Anbieter und werden über das
eigene Hardware notwendig, der Internet übertragen.
Speicherplatz ist ausbaubar.

Unabhängig von der Sicherung lokaler Dateien werden häufig firmenweit bestimmte Netzlauf-
werke in regelmäßigen Abständen auf Sicherungsbändern gesichert. Durch Speichern von Kopien
wichtiger Dokumente auf diesen Netzlaufwerken werden diese automatisch gesichert.

Unabhängig davon, welches Medium Sie benutzen, sollten Sie sich auf jeden Fall über die
folgenden Themen einige zusätzliche Gedanken machen:
 Haltbarkeit: Wie lange sollen die Daten archiviert werden? Die meisten Hersteller geben
hierzu Werte an. Um allerdings Daten für Ihre Ururenkel zu speichern, ist keines der
genannten Medien geeignet.
 Lagerung: Die Lagerung kann direkten Einfluss auf die Haltbarkeit haben. Magnetische Auf-
zeichnungsverfahren wie Festplatten oder Sicherungsbänder reagieren empfindlich auf
magnetische Felder. BDs/DVDs/CDs sollten keinen direkten Lichtquellen ausgesetzt werden.
 Hierzu gehört auch der Sicherheitsaspekt. Die Medien könnten gestohlen oder durch einen
Brand vernichtet werden. Ein feuersicherer Safe, am besten in einem entfernten Gebäude,
bietet hier zusätzlichen Schutz.
 Erfolg der Datensicherung: Zu einer guten Sicherungsstrategie gehört auch ein Wiederher-
stellungsversuch, um sich gegen Aufzeichnungsfehler abzusichern. Eine regelmäßige
Datensicherung hilft nicht, wenn Sie im Notfall feststellen, dass Sie auf die vermeintlich
gesicherten Daten nicht zugreifen können.

194 Schulversion © HERDT-Verlag


Datensicherheit 15

Wie oft sichern?


Die Beantwortung dieser Frage hängt stark davon ab, wie häufig sich die Daten ändern und wie
hoch Sie den Wert der Daten einschätzen. Für Online-Geschäfte, bei denen Hunderte von Vor-
gängen jede Stunde anfallen, sind sicher weitaus komplexere Sicherungsstrategien notwendig
als an Ihrem PC zu Hause.

Datensicherungsstrategien
Im Folgenden wird beispielhaft eine Datensicherungsstrategie vorgestellt, die für Schreibbüros
üblich ist. Dabei werden alle Daten auf einem zentralen File-Server gespeichert, der mit einem
Streamer ausgestattet ist. Die Daten werden täglich nach einem bestimmten System auf unter-
schiedlichen Bändern gesichert. Sie sind folgendermaßen beschriftet und werden entsprechend
eingesetzt:
Montag, Dienstag, Mittwoch, Donnerstag, Freitag1, Freitag2, Freitag3, Freitag4
Die Freitagsbänder werden abwechselnd benutzt. Damit haben Sie eine Sicherung, die den Stand
der letzten fünf Tage abdeckt, können im Notfall aber auch drei Wochen zurückspringen. Diese
Strategie lässt sich durch das Einführen weiterer Bänder (Januar, Februar ... 2018, 2019) beliebig
erweitern.

Datensicherung

Die meisten Unternehmen führen die Datensicherung auf Band mit einem oder zwei Daten-
sicherungsservern durch, die getrennte Server sichern und jeweils eigene Laufwerke verwenden.

Medienrotation
Die Medienrotation beschreibt, wann die Bänder im Laufwerk gewechselt, überschrieben oder
gesichert werden sollen. Sie gehört zu den wichtigsten Planungspunkten der Datensicherung. Die
Rotation muss die Zeitdauer der Wiederherstellung berücksichtigen. Ein gutes Backup-Konzept
beinhaltet auch immer ein Konzept, in welchem Zeitraum Daten wiederhergestellt werden kön-
nen. Bei einer einfachen Medienrotation, die zum Beispiel jeden Tag eine Vollsicherung vorsieht,
lassen sich Dateien sehr schnell wiederherstellen, ohne dass der Administrator viele Bänder
wechseln muss. Beachten Sie dabei immer, dass die verwendeten Sicherungsbänder sensible
Daten enthalten. Wer im Besitz dieser Bänder ist, kann die darauf befindlichen Daten auch ohne
Beachtung der Zugriffsberechtigungen laden.

© HERDT-Verlag Schulversion 195


15 Datensicherheit

Vollsicherungen mit Bandwechsel


Bei einer Vollsicherung werden alle Daten auf einmal gesichert. Die Vollsicherung hat den Vorteil,
dass ein Administrator von jedem Tag, an dem eine Vollsicherung verfügbar ist, Daten unein-
geschränkt und schnell wiederherstellen kann. Der Speicherplatz einer Vollsicherung ist um einiges
größer als bei anderen Sicherungsvarianten. Die schnellsten Wiederherstellungszeiten erreichen
Sie, wenn Sie jeden Tag eine Vollsicherung Ihrer Daten durchführen. In diesem Fall wissen Sie, dass
jeder Mediensatz alle wichtigen Daten des Unternehmens enthält. Bei einer Vollsicherung sollte
dennoch jeden Tag ein neues Band eingelegt werden bzw. in der Library genügend Kapazität zur
Verfügung stehen, dass die Sicherung mindestens für eine Woche Platz hat.

Ideal bei einem Konzept, bei dem Sie zehn Bänder zur Verfügung haben und jeden Tag eine
Vollsicherung durchführen können, die auf ein Band passt, ist eine Beschriftung mit Montag1,
Dienstag1, Montag2 usw. In diesem Fall wissen Sie immer ganz genau, dass jedes dieser Bänder alle
gesicherten Daten des speziellen Tages enthält. In diesem Beispiel können Sie die Daten Tag genau
bis zu 14 Tage zurück wiederherstellen. Wenn Sie eine Library mit 5 Schächten einsetzen, reicht es,
wenn Sie am Ende der Woche bzw. am Montag der nächsten Woche vor der Sicherung ein neues
Magazin laden oder die Bänder wechseln. Die Sicherungsbänder der ersten Woche sollten an einem
sicheren Ort gelagert werden. Selbst bei einem Katastrophenfall, in dem der Datensicherungsserver
im Keller abbrennt, sind so zumindest die Daten der letzten Woche noch verfügbar. Am Wochen-
ende bleibt jeweils das Band vom Freitag im Laufwerk, da keine Sicherung stattfindet.

Inkrementelle und differenzielle Sicherungen


Diese beiden Sicherungsvarianten sind vor allem in sehr großen Umgebungen weit verbreitet. Sie
kommen zum Einsatz, wenn keine tägliche Vollsicherung durchgeführt werden kann. Inkremen-
telle und differenzielle Sicherungen komplizieren eine Medienrotation und sollten wenn möglich
vermieden werden. Bei großen Datenmengen wird das nicht mehr möglich sein, und Sie müssen
ein Konzept zur effizienten Datensicherung erarbeiten.

Inkrementelle Sicherung
Eine inkrementelle Sicherung sichert alle Daten, die sich seit der letzten Sicherung geändert
haben. Unveränderte Daten werden nicht gesichert, da sich diese in einer vorherigen Sicherung
befinden. Bei dieser Sicherungsart bauen die Datensicherungen aufeinander auf. Zu einem
gewissen Zeitpunkt benötigen Sie eine Vollsicherung, zum Beispiel freitags. Am Montag werden
alle Daten gesichert, die sich seit Freitag verändert haben. Am Dienstag werden alle Daten
gesichert, die sich seit Montag verändert haben. Wenn Sie daher am Freitagmorgen eine voll-
ständige Wiederherstellung durchführen müssen, werden erst die letzte Vollsicherung des letzten
Freitags und dann alle Sicherungen bis zur aktuellen inkrementellen Sicherung benötigt.

Der Vorteil dabei ist, dass jeder Sicherungsvorgang sehr schnell durchgeführt werden kann, da
nur wenige Daten gesichert werden müssen. Der Nachteil ist, dass bei einer Wiederherstellung
zahlreiche Bänder gewechselt und katalogisiert werden müssen. Wenn ein Band defekt ist, kann
die Wiederherstellung fehlschlagen, und die Daten des Tages, die dieses Band gesichert hat, sind
unwiederbringlich verloren. Bei inkrementellen Sicherungen sollten Sie auf jeden Fall einmal in
der Woche eine Vollsicherung durchführen.

196 Schulversion © HERDT-Verlag


Datensicherheit 15

Differenzielle Sicherung
Eine differenzielle Sicherung sichert alle Daten seit der letzten Vollsicherung. Sie müssen daher
für diese Strategie an einem gewissen Tag eine Vollsicherung machen. Da jede differenzielle
Sicherung eine Vollsicherung voraussetzt, muss eventuell bei einer kompletten Wiederher-
stellung zunächst die Vollsicherung und dann die letzte differenzielle Sicherung wiederhergestellt
werden. Der Nachteil von differenziellen Sicherungen im Vergleich zu inkrementellen ist, dass im
Zeitraum nach der Vollsicherung die Datensicherung immer länger dauert, da immer mehr Daten
gesichert werden müssen. Wiederherstellungsvorgänge lassen sich aber sehr viel schneller durch-
führen als mit inkrementellen Sicherungen. Bei einer differenziellen Sicherung sollten Sie einmal
in der Woche (zum Beispiel sonntags) eine Vollsicherung durchführen und diese nur alle vier
Wochen überschreiben lassen. An jedem Tag der Woche können Sie ein neues Medium ver-
wenden, um die geänderten Daten seit Sonntag zu sichern.

Womit sichern?
Bleibt noch die Frage, womit die Datensicherung erfolgen soll. Grundsätzlich kann das durch
einfaches Kopieren der Dateien erfolgen. Empfehlenswert ist allerdings der Einsatz sogenannter
Backup-Programme, die genau für diesen Zweck entwickelt wurden.

Alle modernen Betriebssysteme enthalten ein entsprechendes Zusatzprogramm. Reicht dies für
Ihre Ansprüche nicht aus, so gibt es eine Vielzahl an Produkten, die nahezu jeden möglichen
Bedarf und Einsatzbereich abdecken.

Vor allem Unternehmen, die große Datenmengen in kleinen Datensicherungsfenstern sichern


müssen, kommen um den Erwerb eines Autoloaders oder einer Library nicht herum. Der
Unterschied zwischen Autoloader und Library ist folgendermaßen definiert: Viele Hersteller
dieser Geräte bezeichnen Datensicherungsgeräte, die nur ein Laufwerk haben, aber mehrere
Bänder lagern und selbstständig austauschen können, als Autoloader. Eine Library verfügt über
viele Bänder und mehrere Bandlaufwerke, die gleichzeitig Daten sichern können. Die Spezialität
von Autoloadern und Tape Libraries ist die schnelle Sicherung von großen Datenmengen ohne
lästigen Bandwechsel. Die Bänder bleiben im Laufwerk in einem Magazin. Durch den Einsatz von
Libraries haben Unternehmen den Vorteil, dass auch über das Wochenende große Datenmengen
gesichert werden können und der Bandwechsel nicht vergessen wird.

Wenn Daten zurückgesichert werden müssen, ist der Vorteil von Libraries, dass der Administrator
nicht Diskjockey spielen muss, sondern die Daten schnell und einfach wiederhergestellt werden
können. Die häufigsten Wiederherstellungsvorgänge sind keine Desaster-Recoverys, sondern die
Wiederherstellung einzelner Dateien, die versehentlich von Benutzern gelöscht oder falsch
bearbeitet wurden.

Bei der Auswahl eines Autoloaders bzw. einer Library sind zwei wichtige Punkte zu beachten:
 die Anzahl der Bänder, die gleichzeitig im Gerät verbleiben können,
 die Anzahl der Bandlaufwerke im Gerät, die gleichzeitig Daten sichern können.

Weiterhin ist bei Autoloadern zu bedenken, dass die Datenmenge, die auf den Bändern
gespeichert werden kann, für einen angemessenen Zeitraum ausreicht. Wichtig ist auch der
Zeitraum, in dem die Datensicherung läuft.

© HERDT-Verlag Schulversion 197


15 Datensicherheit

Hardware für die Datensicherung


Wenn feststeht, welchen Datenspeicher Sie für Daten verwenden wollen, geht es vor der Planung
und Einrichtung der Freigaben noch um die Frage, welches Datensicherungsgerät und welche
dazugehörige Software eingesetzt werden sollen. Ihnen stehen heutzutage verschiedene Geräte
zur Datensicherung zur Auswahl, die unterschiedlich teuer sind und manchmal auch miteinander
kombiniert werden können. Für eine effiziente Sicherung lassen sich diese Technologien ebenfalls
miteinander kombinieren:
 herkömmliche interne oder externe Bandlaufwerke,
 Bandwechsler mit mehreren Laufwerken (sogenannte Autoloader oder Libraries),
 Bandroboter für SANs.

Abgesehen von diesen drei Sicherungssystemen sind noch weitere Entscheidungen bezüglich der
Datensicherung auf Band zu treffen. Vor dem Kauf eines Geräts sollten Sie eine Strategie ent-
wickeln, auf welcher Basis gesichert werden soll.

Einbauart und Schnittstellen


Für die Datensicherung auf Band stehen Ihnen interne oder externe Bandlaufwerke zur Ver-
fügung. Zunächst einmal muss entschieden werden, ob das Laufwerk in den Server eingebaut
werden soll oder extern betrieben wird.

Der Nachteil von internen Laufwerken ist, dass bei einem Defekt der Server aufgeschraubt
werden muss. Wenn Sie außerdem ein Bandlaufwerk mit höherer Kapazität erwerben wollen,
stehen Sie ebenfalls vor dem Problem, dass der Server aufgeschraubt werden muss, weil die
Erweiterung nicht im laufenden Betrieb stattfinden kann.

Interne Laufwerke sind dafür etwas günstiger als externe. Wenn Sie ein externes Laufwerk
kaufen, handelt es sich um das gleiche Bandgerät. Allerdings wird das Bandlaufwerk nicht in den
Server eingebaut, sondern in ein eigenes Chassis, das auf oder neben dem Server platziert wird.

Der Vorteil von externen Laufwerken ist, dass Reparaturen schneller durchgeführt werden
können. Auch eine Erweiterung ist besser möglich, da ein neues Bandlaufwerk meistens in das
gleiche Chassis passt. Ein weiterer Vorteil ist, dass beim Bandwechsel, falls er nicht durch Fach-
personal vorgenommen wird, der Server nicht versehentlich verschoben oder ausgeschaltet
werden kann, wenn der Auswurfknopf auf dem Laufwerk mit dem Ein-/Aus-Schalter des Servers
verwechselt wird.

Ein Nachteil des externen Laufwerks ist der Preis. Er ist etwas höher, da das Chassis extra
erworben werden muss. Ein weiterer Nachteil ist der Platzbedarf, da externe Geräte zusätzlichen
Platz benötigen, der oft nicht vorhanden ist. Wenn Sie in Ihrem Serverschrank keinen Platz mehr
haben, bietet sich ein internes Laufwerk an. Ansonsten ist ein externes Laufwerk deutlich besser,
auch wenn es ein paar Euro mehr kostet.

198 Schulversion © HERDT-Verlag


Datensicherheit 15

Schnittstellen – SATA, IDE und SCSI


Die meisten Bandlaufwerke werden als SCSI-Gerät angeboten. Es gibt aber auch sehr preis-
günstige IDE- oder SATA-Geräte. Verwenden Sie möglichst immer SCSI-Geräte. Außerdem sollten
Sie darauf achten, dass Sie beim Erwerb eines Datensicherungsgeräts für das Bandlaufwerk einen
eigenen Controller einbauen lassen. Dadurch ist sichergestellt, dass die Datensicherung nicht die
Übertragung der Festplatten beeinträchtigt. Vor allem bei externen Geräten sollten Sie darauf
achten, dass die Länge eines SCSI-Bus beschränkt ist.

Verwenden Sie kein externes Kabel, das viel länger als 1,5 Meter ist, da ansonsten die Datenüber-
tragung gestört werden kann. Die maximale Länge des SCSI-Busses betrifft auch die externen Ver-
bindungen. Wenn es Probleme beim Kabel oder dem Laufwerk gibt und die Festplatten am
gleichen Bus hängen, kann es zu einem Serverabsturz oder Datenverlust kommen. Aus diesem
Grund ist ein eigener Controller für das Bandlaufwerk die beste Lösung. Die maximale Kabellänge
bei SCSI wurde zwar immer weiter verlängert, und aktuelle SCSI-Controller reagieren bei Weitem
nicht mehr so empfindlich. Aber dennoch bietet sich ein eigener Controller an, um den Gefahren
eines gemeinsamen Betriebs von Bandlaufwerk und Festplatten aus dem Weg zu gehen. Bei den
meisten Bandlaufwerken ist im Paket ohnehin ein eigener SCSI-Controller dabei. SATA- und IDE-
Laufwerke sollten Sie möglichst nicht einsetzen, weil die Datenübertragung zu langsam und
unzuverlässig ist.

Anzahl der Bandlaufwerke planen


Wenn ein einzelnes Bandlaufwerk eines Autoloaders nicht in der Lage ist, die Daten schnell zu
sichern, sollten Sie sich den Kauf einer Library mit mehreren Bandlaufwerken, die gleichzeitig
Daten sichern können, überlegen. Mit mehreren Bandlaufwerken können außerdem mehrere
Sicherungsjobs parallel durchgeführt werden. Die Geschwindigkeit wird beim Einsatz mehrerer
Bandlaufwerke nicht unbedingt verdoppelt, da die Datenübertragung über das Netzwerk und die
Art der Dateien ebenfalls eine Rolle spielen. Beim Einsatz mehrerer Bandlaufwerke kann auch
parallel zu einem Sicherungsvorgang ein Wiederherstellungsvorgang durchgeführt oder können
ganze Bänder für die Archivierung kopiert werden. Ein weiterer Vorteil ist, dass beim Ausfall
eines Laufwerks die Datensicherung mit dem zweiten Gerät fortgesetzt werden kann, sodass
stets eine vollständige Datensicherung sichergestellt ist.

Anzahl der Bänder im Laufwerk planen


Die Auswahl der notwendigen Bandschächte ist ebenfalls ein wichtiger Punkt für die Auswahl
der richtigen Library. Es sollten immer so viele Bänder zur Verfügung stehen, wie innerhalb eines
Zeitraums zur Datensicherung benötigt werden. In einer Library sollten immer mindestens so viele
Bänder eingelegt werden können, dass wenigstens eine Wochensicherung, besser zwei, durch-
geführt werden kann, ohne das Magazin und die Bänder wechseln zu müssen. Beim Erwerb eines
Autoloaders sollte darüber hinaus immer das Wachstum des Unternehmens berücksichtigt werden.

Beispiel
In Ihrem Unternehmen müssen 800 GByte in der Vollsicherung gesichert werden. Am Tag ändern
sich etwa 40 GByte Daten, die gesichert werden müssen. Sie verwenden ein LTO-1-Laufwerk mit
einer Kapazität von 100 GByte unkomprimierter Daten. Sie führen einmal in der Woche eine
Vollsicherung durch, und an den Arbeitstagen sichern Sie täglich die geänderten Daten.

© HERDT-Verlag Schulversion 199


15 Datensicherheit

Zunächst benötigen Sie acht Bänder für die Wochensicherung. Auf einem Band haben Sie für
zwei inkrementelle Sicherungen Platz und verfügen zusätzlich über einen Spielraum. Somit
werden zusätzlich zu den acht Bändern für die Wochensicherung drei Bänder benötigt, damit
Planungssicherheit herrscht, wenn die Datenmenge steigt. Ihre Library braucht daher mindestens
elf Schächte, um die Sicherung einer Woche ohne Wechsel durchführen zu können. Wenn Sie
beabsichtigen, die Datenmengen länger zu speichern, zum Beispiel für zwei Wochen, benötigen
Sie in diesem Fall schon 22 Schächte.

Wenn die ohne Bandwechsel erfolgte Sicherung vier Wochen aufbewahrt werden soll, benötigen
Sie 44 Schächte. Wenn Sie jeden Tag eine Vollsicherung ohne Magazinwechsel durchführen und
diese Daten zwei Wochen behalten wollen, benötigen Sie für jeden Wochentag acht Bänder. Bei
sieben Tagen, wenn zum Beispiel bei Ihnen auch samstags und sonntags gearbeitet und gesichert
werden muss, benötigen Sie für eine Woche Vollsicherung 56 Bänder. Je mehr Bänder und Band-
laufwerke in eine Library eingebaut werden, umso teurer wird das Gerät. Sie sollten daher früh-
zeitig genau planen, wie Ihre Sicherungsstrategie aussieht, welche Datenmenge Sie sichern
wollen und in welchen Intervallen die Bänder in der Library gewechselt werden sollen.

15.6 Übung

Datenschutz verstehen
Level Zeit 10 Minuten

Übungsinhalte  Bedeutung von Benutzerkonten und Zugriffsrechte für die


Datensicherheit kennen
 Wissen, was Symmetrische Verschlüsselung und Asymmetrische
Verschlüsselung ist
 WPA2 verstehen
 Malware kennen
Übungsdatei Uebung15.pdf
Ergebnisdatei Uebung15-E.pdf

200 Schulversion © HERDT-Verlag


Datenschutz 16

16
16. Datenschutz

16.1 Problemstellungen bei personenbezogenen Daten


Die Leistungsfähigkeit der modernen Informationsgesellschaft beruht zu einem großen Teil
auf dem reibungslosen Datenaustausch und der ständigen Verfügbarkeit der benötigten
Informationen. An vielen Stellen werden dabei personenbezogene Daten gespeichert, verwaltet
und bearbeitet, z. B. bei Banken, Versicherungen, Ärzten, Behörden, Providern und
Telekommunikationsanbietern.

Personenbezogene Daten sind dabei alle Informationen, die sich eindeutig einer bestimmten
Person zuordnen lassen. Daraus können verschiedene Probleme entstehen:
 Es werden falsche Daten gespeichert.
 Eine Person weiß nicht, wer welche Daten über sie speichert.
 Die Daten gelangen in die falschen Hände.
 Daten werden zur gezielten Beeinflussung der Person benutzt.

Speziell im Zusammenhang mit der modernen Telekommunikation und hier vor allem mit dem
Internet wird es immer unüberschaubarer, wer welche Daten über wen gespeichert hat und wer
Zugriff auf diese Daten hat.

16.2 Gesetze zum Datenschutz

Überblick über das Bundesdatenschutzgesetz (BDSG)


Nach bundesdeutschem Recht kann jeder Einzelne selbst bestimmen, was er an Daten preisgibt
und wofür diese Daten Verwendung finden dürfen. Dieses sogenannte Recht auf informationelle
Selbstbestimmung ist laut Bundesverfassungsgericht ein Datenschutz-Grundrecht und im BDSG
(https://www.gesetze-im-internet.de/bdsg_2018) verankert.

Das BDSG regelt u. a.:


 wer Daten erheben, verarbeiten und nutzen darf;
 welche Daten erhoben, verarbeitet und genutzt werden dürfen;
 technische und organisatorische Maßnahmen;

© HERDT-Verlag Schulversion 201


16 Datenschutz

 die Weitergabe und Übermittlung von Daten;


 die Rechte der Betroffenen.
Das BDSG findet nur Anwendung, falls keine bereichsspezifischen Gesetze bestehen, die z. B.
Ermittlungsbehörden betreffen.

EU-Datenschutzgrundverordnung (DSGVO)
Seit dem 25. Mai 2018 ist die neue Datenschutzgrundverordnung (DSGVO) in Kraft. Die DSGVO
enthält viele Neuerungen, die auch im Vergleich zum BDSG eingehalten werden müssen. Davon
sind Privatpersonen und Unternehmen betroffen. Unternehmen müssen also darauf achten, dass
sie die Vorschriften der DSGVO und die neuen Vorschriften des BDSG einhalten.

Öffentliche und nicht öffentliche Stellen


Das BDSG unterscheidet zwei Bereiche der Datenverarbeitung. Die öffentlichen Stellen beziehen
sich auf alle Ämter und Behörden. Unter nicht öffentliche Stellen fällt der Großteil aller Tele-
kommunikationsanbieter (Provider) und -dienste, eben alles, was nicht über eine Behörde zur
Verfügung gestellt wird.

Beauftragte für den Datenschutz


Im öffentlichen Bereich sind Datenschutzbeauftragte vorgesehen, die in regelmäßigen Berichten
unter anderem auf Missstände und Weiterentwicklungen hinweisen.

Privatwirtschaftliche Unternehmen haben die Verpflichtung, einen Datenschutzbeauftragten


schriftlich zu bestellen, wenn mindestens fünf Arbeitnehmer überwiegend mit der automatisier-
ten Verarbeitung personenbezogener Daten befasst sind.

Was Internetprovider und Cloud-Anbieter wissen müssen


Unternehmen, die für Kunden Dienste in der Art von „Betreiber öffentlich zugänglicher elek-
tronischer Kommunikationsdienste“ zur Verfügung stellen, müssen seit August 2013 besonders
auf Hackerangriffe oder sonstige Verletzungen von persönlichen Daten ihrer Kunden reagieren.
Erfahren Unternehmen von einem Angriff auf ihr Netzwerk, bei dem Daten Dritter gestohlen oder
gelesen werden, müssen die Unternehmen innerhalb von 24 Stunden die nationale Daten-
schutzbehörde informieren (http://europa.eu/rapid/press-release_IP-13-591_de.htm).

Im Kern besagt diese EU-Vorschrift, dass Firmen, die internetbasierte Dienste aller Art für Kunden
oder die Öffentlichkeit zur Verfügung stellen, jede Art von Datenverlust, der durch Dritte
verursacht wurde, melden müssen. Das betrifft auch Unternehmen, die für Kunden kleinere
Anwendungen in der Cloud zur Verfügung stellen, also nicht nur große TK-Unternehmen oder
Internetdienstleister. Sind außerdem Finanzdaten von Kunden, IP-Protokolle oder sonst eine Art
privater Informationen nach außen gelangt, sieht die Verordnung vor, dass auch die Kunden
selbst informiert werden müssen.

Im Gegensatz zur bekannten Datenschutzrichtlinie für elektronische Kommunikation (2002/ 58/EG)


handelt es sich bei dieser Verordnung um geltendes Recht. Das heißt, es ist nicht den EU-Mitglieds-
staaten überlassen, aus der Verordnung ein Gesetz zu machen, sondern die Verordnung selbst stellt
bereits aktuell ein solches rechtskräftiges Gesetz dar.

202 Schulversion © HERDT-Verlag


Datenschutz 16

Der Sinn dieser Verordnung soll sein, dass alle Europäer über die gleichen Rechte verfügen,
unabhängig davon, in welchem Land sich die Daten des Benutzers befinden. Wenn Sie Ihre
internetbasierten Dienste in mehreren Ländern der EU anbieten, gelten diese Vorschriften bindend
in allen Mitgliedsstaaten.

Die Verordnung betrifft auch das bereits existierende Gesetz der allgemeinen Verpflichtung zur
Benachrichtigung der nationalen Behörden und Kunden (http://europa.eu/rapid/press-
release_IP-11-622_de.htm). Die neue Verordnung ergänzt die bereits existierende Verordnung
und legt ergänzend fest, welche Verpflichtungen die Unternehmen einhalten müssen, wenn
Daten von Anwendern verloren gehen. In der alten Verordnung ist nur festgelegt, dass Daten
geschützt werden müssen und Verpflichtungen entstehen, wenn Daten verloren gehen. Die neue
Verordnung schreibt jetzt vor, welche Maßnahmen Unternehmen ergreifen müssen und wie sich
Daten sichern lassen.

Eine EU-Kommission arbeitet mit der European Network and Information Security Agency (ENISA)
(http://www.enisa.europa.eu) zusammen, um eine Liste mit Beispielen für empfohlene Schutz-
maßnahmen und Verschlüsselungstechniken zusammenzustellen. Unternehmen sollten sich
daher bereits frühzeitig um einen Schutz der Daten bemühen, die mit den von der EU emp-
fohlenen Schutzmechanismen abgesichert werden.

Europäische Datenschutz-Grundverordnung: Cloud-Nutzung in


Unternehmen
Unternehmen müssen sich seit dem 25. Mai 2018 an die Vorschriften der Datenschutz-
Grundverordnung (DSGVO) halten. Gerade bei der Verwendung von Cloudlösungen muss hier
einiges beachtet werden. Es ist also höchste Zeit zu reagieren und die eigenen Abläufe darauf hin
zu überprüfen, dass die DSGVO eingehalten wird. Das gilt auch dann, wenn die Daten in der
Cloud gespeichert werden. Denn nicht automatisch haftet hier der Cloud-Anbieter für die
DSGVO-konforme Speicherung der Daten. Auch der Cloud-Nutzer, also das Unternehmen, das
den Cloud-Anbieter beauftragt hat, steht in der Verantwortung.

Nutzen Unternehmen Cloud-Dienste, handelt es sich dabei nach der DSGVO um eine
Auftragsverarbeitung. Dabei werden personenbezogene Daten im Auftrag des Cloud-Nutzers
durch den Cloud-Anbieter verarbeitet. Unternehmen, die Lösungen von Drittanbietern in der
Cloud nutzen, müssen sich mit dem Anbieter abstimmen, ob die Daten konform zur DSGVO
verarbeitet und gespeichert werden. Das ist im Artikel 28 der DSGVO geregelt. Der Cloud-
Anbieter muss garantieren können, dass die DSGVO eingehalten wird, der Cloud-Nutzer muss
diese Garantien überprüfen. Ein Anhaltspunkt dazu können die Artikel 40 und 42 der DSGVO sein.
Um die DSGVO einzuhalten, sollten Unternehmen alle Abläufe, in denen Daten von Personen
verarbeitet werden, dokumentieren.

Im Artikel 43 der DSGVO (https://dsgvo-gesetz.de/art-43-dsgvo) wird beschrieben, welche


Zertifizierungen für Cloud-Anbieter sinnvoll sind, um sicherzustellen, dass der Anbieter die
Richtlinien in der DSGVO umsetzt. In diesem Zusammenhang ist auch das „Trusted Cloud“-Siegel
des Bundesministeriums für Wirtschaft und Energie (BMWi) (https://www.trusted-cloud.de)
hilfreich.

© HERDT-Verlag Schulversion 203


16 Datenschutz

Welche Daten dürfen erhoben werden?


Hier gilt zunächst der Grundsatz der Datenvermeidung, Datensparsamkeit und Zweckbindung.
Der Gesetzestext sagt dazu, dass mithilfe von Datenverarbeitungssystemen keine oder möglichst
wenige personenbezogene Daten erfasst und weiterverarbeitet werden sollen. Dies sollte je nach
Möglichkeit an den entsprechenden Stellen mithilfe von Anonymisierung und Pseudonymisierung
geschehen.

Anonymisierung und Pseudonymisierung bedeuten eine Unkenntlichmachung der Person, z. B.


durch den Einsatz von Kundennummern. Dadurch können gespeicherte Daten einzelnen
Personen nicht mehr direkt zugeordnet werden.

Für Anbieter von Telekommunikationsdiensten wird Näheres dazu im Telemediengesetz (TMG)


geregelt. Dort wird unterschieden zwischen:
 Bestandsdaten: Wer ist Kunde?
 Nutzungsdaten: Wer hat wann welchen Dienst wie lange in Anspruch genommen? Diese
Daten sind oft Grundlage zum Erstellen einer Abrechnung.
 Abrechnungsdaten: Welche Kosten entstehen dem Kunden?
Grundsätzlich dürfen solche Daten nur so lange gespeichert werden, wie es ihrem Zweck nach
dringend erforderlich ist.

Technische und organisatorische Maßnahmen


Bestimmungen zu den technischen und organisatorischen Maßnahmen legen fest, dass ent-
sprechende Vorkehrungen zu treffen sind, um die Datensicherheit und damit auch den Daten-
schutz zu gewährleisten.

Die Weitergabe und Übermittlung von Daten


Hier wird geregelt, unter welchen Voraussetzungen es erlaubt ist, personenbezogene Daten
weiterzugeben, und wer für die Übermittlung verantwortlich ist. Denken Sie beispielsweise an ein
Reisebüro, das zur Auftragsabwicklung Daten an Hotels, Fluggesellschaften oder die amerika-
nische Regierung weitergeben muss.

Grundsätzlich gilt: Was zur Vertragserfüllung erforderlich ist, ist erlaubt. Jedoch fällt nicht alles,
was den an der Übermittlung Beteiligten als nützlich erscheinen mag, unter diese Kategorie.
Sonst könnte die Information eines Reisebüros „trägt dicke Brille“ vielleicht dazu führen, dass die
Sehschwäche von vornherein zu Zimmern mit schlechter Aussicht führt. Auch wenn Sie koscheres
Essen auf Ihrem Flug in die USA bestellen oder vorher oft im Mittleren Osten Urlaub gemacht
haben, würden Sie aufgrund dieser Informationen, die die Amerikaner sich nun zwangsweise
übermitteln lassen, an der amerikanischen Grenze als Terrorist herausgepickt werden.

Bei der Arbeit mit personenbezogenen Daten dürfen nur zulässige Daten erhoben, verarbeitet
und genutzt werden. Diese Daten sind streng vertraulich zu behandeln und dürfen nicht
verfälscht oder unberechtigten Dritten zugänglich gemacht werden. Betroffene müssen der
Datenerhebung zustimmen und auf Antrag Einsicht in ihre Daten erhalten.

204 Schulversion © HERDT-Verlag


Datenschutz 16

Die Rechte der Betroffenen


Recht Bedeutung
Einwilligung Eine Person muss zustimmen, dass Daten über sie gespeichert werden.
Dabei müssen Zweck, Art und Umfang der erhobenen Daten ersichtlich sein.
Die Allgemeinen Geschäftsbedingungen (AGB) enthalten im nicht öffent-
lichen Bereich normalerweise die entsprechenden Hinweise hierzu. Dies ist
ein wichtiger Gesichtspunkt. Wenn Sie z. B. im Internet einwilligen, dass
Informationen über Sie an andere weitergegeben werden, sollten Sie sich
über eingehende Werbung nicht wundern.
Erfolgt eine Datenerhebung ohne Kenntnis des Betroffenen, so ist er darüber
zu informieren, wer welche Daten zu welchem Zweck gespeichert hat und an
wen diese Daten weitergeleitet wurden.
Zweckbindung Personenbezogene Daten dürfen nur für den Zweck verarbeitet werden, für
den sie auch erhoben wurden. Beispielsweise dürfen Banken Informationen
über Ihren Kontostand nicht einfach an Versicherungen weitergeben. Ein
Handel mit Informationen ist deshalb nur mit ausdrücklicher Zustimmung
der betroffenen Person zulässig.
Auskunft Sie haben das Recht zu erfahren, welche Daten über Sie gespeichert sind,
woher diese Daten kommen, zu welchem Zweck sie erfasst und an wen sie
weitergegeben wurden.
Berichtigung, Auf Antrag eines Betroffenen müssen falsch gespeicherte personenbezogene
Löschung und Daten korrigiert, gelöscht oder gesperrt werden.
Sperrung

Diese Rechte gelten nicht generell, sondern werden durch andere Gesetze wieder eingeschränkt.
Beispielsweise können Sie Ermittlungsbehörden nicht dazu zwingen, alle Ihre personenbezogenen
Daten offenzulegen oder zu löschen.

Informationen zum Datenschutz


Informationen zum Datenschutz finden Sie an vielen Stellen im Internet. Hier eine Auswahl
interessanter Adressen:

Bezeichnung Internetadresse
Virtuelles Datenschutzbüro http://www.datenschutz.de
Der Bundesbeauftragte für den Datenschutz http://www.bfdi.bund.de
und die Informationsfreiheit
Berufsverband der Datenschutzbeauftragten http://www.bvdnet.de
Deutschlands (BvD) e. V.
Datenschutzgesetz (DSG) in Österreich https://www.dsb.gv.at/gesetze-in-osterreich
Bundesgesetz über den Datenschutz (DSG) https://www.admin.ch/opc/de/classified-
in der Schweiz compilation/19920153/index.html

© HERDT-Verlag Schulversion 205


16 Datenschutz

16.3 Datenschutz und Internet

Inwiefern sind Sie als Internetbenutzer betroffen?


In Deutschland bzw. der Europäischen Union regeln entsprechende Datenschutzgesetze den
Umgang mit personenbezogenen Daten. Hier besteht zumindest theoretisch die Möglichkeit,
gegen Missbrauch juristisch vorzugehen. Im globalen Dorf Internet bemerken Sie allerdings nicht
unbedingt das Überschreiten von Landesgrenzen. Welche Daten dort gesammelt werden, ist nur
schwer überprüfbar. Wenn Sie beliebige Onlinedienste (Cloud) in Anspruch nehmen, deren
Anbieter keinen deutschen oder europäischen Firmensitz haben bzw. deren Server physikalisch
außerhalb unseres Rechtsraumes stehen, gilt das Recht des jeweiligen Landes. Das kann so weit
gehen, dass Behörden des jeweiligen Landes im Verdachtsfall Zugriff auf Ihre Daten bekommen
bzw. Ihr Nutzungsverhalten protokollieren können.

Provider erheben üblicherweise Nutzungsdaten ihrer Kunden, aus denen Nutzerprofile erstellt
werden können, was besonders im Zusammenhang mit den immer beliebter werdenden Smart-
phones interessant ist. Es gibt Firmen, die das Auswerten solcher Daten als Dienstleistung anbieten,
was allerdings gegen geltendes Recht verstoßen dürfte.

Eigenes Sammeln personenbezogener Daten


Sie arbeiten mit E-Mails oder speichern Kontaktdaten? Dann sind einige Datenschutzbestimmungen
eventuell auch für Sie relevant. Beim Versenden von E-Mails und speziell beim Speichern von
Adressen oder Telefonnummern beispielsweise erheben Sie bereits personenbezogene Daten.
Ohne Unrechtsbewusstsein werden solche Listen oft um Hobbys, Interessen, Vereinsmitglied-
schaften oder Ähnliches erweitert. Spätestens, wenn Sie solche Listen weitergeben, wird es
problematisch, juristisch gesehen. Wie oft versenden Sie z. B. eine E-Mail an mehrere Personen und
teilen so jedem Empfänger die E-Mail-Adressen aller anderen Empfänger mit?

Der gläserne Internetsurfer


Auch Profis haben kaum eine Chance, zu überprüfen, welche Daten sie beim Surfen preisgeben.
Was mit diesen Daten dann geschieht, lässt sich erst recht nicht kontrollieren.

Daten können gesammelt werden durch:


 soziale Netzwerke  Cookies
 Surfspuren  Onlineshops und -Auktionsplattformen

Soziale Netzwerke
Prominentester Vertreter ist Facebook mit seinen über 2 Milliarden Mitgliedern weltweit. Der
weitaus größte Teil davon dürften Privatpersonen sein, die mehr oder weniger freizügig
Informationen über sich preisgeben. Interessant sind daneben vor allem die Verknüpfungen
unter den Facebook-Mitgliedern. Wenn Sie selbst einen Facebook-Account haben und Ihre ver-
öffentlichten Daten mit der Anzahl der Facebook-Mitglieder multiplizieren, bekommen Sie ein
Gefühl für die riesigen Datenmengen, die auch ausgewertet werden können.

206 Schulversion © HERDT-Verlag


Datenschutz 16

Ein Facebook-Account ist für viele Menschen heute selbstverständlich. Die Facebook-User
kommen freiwillig zu Facebook und geben freiwillig ihre Daten preis. Das hat auch die Industrie
erkannt und nutzt Facebook als preiswerte und weitreichende Werbeplattform. Aber auch
Mitarbeiter von Personalabteilungen können sich so sehr schnell ein Bild von einem potenziellen
neuen Mitarbeiter machen.

Das hier Gesagte gilt analog auch für andere Plattformen wie Twitter oder XING.

Surfspuren
Surfspuren entstehen bei jedem Surfvorgang und sind bis zu einem gewissen Grad auch nicht
vermeidbar. Dass Ihr Computer über eine offizielle IP-Adresse verfügen muss, haben Sie bereits
gelernt. Damit hinterlassen Sie so etwas Ähnliches wie eine Telefonnummer. Zusätzliche
Informationen übermittelt eventuell Ihr Webbrowser, z. B. auf welcher Webseite Sie direkt
vorher waren.

Unter der folgenden Internetadresse


beispielsweise können Sie sich anzeigen
lassen, welche Informationen Sie beim
Besuch einer Internetseite hinterlassen:
http://www.xhaus.com/headers

Für Websites mit vergleichbaren Infor-


mationen geben Sie in das Eingabefeld
Ihrer bevorzugten Suchmaschine
http header check ein.

Cookies
Ein Cookie ist eine kleine Datei, die ein Webserver
auf Ihrem Rechner abspeichern kann, um
spezifische Informationen festzuhalten oder um Sie
beim nächsten Besuch wiederzuerkennen. Dadurch
bleiben Ihre bevorzugten Einstellungen (etwa
Farben und Sprache) erhalten.

Cookies lassen sich aber auch zur Erstellung von
Benutzerprofilen nutzen, z. B. um festzustellen, wie
lange der Benutzer auf dieser Seite bleibt und
welche Seiten er besucht hat. Zusammen mit
anderen Surfspuren lassen sich hier bereits relativ
gute Bewegungsmuster erfassen. Diese Form der
Nutzung bedarf eigentlich, gemäß des Telemedien-
gesetzes (TMG), der ausdrücklichen Einwilligung des
Nutzers. Cookies lassen sich in jedem Browser
deaktivieren und löschen. Allerdings funktionieren
dann manche Webseiten schlechter oder gar nicht Cookies im Browser Mozilla Firefox
mehr.

Für die obenstehende Abbildung wurden vier hochfrequentierte Websites (Amazon, eBay,
Google und Microsoft) aufgerufen.

© HERDT-Verlag Schulversion 207


16 Datenschutz

Es erfolgten weder eine Anmeldung noch irgendwelche weiteren Aktivitäten. Sämtliche


Surfspuren von einem vorhergehenden Internetbesuch waren vorher gelöscht worden. Umso
erstaunlicher sind die Anzahl sowie die Herkunft der Cookies. Für genauere Informationen zu den
einzelnen Cookies (Ablaufdatum etc.) erweitern Sie in der Baumansicht die jeweilige Domain
(beispielsweise ebay.de ) durch Anklicken des Pfeils und wählen das gewünschte Cookie aus.

Onlineshops und -Auktionsplattformen


Bekannte Vertreter für Onlineshops bzw. Online-Auktionsplattformen sind Amazon bzw. eBay.
Daneben gibt es unzählige weitere Einkaufs- oder Ersteigerungsmöglichkeiten im Internet. Neben
den üblichen Kontaktdaten werden in der Regel Bankverbindungs-, Kreditkarten- oder PayPal-
Daten benötigt, um einen Kauf tätigen zu können. Anhand der getätigten Verkaufsaktivitäten
(Artikel, Preisregion, Häufigkeit etc.) werden Benutzerprofile erstellt, um beim nächsten Besuch
der jeweiligen Website passende Offerten unterbreiten zu können. Den meisten Nutzern ist
inzwischen bewusst, was passieren kann, wenn Bankdaten in die Hände Krimineller gelangen.
Genauso unangenehm könnte es aber werden, wenn Details des persönlichen Kaufverhaltens
an die Öffentlichkeit dringen würden.

Fazit
Für Unternehmen oder Marktforscher stellt das Internet mit seinen unendlichen Angeboten so etwas
wie eine Goldgrube dar. Hier lässt sich Meinungsforschung betreiben, hier lassen sich potenzielle
Käufer für ein Produkt finden. Mit Benutzerdaten wurde und wird gehandelt. Käufer sind
Unternehmen, die z. B. Werbeaktionen planen.

Wenn Ihre E-Mail-Adresse veröffentlicht werden soll 


(z. B. auf Ihrer eigenen Homepage), verwenden Sie
statt des „@“-Zeichens z. B. die Buchstaben
„-at-„. Ein versierter Leser ersetzt die Buchstaben
in der Adresse, eine Suchmaschine für E-Mail-
Adressen kann die Adresse nicht vom übrigen Text
unterscheiden. Alternativ verwenden Sie eine Grafik, Erst ein Rechtsklick auf die E-Mail-Adresse 
die Ihre E-Mail-Adresse enthält. zeigt, dass es sich um eine Grafik handelt (im
Beispiel verwendeter Browser: Mozilla Firefox)

Maßnahmen zum Schutz


Ganz verhindern können Sie Surfspuren nicht, und bei Informationen, die Sie selbst weitergeben,
müssen Sie immer dem Empfänger vertrauen. Hier folgen Hinweise, wie Sie die Datenschnüffelei
erschweren können:

Die wichtigsten Einstellungen müssen Sie in Ihrem Webbrowser vornehmen. Hier legen Sie fest,
welche Informationen weitergegeben werden. Informationen dazu, was einzelne Einstellungen
bedeuten, sowie Konfigurationshinweise nebst Online-Sicherheitstests erhalten Sie im Internet
kostenlos unter:
http://www.heise.de/security/dienste/Browsercheck-2107.html

Zu vielen Themen rund ums Internet und den Computer finden Sie auch Informationen beim
Bundesamt für Sicherheit in der Informationstechnik unter:
https://www.bsi-fuer-buerger.de/BSIFB/DE/Home/home_node.html

208 Schulversion © HERDT-Verlag


Datenschutz 16

Nutzen Sie beispielsweise die Funktion des privaten Surfens in der aktuellen Version des Internet
Explorers (InPrivat) bzw. des Browsers Mozilla Firefox (Privater Modus). Ist die Funktion aktiv,
werden für die aktuelle Sitzung keine besuchten Seiten, Einträge in Such- und Adressleisten sowie
Download-Manager, Passwörter, Cookies und Elemente im Browser-Cache gespeichert.

Schutz vor Spammails


Als Spam werden Mails, meist Werbung, bezeichnet, die an sehr viele Adressen gleichzeitig
versendet werden. Die Absender rechnen hier mit Antwortquoten unter einem Prozent.

Der beste Schutz ist, darauf zu achten, wer Ihre Adresse erhält. Wenn Sie von einem unbekann-
ten Absender eine Mail der Form: „Hallo, leider muss ich unser Essen am Mittwoch absagen.
Treffen wir uns doch am Donnerstag ...“ erhalten, so führt ein hilfsbereiter Hinweis auf den
Irrtum in jedem Fall dazu, dass der Absender jetzt weiß, dass Informationen, die an diese Adresse
gerichtet sind, regelmäßig gelesen werden. Dasselbe gilt für angebliche „Remove“-Links, unter
denen der Leser einer E-Mail die unerwünschte Werbung abbestellen können soll. Auch hier
bestätigen Sie den zwielichtigen Geschäftemachern nur, dass Sie die Mails tatsächlich auch
gelesen haben.

Diese Informationen erhält der Absender auch, wenn Sie in Ihrem E-Mail-Programm ausgehende
Empfangs- und Lesebestätigung zulassen oder wenn Sie in Ihrem E-Mail-Programm die Anzeige
von HTML-Mail erlauben und die Mail mit einem sogenannten Webbug versehen wurde. Dabei
handelt es sich um eine winzige Datei, die zur Anzeige mit der HTML-E-Mail von einer Web-
adresse nachgeladen wird und dadurch die Aktivität des Lesers an den Webserver rückmeldet.
Auch kann das Herunterladen von Grafiken, die in der Werbemail platziert wurden, dem Ver-
sender der Mail anzeigen, dass die Empfängeradresse der Werbemail gültig ist.

Hilfreich kann eine zusätzliche E-Mail-Adresse bei einem Freemailer sein. Immer, wenn Sie sich
nicht sicher sind, geben Sie diese Adresse an. Läuft damit etwas schief, können Sie Ihren Account
dort löschen und sich eine andere Adresse besorgen. Sehr elegant wäre auch die Verwendung
einer Adresse, die Sie für jeden Adressaten maßschneidern können und deren Lebensdauer Sie
von vornherein begrenzen können.

© HERDT-Verlag Schulversion 209


17 Auswirkungen der IT auf Mensch und Natur

17
17. Auswirkungen der IT auf Mensch und
Natur

17.1 Ergonomie bei Bildschirmarbeitsplätzen

Das Arbeitsumfeld
Eine zunehmend größere Anzahl an Menschen verbringt immer mehr Zeit an einem Bildschirm-
arbeitsplatz. Die folgende Darstellung erläutert, wie dieses Arbeitsumfeld gestaltet werden sollte.
Sie erhalten Hinweise über:
 Arbeitsmittel: Monitor, Tastatur, Maus, Arbeitstisch und -stuhl, Computerperipherie
 Arbeitsumgebung: Beleuchtung, Klima, Geräuschbelastung

Arbeitsmittel Monitor
Der Monitor ist das wichtigste Ausgabegerät. Viele Menschen verbringen jeden Tag Stunden vor
dem Monitor, ob in der Firma oder privat zu Hause. Zum Schutz Ihrer Gesundheit sollte der
Monitor bestimmte Qualitätsanforderungen erfüllen.

Das Gremium zum Zertifizieren von Monitoren ist seit Jahren das Unternehmen TCO
(https//tcocertified.de).

Das TCO überprüft die Erfüllung wichtiger Anforderungen bezüglich z. B. der Bildqualität, eines
niedrigen Energieverbrauchs oder der Minimierung umweltschädlicher Stoffe bei der Fertigung.

Das eine sind objektive Messwerte, das andere ist das subjektive Empfinden. Wenn Sie die Mög-
lichkeit haben, testen Sie den gewünschten Monitor vorher und vereinbaren Sie ein Rückgabe-
recht bei Nichtgefallen.

Bei großen Bildschirmen und hohen Auflösungen werden die Menütexte heutiger TFT-Displays
oft sehr klein dargestellt. Wenn Sie die Auflösung verkleinern, wird das Bild interpoliert auf dem
gesamten Bildschirm wiedergegeben. Das führt zu Weichzeichnungseffekten, die Bildinhalte
erscheinen zwar größer, aber auch unschärfer. Verändern Sie alternativ die Systemschriftgröße
bei maximaler (nativer oder physikalischer) Auflösung Ihres Displays.

210 Schulversion © HERDT-Verlag


Auswirkungen der IT auf Mensch und Natur 17

Arbeitsmittel Tastatur und Maus


Zur optimalen Bedienbarkeit sollte das Tastaturfeld leicht ansteigen, um ca. 5 bis 15°. Die meisten
Anwender finden einen definierten Druckpunkt als Anschlagsrückmeldung angenehm.

Zum entspannten Tippen sollte möglichst kein Knick in den Handgelenken nötig sein. Ein
Tastaturpad zum Auflegen der Handballen kann hier hilfreich sein. Es gibt auch ergonomisch
geformte Tastaturen, bei denen die Tasten für die linke und rechte Hand etwas voneinander
entfernt und leicht nach außen gedreht angeordnet sind, um den eben erwähnten Knick
auszugleichen. Wenn Sie blind tippen können, sollten Sie eine solche Tastatur ausprobieren.

Dass eine Tastatur fest und rutschfrei aufliegt, dabei aber nach Bedarf verschoben werden kann,
sollte sich eigentlich von selbst verstehen.

Viele Eigenschaften an Mäusen sind Geschmacksfrage. Sie sollten gut in der Hand liegen und eine
entspannte Haltung ermöglichen. Ein Scrollrad sowie eine glatte und ausreichend große Unter-
lage (Mousepad) erleichtern die Arbeit mit der Maus. Manche Benutzer empfinden auch
Mousepads mit einer integrierten Handballenauflage als angenehm.

Manche optischen Mäuse haben bei Mousepads mit bestimmter Oberflächenzusammensetzung


immer noch Probleme mit einer sauberen Auflösung des Bewegungsablaufs der Hand. Stylische
Mousepads mit einer minderwertigen Beschichtung sollten Sie nicht kaufen, da diese Produkte
Probleme verursachen.

Arbeitsmittel Tisch und Stuhl


Ein Bürotisch sollte mindestens 160 cm breit und 80 cm tief sein. Die Tiefe hängt allerdings vom
verwendeten Monitor ab. Er sollte keinesfalls über den Tisch hinausragen. Vor dem Monitor
muss ausreichend Platz vorhanden sein für die Tastatur und Vorlagen bzw. Vorlagenhalter.
Der Tisch sollte über ausreichende Ablageflächen verfügen und Möglichkeiten zu individueller
Anordnung bieten. Seine Oberfläche soll reflexionsfrei sein.

Zur Büroausstattung gehört weiterhin ein gepolsterter, leicht beweglicher, kippsicherer und
höhenverstellbarer Bürodrehstuhl. Die Lehne sollte höhen- und neigungsverstellbar sein und sich
beim Zurücklehnen an den Sitzwinkel anpassen.

Arbeitsmittel Computerperipherie
Zur Computerperipherie zählen alle weiteren an den Computer angeschlossenen Geräte. Das
können Multifunktionsgeräte oder auch Einzelkomponenten (Drucker, Scanner) sein. Ebenso
Lautsprecher, Headsets oder Gamepads, externe Speichermedien, KVM (Keyboard, Video, Maus)
-Switche usw. Sie alle müssen in irgendeiner Form auch bedient werden. Das können das
Auffüllen von Papier, das Austauschen von Tintenpatronen oder das Einscannen einer Vorlage bei
einem Multifunktionsgerät sein. Oder auch das Umschalten zwischen zwei Rechnern bzw. beim
Spielen mit einem Flugsimulationsspiel.

Mit einem KVM-Switch können Sie mehrere Rechner mit einer Tastatur, einer Maus und einem
Monitor bedienen. Manche Geräte ermöglichen auch das gemeinsame Nutzen von USB-Geräten
oder Audio-Equipment (Lautsprecher, Kopfhörer).

© HERDT-Verlag Schulversion 211


17 Auswirkungen der IT auf Mensch und Natur

Laserdrucker/-kombigeräte sind in der Regel leiser als Tintenstrahldrucker/-kombigeräte. Aller-


dings führt ihr Einsatz gelegentlich zu einer erhöhten Ozonbelastung. In höheren Dosen ist Ozon
gesundheitsschädlich. Werte hierzu sollten Sie im jeweiligen Druckerhandbuch finden. Die von
Laserdruckern erzeugten Verbrauchsmaterialien (z. B. alte Tonerkartuschen und Trommeln)
belasten, wenn nicht fachgerecht entsorgt, die Umwelt.

Überlegen Sie sich vorher, was Sie wie bedienen bzw. wie oft Sie was benutzen werden müssen.
Berücksichtigen Sie bei Ihrer Planung die Verkabelung bzw. wie Sie die Verkabelung fixieren
wollen. Diese Aspekte sind wichtig im Austausch- oder Reparaturfall oder falls Sie Ihre externe
Festplatte auch öfter an anderen Orten einsetzen wollen.

Die gute Sitzhaltung


Eine gute Körperhaltung beugt Rückenschmerzen vor.
Die ideale Haltung am Schreibtisch bestimmen Sie wie ca. 35°
folgt:

>=9
 Legen Sie zunächst die Unterarme flach auf den
5° - 15°
Schreibtisch. Das ist Ihr Ausgangspunkt.
10 - 15 cm
 Von hier ausgehend wird der Stuhl so eingestellt,
dass bei aufrechtem Rücken der Winkel zwischen
Ober- und Unterarm sowie Ober- und >=9

Unterschenkel 90° beträgt und die Oberschenkel, 5° - 15°
ausgehend vom Gesäß, leicht abfallen.
 Die Füße müssen dabei fest auf dem Boden stehen. Ein ergonomischer Bildschirmarbeitsplatz
 Diese Haltung erreichen Sie im Zweifelsfall nur mit
einem höhenverstellbaren Tisch.

Ein Arbeitgeber muss Ihnen diese Haltung ermöglichen. Dazu kann auch der Tisch höhergestellt
bzw. eine verstellbare Fußstütze eingesetzt werden.

Monitoraufstellung
Ausgehend von der eben geschilderten Sitzhaltung erfolgt die Aufstellung des Monitors. Der Blick
zur Bildschirmmitte sollte, ausgehend von der Horizontalen, ca. 35° nach unten verlaufen und
möglichst senkrecht auf der Bildschirmoberfläche auftreffen. Dazu muss der Monitor dreh- und
neigbar sein. Keinesfalls darf die oberste Bildschirmzeile über der Augenhöhe liegen. Bei großen
Monitoren bzw. kleinen Menschen kann dies ein Absenken der Bildschirm-Standflächen erforder-
lich machen.

Der Abstand zum Monitor sollte ca. 70–100 cm betragen. Er ist nicht nur abhängig von der
Monitorgröße, sondern auch von der Monitorauflösung. Das Entscheidende sind nicht gesetzliche
Richtwerte, sondern Ihr persönliches Empfinden.

Tisch und Monitor sind so aufzustellen, dass möglichst keine Direktblendung (Blick in eine Licht-
quelle, z. B. Sonne oder Lampe) und Reflexblendung (Spiegelung von Fenster oder Lampen) erfolgt.

212 Schulversion © HERDT-Verlag


Auswirkungen der IT auf Mensch und Natur 17

Arbeitsumgebung
Der Arbeitsraum für einen Mitarbeiter einschließlich Mobiliar muss mindestens acht Quadrat-
meter betragen. Dabei muss ausreichende Bewegungsfreiheit vorhanden sein und es darf keine
Stolperstellen oder andere Gefährdungen geben.

Die Raumtemperatur sollte etwa 20°C betragen und auch im Sommer nicht über 26°C steigen.
Störende Zugluft sollte dabei vermieden werden.

Da Bildschirmarbeit in der Regel ein hohes Maß an Konzentration erfordert, sollte der Schallpegel
möglichst nicht über 45 dB(A) liegen. Bei Routinearbeiten darf er keinesfalls über 70 dB(A)
ansteigen.

Die Beleuchtung sollte ausreichend (mindestens 300 Lux), gleichmäßig, flimmer- und blendfrei
sein. Als Lichtfarbe ist Weiß vorgesehen.

17.2 Investitionsschutz

Gedanken zum Kauf eines PC-Systems


In keinem Bereich veraltet ein System so schnell wie im IT-Bereich. Wenn Sie heute ein top-
aktuelles PC-System kaufen, können Sie davon ausgehen, dass es sich dabei in spätestens zwei
Jahren gerade noch um ein durchschnittliches Gerät handelt. Kaufen Sie ein Gerät der (oberen)
Mittelklasse, tritt dieser Effekt schon nach ca. einem Jahr ein. Sie haben dann allerdings deutlich
weniger Geld verloren.

Investitionsschutz verfolgt das Ziel, Geld zu sparen. Speziell unter einer längerfristigen Perspek-
tive erscheint nämlich so manches vermeintliche Schnäppchen letztendlich als Fehlinvestition.
Deshalb erhalten Sie im Folgenden einige Hinweise, die Sie beim Kauf eines Systems berück-
sichtigen können:
 Grundsätzlich sollten Sie sich immer die Frage stellen, wozu Sie das Gerät einsetzen wollen
bzw. wie viel Leistung Sie wirklich benötigen.
 Oft erweist sich ein bereits zusammengestellter Mittelklasse-PC als am günstigsten.
 Intel oder AMD: Eine grundsätzliche Entscheidung müssen Sie bezüglich des Prozessor-
herstellers treffen. In den meisten Fällen ist das Preis-Leistungs-Verhältnis bei AMD-
Prozessoren besser.
 Egal, für welchen Hersteller Sie sich entscheiden, den momentan schnellsten Prozessor
bekommen Sie in zwei Jahren voraussichtlich für deutlich weniger als den halben Preis.
 Vor allem mit den Taktraten bei Prozessoren wird viel geworben. Bedenken Sie dabei, dass
eine Verdoppelung der Taktrate in vielen Fällen weniger als 25 % merkbaren Leistungs-
gewinn bringt. Legen Sie Ihr Hauptaugenmerk deshalb nicht auf die Taktfrequenz.
 Investieren Sie lieber in ausreichend Arbeitsspeicher, dann sind Sie auch für zukünftige
Betriebssysteme oder neue Programmversionen besser gerüstet.
 Kaufen Sie sich alternativ einen gebrauchten Profirechner von einem Händler, der Ihnen im
Normalfall auch eine Garantie gewähren wird. Profigeräte sind in der Regel langlebiger und
robuster bzw. deren Komponenten für einen komplikationslosen Dauerbetrieb besser
aufeinander abgestimmt. Dazu kommt ein guter Support (Treiber, Handbücher etc.).

© HERDT-Verlag Schulversion 213


17 Auswirkungen der IT auf Mensch und Natur

Komplettsystem oder Einzelkomponenten


Viele Händler bieten Komplettsysteme zu vergleichsweise günstigen Preisen an. Komplett-
systeme bestehen meistens nur aus dem eigentlichen Rechner. Monitor, Tastatur und Maus oder
Multifunktionsgerät müssen dazugekauft werden. Verlockend daran ist oft die reichhaltige
Ausstattung der Systeme mit vorinstalliertem Betriebssystem und umfangreicher Anwender-
software. Zudem sind die Hardwarekomponenten normalerweise so gewählt, dass man mit dem
Gerät alle Standardaufgaben erledigen kann, Sound oder LAN sind an Board, es gibt einen
Speicherkartenleser, die Festplatte ist ausreichend dimensioniert, viele USB-Anschlüsse sind
vorhanden etc.

Stark im Kommen sind die sogenannten All-in-One-PCs. Bei diesen sitzen die „Innereien“ des
Rechners mit im Display-Gehäuse, dazu gibt es meist Tastatur und Maus. Ein ansprechendes
Äußeres, vernünftige Leistungsdaten oder geeignete Geräuschdämmungsmaßnahmen machen
diese Geräte wohnzimmertauglich. Einen Drucker o. Ä. müssen Sie auch hier zusätzlich erwerben.
Zum Spielen oder für spezielle Anforderungsprofile (CAD, 3D-Animation, Videobearbeitung,
Musikproduktion usw.) sind diese Systeme normalerweise nicht ausgelegt.

Das andere Extrem wäre der PC im Selbstbau, mit Kauf aller Einzelkomponenten (Gehäuse,
Prozessor, Speicher etc.). Diese Entscheidung sollten Sie gründlich überlegen. Sie müssen mit
hohem Zeitaufwand und unerwarteten Problemen rechnen. Geld sparen Sie auch nicht damit,
da Komplett-PCs aufgrund ihrer höheren Auflage von den Herstellern günstiger kalkuliert werden
können.

Ein Selbstbau-PC macht heutzutage eigentlich nur Sinn, wenn Sie das letzte Quäntchen Leistung
und die besten derzeit auf dem Markt erhältlichen Komponenten benötigen (z. B. für aufwendige
3D-Spiele auf sehr großen Displays) und Geld dabei eine eher untergeordnete Rolle spielt.

Oft besteht die beste Lösung im Kauf eines fertig zusammengestellten PCs, zu dem dann einzelne
Komponenten wie Monitor, Multifunktionsgerät, Tastatur etc. je nach Bedarf hinzugekauft
werden. Auf diese Art entscheiden Sie, wie viel Geld Sie in welche Komponente investieren
wollen. Die folgenden Hinweise können bei einer Entscheidung hilfreich sein.

Monitor
Ein Monitor überdauert oft zwei bis drei PC-Generationen. Er ist das hauptsächliche Ausgabe-
medium, mit dem Sie den meisten direkten Kontakt haben werden. Für angenehmes Arbeiten
sollte dies die beste Komponente Ihres Systems sein.

Multifunktionsgeräte/Drucker: Laser oder Tinte


Auch Multifunktionsgeräte/Drucker überdauern oft mehrere PC-Generationen. Die grund-
sätzliche Frage, ob Laser oder Tinte, wird meist über die Frage nach möglichem Farbausdruck
entschieden. Farbfähige Lasergeräte sind teuer und deren Fotodruckqualitäten reichen nicht an
die von Tintenstrahlgeräten heran.

Bei der Entscheidung sollten Sie Ihr hauptsächliches Einsatzgebiet und Druckaufkommen
berücksichtigen. Wenn Sie viel Text in Schwarz-Weiß drucken, sprechen oft Geschwindigkeit,
Lärmbelastung und Seitenpreis (Preis für Papier und Toner bzw. Tinte) für Lasergeräte.

214 Schulversion © HERDT-Verlag


Auswirkungen der IT auf Mensch und Natur 17

Wenn Sie sich für ein Tintenstrahlgerät entscheiden, dann sollten Sie neben den Anschaffungs-
auch die Betriebskosten berücksichtigen. Manche Hersteller holen die günstigen Verkaufspreise
durch teure Tintenpatronen wieder herein. Erkundigen Sie sich in jedem Fall, was Ersatzpatronen
und Spezialpapier kosten. Gibt es z. B. preiswerte Ersatzpatronen von Drittanbietern?

Alternativ zum reinen Drucker sollten Sie Multifunktionsgeräte ins Auge fassen. Diese gibt es
sowohl auf Tintenstrahl- als auch auf Laserbasis. Je nach Modell erwerben Sie damit zusätzlich
einen Scanner, ein Faxgerät oder einen Speicherkartenleser. Positiver Nebeneffekt: Das Gerät
verbraucht weniger Platz als Einzelgeräte. Nachteilig ist allerdings, dass bei Ausfall einer
Komponente meist das gesamte Gerät nicht mehr verwendet werden kann.

Gebrauchte Computer
Moderne Computer haben schon seit Langem ein Leistungsniveau erreicht, das ihren Einsatz für
normale Tätigkeiten auch nach mehreren Jahren ermöglicht. Deshalb ist es sinnvoll, neben einer
Neuanschaffung den Kauf eines gebrauchten Computers in Betracht zu ziehen. Oftmals werden
hier die Spitzenmodelle des vorletzten Jahres für einen Bruchteil des damaligen Kaufpreises
angeboten. Auf diese Weise kann man hochwertige Computer von Markenherstellern erwerben,
die den heutigen Billigangeboten oftmals in Preis und Leistung überlegen sind.

Für den kommerziellen Einsatz kommen eigentlich nur geprüfte Geräte mit Händlergarantie
infrage, aber für Privatanwender können auch Geräte aus privater Hand, die z. B. über
Kleinanzeigen oder Internetauktionen angeboten werden, interessant sein.

Gebrauchtcomputer sind vor allem dort eine Alternative zu Neugeräten, wo es nicht auf die Höchst-
leistung ankommt, sondern auf ein Gerät, das dem Einsatzzweck entspricht und noch einige Jahre
zuverlässig seinen Dienst tun kann. Als Gebrauchtgeräte sind deshalb vor allem Geräte aus dem
gehobenen Geschäftsbereich interessant, weil diese für den harten Dauereinsatz konzipiert
wurden, während Geräte für Privatanwender meist weniger langlebig sind. Letztendlich kommt der
Kauf gebrauchter Hardware auch der Umwelt zugute, denn Laufzeiten von zehn Jahren sind für
gebrauchte professionelle Systeme unproblematisch.

Besonders attraktiv sind Leasing-Rückläufer von Unternehmen, oft auch als „refurbished“
(englisch für „aufarbeiten“) bezeichnet. Dabei handelt es sich um Computer, Notebooks oder
andere Geräte, die größere Unternehmen eine Zeit lang geleast haben. Nach dem Ablauf des
Leasings kaufen Handelsunternehmen die Leasinggeräte auf, arbeiten diese auf und verkaufen sie
an Kunden. Der Vorteil bei Leasingrückläufern besteht vor allem darin, dass diese meistens aus
hochwertiger Hardware für Unternehmen bestehen und trotz ihres Alters eine gute Leistung
bieten. Das Handelsunternehmen muss außerdem die gleiche gesetzliche Gewährleistung bieten
wie bei Neuverkäufen. Solche Geräte finden Sie zum Beispiel bei http://www.pearl.de.

PCs auf- oder nachrüsten


Mit ein wenig Bastelarbeit lassen sich PCs oft bezüglich Leistungsfähigkeit oder Funktionalitäten
verbessern. Dazu müssen allerdings einige Voraussetzungen gegeben sein, die oft mit der ver-
wendeten Hauptplatine (Motherboard) zusammenhängen. Achten Sie beim Gerätekauf darauf,
dass eine Beschreibung des Motherboards mitgeliefert wird.

© HERDT-Verlag Schulversion 215


17 Auswirkungen der IT auf Mensch und Natur

 Wenn Sie einen schnelleren Prozessor nachrüsten wollen, muss Ihr Motherboard diesen
erkennen und auch dessen Taktraten unterstützen. Die Bauart des Sockels, auf dem der
Prozessor auf dem Motherboard sitzt, ist entscheidend für die Auswahl.
 Speichererweiterung: RAM-Speicher gibt es in unterschiedlichen Ausführungen, und nicht
jedes Speichermodul passt in jedes Motherboard bzw. verträgt sich mit beliebigen anderen
Speichermodulen. Motherboards unterscheiden sich auch hinsichtlich der Anzahl der dafür
vorhandenen Steckplätze. Achten Sie beim Kauf darauf, dass nicht alle Steckplätze belegt sind.
 Eine zusätzliche Festplatte lässt sich eigentlich in jeden PC einbauen. Aber auch hier gibt es
unterschiedliche Technologien, die das Motherboard unterstützen muss.
 Setzen Sie teure oder ungewöhnliche Hardware ein, z. B. spezielle Soundkarten oder Spiele-
Grafikkarten, sollten diese nicht auf dem Motherboard integriert sein. Beim nächsten PC-
Kauf sind sie sonst nicht wieder verwendbar. Setzen Sie bei zusätzlicher Hardware vielmehr
auf aktuelle Standardschnittstellen (USB, PCIe).

Der Umbau gestaltet sich deutlich einfacher, wenn die einzelnen Komponenten leicht erreichbar
sind. Ein großes, auf professionelle Anwender abzielendes Tower-Gehäuse erleichtert solche
Arbeiten. Schwieriger gestalten sich Auf- oder Umrüstarbeiten bei aktuellen All-in-One-PCs.
Günstige PC-Gehäuse sind zum Teil verwinkelt gebaut und erhöhen die Verletzungsgefahr bei
Umbauarbeiten, da scharfe Kanten teilweise nicht umgefalzt wurden.

Vor dem Auf- oder Nachrüsten sollten Sie überprüfen, ob es ein BIOS-Update für Ihren PC gibt,
und dieses ggf. einspielen.

17.3 Recycling

IT und Abfall
Neue Technologien sorgen für neue Umweltprobleme. Ein Teil der Abfälle hat sich gegenüber
EDV-losen Büros kaum verändert, andere sind hinzugekommen. Im Folgenden erhalten Sie
Informationen über:
 entstehenden Abfall: Papier, Optische Medien, Elektro- und Elektronikschrott;
 Umweltbelastungen, die mit diesem Abfall verbunden sind;
 Möglichkeiten der Abfallentsorgung und damit verbundene Verordnungen.

Abfall rund ums Papier


Als vor Jahrzehnten die EDV Einzug in Schreibstuben hielt, war das verbunden mit dem Traum vom
papierlosen Büro. Die Realität hat hier das Gegenteil bewiesen. PCs und Drucker an jedem Arbeits-
platz sowie gesteigerte Erwartungen an die optische Gestaltung der Schriftstücke sind oft mit
etlichen Probeausdrucken verbunden. Der Papierbedarf in Büros ist stark gestiegen. Der Papier-
abfall sollte über entsprechende Altpapiercontainer der Wiederverwertung zugeführt werden.

Drucker benötigen Toner oder Tinte. Auch dieses Verbrauchsmaterial erzeugt Abfall und sollte
nach Möglichkeit wiederverwertet werden. Zunehmend mehr Hersteller haben Recyclingsysteme
entwickelt, bei denen Sie leere Toner- oder Tintenbehälter entweder direkt beim Händler zurück-
geben oder versandkostenfrei an den Hersteller zurückschicken können. Entsprechende Beipack-
zettel geben darüber Auskunft.

216 Schulversion © HERDT-Verlag


Auswirkungen der IT auf Mensch und Natur 17

Optische Medien
Mit der Verbreitung von BD/DVD/CD-Brennern ist auch die Anzahl der entsprechenden Medien
im Abfall gestiegen. Die beschreibbare Schicht enthält giftige Stoffe, weshalb optische Medien
nicht mit dem normalen Abfall entsorgt werden sollten. In vielen Städten bzw. auf deren
Recyclinghöfen gibt es hierfür spezielle Sammelbehältnisse.

Elektro- und Elektronikschrott


Abfall aus elektrischen oder elektronischen Geräten oder Geräteteilen wird als Elektro- und
Elektronikschrott bezeichnet. In Deutschland fallen jährlich mehr als 1 Million Tonnen Elektronik-
schrott an. Die Tendenz ist steigend. Dazu gehören unter anderem Geräte der Büro-,
Informations- und Kommunikationstechnik, Haushaltsgeräte und Unterhaltungselektronik sowie
Elektrowerkzeuge.

Elektro- und Elektronikgerätegesetz (ElektroG)


Die Kommission der Europäischen Gemeinschaften verabschiedete im Jahr 2003 Richtlinien, die
unter anderem die Verwendung bestimmter Stoffe in elektrischen Geräten einschränken sollten.
Diese Richtlinien mussten bis Mitte August 2004 europaweit in allen Mitgliedsstaaten in natio-
nales Recht umgesetzt werden.

Das Bundesministerium für Umwelt, Naturschutz und Reaktorsicherheit hat, in Verbindung mit
freiwilligen Selbstverpflichtungen von Herstellern und Importeuren, das ElektroG (Gesetz über
das Inverkehrbringen, die Rücknahme und die umweltverträgliche Entsorgung von Elektro- und
Elektronikgeräten) erarbeitet. Das Gesetz trat am 24. März 2005 in Kraft und ermöglicht jedem
Bürger, seine Elektro-/Elektronikaltgeräte bei kommunalen Sammelstellen abzugeben. Dadurch
soll die Menge des Hausmülls reduziert werden. Vor allem sollen Schadstoffe und Umweltgifte
nicht auf Hausmülldeponien oder in Hausmüllverbrennungsanlagen landen. Es handelt sich unter
anderen um folgende Schadstoffe:
 Blei und Cadmium, enthalten in Bildröhren;
 Arsenverbindungen in Beschichtungen der Bildtrommeln älterer Laserdrucker;
 Brom, enthalten in Platinen;
 Schwermetalle, verwendet zur Stabilisierung von Kunststoffen;
 PCB, enthalten in Kondensatoren;
 Flammschutzmittel, enthalten in Platinen und Gehäusen.

Unternehmen sind durch gesetzlich definierte Verpflichtungen an eine Rücknahme bzw. fach-
gerechte Entsorgung gebunden. Spezialisierte Entsorgungsunternehmen kümmern sich hier um
gewerblich anfallenden Elektro- und Elektronikschrott. Für private Haushalte bieten die meisten
Städte und Gemeinden Entsorgungsmöglichkeiten in Wertstoffhöfen.

© HERDT-Verlag Schulversion 217


17 Auswirkungen der IT auf Mensch und Natur

17.4 Urheberrecht

Raubkopieren und Urheberrecht


Das Internet ist eine nahezu unerschöpfliche Quelle für Informationen aller Art. Ob Programme,
Texte, Bilder, Musik oder Filme, eigentlich ist alles erhältlich. Seit einigen Jahren haben in diesem
Zusammenhang Tauschbörsen zum Suchen und Weiterverteilen entsprechender Dateien eine
rasante Verbreitung erfahren.

Dass das meiste, was getauscht wird, urheberrechtlich geschützt ist, wird dabei gern ignoriert.
Die unerlaubte Nutzung und Verbreitung geistigen Eigentums ist illegal und kann bestraft
werden. Dabei handelt es sich nicht nur um das Raubkopieren von Musik-, Spiele- oder Software-
DVDs/CDs, sondern auch um die Verwendung von Text- oder Bilddokumenten für eigene Zwecke
(beispielsweise auf der eigenen Website). Für eine legale Nutzung müssen Sie entweder die
Erlaubnis des Autors einholen oder das Werk legal erwerben.

Mit dem Erwerb einer BD/DVD/CD oder eines Buches erhalten Sie noch nicht automatisch auch
das Recht zur öffentlichen Nutzung, Vervielfältigung oder gar Weiterverbreitung, z. B. dürfen Sie
keinen Comic einscannen und auf Ihrer Homepage zur Gestaltung verwenden.

Für die rechtlichen Rahmenbedingungen steht in Deutschland das Urheberrechtsgesetz.

Gegenmaßnahmen: Reaktionen der Hersteller


Zunehmend mehr Hersteller befassen sich mit der Entwicklung von Kopierschutzmechanismen.
Für die Handhabung und den problemlosen Betrieb von Geräten kann das eigentlich kein Vorteil
sein, und die Entwicklungskosten trägt der Kunde. Verschiedene Kopierschutzsysteme arbeiten
nicht richtig mit allen optischen Laufwerken zusammen, was dazu führen kann, dass die Medien
nicht korrekt gelesen werden können.

Grundsätzlich hat der Kunde das Recht, für private Zwecke (Privatkopie) Sicherungskopien von
käuflich erworbenen Datenträgern herzustellen. Dabei darf er aber keinen vom Hersteller
installierten Kopierschutz umgehen.

Mit dem Betriebssystem Windows XP wurde die sogenannte Produktaktivierung eingeführt.


Diese ist auch in Windows 10 noch integriert und notwendig.

 Um das Betriebssystem oder das Office-Paket zu installieren, müssen Sie einen von
Microsoft bereitgestellten Produkt-Key eingeben.
 Um das Programm ohne Einschränkungen nutzen zu können, müssen Sie sich mit Microsoft
in Verbindung setzen. Dabei wird der Produkt-Key überprüft und das Programm aktiviert.
Je nach erworbener Lizenz ist nur eine begrenzte Anzahl an Aktivierungen möglich.

Die erzwungene Prüfung soll die Hemmschwelle beim Einsatz von raubkopierten Medien
heraufsetzen.

218 Schulversion © HERDT-Verlag


Auswirkungen der IT auf Mensch und Natur 17

Softwarepatente
Die Frage, ob es einen Urheberschutz für Software geben kann, ist heftig umstritten. Letztendlich
würde ein Patent auf eine Software (z. B. ein Textverarbeitungsprogramm) dazu führen, dass kein
anderer Hersteller eine Software vertreiben darf, in der Texte eingegeben oder irgendwie ander-
weitig verarbeitet werden. Zumindest Lizenzgebühren würden fällig werden.

Als negative Beispiele seien hier die Anzeige eines Installations- oder Berechnungsfortschritts in
Balkenform und die Möglichkeit, in Onlineshops mit einem Mausklick eine Bestellung zu tätigen,
erwähnt. Jeder, der in seiner Software also einen Fortschrittsbalken integriert oder auf seiner
Homepage eine Schaltfläche verwendet, mit deren Hilfe ein Kunde etwas bestellen kann, macht
sich ohne vorherige Lizenzzahlungen an den Patentinhaber strafbar.

Gegner von Softwarepatenten führen an, dass große Konzerne Ideen und Algorithmen patentieren
können und den Markt für Software in ein juristisches Minenfeld für Open-Source-Programmierer
oder kleinere Softwarehäuser verwandeln werden, wenn diese sich keine Anwälte leisten könnten.

Befürworter von Softwarepatenten wollen ihre Software patentiert sehen, da sie sich davon
besseren technischen Fortschritt und Investitionsschutz versprechen.

© HERDT-Verlag Schulversion 219


18 E-Business und E-Commerce

18
18. E-Business und E-Commerce

18.1 Grundlagen zu E-Business und E-Commerce

E-Business
E-Business umfasst alle Bereiche des elektronischen Zusammenwirkens mehrerer Wirtschafts-
subjekte, z. B. Einzelpersonen, Firmen, Vereine, Behörden etc.

Folgende Definition gibt einen Überblick über die Tragweite von E-Business:
E-Business erstellt angepasste Angebote in einem sicheren und hochintegrierten Ansatz. Hierzu
werden die Kerngeschäfte und Prozesse mit der Einfachheit und Reichweite der Internet-
technologie verbunden.

Beim E-Business geht es also um alle (Geschäfts-)Aktivitäten, die elektronisch ausführbar oder
darstellbar sind, wie zum Beispiel:

Electronic Collaboration Netzwerkbasierte, interaktive, inner- und/oder interorganisationale


Zusammenarbeit
Electronic Entgeltliche und unentgeltliche Bereitstellung und Nutzung netz-
Communication werkbasierter und elektronischer Kommunikationsplattformen
Electronic Education Bereitstellung von Aus- und Weiterbildungsleistungen mittels
elektronischer Netzwerke
Electronic Information/ Informierende und/oder unterhaltende Inhalte und Konzepte wer-
Entertainment den für Dritte mittels elektronischer Netze zur Verfügung gestellt.
Electronic Commerce Umfasst die Leistungsaustauschprozesse Anbahnung, Aushandlung
und Abschluss von Handelstransaktionen zwischen
Wirtschaftssubjekten mittels elektronischer Netze

Dabei beschränkt sich der Rahmen nicht nur auf Einzelpersonen, sondern umfasst ebenfalls
Unternehmen oder Organisationen jeder Art. Die dabei durch E-Business entstehenden Kontakte
lassen sich folgendermaßen untergliedern und an Beispielen belegen:

220 Schulversion © HERDT-Verlag


E-Business und E-Commerce 18

Consumer Business Administrator


Consumer Consumer to Consumer Consumer to Business Consumer to Administrator
z. B. Kleinanzeigen im z. B. Jobbörsen mit Anzeigen z. B. Steuerabwicklung von
Internet und Arbeitsgesuchen Privatpersonen
Business Business to Consumer Business to Business Business to Administrator
z. B. Bestellung in einem z. B. Bestellung bei einem z. B. Steuerabwicklung von
Onlineshop Zulieferer Unternehmen
Admini- Administrator to Administrator to Business Administrator to
strator Consumer z. B. Beschaffungsmaß- Administrator
z. B. Unterstützungs- nahmen von öffentlichen z. B. Transaktionen
leistungen wie ALGII Institutionen zwischen öffentlichen
Institutionen im In- und
Ausland

Das E-Business läuft hierbei meist über elektronische Marktplätze, Portale, Internetshops und
Webseiten.

Möglich wurde diese Entwicklung erst durch die massenhafte Verfügbarkeit der Internettechno-
logie. Dadurch konnte ein Markt erreicht werden, in dem genug Potenzial enthalten ist, um die
E-Business-Inhalte in rentablem Maßstab umzusetzen. Die Entwicklung der letzten Jahre auf
diesem Sektor lässt sich beispielhaft an der Verbreitung von Internetzugängen an den Schulen
zeigen. Seit 2002 sind alle Schulen in Deutschland an das Internet angeschlossen.

Heute sind an den Schulen viele E-Business-Möglichkeiten erschlossen, wobei hier hauptsächlich
Electronic Information und Electronic Education betrieben werden.

Elektronischer Handel
Der elektronische Handel oder auch E-Commerce gewinnt immer mehr an Bedeutung und schafft
auf vielen Gebieten neue Märkte und Möglichkeiten.

Die folgende Definition stellt die zentralen Aussagen des elektronischen Handels dar:
E-Commerce beinhaltet den gesamten Ablauf eines Handels zwischen Wirtschaftssubjekten,
beginnend bei der Anbahnung über die Aushandlung bis hin zur Abwicklung der Transaktion.

Heute wird damit fast ausschließlich der Handel über das Internet bezeichnet, allerdings gehören
nach der strengen Definition auch Telefonverkäufe, Radio- und Fernsehwerbung und ähnliche
Dinge zum E-Commerce. Diese Bereiche sind nicht Gegenstand dieses Buches.

Zielsetzungen
Die Ziele von E-Commerce lassen sich wie folgt zusammenfassen:

Absatz Stärkung der eigenen Position auf dem Markt gegenüber dem Wettbewerb
Service Bessere Hilfestellung für den Käufer bei Fragen und Problemen
Personalisierung Jedem Nutzer die Produkte und Informationen anbieten, die gerade für den
jeweiligen Kunden relevant und interessant sein könnten

© HERDT-Verlag Schulversion 221


18 E-Business und E-Commerce

Anforderungen
Die Anforderungen, die an ein E-Business-Unternehmen gestellt werden, sind meist technischer
Natur:

Verfügbarkeit Der Service muss dauerhaft erreichbar sein.


Geschwindigkeit Der Service darf auch unter hoher Belastung und zu Kernbelastungs-
zeiten nicht unerträglich langsam werden.
Saubere Nur so können aktuelle Daten geliefert werden, die der Nutzer erlangen
Datenhaltung möchte und aufgrund deren er seine Kaufentscheidungen trifft.

Vorteile
Kostenreduktion Es sind nicht viele Filialen nötig, um Produkte weithin verfügbar zu
machen.
Personal- Es wird möglich, Fachkräfte, die Hilfestellung geben können, z. B. für
umstrukturierung Beratungstätigkeiten zu konzentrieren. Dadurch müssen deutlich
weniger Kräfte ausgebildet werden.
Reichweite Eine E-Business-Lösung erreicht deutlich mehr Personen und kann
weltweit eingesetzt werden.

18.2 Intranet und E-Business

Definition Intranet
Das Intranet entspricht dem Netzwerk, das für alle Mitarbeiter einer Firma bereitgestellt wird.
Es kann (bei kleinen Firmen), muss aber nicht dem LAN einer Firma entsprechen. Beispielsweise
wird eine internationale Firma bestimmte Informationen für ihre Mitarbeiter an allen Nieder-
lassungen zur Verfügung stellen, obwohl diese nur durch WAN-Leitungen mit der Zentrale
verbunden sind.

Information und Kommunikation über das Intranet


Das Intranet bietet die Möglichkeit, Kommunikation zu betreiben und den Informationsfluss in
einem Unternehmen zu verbessern. Beispielsweise ist es heute ohne Weiteres möglich, viele Vor-
gänge und Prozesse so weit zu automatisieren, dass dem Nutzer bereits vor Beginn eines Projekts
hoch verdichtete Daten zur Verfügung stehen, auf die er seine Entscheidungen stützen kann. So
erhält der Nutzer über das Intranet jederzeit Informationen über den Stand von ähnlichen
Projekten oder Erfahrungsberichte über Projekte mit ähnlicher Problemstellung.

Das Intranet stellt in vielerlei Hinsicht eine starke Vereinfachung und Verbesserung der Informa-
tionsstruktur dar. Durch konsequente Nutzung aller Möglichkeiten, wie E-Mail, Terminplanung
und Kalenderfunktionen, Volltext-Suchmaschinen in Dokumentenverwaltungssystemen, Diskus-
sionsforen, Statusberichten und vielem mehr, kann viel Doppelarbeit und Zeit gespart werden.

222 Schulversion © HERDT-Verlag


E-Business und E-Commerce 18

Veränderung von innerbetrieblichen Organisationsstrukturen und


IT-Strukturen
Bei der Einführung eines Intranets ist meist neben den neuen Anforderungen an die Hardware
und Software auch die Veränderung von Organisationsstrukturen nötig. Meist gehen diese Ver-
änderungen alle Hand in Hand, sodass eine bewusste Veränderung gar nicht wahrgenommen
wird.

Ein weitverbreiteter Ansatz hierzu steckt in dem Satz „Structure follows technique“ – Struktur
folgt der Technik. Dies besagt, dass sich die Struktur des Unternehmens den technischen
Gegebenheiten anpasst und dass zum Beispiel mehr IT-Kräfte benötigt werden, um das
gewachsene Netz zu betreuen, oder dass Beauftragte für bestimmte Teilaspekte des Intranets
ausgewählt werden. Ein Beispiel hierfür wären Beauftragte, die dafür verantwortlich sind,
Monatszahlen pünktlich im Intranet zu aktualisieren und auf den neuesten Stand zu bringen.

In der Praxis ist allerdings kein klarer Zeitpunkt erkennbar, an dem die Umstrukturierung des
Unternehmens beginnt. Dieser Vorgang vollzieht sich relativ langsam und stetig und dauert an,
solange das Unternehmen besteht. Da sich die Rahmenbedingungen immer wieder ändern, ist es
auch notwendig, die dahinterstehende Struktur immer wieder daran anzupassen, um möglichst
marktnah und schnell handeln zu können.

Zielsetzungen
Das eigentliche Ziel hinter dem Intranet ist die Steigerung der Effektivität der vorhandenen
Informationen im Unternehmen. Außerdem soll die Transparenz der Daten erhöht werden, und
damit sollen die Entscheidungen der Mitarbeiter verbessert werden. Auch lässt sich so klären,
welche Informationen wirklich benötigt werden und welche Informationen bis dato unzureichend
gesammelt und ausgewertet wurden.

Das Intranet dient also nicht direkt der Umsatzsteigerung oder dem Absatz, sondern soll die
Unterstützung bieten, mithilfe derer diese Ziele dann erreicht werden können.

Intranet-Anwendungen
Typische Intranet-Anwendungen umfassen:

E-Mail Durch E-Mail-Verkehr soll die Kommunikation der Mitarbeiter verbessert


werden. So kann ein Großteil des internen Schriftverkehrs sicher auf-
bewahrt werden und ist jederzeit verfügbar.
Dokument- Hier können Formulare, Berichte und Zahlenmaterial gesucht, abgelegt
Datenbanken und verwaltet werden. Bei einer sachkundigen Organisation können viele
Doppelarbeiten vermieden und die Qualität der Information kann ver-
bessert werden.
Foren/Chats/ Foren, Chatrooms und Videokonferenzen bilden die Grundlage für den
Videokonferenzen/ informellen Informationsaustausch unter Experten. Hier können private
etc. und nichtfachliche Themen behandelt oder geografische Distanzen
überbrückt werden.
Zentrale Sie erleichtert das Planen von Sitzungen und Meetings, da jederzeit
Terminverwaltung transparent ist, wann alle Teilnehmer Zeit haben und wann nicht.

© HERDT-Verlag Schulversion 223


18 E-Business und E-Commerce

18.3 Extranet und E-Business

Definition von Extranet


Das Extranet definiert sich als die Einbeziehung von ausgewählten Kunden und/oder Zulieferern
in das lokale Intranet.

Funktionsweise
Über fest vorgegebene Schnittstellen ist es für bestimmte Kunden/Zulieferer möglich, auf große
Teile des Intranets zuzugreifen und dieses auch aktiv mitzugestalten.

Technisch gesehen gibt es mindestens zwei Möglichkeiten, wie Kunden und Zulieferer an das
Unternehmensnetz angebunden werden können. Entweder werden eigene Leitungen gemietet,
gekauft oder verlegt, oder es werden die Daten über das Internet als Trägermedium zwischen
den Partnern ausgetauscht. Das Internet fungiert in diesem Fall nur als reiner Leitungsanbieter
und steht deshalb außerhalb des Extranets.

Zielsetzungen
Das Hauptziel bei der Einrichtung eines Extranets ist die festere Bindung der Kunden an das
Unternehmen. Durch den besonderen Status, der den Kunden als Teile des Extranets zukommt,
kann das Vertrauen der Kunden gesteigert werden. Des Weiteren kann durch eine solch enge
Anbindung bereits bei der Produktentwicklung auf Kundenwünsche eingegangen werden und
geforderte Innovationen können schneller umgesetzt werden.

Auf der Seite der Zulieferer soll die Zusammenarbeit verbessert und damit der Produkt-
entwicklungszyklus verkürzt werden. Dies geschieht durch frühzeitiges Einbinden der Zulieferer,
die dann ihr Fachwissen um einen Teilbereich des Produktes direkt einbringen können und somit
helfen, Zeit und Kosten zu sparen. Die Zulieferer sollen ebenfalls möglichst nah an das Unter-
nehmen gebunden werden, um schneller und flexibler auf eventuelle Störungen im Ablauf
reagieren zu können.

18.4 Internet und E-Business

Aspekte der Geschäftstätigkeit


Das Internet wird hauptsächlich für den Business-to-Consumer-Bereich genutzt. Die vorhandene
Internettechnologie ermöglicht es, mit relativ kleinem Aufwand und kurzer Entwicklungszeit
einen vollständig neuen Absatzweg zu etablieren. Dadurch können viele neue Kunden erreicht
werden, und den bereits vorhandenen Kunden kann besserer und schnellerer Service geboten
werden.

Ein weiterer Aspekt ist der Komfort für den Kunden. Es ist nicht nötig, in ein Geschäft zu gehen,
auf Verkäufer zu warten oder nur mangelhafte Informationen zu erhalten. Der Kunde bestimmt
durch sein Verhalten, welche Informationen er sehen will, und kann bequem von beinahe überall
aus die von ihm gewünschte Leistung anfordern.

224 Schulversion © HERDT-Verlag


E-Business und E-Commerce 18

Die einfache Bedienung und die weite Verbreitung von Webbrowsern, die den Großteil der
E-Business-Angebote zugänglich machen, erleichtern es einer Firma, eine große und weit
verteilte Kundenschar anzusprechen. Für fast jeden Rechner ist ein Internetzugang vorhanden
und ein Webbrowser, der als Standardschnittstelle fungiert. Dies ermöglicht aufseiten der
Betreiber eine einheitliche Abwicklung des E-Business-Geschäfts für das gesamte Internet.

Funktion des Internets


Das Internet bietet eine große Anzahl an verschiedenen Diensten an, um Informationen aus-
zutauschen. Das weitverbreitete World Wide Web (WWW) stellt dabei die bekannteste Form der
Internetnutzung dar. Die einfache Handhabung und die starke Standardisierung tragen weiter
dazu bei, dass sich das WWW als die Hauptplattform für E-Business entwickelt. Über 95 % aller
E-Business-Anwendungen laufen im Internet über das WWW.

In den letzten Jahren sind viele Sicherheitsmechanismen für die Übertragung von Daten im
WWW entwickelt worden, sodass Kunden und Anbietern inzwischen eine breite Palette an
Möglichkeiten zum Schutz ihrer Daten zur Verfügung steht. Dies hat das Vertrauen in das WWW
bei vielen Kunden verbessert.

Zielsetzungen
Ein Hauptziel ist die Erhöhung des Absatzes. Dies soll durch die deutliche Erhöhung der Reich-
weite erreicht werden. In dieser Hinsicht ist das Internet im Vergleich zu herkömmlichen
Absatzwegen kaum zu schlagen, da mit einer Webseite Kunden über den ganzen Globus erreicht
werden können. Das Produkt wird deutlich transparenter für den Käufer, da er nun in der Lage
ist, Angebote direkt und objektiv zu vergleichen.

Ein weiteres Ziel ist die Kundenorientierung. Durch E-Business sind Hersteller und Händler in der
Lage, Kunden an sich zu binden und diesen eine permanente Plattform für ihre Geschäfte zu
bieten. Dazu trägt maßgeblich die Tatsache bei, dass nach einmaligem Erfassen der Kundendaten
diese nicht mehr erneut eingegeben werden müssen. Dadurch wird dem Kunden Arbeit abge-
nommen und der Geschäftsvorgang attraktiver gestaltet.

Auch der Service kann durch E-Business, z. B. durch große Datenbanken mit Hilfestellungen oder
durch personalisierte Profile, stark verbessert werden. Im Zusammenhang mit Profilen wäre
beispielsweise an eine Hilfeversion für technisch Versierte und eine Hilfe für Kunden mit weniger
technischen Kenntnissen zu denken.

E-Business und Geschäftsprozesse


Durch das Aufkommen von E-Business haben sich viele Geschäftsprozesse radikal verändert.
Während früher Stellenausschreibungen einen langen bürokratischen Weg gehen mussten und
dann nur recht langsam ihren Weg zu den Arbeitsuchenden fanden, werden heute in vielen
Unternehmen solche Angelegenheiten vollelektronisch gehandhabt und weitgehend auto-
matisiert. Ein Abteilungsleiter stellt die Anfrage nach einer neuen Arbeitskraft, die automatisch
und sofort beim zuständigen Manager landet. Dieser gibt die Anfrage frei oder lehnt sie ab und
löst damit die automatische Weiterleitung der Anforderung an die entsprechenden Jobbörsen
und die Personalabteilung weiter.

Ebenso haben sich die Schnittstellen außerhalb des Unternehmens auf diese Weise gewandelt.
Einkauf und Marketing sind zwei der am stärksten durch das Aufkommen von E-Business
betroffenen Bereiche.

© HERDT-Verlag Schulversion 225


18 E-Business und E-Commerce

Business to Consumer
Im Internet lässt sich das E-Business in vier Klassen aufteilen. Diese Aufteilung wird in der
Literatur oft als 4C-Net-Business bezeichnet.

Der Bereich Content beschäftigt sich mit der Darstellung der Inhalte, dem Packaging – der Zusam-
menstellung der Daten – und der Präsentation auf einer eigenen oder angemieteten Plattform.

Im Commerce werden die Anbahnung, die Aushandlung und die Abwicklung von Geschäfts-
transaktionen abgebildet.

Der Context nimmt eine Systematisierung und Klassifizierung der im Internet verfügbaren Infor-
mationen vor.

Die Connection stellt die Möglichkeit des Informationsaustauschs über Netzwerke sicher und
bietet die nötigen Schnittstellen dafür an. In diesen Bereich fallen z. B. Internet-Service-Provider
(ISP), Webspace- oder Leitungsanbieter.

Business to Business
Die vier Geschäftsmodelle des 4C-Net-Business lassen sich mit einigen Änderungen auf den
Business-to-Business-Sektor übertragen.

Ein Unterschied beim Content ist beispielsweise die deutlich höhere Zahlungsbereitschaft von
Unternehmen für Inhalte. Im Besonderen trifft dies für Recherchen in Datenbanken zu.

Eine weitere Verlagerung des Schwerpunktes findet beim Commerce statt. Hier wird sehr viel
mehr Wert auf Kostenreduktion durch Prozessoptimierung als auf Marketing und Vertrieb gelegt.
Mit geringem Aufwand entsteht hier eine fast weltweite Preistransparenz. So kann sehr schnell
auf Bewegungen in den Märkten reagiert werden und der Einkauf für Unternehmen kann
deutlich erleichtert werden.

Im Bereich Context bestehen nur wenig signifikante Unterschiede. Als Beispiel lassen sich hier
spezialisierte Suchmaschinen für professionelle Anwender nennen. Die Aufgaben der Klassifizie-
rung unterscheiden sich nur in den Themen und der Spezialisierung für die Nutzergruppen.

Im Bereich Connection sind im Business-to-Business-Sektor deutlich höhere Anforderungen


vorhanden als auf dem Business-to-Consumer-Markt. Hier stehen Aspekte wie Geschwindigkeit,
Sicherheit und Zuverlässigkeit weit mehr im Vordergrund. Ansonsten sind die Aufgaben identisch
für beide Bereiche.

18.5 Übung
E-Business und E-Commerce verstehen
Level Zeit 5 Minuten

Übungsinhalte  E-Business kennen


Übungsdatei Uebung18.pdf
Ergebnisdatei Uebung18-E.pdf

226 Schulversion © HERDT-Verlag


Index I
B Character 80
3
Chipkartenleser 12
3D-Drucker 50 Backdoor 190 Chipsatz 35, 37
3-Schichten-Modell 148 Backup 193 Client-Betriebssystem 145
3-Tier-Modell 148 Basic 73 Cloud 112
Batchdateien 84 Cloud, Datenschutz 202
4 BCD 22 Cobol 73
4C-Net-Business 226 BCD-Code 22 Code 21, 84
BDSG 201 com, Dateiformat 65
6 Bedingungen 77 Commerce 226
64-Bit-Prozessoren 43 Befehle 76 Complex Instruction Set
Befehlsdecoder 40 Computer (CISC) 41
A Berichtigung 205 Computer 10
Account 182 Betriebssystem 86 Computer Aided Design 106
ACID-Prinzip 116 Betriebssystem, Aufgaben 86 Computer Aided Manufacturing 107
Adressierung 154 Betriebssystem, Kennzeichen 88 Computerperipherie 211
ADSL 170 Betriebssystemsoftware 11 Computervirus 189
Adware 190 Beziehungen 124 Connection 226
AGB 205 Bildbearbeitung 103 Consistent 116
Aktivierung von Software 110 Bildbearbeitungsprogramme 104 Consumer to Administrator 221
Aktiv-Matrix-Displays 57 Bildschirmauflösung 54 Consumer to Business 221
Allgemeine Geschäfts- Bildwiederholrate 56 Consumer to Consumer 221
bedingungen 205 Binär-Dezimal-Codes 22 Content 226
All-in-One-PC 214 Binäres Zahlensystem 17 Context 226
Analog/Digital-Converter 25 Binary Coded Decimal 22 Cookies 207
Analoge Daten 8 BIOS-Chip 35, 38 Core 34
Analogsignale 8, 25 BIOS-Update 38 Core Image 65
Anschlüsse, PS/2 30 Bitübertragungsschicht 153 Core Services 145
Anschlüsse, Sound 30 Blu-ray-Disc 47 CPU 13, 34, 39
Anschlüsse, USB 30 BNC 136 CPU, Leistungsmerkmale 40
ANSI 155 Boole, Georg 14 CPU-Kern 34
Antivirenprogramm 191 Boolean 80 CRC 153
Anweisungen 76 Boolesche Algebra 14 CRT 56
Anwendung 151 Boolesche Logik 14
Anwendungsschicht 150, 155 Bootsektorvirus 189 D
Anwendungssoftware 11 Bottom up 69 Dämpfung 9
Apple 94 Browser 104 Darstellungsschicht 155
Application Layer 155 Bruteforce-Attack 183 Data Controlling Language 130
Arbeitsgruppen 147 Bundesdatenschutzgesetz 201 Data Definition Language 127
Arbeitsspeicher 13, 34, 35, 44 Business to Administrator 221 Data Link Layer 153
ARM 93 Business to Business 221, 226 Data Manipulation Language 128
ASCII 155 Business to Consumer 221, 226 Database-Engineering 122
ASCII-Code 21, 22, 61 Bussystem 39 Data-Engineering 122
ASN.1 155 Bus-Topologie 141 Datei 60
Assembler 72 Dateiattribute 63
C
Asymmetrische Verschlüsselung 184 Dateiendung 61
Atomic 116 C / C++ / C# 74 Dateiformate 60, 61
Attachment 191 CA 186 Dateinamenerweiterung 61
Attribute 124 Cache in der CPU 43 Dateisystem 62
Auflösung, Bildschirm 54 CAD 106 Daten 7, 24
Auflösung, Monitor 56 CAM 107 Daten, analoge/digitale 8
Auflösung, Scanner 27 Cathode Ray Tube 56 Datenbankdatei 117
Ausgabegeräte 13 CD-ROM-Laufwerk 47 Datenbanken 102, 114
Auskunft 205 Central Processing Unit 39 Datenbanken, hierarchische 118
Authentifizierung 181 Centronics-Schnittstelle 29 Datenbanken, Netzwerk 119
Authentizität 183 Certificate Authorities 186 Datenbanken, NoSQL 121

© HERDT-Verlag Schulversion 227


I Index

Datenbanken, objektorientierte 120 DTP-Programme 105 Festplatte 47


Datenbanken, relationale 119 Dualsystem 17 Festpunktzahl 20
Datenbankentwicklung 122 Durable 116 File Transfer Protocol 177
Datenbank-Managementsystem DVD-Laufwerk 47 Fileee 112
(DBMS) 114 DVI-Anschluss 58 Fingerabdruck-Sensor 27
Datenbankmodelle 118 FireWire 400 30
Datenbanksystem (DBS) 114 E FireWire, Schnittstelle 33
Datenintegrität 115 EBCDIC 155 Flashspeicher 47
Datenredundanz 115 E-Business 220 Fließkomma 80
Datenschutz 116 E-Commerce 221 Fließpunktzahl 20
Datenschutz, Informationen zu 205 Editor 84 Flüssigkristallanzeigen 57
Datenschutzbeauftragte 202 Eingabeaufforderung 84 Flusssteuerung 154
Datensicherheit 116 Eingabegeräte 12, 25 Formfaktor, Mainboard 36
Datensicherung 135, 193 Einwilligung 205 Fortran 72
Datensicherungsschicht 153 Einzelkomponenten 214 Fotoportale 178
Datensicherungsschicht, Einzelplatzlizenz 109 Frames 153
Unterschichten 157 Electronic Collaboration 220 FreeBSD 98
Datensicherungsstrategie 195 Electronic Commerce 220 Freeware 109
Datentypen 79 Electronic Communication 220 Fremdschlüssel 117
Datenunabhängigkeit 115 Electronic Education 220 Front Side Bus 39, 44
Datenverbund 135 Electronic Information/ Front-Side-Bus-Takt 42
Datenzugriff, konkurrierender 116 Entertainment 220 FSB 39, 44
DCL 127, 130 Elektro- und Elektronikgeräte- FTP 177
DDL 127 gesetz (ElektroG) 217 Funktionalität, Software 111
DDR2-SDRAM 46 Elektro- und Elektronikschrott 216 Funktionen 82
DDR3-SDRAM 46 Elektronische Post 106 Funktionsverbund 135
DDR-SDRAM 45 Elektronischer Handel 221
DELETE-Anweisung 130 E-Mail 174, 223 G
DENIC 164 Entities 124 GAN 133
Desktop-Publishing 105 Entity Relationship 124 Ganzzahl 79
Dezimalsystem 17 Entity-Relationship-Modell 124 GDI-Laserdrucker 53
DHCP 159 Entwurfsphasen, Gebrauchte Computer 215
Dialer 190 Datenbankentwicklung 122
Geheimer Schlüssel 185
Dienst 173 Ergonomie 210
Geschäftsprozesse 225
Digital 8 Ergonomie, Software 111
Gigabit Ethernet 137
Digitale Signatur 185 ER-Modell 124
Glasfaserkabel 139
Digitalisierung 25 Erweiterungskarten 35
Gleitpunkt 80
Digitalkameras 27 eSATA (externes SATA) 30
Gleitpunktzahl 20
Digitalsignale 8, 25 eSATA, Schnittstelle 33
Global Area Network 133
DIMM 45 Ethernet 136 Gnome 96
Directories 64 Ethernet, Fast 137 GNU-GPL 109
Directory Services 146 Ethernet, Gigabit 137 Gpg4win 185
Divisionsmethode 19 Ethernet, Thin 136 Grafikkarten 54, 55
DML 127, 128 Evaluierungssoftware 110 Grafiktablett 12, 27
DNS 165 EVA-Prinzip 10 Groupware 106, 177
Dokument-Datenbanken 223 exe, Dateiformat 65 Groupware-Lösungen 106
Dokumententen-Management- Externe Schnittstellen 30
System 112 Extranet 134, 224 H
Domain Name Service 165
Dotted-Decimal-Format 163 F Hard- und Software, verwendete 5
Hardware 12
Drucker 13 Facebook 206 Hash-Code 185
Drucker, Netzwerk 53 Farbtiefe, Scanner 27 Hauptplatine 13
Druckersprachen 53 Fast Ethernet 137 Header 152
DSL 170 FCS 153, 154 Hexadezimalsystem 18
DSL-Modem 171 Fehlerbehandlung 23 Hochverfügbarkeit 144
DTP 105 Fehlerüberwachung 154 Host-Bus 39

228 Schulversion © HERDT-Verlag


Index I
Host-ID 163 Komplettsystem 214 Monitor, digital (DisplayPort) 33
HTTP 173, 175 Komponentenfunktion 83 Monitor, digital (DVI, Digital
Hub 143 Kryptografie 183 Visual Interface) 32
Hyper-Threading 42 Kubuntu 96 Monitor, digital (HDMI,
KVM-Switch 211 High Definition Multimedia
I Interface) 33

IMAP4 175
L Monitor-/TV-Ausgang, digital
(DisplayPort) 30
Individualsoftware 101, 108 LAN 132
Monitor-/TV-Ausgang,
Information Technology, LAN-Adapter 144 digital (HDMI) 30
Informationstechnik, IT 9 Laserdrucker 51 Monitorausgang, analog (VGA) 30
Informationen 7, 24 Last Mile 169, 170 Monitorausgang, digital (DVI) 30
INSERT-Anweisung 129 Lautsprecher 13 Monitortypen 56
Instanzen 116 LCD-Monitore 57 Monomode 139
Integer 79 LED-Monitore 58 Motherboards 13, 30, 34
Integrität 183 Leitwerk 40 Multi-Core-Prozessoren 44
Interfaces 30 Lernziele 5 Multifunktionsgeräte 53, 215
International Electrotechnical LibreOffice 96 Multifunktionstastatur 25
Commision (IEC) 15 Lichtschranken 26 Multimode 139
Interne Schnittstellen 39 Lichtwellenleiter 139 Multiprocessing 89
Internet 133, 225 Linux 95 Multitasking 88, 90
Internet Service Provider 172 Linux-Kernel 95 Multithreading 88
Internetbrowser 105 Lizenzierungsmethoden 109
Internetwork Packet Exchange/ Local Area Network 132 N
Sequenced Packet Exchange 165 Lochmaske 57
InterNIC 164 Nachrichten 7
Logik 14
Intranet 133, 177, 222 Nachrichtennetze 168
Logikbausteine 14
Intranet-Anwendungen 223 Nadeldrucker 50
IP-Adresse 160 M Nassi-Shneidermann 68
IP-Adressierung (IPv4/IPv6) 163 NetBEUI (NetBIOS Extended
Mac OS 94 User Interface) 165
IPv6 165
MAC-Adresse 144 Netiquette 177
ISBN-Code 21
Mail-Programme 106 Network Interface Card 144
ISO/OSI-Modell 149
Mail-Systeme 106 Network Layer 154
Isolated 116
Mainboard 13, 34, 35 Netz, öffentliches 168
ISP 172
Makrovirus 190 Netzwerk 132
IT-Strukturen 223
Malware 190 Netzwerk (RJ-45) 32
J MAN 132 Netzwerkadapter 144, 158
MAPI 175 Netzwerkanschluss (RJ-45) 30
Java 74 Marktakzeptanz, Software 111 Netzwerk-Betriebssystem 145
Maschennetz 142
K Netzwerkfähigkeit 89, 90
Maschinensprache 71 Netzwerk-ID 163
Kabel, Kategorien 138 Massenspeicher 46 Netzwerkschicht 150, 154
Kamera 12 Matrixdrucker 50 Netzzugang, digitaler 171
Kapselung 83 Maus 12, 26 Netzzugang, Komponenten 169
Kardinalität 125 Mausklick 26 Newsgroups 176
Kathodenstrahlröhren 56 Memberfunktion 83 NIC 144
KDE 96 Methode 83 NICHT, logisches 14
Keylogger 190 Metropolitan Area Network 132 Normalform 125
Klasse 83 MF2-Tastatur 25 Northbridge 37
Koaxialkabel 137 Mikrofone 12, 27 Novell 165
Kombi-PS/2-Anschluss Mikroprozessor 14, 40
Tastatur/Maus 30 O
MIMO 140
Kommunikation 134
Mobilfunk 171 Objektorientierte
Kommunikations-
Modularisierung 69 Programmierung 70, 82
steuerungsschicht 155
Monitor 13 OCR 27
Kompatibilität, Software 111
Monitor, analog (VGA, Video ODER, logisches 14
Komplettlösungen 107
Graphics Array) 32 Öffentlicher Schlüssel 184

© HERDT-Verlag Schulversion 229


I Index

Office 365 112 Programmierung, Schnittstelle, parallele 30


Office-Paket 100 objektorientierte 82 Schnittstelle, serielle 30
Onlineshops, Online- Programmvirus 189 Schnittstelle, VGA 32
Auktionsplattformen 208 Prolog 75 Schutzmaßnahmen 208
OpenOffice 96 Protokoll-Stack 158 Schwarzes Brett 176
openSUSE 96 Provider 172 SDRAM 45
Operating System 145 Prozedurale Programmierung 69 SDSL 173
Operatoren 77 Prozessor 35, 36, 39 Secret-Key 184
Optical Character Recognition 27 Prüfbit 23 Secure Sockets Layer 186
Ordner 64 PS/2 30 Seitendrucker 50
Organisationsstrukturen 223 Pseudocode 77, 78 SELECT-Anweisung 129
OS 145 Public-Key 184 Sensoren 27
OSI-Modell 149, 151 Public-Key-Infrastruktur 186 Serielle Schnittstelle 30, 31
OSI-Referenz-Modell, Python 75 Server 144
Funktionsprinzip 151 Server-Betriebssystem 145
Q Service 173
P
Quantisierung 25 Session Layer 155
Pakettransport 154 Quellcode 84 SharePoint 112
PAP 67 Shareware 109
Parallele Schnittstelle 30, 31 R Sicherung, differenzielle 197
Parameter 82 RAM-Bausteine 44 Sicherung, inkrementelle 196
Paritätsbit 23 Ransomware 190 Sicherungsschicht 153
Parity 23 Rechenwerk 40 Signale 8, 24
Pascal 73 Rechte vergeben 131 Sitzhaltung 212
Passiv-Matrix-Displays 57 Recycling 216 Sitzungsschicht 150, 155
Passwort 182 Redirector 155 Smartphones 76, 168
Patches 192 Reduced Instruction Set Social Bookmarking 178
PCIe 39 Computer (RISC) 41 Social Networking (soziales
PDU 152 Regionalanbieter 172 Netzwerk) 177
Peer-to-Peer 147 Relationships 124 Sockel 36
Peripheriegeräte 13 Repeater 142 SO-DIMM 45
Perl 75 RJ-45 138 Software 11
Personenbezogene Daten 201 Rollback 118 Software beurteilen 110
Pharming-Mails 190 Rollforward 118 Software Engineering, Definition 65
Phishing 190, 192 Rootkits 190 Software, individuelle 101
PHP 75 Router 143, 164 Softwarelizenzierung 109
Physical Layer 153 Routing 154 Softwarepakete 107
Physikalische Schicht 150 Rückgabewert 82 Softwarepatente 219
Picture Elements 56 Rückgabewert, Funktionen 82 Solaris 97
Pipelining 42 Sound, analog 32
Pixel 56 S Sound, digital 32
Pixelgrafik 103 SA 68 Soundanschlüsse, analog 30
PKI 186 SAA 111 Soundanschlüsse, digital-optisch
Plug & Play 89 SAP 107 und koaxial (SPDIF) 30
Polymorphismus 83 SAP, Service Access Point 151 Soundchips 27
POP3 175 S-ATA 39 Sourcecode 84
Ports 30 Scanner 12, 27 Southbridge 37
Präsentationsprogramme 103 Schaltalgebra 15 Soziale Netzwerke 206
Präsentationsschicht 150, 155 Schichtengruppen 156 Spam 182, 209
Presentation Layer 155 Schleifen 78 Speicherkarte 47
Primärschlüssel 117 Schlüssel, geheimer 185 Speicherkartenleser 12
Private-Key 184 Schlüssel, öffentlicher 184 Speichermedien 13
Programm 65 Schnittstelle 29, 151 Spracherkennung 28
Programmablaufplan 67 Schnittstelle, eSATA 33 Spyware 190
Programme, Arten von 100 Schnittstelle, externe 30 SQL (Structured Query Language) 120
Programmiersprachen, Überblick 71 Schnittstelle, FireWire 33 SQL Server 116

230 Schulversion © HERDT-Verlag


Index I
SSD 48 Trailer 153 VGA, Schnittstelle 32
SSL 186 Transaktionsprotokoll 117 Virtual Local Area Network 133
Standardsoftware 108 Transmission Control Protocol/ Virtual Private Network 183
Standleitung 173 Internet Protocol 162 Virtualisierungslösung 43
Stern-Topologie 142 Transport Layer 154 Virus, Computer 189
Steuerwerk 40 Transportschicht 150, 154 VLAN 133, 143
Störung 9 Trojanisches Pferd 190 Voice-over-IP 170
STP 138 TrueCrypt 185 Volumenlizenz 109
Streifenmaske 57 Trust-Center 186 Von-Neumann-Architektur 34, 39
Stromversorgung 35 Tupel 115 Vorkenntnisse, empfohlene 5
Struktogramm 68 Twisted Pair 138 VPN 183
Strukturen 81 Twisted-Pair-Kabel 137
Strukturierte Analyse 68 W
Subnet Mask, Subnetzmaske 163
U
Wahrheitstabelle 15
Subnetzmaske 160 Übertragungsmedium 136 Wahrheitswert 80
Subtraktionsmethode 18 Überwachung 182 WAN 132
Suchmaschine 16 Ubuntu 95, 96 Wasserfallmodell 123
Superskalare Architektur 43 UEFI, Unified EFI 38 Webblogs 178
Surfspuren 207 Umrechnung zwischen Zahlen- Webcams 27
Switch 143 systemen, Windows-Rechner 21 Webserverstatistik 97
Symmetrische Verschlüsselung 184 Umwandlung von Dezimalzahlen 18 WEP 141
Synchronisation 155 UND, logisches 14 WEP-Protokoll 188
Syntax 84 Unity 96 Wertverlauf 8
Syntax Highlighting 85 UNIX 97 Wide Area Network 132
Unternehmensnetzwerk 169 Windows 10 93
T UPDATE-Anweisung 130 Windows 10 Enterprise 93
Tabellenkalkulation 102 Updates 192 Windows 10 for Mobile 93
Tabellenkalkulationsprogramme 102 Urheberrecht 218 Windows 10 Pro 93
Taktfrequenz, CPU 41 Urheberrechtsgesetz 218 Windows 2000 90
Taktsignal 29 USB 31 Windows 7/Windows 8 92
Tastatur 12, 25 USB-3.0-Anschlüsse 30 Windows NT 3.1/3.51/4.0 89
Tastaturlayout 25 USB-Anschlüsse 30 Windows Vista 91
Tastaturpad 211 USB-Stick 47 Windows XP 90
Tastaturprozessor 26 Usenet 176 Windows-Tastatur 25
TCO (Total Cost of Ownership) 112, USV 145 Wireless Local Area Network 133
148, 210 UTP 138 Wissenschaftliche Programme 106
TCP/IP 159, 162 WLAN 133
Telekommunikation 167
V
Workflow 106
Terminplaner 106 Variablen 79 World Wide Web 173
Terminplanungsprogramme 106 Variablen, globale 80 WPA 141
Textverarbeitung 101 Variablen, konstante 81 WPA2 141, 189
Textverarbeitungsprogramme 102 Variablen, lokale 80 Wurm 190
TFT-Displays 57 Variablen, statische 80 WWW 173
Thermodirektdrucker 51 Vektoren 81
Thermodrucker 51 Vektorgrafik 104 Z
Thermosublimationsdrucker 51 Vektorgrafikprogramme 104 Zahlensystem, binäres 17
Thermotransferdrucker 51 Verarbeitungsgeräte 12, 29 Zahlensysteme 16, 17
Thin Ethernet 136 Verbindlichkeit 183 Zeichen, Datentyp 80
Tintenstrahldrucker 50 Verbindungsschicht 150 Zeichendarstellung 21
Top down 69 Vererbung 83 Zertifikat 186
Topologie 141 Verfügbarkeit 135 Zielgruppe 5
Touchpad 12 Vermittlungsschicht 154 Zugriffsrechtevergabe 181
Touchscreen 12, 27 Verschlüsselung 183 Zugriffsschutz 181
TP 138 Versionen, Windows 10 93 Zweckbindung 205
Trackball 26 Vertraulichkeit 183
Trackpad 26 Verzeichnis 64

© HERDT-Verlag Schulversion 231


Impressum

Matchcode: ITECH

Autor: Thomas Joos

Produziert im HERDT-Digitaldruck

8. Ausgabe, Januar 2020

HERDT-Verlag für Bildungsmedien GmbH


Am Kümmerling 21-25
55294 Bodenheim
Internet: www.herdt.com
E-Mail: info@herdt.com

© HERDT-Verlag für Bildungsmedien GmbH, Bodenheim

Alle Rechte vorbehalten. Kein Teil des Werkes darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder einem
anderen Verfahren) ohne schriftliche Genehmigung des Verlags reproduziert oder unter Verwendung elektronischer
Systeme verarbeitet, vervielfältigt oder verbreitet werden.

Dieses Buch wurde mit großer Sorgfalt erstellt und geprüft. Trotzdem können Fehler nicht vollkommen ausgeschlossen
werden. Verlag, Herausgeber und Autoren können für fehlerhafte Angaben und deren Folgen weder eine juristische
Verantwortung noch irgendeine Haftung übernehmen.

Wenn nicht explizit an anderer Stelle des Werkes aufgeführt, liegen die Copyrights an allen Screenshots beim HERDT-
Verlag. Sollte es trotz intensiver Recherche nicht gelungen sein, alle weiteren Rechteinhaber der verwendeten Quellen
und Abbildungen zu finden, bitten wir um kurze Nachricht an die Redaktion.

Die in diesem Buch und in den abgebildeten bzw. zum Download angebotenen Dateien genannten Personen und
Organisationen, Adress- und Telekommunikationsangaben, Bankverbindungen etc. sind frei erfunden. Eventuelle
Übereinstimmungen oder Ähnlichkeiten sind unbeabsichtigt und rein zufällig.

Die Bildungsmedien des HERDT-Verlags enthalten Verweise auf Webseiten Dritter. Diese Webseiten unterliegen der
Haftung der jeweiligen Betreiber, wir haben keinerlei Einfluss auf die Gestaltung und die Inhalte dieser Webseiten.
Bei der Bucherstellung haben wir die fremden Inhalte daraufhin überprüft, ob etwaige Rechtsverstöße bestehen.
Zu diesem Zeitpunkt waren keine Rechtsverstöße ersichtlich. Wir werden bei Kenntnis von Rechtsverstößen jedoch
umgehend die entsprechenden Internetadressen aus dem Buch entfernen.

Die in den Bildungsmedien des HERDT-Verlags vorhandenen Internetadressen, Screenshots, Bezeichnungen bzw.
Beschreibungen und Funktionen waren zum Zeitpunkt der Erstellung der jeweiligen Produkte aktuell und gültig.
Sollten Sie die Webseiten nicht mehr unter den angegebenen Adressen finden, sind diese eventuell inzwischen komplett
aus dem Internet genommen worden oder unter einer neuen Adresse zu finden. Sollten im vorliegenden Produkt
vorhandene Screenshots, Bezeichnungen bzw. Beschreibungen und Funktionen nicht mehr der beschriebenen Software
entsprechen, hat der Hersteller der jeweiligen Software nach Drucklegung Änderungen vorgenommen oder vorhandene
Funktionen geändert oder entfernt.

Schulversion
Webcode - Übungsdateien

CC38-865F-FD06

HTBLA Traun

In Kooperation mit dem HERDT-Verlag stellen wir Ihnen eine PDF inkl. Zusatzmedien für Ihre persönliche Weiterbildung
zur Verfügung. In Verbindung mit dem Programm HERDT-Campus ALL YOU CAN READ stehen diese PDFs nur
Lehrkräften und Schüler*Innen der oben genannten Lehranstalt zur Verfügung. Eine Nutzung oder Weitergabe für
andere Zwecke ist ausdrücklich verboten und unterliegt dem Urheberrecht. Jeglicher Verstoß kann zivil- und
strafrechtliche Konsequenzen nach sich ziehen.

SQL
Elmar Fuchs Grundlagen und
Datenbankdesign
5. Ausgabe, April 2018
(Stand 2018)

ISBN 978-3-86249-818-5 SQL

Schulversion
I SQL – Grundlagen und Datenbankdesign

1. Informationen zu diesem Buch 4 7.4 Daten löschen 97


7.5 Übung 98
2. Grundlagen zu Datenbanken 6
2.1 Entwicklung der Datenbanken 6
2.2 Datenbankmodelle 8 8. Einfache Datenabfrage 100
2.3 Aufbau und Organisation einer Datenbank 15 8.1 Grundlagen zu einfachen Datenabfragen 100
2.4 Physische Datenbankarchitektur 20 8.2 Bedingungen definieren 106
2.5 Übung 25 8.3 Abfrageergebnisse gruppieren 111
8.4 Abfrageergebnisse sortieren 113
8.5 Übung 114
3. Der Datenbankentwurf 26
3.1 Einführung zum Datenbankentwurf 26
3.2 Der Datenbank-Lebenszyklus 26 9. Schlüsselfelder und Indices 115
3.3 Datenbanken entwerfen 27 9.1 Einführung zu Schlüsseln und Indizes 115
3.4 Das Entity-Relationship-Modell 30 9.2 Schlüsselfelder festlegen und bearbeiten 117
3.5 Übung 43 9.3 Indizes 125
9.4 Übung 128

4. Das relationale Datenmodell 44


4.1 Begriffe aus dem Bereich relationaler 10. Funktionen in Abfragen 129
Datenbanken 44 10.1 Standard-Funktionen in SQL 129
4.2 Transformation des ER-Modells 10.2 Nicht standardisierte Funktionen 133
in ein relationales Modell 48
10.3 Übung 137
4.3 Normalisierung des Datenbankschemas 51
4.4 Theorie relationaler Sprachen 59
4.5 Übung 65 11. Datenabfragen für mehrere Tabellen 138
11.1 Tabellen verknüpfen 138
11.2 Einfaches Verknüpfen von Tabellen 141
5. Datenbanken 66
11.3 Tabellen verknüpfen mit JOIN 144
5.1 Die Datenbankabfragesprache SQL 66
11.4 Zwei Tabellen vereinigen 152
5.2 Datenbank erstellen 68
11.5 Schnitt- und Differenzmengen 152
5.3 Datenbank anzeigen und auswählen 71
11.6 Unterabfragen 153
5.4 Datenbank löschen 73
11.7 Übung 155
5.5 Übung 73

12. Sichten 156


6. Tabellen erstellen und verwalten 74
12.1 Vordefinierte Abfragen 156
6.1 Tabellen erstellen 74
12.2 Sichten erstellen 157
6.2 Datentypen festlegen 77
12.3 Sichten löschen 159
6.3 Constraints in Tabellen verwenden 80
12.4 Daten über Sichten einfügen, ändern
6.4 Domänen verwenden 83 und löschen 160
6.5 Vorhandene Tabellen anzeigen, ändern 12.5 Übung 162
und löschen 86
6.6 Übung 89
13. Cursor 163
13.1 Sequenzielles Lesen von Datensätzen 163
7. Daten einfügen, aktualisieren, löschen 90
13.2 Cursor erstellen 164
7.1 Daten einfügen 90
13.3 Datenzugriff mit dem Cursor 165
7.2 Daten aktualisieren 94
13.4 Cursor schließen 166
7.3 Bedingtes Einfügen / Aktualisieren von Daten 96

2 Schulversion © HERDT-Verlag
Inhalt I
14. Zugriffsrechte und Benutzer verwalten 167
14.1 Sicherheitskonzepte 167
14.2 Benutzerverwaltung unter PostgreSQL 168
14.3 Benutzerverwaltung unter MariaDB 171
14.4 Zugriffsrechte an Benutzer vergeben 173
14.5 Benutzern die Zugriffsrechte entziehen 176
14.6 Übung 177

15. Transaktionsverwaltung 178


15.1 Konsistente Datenbestände und
Transaktionen 178
15.2 Transaktionen erstellen 180
15.3 Transaktionen abschließen 184
15.4 Transaktionen zurücksetzen 185
15.5 Übung 186

16. Stored Procedures 187


16.1 Programmabläufe speichern 187
16.2 Stored Procedures erstellen und bearbeiten 189
16.3 Beispielanwendung für Stored Procedures 193
16.4 Übung 197

17. Trigger 198


17.1 Prozeduren automatisch ausführen 198
17.2 Trigger erstellen 199
17.3 Trigger bearbeiten und löschen 203
17.4 Übung 204

Stichwortverzeichnis 206

© HERDT-Verlag
Schulversion 3
1 Informationen zu diesem Buch

1
1. Informationen zu diesem Buch
Voraussetzungen und Ziele
Zielgruppe
Dieses Buch richtet sich an alle, die die Datenbankabfragesprache SQL erlernen wollen:
 Personen, die eine IT-Grundlagenausbildung absolvieren,
 zukünftige Datenbankadministratoren, zu deren hauptsächlichen Aufgaben der Aufbau,
die Erweiterung und die fortlaufende Administration eines Datenbanksystems auf der Basis
von SQL gehört,
 (zukünftige) Programmierer und Webseitenentwickler, die große Datenmengen verwalten
und auswerten müssen.

Empfohlene Vorkenntnisse
Folgende Kenntnisse erleichtern das Verständnis der Inhalte sowie die erfolgreiche Arbeit
mit dem Buch:
 Grundkenntnisse im Umgang mit Konsolenbefehlen unter Windows oder Linux
 Grundkenntnisse in der Administration von Windows- oder Linux-Systemen

Hinweise zu Soft- und Hardware


Die Erläuterungen und Beispiele dieses Buches beziehen sich auf die Datenbanksysteme MariaDB
(eine Abspaltung von MySQL) in der Version 10.2 und PostgreSQL in der Version 10.3. Diese bei-
den Systeme besitzen seit vielen Jahren einen konstant hohen Marktanteil (bei MariaDB in Form
des Ursprungsprodukts MySQL) und sind frei verfügbar. Dabei ist zu beachten,
 dass viele Anweisungen in anderen Datenbanksystemen (DBS) genauso angewendet werden
können,
 dass sich Anweisungen auch zwischen MariaDB und PostgreSQL unterscheiden können bzw.
einige Anweisungen nicht in beiden DBS existieren,
 dass die gezeigten SQL-Syntaxdefinitionen die wichtigsten Parameter enthalten, dass jedoch
teilweise in den beiden Datenbanksystemen weitere systemspezifische Parameter existieren,
 dass DBS verschiedener Hersteller nicht den gesamten Umfang von SQL unterstützen und
eigene Dialekte verwenden.

Ergänzende Lerninhalte: PostgreSQL und MariaDB installieren.pdf


Hinweise zur Installation von PostgreSQL und MariaDB finden Sie im oben angegebenen
BuchPlus-Dokument.

4 Schulversion © HERDT-Verlag
Informationen zu diesem Buch 1

Ergänzende Lerninhalte: SQirreL installieren.pdf


Im oben angegebenen BuchPlus-Dokument wird das Werkzeug SQuirreL beschrieben,
das Sie alternativ zu der im Buch für die Screenshots verwendeten Kommandozeile für
die Eingabe der SQL-Befehle verwenden können. Es erleichtert durch integrierte Hilfs-
möglichkeiten wie beispielsweise die Syntaxunterstützung das Erlernen der Sprache SQL.

Lernziele
Die Kapitel 2 – 4 beinhalten eine Einführung in die Datenbanktheorie. In diesen Kapiteln erhalten
Sie einen grundlegenden Überblick über die verschiedenen Datenbanktypen sowie den Aufbau
und Einsatz von Datenbanksystemen. Darüber hinaus werden der Entwurf von Datenbanken und
das relationale Datenmodell beschrieben.
In den anschließenden Kapiteln wird Ihnen das praktische Wissen über die Datenbanksprache SQL
vermittelt, z. B. wie Sie Datenbanken und Tabellen mit SQL erstellen und bearbeiten und wie Sie
Datenbestände auswerten können. Diese Inhalte können Sie prinzipiell auch ohne das Studium der
Kapitel 2 – 4 verstehen. Für eine effektive Anwendung der Kenntnisse und speziell für einen
gelungenen Entwurf zukünftig von Ihnen entwickelter Datenbanken spielen diese theoretischen
Aspekte jedoch eine nicht zu unterschätzende Rolle.

Ergänzende Lerninhalte: SQL_XML.pdf


Als Zusatz finden Sie im oben angegebenen BuchPlus-Dokument Informationen zu den
Anwendungsmöglichkeiten von XML in SQL-Datenbanken.

Wissenstests: Datenbanktheorie und Sprache und Sprachelemente


Zur Überprüfung Ihres erworbenen Wissens stehen Ihnen zwei Wissenstests unter den
BuchPlus-Dokumenten zur Verfügung.

BuchPlus – unser Konzept:


Problemlos einsteigen – Effizient lernen – Zielgerichtet nachschlagen
(weitere Infos unter www.herdt.com/BuchPlus)

Nutzen Sie dabei unsere maßgeschneiderten, im Internet frei verfügbaren Medien:

 Rufen Sie im Browser die Internetadresse www.herdt.com auf.


 Geben Sie im Suchfeld Alles (auch Webcodes) den Matchcode SQL ein.

© HERDT-Verlag
Schulversion 5
2 Grundlagen zu Datenbanken

2
2. Grundlagen zu Datenbanken

2.1 Entwicklung der Datenbanken


Datenbanken spielen beim Einsatz von Computern häufig eine zentrale Rolle. Wenn Arbeits-
abläufe computerunterstützt abgewickelt werden, ist meistens die Speicherung großer Daten-
mengen erforderlich. Typische Beispiele dafür sind Personalverwaltung, Lagerwirtschaft oder
Bestell- und Rechnungswesen großer Unternehmen, wobei die Prozesse in großen Unternehmen
mittels eines ERP-Systems (Enterprise Ressource Planning) realisiert werden. Die notwendigen
Daten werden hier mit einem Datenbanksystem verwaltet. Weitere typische Einsatzgebiete für
Datenbanken sind Webanwendungen wie E-Shops oder zentrale Nachschlage- und Informations-
verzeichnisse, wie z. B. Wikipedia.

Bei der Speicherung der Daten in einfachen Dateisystemen werden z. B. folgende Probleme
erkannt:

 Redundanzen
Viele Daten werden mehrfach gespeichert, was eine hohe Datenredundanz bedeutet.
Dadurch werden Änderungen aufwendig, da die gleichen Daten mehrmals an verschiedenen
Stellen geändert werden müssen.
 Inkonsistenzen
Bedingt durch die Redundanzen treten Inkonsistenzen auf, der Datenbestand ist fehler-
anfällig. Fehler entstehen, wenn Änderungen von mehrfach gespeicherten Daten nur an
einer Stelle vorgenommen werden.
 Eingeschränkter Mehrbenutzerbetrieb
Die Datenspeicherung in Dateiform erfordert, die ganze Datei zu sperren, auch wenn nur
ein Kundensatz verarbeitet wird. Eine gleichzeitige Bearbeitung anderer Daten in der Datei
durch einen weiteren Benutzer ist in diesem Moment nicht möglich.
 Datenschutzprobleme
Ein Lesezugriff auf die gesamten Daten ist zum Teil uneingeschränkt möglich. Er kann jedoch,
abhängig vom verwendeten Betriebssystem, durch Lesesperren oder Verschlüsselung
unterbunden werden.

6 Schulversion © HERDT-Verlag
Grundlagen zu Datenbanken 2

 Fehlende Datenunabhängigkeit
Eine komfortable Verwaltung der Daten ist nur durch die explizit dafür konzipierte Software
möglich. Diese muss die Struktur der Daten kennen, um die Daten lesen zu können.
Jede Änderung der Datenstruktur erfordert so – neben einem Programm zur Umstrukturie-
rung der Dateien – zwingend eine Änderung des verarbeitenden Programms.
Werden die gleichen Dateien in mehreren Anwendungen ausgewertet, muss jede eine eige-
ne Datenverwaltung besitzen. Notwendige Änderungsarbeiten fallen damit mehrfach an.

Durch die Entwicklung von Datenbanksystemen (DBS) wurden diese Probleme nach und nach
gelöst. In einem DBS werden die Daten in einer Datenbank zusammengefasst, die ausschließlich
von dem Datenbankmanagementsystem (DBMS) der Datenbanksoftware verwaltet wird.
Anwendungsprogramme greifen nun nicht mehr direkt auf die Daten zu, sondern stellen ihre
Anforderungen nur noch an das Datenbankmanagementsystem. Die enge Verflechtung und
Abhängigkeit von Daten und den damit arbeitenden Anwendungsprogrammen wird stark
reduziert bzw. ganz aufgehoben.

Ein DBS besteht aus einer Anzahl von Datenbanken und dem DBMS. Die Datenbank ist die Samm-
lung von logisch zusammengehörigen Daten zu einem Sachgebiet. Das DBMS stellt die Schnitt-
stelle zwischen der Datenbank und deren Benutzern (z. B. den Anwendungsprogrammen) her.
Es gewährt einen effizienten und adäquaten (adäquat = angemessen) Zugriff auf die Daten und
sorgt dabei für eine zentrale Steuerung und Kontrolle. Außerdem wird durch das DBMS ein
Schutz gegen Hard- und Softwarefehler gewährleistet, sodass beispielsweise bei Programm-
oder Systemabstürzen die Daten nicht verloren gehen bzw. wiederhergestellt werden können.

Anwendung arbeitet direkt mit Dateien Anwendungen greifen über die Datenbanksoftware
auf die Daten zu, die in der Datenbank gespeichert
sind

Eine Datenbank weist folgende Eigenschaften auf:

 In Datenbanken sind Daten entsprechend ihren natürlichen Zusammenhängen gespeichert.


Dabei ist es nicht entscheidend, in welcher Form die Daten in Anwendungen benötigt
werden. Die Daten der Datenbank bilden einen Ausschnitt aus der realen Welt ab.
 Auf die Daten einer Datenbank können viele Benutzer gleichzeitig zugreifen. Das Datenbank-
managementsystem verwaltet sowohl die Daten als auch die Zugriffe darauf und sorgt dafür,
dass dieselben Daten nicht gleichzeitig von mehreren Benutzern bearbeitet werden können.
Auch wenn mehrere Anwendungen mit einer gemeinsamen Datenbasis arbeiten, so wird in
den Anwendungsprogrammen meist nur auf einen Teil davon zugegriffen (auf eine Sicht auf
die Datenbank).

© HERDT-Verlag
Schulversion 7
2 Grundlagen zu Datenbanken

Das Datenbankmanagementsystem ist die Software, welche die Datenbanken verwaltet.


Es ermöglicht …

 das Anlegen von Datenbanken,


 die Speicherung, Änderung und Löschung der Daten,
 das Abfragen der Datenbank,
 die Verwaltung von Benutzern, Zugriffen und Zugriffsrechten.

Um von Anwendungsprogrammen bzw. Benutzern auf die Daten einer Datenbank zugreifen zu
können, stellt das DBS ein Sprachkonzept zur Verfügung. Bei relationalen DBS ist das meist die
Datenbanksprache SQL (Structured Query Language – strukturierte Abfragesprache).

2.2 Datenbankmodelle
Der Übergang von der Nutzung des Dateisystems zur Datenbank vollzog sich schrittweise.

 Zunächst wurden die Dateien auf Magnetbändern gespeichert (50er Jahre).


 Diese wurden durch den Einsatz der schnelleren Magnetplatten abgelöst. Sie brachten den
Vorteil des Direkt- und Mehrfachzugriffs (60er Jahre).
 In den ersten Datenbanksystemen (1. Generation) wurde das hierarchische Datenmodell
verwendet (70er Jahre).
 Die Weiterentwicklung brachte das Netzwerkmodell hervor.
 Die nächste Datenbank-Generation wurde mit dem relationalen Modell eingeleitet. Dieses
stammt bereits aus den 70er Jahren. Im folgenden Jahrzehnt wurde die maßgebliche prak-
tische Umsetzung realisiert.
 Parallel dazu entwickelten sich alternative Ansätze in Form der spalten- bzw. der dokumen-
tenorientierten Datenbanken.
 Dem Paradigma objektorientierter Sprachen folgend wurden objektorientierte Datenbanken
entwickelt (Anfang der 90er Jahre).
 Der nachfolgenden Datenbank-Generation wurde das objektrelationale Datenmodell
zugrunde gelegt, das die Vorteile der objektorientierten und der relationalen Datenmodelle
vereinigt (Mitte der 90er Jahre).
 Seit Mitte des ersten Jahrzehnts des neuen Jahrhunderts ist ein verstärkter Trend zu den
sogenannten NoSQL-Datenbanken zu verzeichnen.

Hierarchische Datenbanken
Das hierarchische Datenmodell wurde entwickelt, um unterschiedlich lange Datensätze (zusam-
mengehörige Informationen, eine bestimmte Sache betreffend) zu verarbeiten. Die Datensätze
werden so aufgeteilt, dass gleichartige Daten zu kleineren Datengruppen zusammengefasst
werden. Diese Gruppen bilden die Knoten der Hierarchie. So entsteht eine baumartige Struktur,
die streng hierarchisch geordnet ist. Jeder untergeordnete Knoten ist von seinem übergeord-
neten Knoten abhängig. Die Struktur entspricht einer Vater-Sohn-Beziehung. Ein Vater kann
mehrere Söhne haben, ein Sohn aber nur einen Vater. Die Struktur kann nicht ohne den Wurzel-
knoten existieren.

8 Schulversion © HERDT-Verlag
Grundlagen zu Datenbanken 2

Beispiel
Die Abbildung zeigt die hierarchische Struktur einer Kundenverwaltung. Jeder Kunde kann eine
unterschiedliche Anzahl von Bestellungen mit einer bestimmten Anzahl von Posten aufgeben.
So ist nicht vorhersehbar, wie lang ein bestimmter Datensatz ist. Die Daten der Kunden, Bestel-
lungen und Posten bilden im hierarchischen Datenmodell die Knoten des Hierarchiebaums.
Für jeden Knoten wird in der Datenbank ein Datensatz angelegt.

Allgemeine Darstellung Darstellung mit Beispieldaten

Eine bekannte Datenbank mit hierarchischer Struktur ist IMS/DB von IBM.

Nachdem die hierarchischen Datenbanken bis auf einzelne Nischen aus der praktischen Anwen-
dung verdrängt wurden, finden heute mit der starken Verbreitung der erweiterbaren Auszeich-
nungssprache XML (Extensible Markup Language) ihre theoretischen Ansätze wieder eine
Anwendung.

Netzwerkdatenbanken
Beim Netzwerkmodell werden gleichartige Daten in Recordsets gespeichert, die miteinander
in Beziehung stehen. Einem Record eines Recordsets können dabei mehrere Records eines
anderen Recordsets zugeordnet werden, was als Pfeil in der grafischen Darstellung erscheint.
Durch diese Beziehungen zwischen den Recordsets entsteht ein gerichteter Graph, der auch als
Netzwerk bezeichnet wird. Die Beziehungen werden hier als Sets (Mengen) bezeichnet. Die Sets
sind in der Datenbank fest definiert.

Beispiel
Es wird die Projektverwaltung einer Abteilung betrachtet. Zu einer Abteilung gehören mehrere
Mitarbeiter.

In jeder Abteilung wird an mehreren Projekten gearbeitet. An jedem Projekt arbeiten mehrere
Mitarbeiter der Abteilung mit, jeder Mitarbeiter kann aber auch an mehreren Projekten mit-
arbeiten. Diese Beziehungen sind in der Abbildung durch Pfeile dargestellt.

Allgemeine Darstellung Darstellung mit Beispieldaten

© HERDT-Verlag
Schulversion 9
2 Grundlagen zu Datenbanken

Beim Netzwerkmodell darf eine Beziehung zwischen zwei Recordsets immer nur in eine Richtung
zeigen. Zwischen den Recordsets Mitarbeiter und Projekt wäre eine beidseitige Beziehung not-
wendig (mehrere Mitarbeiter arbeiten an mehreren Projekten mit). Das Problem wird durch das
Einfügen eines zusätzlichen Recordsets Mitarbeiter-Projekt gelöst .

Eine verbreitet zum Einsatz gekommene Netzwerkdatenbank ist u. a. die UDS (Universal Daten-
bank System) von Siemens.

Relationale Datenbanken
Relationale Datenbanken sind am weitesten verbreitet. Die Daten werden in Tabellenform
gespeichert, in sogenannten Relationen (mathematische Ausdrucksweise). Zwischen den
Relationen (Tabellen) können Beziehungen definiert werden. Es sind verschiedene Beziehungs-
arten möglich, die sich durch die Anzahl der miteinander in Beziehung stehenden Datensätze
(Tabellenzeilen, Tupel) unterscheiden (einer mit einem 1:1, einer mit mehreren 1:n, mehrere mit
mehreren n:m). Die grafische Darstellung der Relationen und der zugehörigen Beziehungen
erfolgt meist im Entity-Relationship-Modell (ERM). Die Beziehungen werden dort durch Linien
dargestellt, die mit den Kardinalitäten (1, n, m) versehen sind. Über Abfragen ist es möglich, für
die bestehenden Datenbanken unterschiedliche Auswertungen durchzuführen. Für die Abfrage
und Auswertung der Daten hat sich die Abfragesprache SQL durchgesetzt.

Beispiel
Die Projektverwaltung lässt sich im relationalen Modell wie folgt darstellen: Einer Abteilung
gehören mehrere Mitarbeiter an, jeder Mitarbeiter ist aber nur in einer Abteilung beschäftigt.
Zwischen den Relationen Abteilung und Mitarbeiter besteht eine 1:n-Beziehung. Jeder Mit-
arbeiter kann an mehreren Projekten mitarbeiten, ein Projekt kann wiederum von mehreren
Mitarbeitern bearbeitet werden. Zwischen den Relationen Mitarbeiter und Projekt besteht eine
n:m-Beziehung.

Darstellung im ER-Modell Darstellung mit Beispieldaten

Die Daten der Tabellen werden physisch zeilenweise auf einem externen Speichermedium
gesichert. Für die häufige Veränderung und Bearbeitung von Daten, die bei Geschäftsvorfällen
notwendig ist, das Online Transaction Processing (OLTP), eignet sich diese Art der Speicherung
sehr gut.

Es gibt eine Vielzahl relationaler Datenbanken, neben anderen Oracle, Microsoft SQL, DB2 von
IBM, MySQL, MariaDB und PostgreSQL.

10 Schulversion © HERDT-Verlag
Grundlagen zu Datenbanken 2

Spaltenorientierte Datenbanken
Spaltenorientierte Datenbanken basieren ebenfalls auf dem architektonischen Ansatz der
Relationen bzw. Tabellen. Im Gegensatz zu den relationalen Datenbanken erfolgt die physische
Speicherung hier jedoch in einer anderen Form. Die Werte der Tabellen werden pro Spalte –
also über ein Attribut aller Tupel hinweg – auf das externe Speichermedium geschrieben.

Anhand der externen Speicherung der Relation arbeitet_an des Beispiels


der Projektverwaltung zeigt sich der Unterschied folgendermaßen:

Relationale Datenbank:
GW, 0023; XY, 0023; XY, 0101; XY, 6291; ME, 6291; ST, 6291

Spaltenorientierte Datenbank:
GW, XY, XY, XY, ME, ST; 0023, 0023, 0101, 6291, 6291, 6291

Diese Speicherform bietet bei der reinen Auswertung von Daten, dem Online Analytical
Processing (OLAP), deutliche Geschwindigkeitsvorteile, da hier häufig nur die Werte einzelner
Spalten (Attribute) von Interesse sind. Der Leseprozess kann auf diese Spalten beschränkt
werden. Damit entfällt das Lesen einer Vielzahl nicht benötigter Daten der einzelnen Tupel.

Bei der Bearbeitung von Daten kann diese Speicherform ebenfalls Vorteile besitzen. Dies ist
immer dann der Fall, wenn nur ein Attribut über viele Tupel hinweg geändert werden muss.

Einer der ersten Vertreter der spaltenorientierten Datenbanken war Sybase IQ. Mittlerweile gibt
es eine Vielzahl kommerzieller (z. B. Oracle Retail Predicative Application Serve [RPAS]) und nicht
kommerzieller (z. B. Apache Cassandra) Implementierungen.

Dokumentorientierte Datenbanken
Nicht alle Informationen lassen sich gut in zweidimensionalen Relationen ablegen. Mengen
strukturierter Informationen, die sich in den Ausprägungen der Einzelinformationen über die
vorhandenen Attribute hinweg oder in der Menge der Werte der einzelnen Attribute unter-
scheiden, sind nicht effektiv in einem starren Relationenschema abbildbar.

Dieser Fakt führte zum Entwurf der dokumentenorientierten Datenbanken. Eine zusammen-
gehörige Informationsmenge wird in einem Dokument gespeichert. Dieser Begriff steht dabei
für eine strukturierte Information und hat nichts mit dem gleichen Begriff, wie er im Kontext der
Textverarbeitung bekannt ist, zu tun. Die Daten innerhalb eines Dokuments werden in Feldname-
Wert-Paaren abgespeichert. Dabei muss nicht jedes Feld in jedem Dokument vorhanden sein
und einzelne Felder können in unterschiedlichen Dokumenten eine unterschiedliche Anzahl von
Werten besitzen.

In Analogie zu dem Projektbeispiel könnte ein Ausschnitt aus einer dokumentenorientierten


Datenbank beispielsweise folgendermaßen aussehen:
{
(Vorname: Anton, Nachname: Schulze, AktProjekte: P1; P2; P3);
(Vorname: Maria, Nachname: Meier, Funktion: Projektleiter, AktProjekte: P2);
(Vorname: Matthias, Nachname: Schneider, Funktion: Mitarbeiter, AktProjekte: P4);
}

Ein typischer Vertreter dokumentenorientierter Datenbanken ist Lotus Notes Domino.

© HERDT-Verlag
Schulversion 11
2 Grundlagen zu Datenbanken

Objektorientierte Datenbanken
Objektorientierte Datenbanken (OODB) sind nach dem Paradigma der objektorientierten Program-
miersprachen entwickelt worden. Das Ziel der Entwicklung der objektorientierten DBS war es, ein
DBS zu schaffen, in welchem Objekte unserer Umwelt mit ihren Eigenschaften und ihrem Verhalten
nachgebildet (analog zu objektorientierten Programmiersprachen) und ohne großen Aufwand in
einer Datenbank gespeichert und verwaltet werden können.

Jedes Objekt der Datenbank enthält Dateninformationen (Attribute), Verweise auf andere
Objekte und Operationen (Methoden), die das Verhalten des Objekts widerspiegeln. Die Zusam-
menfassung von Daten und Operationen über diese Daten wird als Kapselung bezeichnet. Die
Definition der Objekte (Daten, Verweise, Methoden) erfolgt über sogenannte Klassen. Durch die
freie Beschreibung von Objekt-Klassen lassen sich selbst komplexeste Datenstrukturen in einer
Datenbank verwalten, was in den flachen Tabellen relationaler DBS nur über mehrere in Bezieh-
ung stehende Tabellen möglich ist. Neben der Kapselung von Daten und Operationen sind wei-
tere objektorientierte Konzepte in OODBS implementiert, wie z. B. die Vererbung, die Überladung
von Methoden und dynamische Bindungen. Zusätzlich stehen in OODBS mehr Datentypen zur
Verfügung als in den zuvor beschriebenen Datenbankmodellen (z. B. Arrays oder Klassentypen).

Beispiel
Für die Projektverwaltung werden drei verschiedene Objekt-Klassen (Abteilung, Mitarbeiter und
Projekte) definiert. Bestandteil der Klassendefinition sind auch die Verweise auf andere Objekte
sowie die verschiedenen Operationen (Methoden). So hat ein Objekt der Klasse Abteilung einen
Verweis auf eine unbestimmte Menge von Objekten der Klasse Mitarbeiter. Jeder Mitarbeiter
besitzt einen eindeutigen Verweis auf seine Abteilung und einen Verweis auf eine unbestimmte
Anzahl von Projekten. Jedes Projekt hat einen Verweis auf eine unbestimmte Anzahl von Mit-
arbeitern. Die Methoden der Klasse Abteilung könnten beispielsweise neuerMitarbeiter,
umbenennen oder abteilungsberichtDrucken sein.

Darstellung im objektorientierten Datenbankschema

12 Schulversion © HERDT-Verlag
Grundlagen zu Datenbanken 2

Darstellung mit Beispieldaten

Objektorientierte Datenbanken sind nach wie vor nur wenig verbreitet. Eine der wenigen ver-
fügbaren Umsetzugen ist db4o.

Objektrelationale Datenbanken
Objektrelationale Datenbanksysteme (ORDBS) wurden entwickelt, um die Nachteile relationaler
DBS zu beseitigen. Solche Nachteile sind z. B. das „magere“ Typsystem von relationalen DBS
(umfangreiche Texte, Excel-Tabellen, XML-Dokumente, Audiodaten usw. können nur mit erhöh-
tem Aufwand oder gar nicht in der DB gespeichert werden) und Probleme bei der Abbildung der
Objekte der realen Welt auf das relationale Modell, was als „impedance mismatch“ bezeichnet
wird. Das Ziel der Entwicklung war es, die Vorteile der Speicherung komplexer Objekte wie im
OODBS zu nutzen und dabei die einheitliche Abfragesprache SQL beizubehalten. Es sollten die
Vorteile des relationalen und des objektorientierten Modells in dem neuen DB-Modell vereinigt
werden. Dazu musste nicht alles von Grund auf neu entwickelt werden. Es wurde das vorhandene
relationale Modell genutzt, das um die objektorientierten Konzepte erweitert wurde. Diese
Erweiterungen werden verwendet, um die Objekte zu interpretieren und zu verwalten. Ver-
schiedene Erweiterungen werden mit dem Datenbanksystem ausgeliefert, es existieren aber
auch zusätzliche Erweiterungen von Fremdfirmen und Sie können auch eigene erstellen. Die
Erweiterungen werden beispielsweise als DataBlades (Informix) oder Cartridges (Oracle)
bezeichnet.

Anwendungsprogramme können über die erweiterte SQL-Sprache (Standard SQL:1999, früher als
SQL-3 bezeichnet) auf objektrelationale Datenbanken zugreifen. Dieser Standard wurde von der
International Standardization Organization (ISO) und dem American National Standards Institute
(ANSI) 1999 verabschiedet.

Eine am Markt weitverbreitete objektrelationale Datenbank ist PostgreSQL.

© HERDT-Verlag
Schulversion 13
2 Grundlagen zu Datenbanken

NoSQL-Datenbanken
Mit den im Zuge der Entwicklung des Internets sprunghaft ansteigenden Volumen von Daten in
einzelnen Datenbanken wurden die Bemühungen zur Entwicklung alternativer Architekturformen
von Datenbanken wieder verstärkt. Ursache dafür waren die Probleme, die relationale Daten-
banken bei Anwendungen mit sehr großen Datenmengen haben. Diese treten dann auf, wenn es
zu einer extrem großen Anzahl gleichzeitiger Schreib- und Lesezugriffe oder Datenänderungen
kommt. Ein weiterer Punkt ist die starke Abhängigkeit der relationalen Datenbanken von einem
Schema. Schemaänderungen großer Datenbanken sind sehr zeitaufwendig und im Hinblick auf
einen möglichen Datenverlust nicht ungefährlich. NoSQL-Datenbanken besitzen diese starke
Abhängigkeit von einem Schema nicht. Typisch für NoSQL-Datenbanken ist die Unterstützung von
verteilten Datenbanken auf mehreren Servern, bei der durchaus eine redundante Datenhaltung
erfolgen kann.

Vorreiter der Bewegung der NoSQL-Datenbanken waren beispielsweise Google, Amazon, eBay
und Facebook.

Die aktuelle Bedeutung der NoSQL-Datenbanken zeigt sich auch an der Entwicklung der beiden
im Buch verwendeten Datenbanksysteme. Sowohl MariaDB als auch PostgreSQL bieten eine
Anzahl von NoSQL-Funktionen.

Der Begriff NoSQL – im Sinne von „nicht SQL“ – trat zuerst als Name einer kleinen Datenbank
Ende der 90er Jahre des letzten Jahrhunderts auf. Später wurde er als Sammelbegriff der Bewe-
gung von Datenbanken, die ein anderes als das relationale Konzept verfolgen, im Sinne von „nicht
nur (not only) SQL“ verwendet. Dabei greift die Bewegung durchaus Konzepte auf, die bereits zu
einem früheren Zeitpunkt betrachtet wurden. Exemplarisch hierfür stehen die dokumenten-
orientierten Datenbanken sowie die spaltenorientierten Datenbanken.

NoSQL-Datenbanken können in drei Gruppen unterteilt werden:


 Dokumentenorientierte Datenbanken
 Graphen-Datenbanken
Dieser Typ spielt seine Stärken vor allem bei Anwendungen aus, die eine Vielzahl von Quer-
verbindungen zwischen Daten verwalten müssen. Typisch ist dies zum Beispiel bei Web-
anwendungen wie Twitter (Wer folgt wem?). Architektonisch können Graphen-Datenbanken
als Nachfolger der Netzwerkdatenbanken betrachtet werden. Die Daten werden als Knoten
dargestellt und die Beziehungen zwischen ihnen durch die Verbindungen zwischen diesen
Knoten.
 Key/Value-Datenbanken (zum Teil in Kombination mit spaltenorientierten Datenbanken)
Key/Value-Datenbanken besitzen ein sehr einfaches Schema. Einem Key (Schlüssel), dar-
gestellt durch eine willkürliche Zeichenkette, ist jeweils ein Value (Wert, Einzelwert, Liste
oder Set) zugeordnet. Eine wichtige Unterteilung der Key/Value-Datenbank stellt der Ort
der Speicherung der Daten dar – im RAM oder auf einem externen Medium.

Eine moderne dokumentenorientierte Datenbank ist neben dem noch immer aktuellen Lotus
Notes die CouchDB. Eine bekannte Graphen-Datenbanken ist Neo4J. Typische Vertreter des
Key/Value-Datenbanktyps sind Big Table von Google, Cassandra und Redis.

14 Schulversion © HERDT-Verlag
Grundlagen zu Datenbanken 2

2.3 Aufbau und Organisation einer Datenbank


Eines der wichtigsten Ziele, welches ein DBS realisieren muss, ist die Datenunabhängigkeit.
Diese wird durch die Trennung der physischen Speicherung der Daten und deren Verwaltung von
den Anwendungsprogrammen erreicht. Zum einen sollte eine physische Datenunabhängigkeit
bestehen, d. h., für Programme und Benutzer sollte die physische Organisation der Daten trans-
parent sein. So kann die Struktur der gespeicherten Daten geändert werden, ohne dass die
Anwendungsprogramme geändert werden müssen. Zum anderen ist auch die logische Daten-
unabhängigkeit eine wichtige Anforderung an ein Datenbanksystem. Damit kann zwischen einer
logischen Gesamtstruktur der Datenbank und den anwenderspezifischen Sichten auf die Daten
unterschieden werden. So können weitere Anwendungen und Sichten auf eine bestehende
Datenbank erstellt werden, ohne dass bereits existierende Anwendungen dadurch beeinflusst
werden.

Eine Sicht ist ein Ausschnitt einer Datenbank, der die für eine Anwendung bzw. ein Problem
relevanten Daten enthält.

Beispiel
Ein Unternehmen des Großhandels besitzt eine große
Datenbank, die die Artikeldaten, die Daten der Lager-
verwaltung, die Kundendaten und die Daten der
Bestellannahme und Rechnungslegung enthält. In den
verschiedenen Abteilungen werden nur Teile der
Datenbank, bestimmte Sichten, benötigt. So werden
bei der Bestellannahme nur die Kunden- und Artikel-
daten sowie die im Lager vorhandenen Artikel benötigt. Logische Gesamtsicht auf die DB
des Unternehmens

Für die Verwaltung der Artikel im Lager wird nur auf die Artikel- und Lagerdaten zugegriffen.
Das Rechnungswesen verwendet die Kundendaten sowie die Artikel- und Bestelldaten. Jede
Abteilung verwendet nur die Daten, die sie auch benötigt. Für die Rechnungslegung wird bei-
spielsweise keine Information zum Lagerbestand benötigt.

3-Ebenen-Modell
Am 3-Ebenen-Modell nach ANSI-SPARC 1978 (American National Standards Institute/Standards
Planning and Requirements Committee) werden die unterschiedlichen Sichtweisen auf einen
Datenbestand dargestellt. Das Prinzip der physischen und logischen Datenunabhängigkeit wird
hier deutlich. Darunter versteht man die Möglichkeit des Datenzugriffs durch Programme oder
Anwender, ohne dass diese über Kenntnisse der tatsächlichen technischen Umsetzung der
physischen Speicherung und der Manipulationsprozesse der Daten verfügen.

© HERDT-Verlag
Schulversion 15
2 Grundlagen zu Datenbanken

Auf der externen Ebene erfolgt die Darstellung der Daten, wie sie in den einzelnen Anwendungen
benötigt werden. In den Benutzersichten (kurz: Sichten) werden Teile der logischen Gesamtsicht
so wiedergegeben, dass dem Benutzer nur die Daten zugänglich sind, mit denen er arbeiten darf.
Die Typen der Daten und deren Beziehungen in den Sichten können dabei anders aufgebaut sein
als im konzeptionellen Schema. So sind häufig nur Teile der Daten eines Datenobjekts für eine
Anwendung relevant. Beispielsweise wird bei der Rechnungslegung der Lagerbestand der Artikel
nicht benötigt, der zum Datenobjekt Artikel gehört. Die Benutzer sind mithilfe der Datenabfrage-
und Datenmanipulationssprache (DQL – Data Query Language/DML – Data Manipulation
Language) in der Lage, auf die Daten zuzugreifen (zu selektieren und zu lesen) und sie zu verän-
dern (bzw. zu löschen und neue hinzuzufügen). Das Einrichten der Datenbanken einschließlich
der Sichten ist in größeren Unternehmen Aufgabe des Datenbankadministrators.

In der konzeptionellen Ebene werden alle Daten eines Anwendungsbereichs (z. B. Gesamtheit
der Daten eines Unternehmens) zusammengefasst, die in der Datenbank gespeichert werden
sollen. Auch die logischen Zusammenhänge sowie Änderungsvorschriften für die Daten müssen
beschrieben werden. So entsteht eine logische Gesamtsicht, die auch als „Ausschnitt aus der
realen Welt“ bezeichnet wird. Die Beschreibung der Daten und ihrer Zusammenhänge erfolgt so,
wie diese in der Realität vorkommen, und ist nicht auf die Belange einzelner Anwendungen
zugeschnitten. Beispielsweise werden alle Daten eines Unternehmens in der Datenbank abgelegt,
die in den einzelnen Abteilungen ausgewertet bzw. verwaltet werden müssen. Das konzeptio-
nelle Schema (konzeptionelle Modell) wird mithilfe einer geeigneten Datendefinitionssprache
(DDL – Data Definition Language) beschrieben. Diese Aufgaben erledigt in der Regel der
Datenbankadministrator.

Die interne Ebene beschreibt die Organisation der Daten auf den Speichermedien sowie die
Zugriffsmöglichkeiten auf diese Daten. Vom Datenbankadministrator wird, vom konzeptionellen
Modell ausgehend, eine physische Datenorganisation entwickelt, die für alle Benutzer einen
optimalen Datenzugriff sicherstellt. Das interne Modell wird direkt in die Datenbank übertragen.

Zwischen den 3 Ebenen erfolgt eine Transformation der Schemen ineinander. Dafür besitzt das
DBMS Transformationsregeln.

16 Schulversion © HERDT-Verlag
Grundlagen zu Datenbanken 2

Datenbankmanagementsystem (DBMS)
Das DBMS ist ein Softwarepaket, welches die Verwaltung der Datenbank übernimmt und alle
Zugriffe darauf regelt. Die wichtigste und am häufigsten ausgeführte Aufgabe des DBMS ist die
Bereitstellung der Daten. Als Blackbox betrachtet, nimmt das DBMS dafür die Benutzeranfragen
entgegen, ermittelt die angefragten Daten aus der Datenbank und liefert sie dem Benutzer bzw.
dem Anwendungsprogramm zurück. Dabei vollzieht das DBMS folgende Arbeitsschritte:

 Das DBMS empfängt die Anfragen, in denen Daten einer bestimmten externen Sicht
angefordert werden.
 Es liest die Definition der angeforderten Sicht und überprüft die Syntax der Anfrage.
 Nun überprüft es, ob der Benutzer die Rechte besitzt, auf die Daten zuzugreifen.
 Mithilfe der Transformationsregeln, die zwischen der externen Sicht und dem konzeptio-
nellen Schema gelten, werden die benötigten Datenobjekte ermittelt.
 Über die Transformationsregeln, die zwischen dem konzeptionellen Schema und internen
Schema angewandt werden, ermittelt das DBMS die physischen Datenobjekte und die
Zugriffspfade.
 Das DBMS beauftragt das Betriebssystem zum Lesen der ermittelten Speicherbereiche.
 Das Betriebssystem legt diese gelesenen Blöcke im Systempuffer des DBMS ab.
 Die gelesenen Daten werden über die Anwendung der Transformationsregeln in ent-
gegengesetzter Richtung umgewandelt. Dabei wird die gewünschte Auswahl der Daten
zusammengestellt.
 Das DBMS stellt sicher, dass die übergebenen Daten für andere Benutzer so lange gesperrt
sind, bis die Bearbeitung der Daten beendet wird.
 Die gesuchten Daten (im externen Format) werden an das Anwendungsprogramm bzw.
den Benutzer übergeben.

Diese Schrittfolge wird in der folgenden Grafik


dargestellt. Dabei werden auch technische
Aspekte betrachtet.

 Eine Anfrage wird an das DBMS gestellt.  


 Der Befehl wird analysiert und die
zugehörige externe Sicht wird ermittelt. 

 Über die Transformationsregeln wird 
das konzeptionelle Schema ermittelt.
 
 Über Transformationsregeln wird das
interne Schema ermittelt.  
 
 Ein Teil der Daten wird im Systempuffer
gehalten. Das DBMS prüft, ob sich die
angeforderten Daten im Systempuffer
befinden. 

 Sind die Daten nicht im Systempuffer, 
müssen sie über das Betriebssystem
dorthin geladen werden.

Bearbeitung einer Datenbankabfrage

© HERDT-Verlag
Schulversion 17
2 Grundlagen zu Datenbanken

 Das Betriebssystem tauscht die vorhandenen Daten (Datenseiten – Pages) durch die
angeforderten Daten aus und speichert gegebenenfalls geänderte Daten in der Datenbank.
 Das Betriebssystem informiert das DBMS über die Bereitschaft der angeforderten Daten.
– Die gewünschten Daten werden über die Transformationsregeln in das Format der
betreffenden Sicht umgewandelt.
 Das DBMS übergibt die angeforderten Daten und die Statusinformationen an die
Anwendung.

Weitere Aufgaben des DBMS


 Sicherung der Integrität (in sich richtige und widerspruchsfreie Daten)
Durch die Anwendung der im konzeptionellen Schema vorgegebenen Integritäts-
bedingungen kann die logische Richtigkeit (Konsistenz) der Daten (entsprechend den
Zusammenhängen in der Praxis) gewahrt werden.
Beispiel: In einem System werden Kunden und Rechnungen gespeichert. Ein Kunde darf nur
dann gelöscht werden können, wenn auch alle ihm zugeordneten Rechnungen gelöscht sind.
Würde der Kunden trotz vorhandener Rechnung gelöscht, fehlen in den Rechnungen ent-
sprechende Daten wie Name, Vorname und Rechnungsadresse.
 Datensicherung (Recovery)
Das DBMS ist in der Lage, nach einem Systemabsturz, einem Absturz der Anwendung oder
anderen Fehlern die Datenbank wieder in einen konsistenten Zustand zu überführen.
Zu diesem Zweck verfügt das DBMS meist über ein internes Logbuch.
 Synchronisation
Meist arbeiten mehrere Benutzer gleichzeitig mit einer Datenbank. Das DBMS hat hier die
Aufgabe, parallel ablaufende Transaktionen (Folge von Lese- und Schreib-Operationen)
der Benutzer zu synchronisieren, d. h. die Zugriffe so zu verwalten, dass die Integrität der
Datenbank gewahrt bleibt. Diese Aufgabe wird vom integrierten Transaktions-Manager
übernommen.
Beispiel: Solange das Anwendungsprogramm des Personalbüros die Daten von Frau Maier
bearbeitet, kann kein anderer Benutzer mit diesem Datensatz arbeiten. Erst wenn der
Datensatz gespeichert wurde, können andere wieder darauf zugreifen. Es gibt aber Ein-
stellungen für das DBS, die diesen Schutzmechanismus ausschalten bzw. dessen Reaktionen
steuern.
 Zugriffssteuerung
Einige Daten, wie beispielsweise die Gehälter der Angestellten, dürfen nur für bestimmte
Personenkreise zugänglich sein. Das DBMS bietet die Mittel dafür, dass der Datenbank-
administrator entsprechende Zugriffsrechte für jeden Benutzer bzw. für Benutzergruppen
festlegen kann.

18 Schulversion © HERDT-Verlag
Grundlagen zu Datenbanken 2

Weitere Komponenten des DBMS


Meist besitzen Datenbanksysteme noch weitere Komponenten:
 Data Dictionary/Repositories
Das Data Dictionary (Datenlexikon, -wörterbuch; auch als Meta-Datenbank oder Katalog
bezeichnet) dient der Speicherung von Informationen über die Daten der Datenbank und
deren Verwaltung. Es werden darin beispielsweise das Datenbankschema, die Sichten und
die Zugriffsrechte auf die Datenbank abgelegt. Der Anwender kann über das Dictionary
Informationen über die Datenbank erhalten und Leistungsanalysen durchführen lassen.
In großen DBS werden Repositories verwendet, welche umfangreicher sind als Data
Dictionaries. Sie enthalten zusätzlich zu den Informationen des Dictionarys noch Informa-
tionen über die Benutzer und die Anwendungsprogramme.
Der Inhalt des Data Dictionarys bzw. des Repositorys ist stark vom DBS-Hersteller abhängig.
 Logbuch
Datenbanksysteme verfügen über ein Logbuch, in welchem Informationen über die
Transaktionsvorgänge verzeichnet sind, wie beispielsweise der Beginn und das Ende der
Transaktion und der Zustand der Daten zu Beginn der Transaktion. Treten Systemfehler auf,
werden die Informationen des Logbuchs zum Wiederherstellen der Datenbank verwendet.

Größere Datenbanksysteme bieten meist noch zusätzliche Komponenten, die den Anwender
bzw. den Anwendungsprogrammierer bei seiner Arbeit unterstützen:

Entwurfswerkzeuge Entwurfswerkzeuge zum Datenbankentwurf unterstützen den


zum Datenbankentwurf Anwender beim Entwurf der Datenbank, sodass er nicht auf die
Anwendung der Datendefinitionssprache (DDL) angewiesen ist.
Abfrage-Generatoren Abfrage-Generatoren ermöglichen dem Anwender das Erzeugen
von Datenbankabfragen auch ohne Kenntnisse der Datenbank-
Abfragesprache.
Report-Generatoren Report-Generatoren erzeugen Berichte über Datenbankinhalte in
den verschiedensten Formen (z. B. Tabellen mit Kopf- und Fußzeilen
und Zwischensummen).
Tools zur Erstellung Tools zur Erstellung von Business-Grafiken ermöglichen die grafische
von Business-Grafiken Darstellung von Daten der Datenbank in Diagramm-Form.
CASE-Werkzeuge CASE-Werkzeuge (Computer Aided Software Engineering –
computergestützter Softwareentwurf) dienen dem Entwurf von
Datenbankanwendungen, wobei der Quellcode der Anwendung
automatisch generiert wird.
Utilities Utilities zur Fehleranalyse helfen dem Anwender, Fehler in der
zur Fehleranalyse Datenbank-Struktur aufzufinden und zu beseitigen.
Funktionen zur Funktionen zur Komprimierung und Reorganisation der Datenbank
Komprimierung und sind notwendig, wenn häufig Daten gelöscht und geändert wurden,
Reorganisation der da nicht mehr benötigter Speicherplatz nicht automatisch freige-
Datenbank geben wird. Bei der Ausführung der Funktionen wird die Datenbank
reorganisiert und nicht benötigter Speicher freigegeben.
Archivierungsfunktionen Archivierungsfunktionen werden für das Kopieren und Archivieren
von Datenbeständen der Datenbank eingesetzt.

© HERDT-Verlag
Schulversion 19
2 Grundlagen zu Datenbanken

2.4 Physische Datenbankarchitektur


Die physischen Konzepte der Architektur von DBS ergeben sich aus dem logischen Konzept der
Datenbank-Entwicklung (3-Ebenen-Architektur) in Verbindung mit der Rechnerumgebung. Dabei
werden verschiedene Betrachtungsweisen angewendet. Zum einen werden zentralisierte DBS und
verteilte DBS unterschieden, bei denen die lokale Anordnung der Datenbanken und der Rechner
ausschlaggebend sind. Zum anderen führt die zentrale Speicherung der Daten auf einem Rechner
(dem Server), von dem aus die Arbeitsplatzrechner (die Clients) auf die Daten zugreifen können,
zum Client/Server-Konzept. Ein anderer Ansatz ist der Einsatz von Parallelrechnern und Multi-
prozessorsystemen, der auch von DBS genutzt werden kann (parallele DBS).

Zentralisierte DBS
In einem zentralisierten DBS werden das gesamte
DBMS und die Anwendungen auf einem Rechner
abgelegt, der als zentraler Verwaltungsrechner
bzw. Zentralrechner (auch Host oder Mainframe)
bezeichnet wird. An den anderen Standorten
befinden sich „dumme“ Terminals, die nur der
Ein- und Ausgabe dienen (wenig eigene Funktio-
nalität). Von diesen Terminals aus haben alle
Benutzer die gleichen Sichten auf die Datenbank,
die von den auf dem Zentralrechner laufenden
Anwendungen erzeugt wird.

Die Datenbank eines zentralisierten DBS ist im


Vergleich zu verteilten Datenbanken relativ
einfach zu administrieren. Bezüglich Antwort-
zeiten und Ausfallsicherheit kann es aber auf
dem Zentralrechner zu Problemen kommen. Netz mit Terminals und zentralisierter Datenbank

In modernen Rechnernetzen werden als Endgeräte „intelligente“ Arbeitsplatzrechner eingesetzt.


Die Datenbankanwendungen und die Client-Software der DBS können zusammen auf diesem
Rechner laufen. Damit kann dem zentralisierten DBS ein Teil der Arbeit abgenommen werden,
indem dort z. B. die Syntaxprüfung und die Optimierung der Abfragen durchgeführt werden.

20 Schulversion © HERDT-Verlag
Grundlagen zu Datenbanken 2

Verteilte DBS
Um die Vorteile vernetzter Rechnersysteme
(z. B. schneller Datenaustausch ohne externe
Datenträger), die geografisch weit voneinander
entfernt sein können, auch auf dem Gebiet der
Datenbanken effektiv ausnutzen zu können,
wurden und werden neue Methoden gesucht.

Verteilte Datenbanken sind eine Menge von


mehreren logisch zusammengehörigen (Teil-)
Datenbanken, die in einem Netz auf mehreren
lokal getrennten Computern (z. B. in verschie-
denen Städten) gespeichert sind. Ein verteiltes
DBMS besitzt Mechanismen zur Zusammen-
führung und Abfrage der verteilten Datenban-
ken. Durch das DBMS wird die Verteilung der
Daten vor dem Anwender verborgen. Dem
Benutzer erscheint es wie ein zentralisiertes Verteiltes DBS
DBS, da er nur auf der externen Ebene arbeitet.

Beispielsweise besitzen die Filialen einer Bank jeweils die Kundendaten ihrer Kunden, die
Zentrale kann aber auf alle Kundendaten zugreifen.

Verteilte DBS haben im Vergleich zu zentralisierten DBS entscheidende Vorteile:

Lokale Autonomie Lokale Autonomie ermöglicht effektivere Anfragen, da die Daten dort
gespeichert sind, wo sie gebraucht werden (besonders bedeutsam bei
Unternehmen mit dezentraler Unternehmensstruktur).
Zuverlässigkeit und Die Verfügbarkeit wird verbessert, da der Ausfall eines Knotens nicht
Verfügbarkeit zum Ausfall des gesamten Systems führt. Gezielte Redundanz erhöht
die Zuverlässigkeit.
Leistung Die Leistung wird durch Parallelarbeit an verschiedenen Orten erhöht.
Zugriffe können gleichzeitig durchgeführt und die Zugriffsposition
genauer festgelegt werden, da die lokalen Datenbanken kleiner sind.
Erweiterbarkeit Eine Erweiterbarkeit des Systems, wie z. B. das Hinzufügen eines
neuen Knotens, wird auf relativ einfachem Wege ermöglicht.

Die Anwendung verteilter DBS bringt aber auch Nachteile mit sich:

Komplexität Die Komplexität der Aufgaben (Synchronisation, Bearbeitung von


Anfragen usw.) ist fast immer sehr hoch.
Dezentrale Verwaltung Eine dezentrale Verwaltung bringt zusätzlichen Aufwand für die
Verwaltung und die Synchronisation mit sich.
Sicherheit Die Sicherheit ist zu gewährleisten, d. h. sowohl die Datensicherheit
der lokalen Datenbanken als auch die Sicherheit im Netz (z. B. bei
Datenübertragungen, Zugriffen auf Daten usw.).

© HERDT-Verlag
Schulversion 21
2 Grundlagen zu Datenbanken

Kosten Es entstehen Kosten vor allem für die Software und die
Kommunikation.
Übergang von Der Übergang von zentralisierten auf verteilte DBS verursacht Kosten
zentralisierten auf durch den Umstieg auf neue Software. Auch im Bereich der Hardware
verteilte DBS können Kosten entstehen, z. B. für eine neue Kommunikations-
infrastruktur. Häufig ist neues Personal bzw. die Schulung des
vorhandenen Personals erforderlich. Es werden gegebenenfalls
Werkzeuge zur Überführung der vorhandenen Datenbanken in das
neue System benötigt.

Die Verteilung eines Datenbanksystems kann unter verschiedenen Aspekten erfolgen:

 Ein DBS kann homogen verteilt sein, d. h., logisch zusammengehörige Datenbanken werden
auf verschiedene Orte verteilt. Sie werden von derselben Datenbanksoftware verwaltet.
 Sollen unterschiedliche Datenbanken, z. B. aus verschiedenen Unternehmen, Unter-
nehmensteilen oder Abteilungen, zusammen verwaltet und soll auf die Daten mehrerer
unterschiedlicher Datenbanken gleichzeitig zugegriffen werden, ist das DBS heterogen
verteilt. Die Datenbanken können auch verschiedene Datenmodelle besitzen. Heterogen
verteilte DBS werden auch als Multidatenbanksysteme (MDBS) bezeichnet.
 Ein weiterer Punkt, nach dem eine Unterscheidung von verteilten DBS möglich ist, ist die
Verwendung replizierter Daten (dieselben Daten befinden sich an verschiedenen Stellen
und werden laufend abgeglichen).

Das 3-Ebenen-Modell muss für verteilte DBS erweitert werden. Die Aufteilung der Datenbanken
auf die einzelnen Rechner muss darin deutlich werden, ebenso wie der Unterschied von homo-
gen oder heterogen verteilten Datenbanken. Die Änderungen betreffen vor allem die konzeptio-
nelle Ebene. Auf externer Ebene ist kein Unterschied zu zentralisierten DBS zu erkennen.

 Homogene Verteilung
In der konzeptionellen Ebene findet eine
Aufteilung des konzeptionellen Schemas
statt. Es wird ein gemeinsames konzep-
tionelles Schema für die gesamte Daten-
bank erstellt, auf dem die externen
Sichten beruhen. Das Gesamtschema
wird in lokale konzeptionelle Schemen
unterteilt, für jede lokale Datenbank ein
Schema. Für jedes lokale konzeptionelle
Schema existiert dann ein lokales
internes Schema.

22 Schulversion © HERDT-Verlag
Grundlagen zu Datenbanken 2

 Heterogene Verteilung
Die Zusammenführung mehrerer unter-
schiedlicher Datenbanken bringt einen
höheren Aufwand mit sich. Die Daten
aus den lokalen Schemen  müssen 
zunächst in ein gemeinsames Daten-
bankschema transformiert werden. Ein
transformiertes lokales Schema wird im
Komponenten-Schema  gespeichert. 
Die Daten aus den Komponenten-
Schemen werden aufgeteilt und in den
Exportschemen  abgelegt. Ein Export-
schema kann sich aus Teilen eines oder 
mehrerer Komponenten-Schemen
zusammensetzen. Aus einem Kompo-
nenten-Schema können aber auch
mehrere Exportschemen erzeugt 
werden. Die Exportschemen werden
wiederum im gemeinsamen globalen
Schema  abgebildet.

Client-Server DBS
Die meisten heutigen DBS arbeiten nach dem Client-Server-Konzept. Es realisiert ein funktional
verteiltes System, in dem zwei unabhängige Prozesse über eine definierte Schnittstelle mitein-
ander kommunizieren (als Prozess wird hier ein eigenständig laufendes Programm verstanden) –
der Server und der Client. Die Kommunikation erfolgt über einen Anforderung-Antwort-Dialog.
Der Client stellt eine Anforderung an den Server, der Server bearbeitet die Anforderung und
gibt die gewünschte Antwort an den Client zurück. Der Server stellt die Dienstleistungen zur
Verfügung und der Client nimmt sie in Anspruch. Häufig werden die Dienste eines Servers von
mehreren Clients – auch gleichzeitig – genutzt.

Die Initiative geht hierbei immer vom Client aus, der Server verharrt so lange in Warteposition,
bis ein Client seine Anforderungen sendet.

 Client und Server können sich physisch sowohl auf dem gleichen Rechner befinden als auch
auf verschiedenen Rechnern, die über ein Netzwerk verbunden sind.
 Ein Rechner (bzw. ein Programm) kann sowohl als Client als auch als Server arbeiten. Es ist
von der momentanen Tätigkeit abhängig, ob gerade ein Dienst in Anspruch genommen oder
bereitgestellt wird.

© HERDT-Verlag
Schulversion 23
2 Grundlagen zu Datenbanken

Bezogen auf ein DBS ist die einfachste Form eines Client-Server-Systems die, dass ein Datenbank-
Anwendungsprogramm die Dienste eines Datenbank-Servers in Anspruch nimmt, z. B. durch eine
Datenbankanfrage. Der Server führt die Anfrage über die Datenbank aus und sendet die selek-
tierte Datenmenge an den Client, also das Anwendungsprogramm, zurück.

Bei relationalen DBS werden diese Abfragen meist in der Datenbank-Abfragesprache SQL formu-
liert. Der Server wird entsprechend als SQL-Server bezeichnet. Der SQL-Server (entspricht dem
DBMS oder einem Teil davon) verwaltet die Datenbank und bearbeitet die SQL-Anfragen der
Clients. Der Client ist beispielsweise eine Datenbankanwendung, welche die Anzeige und Bearbei-
tung der Daten ermöglicht, die ihm der SQL-Server geliefert hat.

Parallele DBS
Parallele Datenbanksysteme laufen auf Multiprozessorsystemen oder Parallelrechnern und
nutzen gleichzeitig die Leistung mehrerer Prozessoren. Damit werden eine Leistungssteigerung
und eine Verkürzung der Bearbeitungszeit bei Datenbankanfragen und Transaktionen erreicht.
Bei großen Datenbanken mit vielen Benutzern verursacht die sequenzielle Verarbeitung von
Abfragen zum Teil inakzeptable Antwortzeiten. Besonders beim Einsatz von objektorientierten
Datenbanksystemen, die häufig mit komplex strukturierten Objekten arbeiten, ist ein erhöhter
Aufwand an Rechenzeit notwendig, der Parallelverarbeitung erforderlich macht.

Unter einem parallelen DBS ist nicht zu verstehen, dass mehrere Benutzer gleichzeitig Anfragen
an ein DBMS richten können und diese Anfragen dann zeitlich versetzt, aber gewissermaßen
parallel abgearbeitet werden. Diese Arbeitsweise ist auch bei sequenziell arbeitenden DBS üblich.
Eine echte Parallelarbeit wird durch den Einsatz von Parallelrechnern oder durch die Anwendung
paralleler Algorithmen erreicht, die gleichzeitig auf mehreren Prozessoren ausgeführt werden.

In einem parallelen System sind mehrere Prozessoren, Platten- und Hauptspeicher über eine sehr
schnelle Leitung (Hochgeschwindigkeitsnetz) miteinander verbunden. Die Arbeitsweise paralleler
Datenbanksysteme hängt von der konkreten Rechnerarchitektur ab, die grundsätzliche Arbeits-
weise ist aber die gleiche:

 Die Daten werden auf die verfügbaren Platten verteilt.


 Datenbankabfragen und Transaktionen werden so zerlegt, dass sie auf mehreren
Prozessoren gleichzeitig abgearbeitet werden können.

Prinzipiell gibt es drei verschiedene Architekturtypen für parallele Systeme:

 Shared-Memory-Architektur
(Shared-Everything-Architektur)
Alle Prozessoren des Systems
können auf den gemeinsamen
Speicher zugreifen und über
diesen kommunizieren.
Die für die Ausführung einer
Datenbankoperation benötig-
ten Daten werden von den aus-
führenden Prozessoren über
das Netzwerk angefordert und
im Speicher bereitgestellt.

24 Schulversion © HERDT-Verlag
Grundlagen zu Datenbanken 2

 Shared-Nothing-Architektur
Jedem Prozessor sind eigene
Speichermedien (Haupt- und
Plattenspeicher) zugeordnet,
auf die er exklusiv zugreift. Bei
diesem System verfügt jeder
Prozessor über eine Kopie des
DBMS. Eine wichtige Arbeits-
weise dieser Architekturform
ist das Weitergeben von Funk-
tionen an einen anderen nicht
ausgelasteten Prozessor.
 Shared-Disk-Architektur
Die Hauptspeicher sind den
Prozessoren lokal zugeordnet,
die Plattenspeicher werden
aber gemeinsam genutzt. Die
Arbeitsweise ist ähnlich wie bei
der Shared-Nothing-Architek-
tur. Die Daten werden aber
wie bei der Shared-Memory-
Architektur über das Netzwerk
angefordert.

2.5 Übung

Fragen zur Datenbanktheorie


Übungsdatei: -- Ergebnisdatei: Antworten.pdf

1. Nennen Sie wichtige Gründe, die zur Entwicklung von Datenbanksystemen führten.
2. Welche Datenbankmodelle kennen Sie? Wodurch sind sie gekennzeichnet?
3. Nennen Sie die Namen der 3 Ebenen des 3-Ebenen-Modells und geben Sie an, was in jeder
Ebene dargestellt wird.
4. Was ist ein Datenbankmanagementsystem? Welche Aufgaben hat es?
5. Was ist ein Data Dictionary und wozu wird es benötigt?
6. Welche physischen Datenbankarchitekturen kennen Sie? Erläutern Sie jeweils kurz den
Aufbau.

© HERDT-Verlag
Schulversion 25
3 Der Datenbankentwurf

3
3. Der Datenbankentwurf

3.1 Einführung zum Datenbankentwurf


Wird bei der Konzeption von Anwendungsprogrammen festgestellt, dass für die Verwaltung der
Daten eine Datenbank benötigt wird, beginnt deren Planungsprozess, der sogenannte Daten-
bankentwurf. Dabei handelt es sich um einen Prozess, bei dem genau festgestellt wird, welche
Daten von der Anwendung benötigt werden und ob andere Anwendungen ebenfalls mit diesen
und eventuell anderen Daten aus dem Bereich arbeiten sollen. Dabei werden folgende Aspekte
betrachtet:
 Welche logische Struktur soll die Datenbank haben, d. h., welche Sichten werden auf die
Datenbank benötigt und wie können diese in einem gemeinsamen Schema zusammen-
gefasst werden?
 Wie soll die physische Struktur der Datenbank aussehen, d. h., in welcher Form werden die
Daten gespeichert und wie soll darauf zugegriffen werden?
 Welche zusätzlichen Bedingungen müssen eingehalten werden, d. h., gibt es vonseiten der
Anwendungen Bedingungen, Einschränkungen usw.?

Der Entwurf erfolgt nach dem 3-Ebenen-Modell. Das heißt, es müssen die Schemata für die
externe, die konzeptionelle und die interne Ebene aufgestellt werden. Für den Entwurfsprozess
kommen spezielle Techniken zum Einsatz. Die grafische Darstellung der aufgestellten Modelle
erfolgt mit dem Entity-Relationship-Modell, das sich für den Datenbankentwurf durchgesetzt hat.

3.2 Der Datenbank-Lebenszyklus


Bei der Entwicklung und dem Einsatz von Software werden die verschiedenen Phasen wie z. B.
Analyse, Planung, Entwicklung, Testen und Anwendung von Software unterschieden und unter
dem Begriff des Software-Lebenszyklus zusammengefasst. Diese Einteilung in Entwicklungs-
phasen kann ebenfalls auf dem Gebiet der Datenbanken angewendet werden.

Die Analyse der Anforderungen grenzt die Inhalte der neuen Datenbank ein und dient der
Festlegung der Benutzergruppen und Anwendungen. Dabei werden die Datenobjekte, deren
Eigenschaften und Beziehungen sowie mögliche Vorgänge (Aktualisierungen, Abfragen) und
Randbedingungen ermittelt. Das Resultat der Anforderungsanalyse ist die Anforderungs-
spezifikation.

26 Schulversion © HERDT-Verlag
Der Datenbankentwurf 3

Der konzeptionelle Entwurf umfasst die Modellierung der Sichten und die Integration der
Sichten in ein Gesamtschema. Dafür werden meist Entity-Relationship-Diagramme erstellt.
Auf diesem Gebiet werden aber auch UML-Diagramme eingesetzt (UML – Unified Modeling
Language).

Diese grafischen Darstellungen werden in der Phase des logischen


Entwurfs in das Datenmodell des Ziel-DBS (z. B. in das relationale
Datenmodell) transformiert und die gesamte Datenbank wird so
aufbereitet, dass eine effektive Speicherung möglich ist (das Daten-
bankschema wird normalisiert).

Bei verteilten Datenbanken ist ein Entwurf für die Verteilung der
Datenbanken im Netz erforderlich.

Nun kann die Datenbank mithilfe der Sprachmittel des DBMS erstellt
und die benötigten Anfragen können formuliert werden, was als
physischer Entwurf bzw. Implementierung bezeichnet wird.
Für relationale DBS geschieht dies in der Abfragesprache SQL.
Im Falle einer Übernahme von Daten aus alten Datenbanken oder
von Dateiinhalten erfolgt an dieser Stelle eine Konvertierung dieser
Daten in das neue Format.
Der Datenbank-Lebenszyklus
Die Datenbank und die erstellten Abfragen werden nun getestet und die Ergebnisse werden
auf ihre Gültigkeit bezüglich der Anforderungen geprüft (validiert). So wird die Sicherung der
Datenbank-Qualität gewährleistet.

In der Phase der Anwendung muss die Datenbank ständig gewartet werden. Im Laufe dieser Zeit
können sich Änderungen des Datenbankschemas ergeben. In diesem Fall ist eine Reorganisation
der Datenbank notwendig.

3.3 Datenbanken entwerfen


Der Entwurf der Datenbank hat einen großen Anteil an der Qualität der Datenbank. Der konzeptio-
nelle Entwurf ist mit besonderer Sorgfalt zu erstellen. Darin werden die Sichten definiert und im
konzeptionellen Schema zusammengeführt. Bei der Modellierung des Ausschnitts aus der realen
Welt (des konzeptionellen Schemas) ist besonders auf Vollständigkeit und Korrektheit, Minimalität
und Modifizierbarkeit zu achten.

© HERDT-Verlag
Schulversion 27
3 Der Datenbankentwurf

Die Entwurfsphasen
Der Entwurf der Datenbank beginnt bei der Analyse der Anforderungen und ist mit dem
physischen Entwurf der Datenbank abgeschlossen, wie es in der Abbildung des Datenbank-
Lebenszyklus dargestellt ist.

Anforderungsanalyse In der Anforderungsanalyse werden die Anforderungen aller Benutzer


an die neue Datenbank zusammengetragen. Diese Anforderungen
werden meist nach bestimmten Kriterien klassifiziert, z. B. nach
Abteilungen bzw. Benutzergruppen. Wichtig ist, dass festgelegt wird,
welche Daten gespeichert werden sollen (was zu speichern ist) und
wie die Daten zu bearbeiten sind.
Konzeptioneller Am Ende dieser Phase liegen die Sichten und das konzeptionelle
Entwurf Gesamtschema (meist als Entity-Relationship-Diagramm) vor. Beim
Entwurf können Sie verschiedene Vorgehensweisen verwenden.
Entweder Sie entwerfen zuerst die Sichten und fügen diese dann zu
einem konzeptionellen Schema zusammen (Top-down-Methode –
Methode der schrittweisen Verfeinerung) oder umgekehrt (Bottom-up-
Methode – Methode der schrittweisen Verallgemeinerung). In den
Ergebnisdiagrammen ist genau definiert, welche Daten(-objekte) mit
welchen Eigenschaften in der Datenbank abgebildet werden sollen,
welche Beziehungen zwischen den Daten(-objekten) bestehen, ob es
Abhängigkeiten oder/und Integritätsbedingungen gibt usw.
Bevor der logische Entwurf erstellt werden kann, muss festgelegt
werden, für welches DBS die Datenbank aufgebaut werden soll.
Logischer Entwurf Nun erfolgt die Umsetzung des konzeptionellen Schemas in das Daten-
modell des Datenbanksystems. Dafür stehen meist entsprechende
Transformationsregeln zur Verfügung (diese sind nicht zu verwechseln
mit denen des DBMS zur Transformation der Schemen der 3 Ebenen).
Anschließend wird das Datenbankschema normalisiert, wodurch z. B.
Redundanzen beseitigt werden.
Verfeinerung des Nun kann der logische Entwurf z. B. in Hinblick auf häufige bzw. bevor-
logischen Entwurfs zugte Abfragen, die in den Anforderungen formuliert wurden, optimiert
werden. Dabei werden Erweiterungen und gegebenenfalls Änderungen
am relationalen Schema durchgeführt (z. B. durch das Einfügen von
Indizes).
Physischer Entwurf/ In der letzten Entwurfsphase erfolgt die Definition des internen
Implementierung Schemas. Es werden geeignete Speicherstrukturen und Zugriffs-
mechanismen darauf festgelegt. Ein wichtiger Aspekt ist auch das
Laufzeitverhalten des DBS, welches durch einen effizienten Zugriff auf
die relevanten Daten verbessert werden kann. In der Datendefinitions-
sprache (DDL) des DBS werden nun das interne, das konzeptionelle und
das externe Schema implementiert. Bei relationalen Datenbank-
systemen werden auch die Relationen und Views (Sichten) definiert.
Die Festlegung der Zugriffsrechte erfolgt ebenfalls in dieser Phase.

28 Schulversion © HERDT-Verlag
Der Datenbankentwurf 3

Datenbank-Entwurfsphasen (Wasserfallmodell)

Abstraktionskonzepte
Bei der Erstellung eines Datenmodells werden die Objekte und deren Eigenschaften untersucht.
Es werden zuerst alle Daten (Objekte) gesammelt. In einem Prozess der Abstraktion werden dann
gleichartige Mengen von Objekten zusammengefasst und auf relevante Eigenschaften unter-
sucht. In der Informatik existieren bestimmte Konzepte, nach denen dieser Abstraktionsprozess
erfolgt.

In den folgenden Definitionen werden die Begriffe Objekt und Klassen verwendet. Mit einer
Klasse ist eine Menge gleichartiger Objekte gemeint. Ein Objekt ist ein bestimmtes Element der
Klasse. Beispielsweise werden in der Klasse Autos alle in Deutschland zugelassenen Autos
zusammengefasst. Ein ganz spezielles Auto, z. B. Ihr Auto, ist ein Objekt der Klasse Autos.

 Klassifikation
Gleichartige Dinge (Objekte) mit gemeinsamen Eigenschaften werden zu Klassen
zusammengefasst.
 Aggregation
Eine neue Klasse wird aus anderen, bereits existierenden Klassen zusammengesetzt
bzw. besteht zum Teil aus Objekten anderer Klassen.
 Generalisierung (Verallgemeinerung)
Zwischen bestimmten Klassen wird eine Teilmengenbeziehung hergestellt. Dabei stellt eine
Klasse eine Verallgemeinerung der anderen Klasse dar. Zum Beispiel ist die Klasse Tier eine
Verallgemeinerung der Klassen Vögel, Reptilien und Säugetiere. Die Eigenschaften der ver-
allgemeinerten Klasse werden den Klassen vererbt, die Teilmengen dieser Klasse sind.
 Assoziation
Objekte bzw. Klassen können miteinander in Beziehung gesetzt (assoziiert) werden.
Diese Beziehung kann zwischen zwei oder mehr Objekten aufgebaut werden.
 Identifikation
Eigenschaftswerte bzw. Kombinationen von Eigenschaftswerten der Objekte werden als
Schlüssel definiert und dienen der eindeutigen Identifizierung des Objekts. Über diese
Schlüssel werden die Objekte assoziiert.

© HERDT-Verlag
Schulversion 29
3 Der Datenbankentwurf

3.4 Das Entity-Relationship-Modell


Das Entity-Relationship-Modell (kurz: ER-Modell oder ERM) ist das bekannteste und meistver-
wendete grafische Hilfsmittel für den Datenbankentwurf, wird aber auch in anderen Bereichen
der Informatik eingesetzt, in denen Ausschnitte der realen Welt modelliert werden. Es ist unab-
hängig von einem bestimmten Datenmodell und unterliegt nicht den Einschränkungen der
Datenmodelle, die sich durch deren Implementierung ergeben. Eingeführt wurde das ERM und
die mit ihm verbundene Notation im Jahr 1976 durch Peter Chen. Das ER-Modell ermöglicht es,
die konzeptionellen Entwürfe einer Datenbank auf leicht verständliche Art grafisch darzustellen
und die Abstraktionskonzepte anzuwenden. Eine spezielle Form der Darstellung wird häufig nach
ihrem Erfinder auch als Chen-Notation bezeichnet.

Die zwei Grundbausteine des ER-Modells sind die Entities (Entitäten) und die Relationships
(Beziehungen). Entities und Relationships haben Attribute. Es können beliebig viele Objekte
einer Entitätsmenge und einer Beziehungsmenge existieren.

Zur Darstellung erweiterter Beziehungsformen, welche besonders im Kontext der objekt-


relationalen Datenbanken eine wichtige Rolle spielen, gibt es das ERM in einer erweiterten
Form als EERM (Erweitertes/Extended ERM). Dieses beinhaltet neben den Standardarten mit
den Aggregationen (Part-of-/Teil-von-Beziehungen) und der Generalisierung/Spezialisierung
(Is-a-/Ist-ein-Beziehungen) weitere Formen der Beziehungen. Diese ermöglichen es, eine
umfangreiche semantische Datenmodellierung durchzuführen.

Elemente und grafische Darstellung des ER-Modells


Entität (Entity), Entitätsmenge (Entity-Set), Entity-Typ
Als Entität (Entity) werden unterscheidbare (iden- Entitäten: Abteilung Forschung
tifizierbare) Dinge aus der realen Welt bezeichnet. Mitarbeiter Schmidt
Dies können Personen, Gegenstände, Firmen oder Projekt 1009
Ähnliches sein. Entitäten unterscheiden sich von-
Entitätsmengen: Alle Abteilungen
einander durch ihre jeweiligen Eigenschaften bzw.
Alle Mitarbeiter
Eigenschaftswerte. Eine Entität wird synonym als Alle Projekte
Objekt bezeichnet.
Entity-Typen:
Der Entity-Typ kategorisiert gleichartige Entitäten.
Zu einem Entity-Typ gehören Entitäten, die sich
durch die gleichen Eigenschaften (Attribute)
Entität, Entitätsmenge und Entity-Typ
beschreiben lassen. Für eine Entität e des Entity-
Typs E wird die Schreibweise e ∈ E aus der
Mengenlehre verwendet. Bei der Modellierung
werden nicht einzelne Entitäten betrachtet,
sondern der Entity-Typ. Die nebenstehende
Abbildung zeigt die grafische Darstellung von
Entity-Typen in Form von Rechtecken.

Eine Entitätsmenge (Entity-Set) ist eine Sammlung von gleichartigen Entitäten, d. h. von
Entitäten mit gleichen Eigenschaften, aber unterschiedlichen Eigenschaftswerten, zu einem
bestimmten Zeitpunkt. Entitäten einer Entitätsmenge gehören zu einem bestimmten Entity-Typ.
Entitätsmengen sind zeitlich veränderlich.

30 Schulversion © HERDT-Verlag
Der Datenbankentwurf 3

Attribute (Eigenschaften), Domänen Eigenschaften: Abteilung


Abteilungsnummer
Attribute bzw. Eigenschaften charakterisieren eine
Projektnummer
Entität, einen Entity-Typ, eine Beziehung bzw. einen Projektname
Beziehungstyp. Die Attribute besitzen einen Namen Projektbeginn
und einen Wert (Value).
Domänen: Abteilung: Einkauf,
Eine Domäne beschreibt den zulässigen Werte- Verkauf,
Personal
bereich einer Eigenschaft. Das können fest vor-
Abteilungsnummer 1–999
gegebene Werte sein (z. B. Januar, Februar ...), Projektnummer 1–9999
Bereiche (z. B. von 0 bis 999, von A bis G) oder Projektname {A–Z|1–9}
Mengenangaben bzw. Datentypangaben (z. B. Projektbeginn tt.mm.jjjj
natürliche Zahl, reelle Zahl, Datum).

In der grafischen Darstellung werden die Eigen-


schaften als Ellipsen oder Kreise dargestellt. Diese
sind über ungerichtete Kanten mit dem Entity-Typ Attribute und Domänen
verbunden.

Schreibweisen
Der Entity-Typ Projekte kann in Mengenschreibweise dargestellt werden:
Projekte = {Projektname, Projektnummer, Projektbeginn}

Die Entität e1 ist ein Projekt und besitzt die Attribute


Projektname = Gehaltsrechnung,
Projektnummer = 012 und
Projektbeginn = 03.03.2018.

In der Mengenschreibweise lässt sich das wie folgt darstellen:


e1 = {Gehaltsrechnung, 012, 03.03.2018}

Bei den Attributen wird zwischen beschreibenden Attributen (den anwendungsspezifischen


Eigenschaften) und identifizierenden Attributen (den Schlüsseln zur eindeutigen Identifikation
einer Entität in der Entitätsmenge) unterschieden.

In einigen Datenbanksystemen wird der Begriff Domäne auch für eine Gruppe von Datensätzen
in einer Tabelle oder Abfrage verwendet, z. B. in Microsoft Access.

Schlüssel und Primärschlüssel


Ein Schlüssel setzt sich aus einem oder mehreren Attributen zusammen. Schlüssel sollten so kurz
wie möglich (Minimalitätsanforderung), aber so lang wie nötig sein. Das ist wichtig, da sie beim
späteren Einsatz der Datenbank für die Suche in der Datenbank eingesetzt werden und so jedes
zusätzliche Attribut im Schlüssel einen Zeitverlust und mehr Speicherbedarf für den Index
bedeutet. Ist unter den vorhandenen Attributen und Attributkombinationen keine, die als
Schlüssel eingesetzt werden kann, wird ein künstliches Attribut (z. B. ein Zählfeld) hinzugefügt.
Dieses bekommt für jede Entität einen anderen Wert und wird als Schlüssel eingesetzt.

© HERDT-Verlag
Schulversion 31
3 Der Datenbankentwurf

Der Primärschlüssel ermöglicht die eindeutige Entity-Typ PROJEKT besitzt den Primärschlüssel
Projektnummer.
Identifizierung einer Entität einer Entitätsmenge
dadurch, dass sein Wert in einer Entitätsmenge nur
ein einziges Mal vorkommt. Das Attribut, welches
eine Entität eindeutig beschreibt, wird als identifi-
zierendes Attribut bezeichnet. Ist dies über ein
Attribut nicht möglich, kann der Primärschlüssel
aus mehreren identifizierenden Attributen
Entity-Typ PERSON besitzt einen Primärschlüssel, der
bestehen. sich aus den Attributen Name und Passnummer
Ein Entity-Typ kann mehrere Schlüssel besitzen, zusammensetzt.

die für bestimmte Abfragen oder Sortierungen


benötigt werden, aber nur einen Primärschlüssel.
In der grafischen Darstellung des ER-Modells
werden die den Primärschlüssel bildenden
Attribute unterstrichen dargestellt. Der Primärschlüssel

Beziehung (Relationship), Beziehungsmenge und -typ


Durch Beziehungen werden die Wechselwirkungen Beziehung
oder Abhängigkeiten von Entitäten ausgedrückt. Mitarbeiter Schmidt arbeitet an Projekt 1009.
Beziehungen können Eigenschaften besitzen.
Beziehungstyp ohne und mit Attribut
Eine Beziehungsmenge (Assoziation) ist eine Samm-
Mitarbeiter arbeitet an Projekt.
lung von Beziehungen gleicher Art zur Verknüpfung
von Entitätsmengen (Tabellen).
Ein Beziehungstyp ist, analog zum Entity-Typ,
die Abstraktion gleichartiger Beziehungen. Mitarbeiter arbeitet an Projekt in der Tätigkeit als ...
und zu ... Prozent.
Ein Beziehungstyp wird grafisch durch eine Raute
dargestellt, die durch zwei Kanten mit den Entity-
Typen verbunden ist, die assoziiert werden sollen.
In der Raute kann der Name des Beziehungstyps
stehen.
Produkt setzt sich zusammen aus Bauteilen, die
Beziehungen können durch Attribute beschrieben geliefert werden von Lieferant.
werden, beispielsweise in welcher Tätigkeit ein
Mitarbeiter an einem Projekt mitarbeitet und zu
wie viel Prozent.
In der Regel stehen zwei Entity-Typen in Beziehung,
was durch das Tupel B(E1, E2) ausgedrückt wird. Es Beziehung und Beziehungstyp
können aber auch mehrere Entity-Typen assoziiert
werden. In dem Tupel B(E1, E2, ... Ek) werden alle an
der Beziehung beteiligten Entity-Typen angegeben.
Die Anzahl der an einer Beziehung beteiligten Enti-
ties wird als Grad der Beziehung bezeichnet. Wird
beispielsweise ein Produkt aus mehreren Bauteilen
verschiedener Lieferanten zusammengesetzt, hat
das Tupel die Form B(PRODUKT, BAUTEIL, LIEFE-
RANT). Der Grad der Beziehung ist dann 3 (ternär).

32 Schulversion © HERDT-Verlag
Der Datenbankentwurf 3

Folgende Beziehungsgrade sind möglich:


 Binär, wenn genau zwei Entities miteinander verbunden sind
 Ternär, wenn genau drei Entities miteinander verbunden sind
 n-är, wenn mehrere, d. h. genau n Entities miteinander verbunden sind
 Rekursiv unär, wenn ein Entity mit sich selbst in Beziehung steht

Kardinalität (Komplexität)
Über die Kardinalität wird festgelegt, wie viele Kardinalitäten:
Entitäten einer Entitätsmenge mit Entitäten einer
1 Abteilung besteht aus n Mitarbeitern.
anderen Entitätsmenge in Beziehung stehen kön-
n Mitarbeiter arbeiten an m Projekten.
nen, z. B. wie viele Mitarbeiter an einem Projekt
mitarbeiten. In der Regel erfolgt die Kennzeich-
nung von Kardinalitäten durch folgende Angaben:
 1 – genau eine Zuordnung
 n, m – eine oder mehrere Zuordnungen
Auf mögliche Erweiterungsformen der Kardinalität Darstellung von Beziehungen
geht der Abschnitt „Kardinalität im ER-Modell“ ein.
Daraus ergeben sich folgende Möglichkeiten für die Darstellung der Beziehungen (ohne
Erweiterung):

1:1 – Eins-zu-eins-Beziehung Jede Entität einer Entitätsmenge ist genau einer Entität einer
anderen Entitätsmenge zugeordnet.
1:n – Eins-zu-n-Beziehung Jede Entität einer Entitätsmenge ist einer oder mehreren
Entitäten einer anderen Entitätsmenge zugeordnet.
n:m – n-zu-m-Beziehung Eine oder mehrere Entitäten einer Entitätsmenge können
einer oder mehreren Entitäten einer anderen Entitätsmenge
zugeordnet werden.

Für die Kardinalität kann auch eine Zahl festgelegt werden, z. B. 2, wenn immer genau 2 Entitä-
ten einer Entitätsmenge in Beziehung stehen.

Besteht die Möglichkeit, dass es für einige Entitäten keine Zuordnung in Beziehungen gibt, kann
den Angaben 1, n oder m eine 0 hinzugefügt werden. Zum Beispiel bedeutet 0, n, dass 0, 1, 2 ... n
Entitäten infrage kommen.

© HERDT-Verlag
Schulversion 33
3 Der Datenbankentwurf

Spezielle Beziehungsformen
Rekursive Beziehungen entstehen, wenn ein Entity- Rekursive Beziehungen
Typ eine Assoziation auf sich selbst besitzt (rekursiv
1 Bauteil besteht aus n Bauteilen.
unäre Beziehung). Beispielsweise kann eine rekur-
1 Person ist verheiratet mit 1 Person.
sive Beziehung zwischen Bauteilen bestehen, die
wiederum aus anderen Bauteilen zusammengesetzt
werden, oder zwischen Personen, die mit einer
anderen Person verheiratet sind.

Darstellung rekursiver Beziehungen

Zur Darstellung erweiterter Beziehungsformen wurde das Entity-Relationship-Modell um die


Aggregation und die Generalisierung/Spezialisierung erweitert.

Das Konzept der Aggregation wird durch eine Part-


of-Beziehung (Ist-Teil-von-Beziehung) ausgedrückt
(n-äre Beziehung). Beispielsweise besteht ein
Computer aus einem oder mehreren Prozessoren,
Laufwerken, einem Gehäuse usw.

Darstellung einer Part-of-Beziehung

Is-a-Beziehungen drücken eine Generalisierung (Verall-


gemeinerung) oder Spezialisierung aus, d. h., sie stellen
eine Teilmengenbeziehung dar. Beispielsweise können die
Entity-Typen PKW, MOTORRAD und LKW in einem Entity-
Typ FAHRZEUG zusammengefasst (generalisiert) werden.
Andererseits sind PKW, MOTORRAD und LKW Spezialisie-
rungen des Entity-Typs FAHRZEUG. In der Mengenschreib-
weise wird das wie folgt ausgedrückt:
PKW ⊆ FAHRZEUG
MOTORRAD ⊆ FAHRZEUG
LKW ⊆ FAHRZEUG

Eine Is-a-Beziehung kann folgende Eigenschaften besitzen:

Sie ist entweder disjunkt oder nicht disjunkt.


Disjunkt Alle Teilmengen sind echte Teilmengen,
kein Element der einen Teilmenge kommt
in einer anderen Teilmenge vor.
Nicht disjunkt Die Teilmengen können gemeinsame
Elemente enthalten. Darstellung von Is-a-Beziehungen
Sie ist entweder total oder partiell.
Total Es gibt keine weitere Teilmenge zu dieser
Spezialisierung.
Partiell Es gibt weitere Teilmengen, die aber nicht
aufgeführt sind.

34 Schulversion © HERDT-Verlag
Der Datenbankentwurf 3

Die verwendete Form der Grafik für die Is-a-Beziehung basiert auf dem in der UML verwendeten
Pfeil von einer Unterklasse (Spezialisierung) zu einer Oberklasse (Generalisierung). Alternativ
kann auch die für allgemeine Beziehungen verwendete Raute genutzt werden.

Überblick über die grafischen Konstrukte des ER-Modells (Chen-Notation)


Entity-Typ (Klassifizierung)
Schwacher Entity-Typ (durch eigene Attribute
nicht eindeutig identifizierbar – immer über
Relationship an weiteren Entity-Typ
gebunden)
Attribut (Eigenschaft)
Primärschlüssel (Identifizierendes Attribut)
Beziehung (Relation, Relationship, Assoziation)

Part-of-Beziehung (Ist-Teil-von-Beziehung,
Aggregation)
(Erweiterte Darstellungsform)
Is-a-Beziehung (Ist-ein-Beziehung,
Spezialisierung oder Generalisierung,
Teilmengenbeziehung)
(Erweiterte Darstellungsform)

Kardinalität im ER-Modell
Ein Problem der Kardinalitätsangabe in der Ausgangsform des ER-Modells nach Chen besteht
darin, dass nicht ersichtlich wird, ob sich eine konkrete Entität in einer Beziehung befinden muss,
ob es sich also um eine Kann- oder eine Muss-Beziehung handelt. Zur Darstellung von Muss-/
Kann-Beziehungen existieren alternative Darstellungsformen:

 die (min, max) Notation


 die Martin-Notation (sogenannte Krähenfuss-Notation)
 UML (Unified Modelling Language)

Die (min, max) Notation verfeinert die Angabe der Kardinalität einer Beziehung durch das
Vorgeben einer unteren und einer oberen Grenze für die Anzahl der Beziehungen, an denen
eine Entität beteiligt ist.

© HERDT-Verlag
Schulversion 35
3 Der Datenbankentwurf

So kann in einer Beziehung „Person


zu bisherigen Urlaubsorten“ die
Untergrenze 0 (wenn die Person
noch nie im Urlaub war) und die
Obergrenze eine beliebig große
Zahl sein. Es handelt sich um eine
Kann-Beziehung. Umgekehrt
können in einem Ort keine, eine
oder beliebig viele Personen ihren
Urlaub verbracht haben.
Im Gegensatz dazu besitzt in einer
Beziehung „Person zu bisherigen
Aufenthaltsorten“ die Untergrenze
den Wert 1, da eine existierende
Person mindestens einen Aufent-
haltsort in ihrem bisherigen Leben
hatte. Es handelt sich also um eine
Muss-Beziehung. Aus Sicht der
Entität 'Ort' ändert sich in dem
Beispiel nichts.

Die (min, max) Notation ist im Laufe der Jahre in die Chen-Notation übernommen worden
(Modifizierte Chen-Notation, MC-Notation). In der erweiterten Form sind die folgenden zusätz-
lichen Angaben zulässig:

 c – keine oder eine Zuordnung (can, Kann-Beziehung)


 m – eine oder mehrere Zuordnungen (must, Muss-Beziehung)

Entsprechend existieren hier neben den bereits vorgestellten Beziehungen 1:1, 1:n und n:m
weitere:

1:c – Eins-zu-höchstens-eins- Jede Entität einer ersten Entitätsmenge kann keiner oder
Beziehung genau einer Entität einer zweiten Entitätsmenge zugeordnet
werden.
1:m – Eins-zu-mindestens-eins- Jede Entität einer ersten Entitätsmenge ist mindestens einer
Beziehung Entität einer zweiten Entitätsmenge zugeordnet.
1:mc – Eins-zu-beliebig-viele- Eine Entität einer ersten Entitätsmenge kann keiner, einer
Beziehungen oder mehreren Entitäten einer zweiten Entitätsmenge
zugeordnet werden.

36 Schulversion © HERDT-Verlag
Der Datenbankentwurf 3

Die nach ihrem Erfinder James Martin genannte Martin-Notation wird auf Grund ihrer Dar-
stellung der Mehrfachbeziehungen 1:n auch als Krähenfuss-Notation bezeichnet. Grafisch
werden die Kardinalitäten durch die Angabe von 0 für keine, den senkrechten Strich | für eine
und den Krähenfuss für beliebig viele dargestellt.

Wie in der Chen-Notation werden die Entitäten als Rechtecke abgebildet. Die Beziehungen
werden jedoch nicht durch Rauten sondern durch beschriftete Beziehungslinien abgebildet, an
deren Ende die Symbole für die Kardinalität stehen. Attribute werden im Rechteck der Entität
aufgelistet, der Primärschlüssel wird dabei über die Kennzeichnung PK markiert.

Die Beziehung Person/bisherige Urlaubs-


orte stellt sich in der Krähenfuss-Notation
wie folgt dar:
Hinsichtlich der Beziehung Person/bisherige
Aufenthaltsorte ändert sich die rechte Seite
der Beziehungsdarstellung entsprechend:

UML (Unified Modeling Language) ist eine einheitliche grafische Modellierungssprache. Sie
kommt heute bei fast allen Softwareentwicklungsprozessen zum Einsatz, da sie stark auf die
Belange der aktuell vorwiegend zum Einsatz kommenden objektorientierten Programmierung
zugeschnitten ist. Das HERDT Buch Objektorientierter Softwareentwurf mit UML führt ausführ-
lich in die Thematik ein.

Datenbankentwurf mit dem ER-Modell


Ist die Anforderungsanalyse abgeschlossen, können Sie das konzeptionelle Schema der Daten-
bank mit dem ER-Modell entwerfen. Dabei kann nach der Top-down- oder nach der Bottom-up-
Methode vorgegangen werden. Bei der Top-down-Methode wird das grob entworfene Modell
schrittweise verfeinert. Diese Verfeinerung wird auf die Entitäten, die Attribute und Beziehungen
angewendet. Dabei werden beispielsweise Entity-Typen und Beziehungstypen zerlegt bzw.
zusammengefügt, Spezialisierungen bzw. Generalisierungen und Aggregationen aufgebaut und
Attribute sowie Schlüssel festgelegt.

Die folgenden Beispiele zeigen die Verwendung des ER-Modells im Datenbankentwurf.

Beispiel: Kunden- und Projektverwaltung


In einem Unternehmen (z. B. einer Softwarefirma) sind Sachbearbeiter und Mitarbeiter ange-
stellt. Die Sachbearbeiter betreuen die Kunden und nehmen deren Aufträge entgegen. Der
jeweilige Auftrag wird als Projekt bearbeitet und von einer Abteilung betreut. An dem Projekt
arbeiten mehrere Mitarbeiter. Zur Verwaltung aller Informationen und Ereignisse soll eine
Datenbank erstellt werden. In der folgenden Abbildung sind alle Elemente der Datenbank und
deren Beziehungen untereinander zusammengestellt.

© HERDT-Verlag
Schulversion 37
3 Der Datenbankentwurf



 

 

 

  

 Alle Informationen zu den Angestellten sind in dem Entity-Typ ANGESTELLTER abgelegt.


Da Name und Geburtsdatum allein einen Angestellten nicht eindeutig identifizieren
können, wird als identifizierendes Attribut und Primärschlüssel ein künstliches Attribut
PersonalNr eingeführt.
– Der Entity-Typ ANGESTELLTER lässt sich in zwei Teilmengen unterteilen, die MITARBEITER
und die SACHBEARBEITER. Diese Spezialisierung wird über eine Is-a-Beziehung ausgedrückt.
 Die MITARBEITER und die SACHBEARBEITER sind jeweils einer Abteilung zugeordnet. Der
Entity-Typ ABTEILUNG wird durch das Attribut AbtNr (Abteilungsnummer) identifiziert.
,  Die Assoziation zwischen den Entity-Typen MITARBEITER bzw. ANGESTELLTER und dem
Entity-Typ ABTEILUNG kann durch eine 1:n-Beziehung dargestellt werden. In einer Abtei-
lung können n Angestellte arbeiten. Die Beziehung besitzt das Attribut Position, welches
die Stellung des Angestellten in der Abteilung ausdrückt.
 Alle Kunden der Firma werden in dem Entity-Typ KUNDE zusammengefasst. Jeder Kunde
hat eine Kundennummer (KuNr), die ihn identifiziert.
 Von einem Sachbearbeiter werden mehrere Kunden betreut, was durch die 1:n-Beziehung
zum Ausdruck kommt.
,  Von einem Kunden kann kein, ein Auftrag oder können mehrere Aufträge erteilt werden,
was durch die Angabe 0,n ausgesagt wird. Der Entity-Typ AUFTRAG wird durch die
Auftragsnummer (AuftragsNr) identifiziert. Das Auftragsdatum, eine Beschreibung des
Auftrags und das Fertigstellungsdatum (Auslieferungsdatum) werden darin gespeichert.
,  Der Auftrag wird in der Firma als Projekt bearbeitet. Die 1:1-Beziehung drückt aus, dass
es zu jedem Auftrag genau ein Projekt gibt. Der Entity-Typ PROJEKT enthält den eigenen
Namen und das Anfangs- und das Enddatum der Bearbeitung. Sie wird durch die Projekt-
nummer (ProjNr) identifiziert.

38 Schulversion © HERDT-Verlag
Der Datenbankentwurf 3

 An einem Projekt arbeitet mindestens ein Mitarbeiter. Die Beziehung wird durch das
Attribut als und das Attribut prozAnteil näher beschrieben. Das Attribut als gibt die
Funktion an, die der Mitarbeiter in diesem Projekt übernimmt (z. B. Leiter, Entwickler ...).
Das Attribut prozAnteil legt den prozentualen Anteil an der Arbeitszeit des Mitarbeiters
fest, den er in ein Projekt investiert, da ein Mitarbeiter an mehreren Projekten beteiligt
sein kann.
 Eine Abteilung hat die Verantwortung für das Projekt, was durch die Beziehung betreut
ausgedrückt wird. Nicht jede Abteilung betreut ein Projekt, wie z. B. die Abteilung Kunden-
betreuung, was die Angabe 0,n erklärt. Dabei können aber Mitarbeiter aus verschiedenen
Abteilungen an einem Projekt arbeiten.

In der Krähenfuss-Notation (erstellt mit Edraw Max Trial Version) ergibt sich für das Beispiel
folgende Darstellung:

© HERDT-Verlag
Schulversion 39
3 Der Datenbankentwurf

Textbeschreibung eines Datenmodells


Um eine kompakte Beschreibung Ihrer Entity-Typen, Attribute und Schlüsselfelder zu erhalten,
können Sie die folgende textuelle Form verwenden. Zu Beginn stehen der Name des Entity-Typs
und in Klammern die Attribute, wobei der oder die Primärschlüssel unterstrichen sind.

Entity-Typen
ANGESTELLTER(PersonalNr, Name, GebDat, PLZ, Wohnort, Strasse, Gehalt, Beruf)
MITARBEITER(PersonalNr, Name, GebDat, PLZ, Wohnort, Strasse, Gehalt, Beruf)*
SACHBEARBEITER(PersonalNr, Name, GebDat, PLZ, Wohnort, Strasse, Gehalt, Beruf)*
ABTEILUNG (AbtNr, AbtName)
KUNDE(KuNr, Name, PLZ, Wohnort, Strasse)
AUFTRAG(AuftragsNr, AuftrDat, Beschreib, FertigDat)
PROJEKT (ProjNr, Name, BegDatum, EndDatum)
*Die Attribute erben diese Entity-Typen von dem Entity-Typ ANGESTELLTER.

Beziehungstypen
is-a(ANGESTELLTER, MITARBEITER, SACHBEARBEITER)
arbeitet_in(ABTEILUNG, SACHBEARBEITER, Position)
arbeitet_in(ABTEILUNG, MITARBEITER, Position)
betreut(SACHBEARBEITER, KUNDE)
erteilt(KUNDE, AUFTRAG)
bearbeitet_als(AUFTRAG, PROJEKT)
arbeitet_an(MITARBEITER, PROJEKT, als, prozAnteil)
betreut(ABTEILUNG, PROJEKT)

Vorgehensweisen
Im Folgenden werden zwei Möglichkeiten vorgestellt, wie dieses Modell schrittweise aufgebaut
werden kann.

1. Möglichkeit
 Es werden die Entity-Typen SACHBEARBEITER und MITARBEITER beschrieben.
 Da beide Entity-Typen die gleichen Attribute besitzen, kann eine Generalisierung durch-
geführt werden. Der Entity-Typ ANGESTELLTER wird gebildet.
 Alle Angestellten sind in Abteilungen aufgeteilt. So wird der Entity-Typ ABTEILUNG gebildet
und die Beziehung zu den Angestellten hergestellt. Die Beziehung kann entweder zu den
Angestellten oder zu den Mitarbeitern und Sachbearbeitern aufgebaut werden.
 Die Entity-Typen für Kunden und Auftrag werden gebildet und die Beziehung wird zwischen
ihnen hergestellt.
 Da nur Sachbearbeiter Kunden betreuen, wird zwischen diesen beiden Entity-Typen eine
Beziehung hergestellt.
 Die Auftragsbearbeitung erfolgt über ein Projekt. Der Entity-Typ PROJEKT wird erstellt.
 Vom Projekt aus gibt es eine Beziehung zum Auftrag, da es zu jedem Auftrag ein Projekt gibt.
Eine weitere Beziehung besteht zur Abteilung, da eine Abteilung die Verantwortung für ein
Projekt hat. Eine Abteilung kann 0 bis n Projekte betreuen. Auch zu den Mitarbeitern gibt es
eine Beziehung, da ein oder mehrere Mitarbeiter, auch aus verschiedenen Abteilungen, an
einem Projekt mitarbeiten. Ein Mitarbeiter kann an mehreren Projekten mitarbeiten.

40 Schulversion © HERDT-Verlag
Der Datenbankentwurf 3

2. Möglichkeit
 Für alle Angestellten wird ein Entity-Typ erstellt.
 Alle Angestellten sind in Abteilungen aufgeteilt. So wird der Entity-Typ ABTEILUNG gebildet
und die Beziehung zu den Angestellten hergestellt.
 Die Entity-Typen für Kunden und Auftrag werden gebildet und die Beziehung zwischen ihnen
wird hergestellt.
 Die Kunden werden nur von einem Teil der Angestellten, den Sachbearbeitern, betreut.
Die anderen Mitarbeiter führen die Projektarbeit durch. Es wird eine Spezialisierung
durchgeführt.
 Die Beziehung zwischen Sachbearbeitern und Kunden wird hergestellt.
 Der Entity-Typ PROJEKT wird wie in der ersten Möglichkeit erstellt und assoziiert.

Beispiel: Forschungsgruppe
In einer Forschungsgruppe arbeiten Mitarbeiter an verschiedenen Forschungsobjekten. Sie
führen Versuchsreihen durch und protokollieren die Messwerte. Für die Versuche werden ver-
schiedene Geräte und Chemikalien benötigt. Dieser Ausschnitt aus der Welt eines Forschungs-
labors wird im folgenden ER-Modell dargestellt.

 

 

 

 Der Entity-Typ FORSCHUNGSGRUPPE besitzt nur die Attribute Nummer und Name.
 Die Mitarbeiter sind in dem gleichnamigen Entity-Typ zusammengefasst. Das Attribut
Nummer identifiziert eine Entität. Die angegebenen Attribute können gegebenenfalls noch
erweitert werden. Zu einer Forschungsgruppe gehören mehrere Mitarbeiter, aber ein Mit-
arbeiter kann auch in mehreren Forschergruppen arbeiten, was durch die n:m-Beziehung
verdeutlicht wird.

© HERDT-Verlag
Schulversion 41
3 Der Datenbankentwurf

 Von einer Forschungsgruppe werden verschiedene Forschungsprojekte betreut (1:n-


Beziehung betreut). Ein Forschungsprojekt wird durch seine Nummer identifiziert. Es besitzt
einen Namen und Attribute für den Beginn und das Ende der Forschungsarbeiten (Beginn
und Ende). An einem Projekt können mehrere Mitarbeiter arbeiten, wobei ein Mitarbeiter
an mehreren Projekten arbeiten kann (n:m-Beziehung arbeitet_an).
 Die Mitarbeiter führen im Rahmen der Projektarbeit Versuche durch. An einem Versuch
können mehrere Mitarbeiter arbeiten und es können durch Mitarbeiter mehrere Versuche
durchgeführt werden (n:m-Beziehung führt_durch). Für ein Forschungsprojekt werden meist
viele Versuche benötigt (1:n-Beziehung erfordert). Der Entity-Typ VERSUCH wird durch eine
Nummer identifiziert. Die Beschreibung (Beschreib) des Versuchs und der Zeitpunkt (Zeit)
sind ebenfalls Attribute.
 Für einen Versuch werden Chemikalien in einer bestimmten Menge benötigt und Chemika-
lien können in mehreren Versuchen eingesetzt werden. Die n:m-Beziehung verbraucht
besitzt aus diesem Grund das Attribut Menge. Der Entity-Typ CHEMIKALIE wird durch ihre
Formel (Formel) identifiziert. Weitere Attribute sind der Name, die Gefahrenklasse
(Gefahrenkl) und die verfügbare Lagermenge.
 Weiterhin wird für den Versuch eine Versuchsanordnung aus verschiedenen Geräten
benötigt und die Geräte können wiederum in mehreren Versuchen eingesetzt werden.
In der n:m-Beziehung benötigt kann die Menge der benötigten Geräte angegeben werden.
Im Entity-Typ GERAET besitzt ein Gerät eine GeräteNr, die es identifiziert. Jedes Gerät
besitzt einen Namen und eine Beschreibung. Auch die Anzahl der verfügbaren Geräte
(AnzVerfügb) kann angegeben werden.
 Die Versuchsergebnisse werden in dem Entity-Typ MESSWERTE gespeichert. Für jede Mes-
sung werden die Zeit und der Wert notiert sowie die Nummer des Versuchs (VersuchsNr).
Dieser Entity-Typ besitzt keinen Primärschlüssel. Alle Entitäten mit der gleichen Versuchs-
nummer gehören zu einem Versuch. Sie müssen nicht einzeln identifiziert werden.
Ein solcher Entity-Typ wird auch als schwacher Entity-Typ bezeichnet.

Textbeschreibung eines Datenmodells


Entity-Typen
FORSCHUNGSGRUPPE(Nummer, Name)
MITARBEITER(Nummer, Name, GebDat, Position, Adresse)
FORSCHUNGSPROJEKT(Nummer, Name, Beginn, Ende, Sponsor)
VERSUCH(Nummer, Zeit, Beschreib)
CHEMIKALIE(Formel, Name, Gefahrenkl, Lagermenge)
GERAET(GeräteNr, Name, Beschreib, AnzVerfügb)
MESSWERTE (Zeit, Wert, VersuchsNr)

Beziehungstypen
besteht_aus(FORSCHUNGSGRUPPE, MITARBEITER)
betreut(FORSCHUNGSGRUPPE, FORSCHUNGSPROJEKT)
arbeitet_an(MITARBEITER, FORSCHUNGSPROJEKT)
führt_durch(MITARBEITER, VERSUCH)
erfordert(FORSCHUNGSPROJEKT, VERSUCH)
verbraucht(VERSUCH, CHEMIKALIE, Menge)
benötigt(VERSUCH, GERAET, Menge)
wird_protokolliert(VERSUCH, MESSWERTE)

42 Schulversion © HERDT-Verlag
Der Datenbankentwurf 3

Übersichtlichkeit der Darstellung


Bereits in den beiden nicht so umfangreichen Beispielen wird deutlich, dass bei Aufnahme aller
Attribute in das Diagramm dieses sehr schnell unübersichtlich wird. Möglichkeiten, dies zu ver-
meiden bestehen darin:

 die Darstellung im Gesamtdiagramm auf die Schlüsselattribute sowie die für die Beziehungs-
typen relevanten Attribute zu beschränken,
 Diagrammauszüge anzufertigen, welche jeweils die komplette Anzahl der Attribute für den
jeweiligen Ausschnitt enthalten,
 Beziehungstypen im Diagramm als Nummern darstellen. In einer separaten Legende werden
diese Nummern dann mit Namen und Bedeutung der Beziehung aufgelistet.

3.5 Übung

Aufgaben zur Datenbanktheorie


Übungsdatei: -- Ergebnisdateien: ER_Modell_Baufirma.pdf,
ER_Modell_Lehrer.pdf

1. Was verstehen Sie unter dem Datenbank-Lebenszyklus?


2. Welche Phasen werden beim Entwurf von Datenbanken durchlaufen?
3. Wozu dient das Entity-Relationship-Modell?
4. Welche Abstraktionskonzepte werden beim Datenbankentwurf angewendet? Durch welche
Elemente des ER-Modells werden diese Abstraktionskonzepte realisiert?
5. Erstellen Sie ein ER-Modell für den folgenden Sachverhalt: Eine Baufirma möchte eine
Datenbankanwendung einsetzen, um die Kundenaufträge und vorhandenen Ressourcen
(Lager, Fahrzeuge, Fahrer) besser planen zu können.
In der Firma sind Büroangestellte, Fahrer, Arbeiter und Techniker angestellt.
Die Büroangestellten betreuen die Kunden und nehmen die Aufträge der Kunden entgegen.
Die Arbeiter und Fahrer führen die Aufträge aus. Der Fahrer benutzt dazu einen Lieferwagen
oder einen Lkw. Für einen Auftrag werden ein Fahrer und ein oder mehrere Arbeiter benö-
tigt. Für einige Aufträge werden Materialien aus dem Lager benötigt.
Der Techniker betreut den Fuhrpark, zu dem die Lieferwagen und Lkws gehören.
Versehen Sie die Entity-Typen des ER-Modells mit Attributen, die Sie für notwendig halten,
und legen Sie auch Primärschlüssel fest. Beschriften Sie die Beziehungen und geben Sie die
Kardinalitäten an.
6. Die Planung der Lehrveranstaltungen für Lehrer, Klassen und Räume soll in einem ER-Modell
dargestellt werden. Zu beachten ist dabei, dass nicht jeder Unterricht in jedem beliebigen
Raum abgehalten werden kann (z. B. Computer-Unterricht nur in Räumen, in denen sich
Computer befinden). Alle Angehörigen der Bildungseinrichtung und die Zugehörigkeit zu den
Abteilungen bzw. Klassen sind ebenfalls in das Modell zu integrieren. Die Lehrer bieten zu
bestimmten Fächern Zusatzkurse an, die von einer bestimmten Anzahl an Schülern besucht
werden können. Nehmen Sie auch diesen Aspekt mit in das Modell auf.
7. Geben Sie die Textbeschreibung der Entity-Typen zu Ihrem ER-Modell an.

© HERDT-Verlag
Schulversion 43
4 Das relationale Datenmodell

4
4. Das relationale Datenmodell

4.1 Begriffe aus dem Bereich relationaler Datenbanken


Das relationale Datenmodell wurde 1970 von dem Mathematiker E. F. Codd entwickelt und
mithilfe der Mengentheorie beschrieben. Dieses Modell bildet die Basis für relationale Daten-
banken. Datenbanksysteme, die auf dem relationalen Datenmodell aufbauen, sind heute immer
noch am weitesten verbreitet. Für relationale Datenbanken ist die Datenmanipulationssprache
SQL entwickelt worden, die sich als Standard durchgesetzt hat.
Eine Datenbank besteht im relationalen Modell aus einer Menge von Relationen, in denen die
logisch zusammengehörigen Daten gespeichert werden.

Relation
Eine Relation ist im Sinne einer relationalen Datenbank eine Menge von Tupeln (Datensätzen).
Sie hat die Form einer Tabelle und ist damit eine Konstruktion aus Spalten und Zeilen. Sowohl
Entitäten als auch Beziehungen des Entity-Relationship-Modells werden als Relationen model-
liert. Datenbanktechnisch bezieht sich also eine Relation nicht auf die Beziehung (Verknüpfung)
zwischen Tabellen. In einer Relation werden die Daten gespeichert. Diese Daten stellen die
Informationen dar, die Sie verwalten wollen. Eine Relation ist gekennzeichnet durch …

 einen eindeutigen Namen, beispielsweise: Kunde,


 mehrere Attribute (Spalten),
 keine bis beliebig viele Tupel (Tabellenzeilen oder Datensätze),
 einen einzigen Wert pro Attribut in einem Tupel (Tabellenzelle),
 einen Primärschlüssel, bestehend aus einem oder mehreren Attributen:
 Dieser identifiziert jedes Tupel eindeutig.
 Dessen Wert ändert sich während der Existenz des Datensatzes nicht.

44 Schulversion © HERDT-Verlag
Das relationale Datenmodell 4

Attribute und Tupel


Eine Tabelle besteht aus Spalten und Zeilen. Bei relationalen Datenbanken werden die Spalten
Attribute oder auch Felder genannt. Die Zeilen der Tabelle werden als Tupel oder Datensätze
bezeichnet.

Der Aufbau aller Tupel einer Tabelle ist gleich. Zum Beispiel werden in jedem Tupel Nummer,
Name, PLZ, Ort, Straße und Hausnummer einer Person immer in dieser Reihenfolge abge-
speichert. Der Inhalt der Tupel muss aber wegen der Mengendefinition der Relation immer
unterschiedlich sein, d. h., es gibt keine zwei Tupel, die exakt gleich sind; sie unterscheiden sich
in mindestens einem Attributwert (mindestens in dem Primärschlüssel).

Der Aufbau einer Relation wird auch die Struktur oder das Schema der Tabelle genannt. Die
Gesamtheit der zu einer Datenbank gehörigen Relationenschemata heißt Schema der Datenbank.
Die verschiedenen Datenbanksysteme haben unterschiedliche Formate für Relationen, die von
den Anforderungen an die Namensgebung für Relationen und Attribute sowie von den
Datentypen der Attribute abhängen.

Aufbau einer Relation (Tabelle) mit ihrem Schema

Datentypen
Jedem Attribut wird ein bestimmter Datentyp zugeordnet. Meist stehen verschiedene Zahlen-
typen, Zeichenketten (Text) und Datumstypen zur Verfügung. Der Datentyp bildet den Werte-
bereich (die Domäne) des Attributs. Meist lässt sich der Wertebereich aber noch durch weitere
Angaben einschränken, z. B. „E–G“ oder „5–15“. Welche Datentypen und welche weiteren
Einschränkungen möglich sind, hängt vom DBMS ab.

NULL-Werte oder leere Einträge


Die Attribute können entsprechend ihrem Wertebereich mit Werten belegt werden. Ein leerer
Attributwert kann einen NULL-Wert haben. NULL-Werte entsprechen keinem Datentyp, sondern
sind nur symbolische Werte und sind nicht dem numerischen Wert null gleichzusetzen. Ein NULL-
Wert ist ein Indikatorbyte, das angibt, ob in einem Tupel für ein Attribut ein Wert eingetragen
wurde oder nicht. Da er nur ein symbolischer Wert ist, kann er mit keinem anderen Wert ver-
glichen werden, auch nicht mit einem anderen NULL-Wert. Ein leerer Wert dagegen entsteht,
wenn z. B. ein Attributwert gelöscht wird.

Mengenschreibweise
In der Mengenschreibweise
R{A1, A2, ..., An}
stellt R eine Relation mit den Attributen A1 bis An, die paarweise verschieden sind, dar. Die Zahl n
wird als Grad der Relation bezeichnet, der angibt, wie viele Attribute eine Relation besitzt.

© HERDT-Verlag
Schulversion 45
4 Das relationale Datenmodell

R ⊆ D1 x D2 x ... x Dn (Di x Dj symbolisiert das kartesische Produkt)

D1, D2, ..., Dn sind die Wertebereiche der Attribute (die Domänen) und R ist eine n-stellige Relation.
Die Tupel der Relation sind somit Elemente aus dem kartesischen Produkt über den Werte-
bereichen der Attribute. Als Tupel sind alle Kombinationen der zulässigen Werte für die Attribute
möglich. Ein Tupel der Relation wird wie folgt dargestellt:
r = (d1, d2, ..., dn) ∈ R (di ∈ Di, i = 1, ...,n , di ist der i-te Wert des Tupels)
bzw.
r ⊆ dom(A1) x dom(A2) x ... x dom(An) (dom(Ai) ist der Wertebereich des Attributs Ai)

Beispiel
Eine Relation ADRESSEN besitzt die Attribute Nummer, Name, Vorname, PLZ, Ort, Strasse,
Hausnummer, Geburtsdatum:
ADRESSEN(Nummer, Name, Vorname, PLZ, Ort, Strasse, Hausnummer, Geburtsdatum)

Der Wertebereich des Attributes Nummer sind die ganzen Zahlen (Integer). Die Elemente des
Namens und der Anschrift besitzen den Wertebereich einer Zeichenkette, die beispielsweise aus
bis zu 5, 30 bzw. 100 verschiedenen Zeichen des Zeichenvorrats – Character(5), Character(30)
bzw. Character(100) – bestehen darf. Das Geburtsdatum muss einem bestimmten Datumstyp
entsprechen (Datum).
ADRESSEN ⊆ Integer x Character(30) x Character(30) x Character(5) x Character(100) x
Character(100) x Character(5) x Datum
Tupel dieser Relation sind z. B.
adresse725 = (725, 'Meier', 'David', '10115', 'Berlin', 'Steinstr.', '4', 17.04.1976)
adresse123 = (123, 'Schneider', 'Nina', '1210', 'Wien', 'Buchenweg', '4', 30.04.1982)

Schlüssel
In einer Relation dürfen durch die Mengendefinition keine gleichen Tupel vorhanden sein. Somit
ist jedes Tupel durch einen oder mehrere (gegebenenfalls auch alle) Attributwerte eindeutig
identifizierbar. Die Menge der Attribute, die ein Tupel eindeutig identifizieren, heißt Schlüssel-
kandidaten. An Schlüssel wird die Minimalitätsanforderung gestellt, d. h., ein Schlüssel sollte
so kurz wie möglich sein und es darf keine Teilmenge des Schlüssels bereits Schlüssel sein.

Beispiel
Zum Beispiel ist Relation Kunde wie folgt aufgebaut:
KUNDE(KuNr, Name, PLZ, Wohnort, Strasse)
Als Schlüssel für die Relation kommen infrage:
KuNr (die Kundennummer) oder
Name, PLZ, Strasse oder
Name, Wohnort, Strasse

Einer dieser Schlüssel wird als Primärschlüssel (Hauptschlüssel) definiert. In diesem Beispiel ist es
das Attribut KuNr, da es der kürzeste von den infrage kommenden Schlüsseln (nur ein Attribut)
ist. Gekennzeichnet wird der Primärschlüssel durch die Unterstreichung.

46 Schulversion © HERDT-Verlag
Das relationale Datenmodell 4

Um alle Tupel eindeutig zu identifizieren, kann einer Relation auch ein weiteres Attribut hinzu-
gefügt werden, welches die Tupel durchnummeriert. Dadurch ist es möglich, die Tupel der Relation
immer anhand dieses Attributs zu unterscheiden. Das Attribut wird in diesem Fall der Primär-
schlüssel der Relation. Jede Relation kann nur einen Primärschlüssel besitzen. Das Attribut, welches
als Primärschlüssel dient, wird auch als identifizierendes Attribut bezeichnet (bzw. als identifizie-
rende Attribute, wenn mehrere Attribute gemeinsam als Primärschlüssel dienen).

Ein Primärschlüssel einer Tabelle kann ein Attribut oder eine Attributkombination sein, deren
Werte die Datensätze dieser Tabelle eindeutig identifizieren. Alle Attribute bzw. Attributkombi-
nationen, deren Werte eindeutig sind, werden als Schlüsselkandidaten bezeichnet. Nur ein
Schlüsselkandidat kann als Primärschlüssel festgelegt werden. Wenn eine Tabelle keine ein-
deutigen Datenfelder besitzt, sollte eine eindeutige ID-Nummer (Identifikationsnummer) als
Schlüssel vergeben werden, beispielsweise eine Kundennummer für eine Relation Kunden.

Fremdschlüssel
Ein Fremdschlüssel ist ein Attribut in einer Relation, welches eine Beziehung zu einem Schlüssel-
feld einer anderen Relation herstellt. Die Kennzeichnung des Fremdschlüssels kann über die
Abkürzung FK oder das nachgestellte Zeichen '#' erfolgen.

Beispiel
AUFTRÄGE(AuftragsNr, Datum, … <weitere Attribute>, Kundennummer #)

Beispielsweise befindet sich in einer Relation Aufträge in jedem Tupel eine Kundennummer des
Kunden, der den Auftrag ausgelöst hat. Diese Kundennummer identifiziert einen Kunden in der
Kundenrelation eindeutig. Die Kundennummer in der Auftragstabelle stellt somit einen Fremd-
schlüssel („fremder“ Schlüssel einer anderen Relation) dar.

Index
Häufig sollen die Tupel einer Relation in einer anderen Reihenfolge durchlaufen werden, als sie
erfasst wurden, z. B. nach Postleitzahlen. Dazu muss die gesamte Relation nach diesen Postleit-
zahlen sortiert werden. Bei einer großen Anzahl von Tupeln kann dies eine lange Zeit in Anspruch
nehmen. Um den Zugriff auf die Daten zu beschleunigen, können zusätzlich zum Primärschlüssel
weitere Indizes angelegt werden, die auch als Sekundärindizes bzw. Sekundärschlüssel
bezeichnet werden.

Bei Verwendung mehrerer Indizes wird z. B. beim Füllen einer Tabelle viel Zeit benötigt, um die
Indizes zu aktualisieren. Günstig ist in diesem Fall, die Indizes erst nach dem Füllen der Tabelle
zu aktualisieren.

© HERDT-Verlag
Schulversion 47
4 Das relationale Datenmodell

4.2 Transformation des ER-Modells in ein relationales


Modell
Das folgende ER-Modell soll in ein relationales Modell überführt werden.

Die Anzahl der Relationen, die aus dem ER-Modell erzeugt werden, hängt von den definierten
Entitätsmengen und den Beziehungstypen zwischen den Entitätsmengen ab.

Entitätsmengen
Für jede Entitätsmenge wird eine Relation erstellt, welche für jedes Attribut eine Spalte besitzt.
Die Primärschlüssel werden übernommen.

Relationenname Relationenschema Beispiel


ABTEILUNG Attribut Datentyp AbteilungsNr Bezeichnung
AbteilungsNr Zahl 1 Personal
Bezeichnung Text 2 Einkauf
3 Verkauf

MITARBEITER Attribut Datentyp PersonalNr Name Vorname Gebdatum


PersonalNr Zahl 0001 Eichenau Maria 15.05.1987
Name Text 0002 Glahn Stefanie 02.05.1978
Vorname Text 0003 Kirsch Karin 24.05.1988
Gebdatum Datum 0004 Conolly Sean 26.04.1976
0005 Frawley Lutz 09.09.1979

PROJEKTE Attribut Datentyp ProjektNr Beschreibung


ProjektNr Zahl 1 Kundenumfrage
Beschreibung Text 2 Verkaufsmesse
3 Konkurrenzanalyse

1:1- und 1:n-Beziehungen


Für die Umsetzung der beiden Beziehungstypen gibt es zwei Möglichkeiten:

 Es wird eine neue Relation erzeugt, welche als Attribute (Spalten) die Primärschlüssel
der beiden Relationen, die in Beziehung stehen, enthält. Außerdem kann die Relation
beschreibende Attribute in einer zusätzlichen Spalte aufnehmen.
Diese Darstellungsform hat den Vorteil, dass keine NULL-Werte auftreten, und den Nachteil,
dass eine weitere Relation benötigt wird.

48 Schulversion © HERDT-Verlag
Das relationale Datenmodell 4

Relationenname Relationenschema Beispiel


besteht_aus Attribut Datentyp PersonalNr AbteilungsNr Position
PersonalNr Zahl 0001 1 Leiterin
AbteilungsNr Zahl 0002 2 Leiterin
Position Text 0003 2 Mitarbeiter
0004 3 Leiter
0005 3 Mitarbeiterin

 Eine der beiden Relationen wird um ein Attribut (Spalte) erweitert. Bei 1:1-Beziehungen
ist es egal, welche der beiden Relationen erweitert wird. In einer 1:n-Beziehung wird die
Relation erweitert, bei der das n steht. (Würde das Attribut an die Relation angefügt
werden, bei der die 1 steht, würden Redundanzen auftreten, die Sie unbedingt vermeiden
sollten.) Besitzt die Relation beschreibende Attribute, so werden diese zusätzlich noch bei
der erweiterten Relation angegeben.
Bei dieser Darstellungsform können NULL-Werte auftreten. Sie hat aber den Vorteil, dass
keine zusätzliche Relation benötigt wird. Für das obige Beispiel bedeutet dies, dass die
Relation MITARBEITER erweitert wird.

Relationenname Relationenschema Beispiel


MITARBEITER Attribut Datentyp PersonalNr Name Vorname Gebdatum AbtNr Position

PersonalNr Zahl 0001 Eichenau Maria 15.05.1987 1 Leiterin


0002 Glahn Stefanie 02.05.1978 2 Leiterin
Name Text
0003 Kirsch Karin 24.05.1988 2 Mitarb.
Vorname Text 0004 Conolly Sean 26.04.1976 3 Leiter
Gebdatum Datum 0005 Frawley Lutz 09.09.1979 3 Mitarb.

AbtNr Zahl

Position Text

Bei Erweiterung der Relation ABTEILUNG entstehen redundante Daten.


ABTEILUNG Attribut Datentyp AbteilungsNr Bezeichnung PersonalNr
AbteilungsNr Zahl 1 Personal 0001
Bezeichnung Text 2 Einkauf 0002
PersonalNr Zahl 2 Einkauf 0003
redundante
Daten
3 Verkauf 0004
3 Verkauf 0005

Ein NULL-Wert kann in diesem Beispiel auftreten, wenn ein Mitarbeiter keiner Abteilung
zugeordnet ist.

m:n-Beziehungen
Bei einer m:n-Beziehung ist immer eine zusätzliche Relation erforderlich, um die betreffenden
Entitäten zu verknüpfen. Diese Relation enthält die Primärschlüssel der beiden Relationen und
kann zusätzlich noch beschreibende Attribute enthalten.

© HERDT-Verlag
Schulversion 49
4 Das relationale Datenmodell

Für das obige Beispiel wird eine Relation arbeitet_an benötigt. Das Relationenschema wird aus
den beiden Primärschlüsseln und den Attributen Tätigkeit und prozAnteil (prozentualer Anteil
der Arbeitszeit) aufgebaut.

Relationenname Relationenschema Beispiel


arbeitet_an Attribut Datentyp PersonalNr ProjektNr Tätigkeit prozAnteil
PersonalNr Zahl 0002 1 Leiterin 25
ProjektNr Zahl 0003 1 Sachbearbeiter 50
Tätigkeit Text 0004 1 Sachbearbeiter 50
prozAnteil Zahl 0004 2 Leiter 25
0005 2 Präsentationsvorbereitung 100
0004 3 Leiter 25
0002 3 Sachbearbeiterin 50
0003 3 Sachbearbeiter 50

Generalisierung/Spezialisierung (Is-a-Beziehungen)
Für die Überführung einer is-a-Beziehung gibt es mehrere Möglichkeiten, die von dem jeweiligen
Schema und von der Umgebung (dem Kontext) abhängig sind. In jedem Fall ist aber keine zusätz-
liche Relation für die Beziehung nötig.

 Es wird für jede Entitätsmenge eine


Relation mit den relevanten Attributen
angelegt. Den Teilmengen (Spezialisierun-
gen) wird der Primärschlüssel der Ober-
menge (Generalisierung) als Fremd-
schlüssel hinzugefügt, um die Zuordnung
zu sichern.

Relationenname Relationenschema Beispiel


PERSONAL Attribut Datentyp PersonalNr Nachname Vorname GebDatum
PersonalNr Zahl 0001 Eichenau Maria 15.05.1987
Name Text 0002 Glahn Stefanie 02.05.1978
Vorname Text 0003 Kirsch Karin 24.05.1988
GebDatum Datum 0004 Conolly Sean 26.04.1976
0005 Frawley Lutz 09.09.1979
0006 ... ... ...

ARBEITER Attribut Datentyp PersonalNr Schicht Arbeitsplatz


PersonalNr Zahl 0011 1 01
Schicht Zahl 0012 2 02
Arbeitsplatz Zahl 0015 3 02
0019 2 01
0037 3 01

50 Schulversion © HERDT-Verlag
Das relationale Datenmodell 4

Relationenname Relationenschema Beispiel


ANGESTELLTER Attribut Datentyp PersonalNr ZimmerNr TelefonNr
PersonalNr Zahl 0001 1 369
ZimmerNr Zahl 0002 8 265
TelefonNr Zahl 0005 3 235
0009 5 302
0007 3 236

 Es wird nur eine Relation angelegt, die relevante


Attribute der Teilmengen, sofern vorhanden, mit
aufnimmt. Diese Möglichkeit der Umsetzung kann
dann angewandt werden, wenn die Teilmengen keine
oder wenige eigene Attribute haben.
An die Relation kann bei dieser Variante ein Attribut
(z. B. IS_A) angefügt werden, welches für die Zuord-
nung steht.

Relationenname Relationenschema Beispiel


PERSONAL Attribut Datentyp PersonalNr Nachname Vorname ... Titel IS_A
PersonalNr Zahl 0001 Eichenau Maria ... Sachbearb.
Name Text 0002 Glahn Stefanie ... Dipl.-Ing. Mitarb.
Vorname Text 0003 Kirsch Karin ... Sachbearb.
... ... 0004 Conolly Sean ... Dr. Ing. Mitarb.
Titel Text 0005 Frawley Lutz ... Sachbearb.
IS_A Text 0006 ... ... ... ...

4.3 Normalisierung des Datenbankschemas


Ziel der Normalisierung des relationalen Datenbankschemas ist es,
 Anomalien zu beheben,
 Redundanzen zu vermeiden,
 einen übersichtlichen und möglichst einfachen Aufbau der Relationen zu erhalten,
 eine einfache Datenpflege zu ermöglichen.

Probleme beim Ändern, Einfügen und Löschen von Datensätzen


(Anomalien)
Ausgehend von der Tatsache, dass eine Relation logisch zusammengehörige Daten enthält, kann
beispielsweise folgende Relation angelegt werden: Für jeden Mitarbeiter werden die Personal-
nummer, der Name und Vorname sowie dessen Abteilung und seine Projektdaten erfasst. Alle
Daten werden in einer einzigen Relation gespeichert. Der Primärschlüssel setzt sich aus der
PersonalNr und der ProjNr zusammen. Da eine Person an mehreren Projekten mitarbeiten kann,
ist die PersonalNr nicht mehr eindeutig und erfüllt somit nicht mehr das Kriterium des Primär-
schlüssels. Die Relation befindet sich in der ersten Normalform.

© HERDT-Verlag
Schulversion 51
4 Das relationale Datenmodell

Relationenschema Beispiel
Attribut Daten PersonalNr Name Vorname AbtNr AbtBezeichnung ProjNr ProjektBeschreibung Tätigkeit
-typ
0001 Eichenau Maria 1 Personal
PersonalNr Zahl
0002 Glahn Stefanie 2 Einkauf 1 Kundenumfrage Leiterin
Name Text
0002 Glahn Stefanie 2 Einkauf 3 Konkurrenzanalyse Sachbearbeiterin
Vorname Text
0003 Kirsch Karin 2 Einkauf 1 Kundenumfrage Sachbearb.
AbteilungsNr Zahl
AbtBezeichnung Text 0004 Conolly Sean 3 Verkauf 2 Verkaufsmesse Leiter

ProjNr Zahl 0004 Conolly Sean 3 Verkauf 3 Konkurrenzanalyse Leiter


0005 Frawley Lutz 3 Verkauf 2 Verkaufsmesse Präsent.-
ProjektBeschreibung Text Vorbereitung
Tätigkeit Text

Relation MITARBEITER in 1. Normalform

Bei einigen Datenbanksystemen müssen Schlüsselattribute bei der Definition der Struktur
der Relation direkt untereinander stehen.

Eine Relation befindet sich in der ersten Normalform (1NF), wenn jedes Attribut der Relation
atomar ist. Das bedeutet, dass die Attribute keine weiteren Untergliederungen aufweisen dürfen
bzw. dass für jedes Attribut eines Tupels nur ein Eintrag zulässig ist (z. B., dass keine Liste von
Projektnummern angegeben werden kann). Die erste Normalform ist der Ausgangszustand für
weitere Betrachtungen.

Das abgebildete Relationenschema weist erhebliche Schwachstellen auf. Werden Tupel (Daten-
sätze) geändert, neue eingefügt oder alte gelöscht, können fehlerhafte Zustände auftreten. Diese
werden durch die Datenredundanz hervorgerufen und führen zu Inkonsistenzen. Diese Fehler
werden auch als Anomalien bezeichnet.

 Einfüge-Anomalie
Wenn Sie der Relation einen neuen Mitarbeiter hinzufügen, der zu diesem Zeitpunkt an
keinem Projekt mitarbeitet, entstehen leere Datenfelder. Neben der Tatsache, dass dadurch
Speicherplatz verschwendet wird, tritt das Problem auf, dass einem Attribut kein Wert zu-
gewiesen wird, das Teil des Primärschlüssels ist, wie im Beispiel der Projektnummer (ProjNr).
Beim Verwalten und Suchen dieses Datensatzes können Fehler auftreten. In einigen DBMS
ist es gar nicht möglich, einen solchen Datensatz zu speichern.
 Lösch-Anomalie
Wenn Sie einen vorhandenen Mitarbeiter löschen, werden auch die zugehörigen Projekt-
daten gelöscht. Sind die Daten für dieses Projekt nur bei diesem Mitarbeiter gespeichert,
gehen diese Daten verloren.
 Änderungs-Anomalie
Wenn sich der Familienname eines Mitarbeiters ändert, beispielsweise wenn sich der Name
von Glahn zu Schumann ändert, müssen alle Datensätze geändert werden, die diesen Wert
beinhalten. Wird der Familienname nur in einem Datensatz geändert, wird die Relation
inkonsistent, da in diesem Fall zu einer Personalnummer zwei verschiedene Familiennamen
existieren.

52 Schulversion © HERDT-Verlag
Das relationale Datenmodell 4

Abhängigkeiten
Bei der Normalisierung spielt die Beseitigung von Abhängigkeiten zwischen den Attributen einer
Relation eine große Rolle. Es gibt funktionale und transitive Abhängigkeiten.

Funktionale Abhängigkeit
Für eine Relation R(A1, A2, ..., An) sind X und Y je eine echte Teilmenge der Attributmenge (z. B. X =
(A4, A5) und Y = (A8)). Eine funktionale Abhängigkeit (X → Y) liegt vor, wenn es keine zwei Tupel geben
kann, in denen für gleiche X-Werte verschiedene Y-Werte auftreten können. Umgekehrt kann es aber
für gleiche Y-Werte verschiedene X-Werte geben.

Beispiel
In der Relation
LIEFERUNG(LieferNr, ArtikelNr, Artikelname, Anzahl, Lieferdatum, Lieferfirma, AnschriftLieferfirma)
bestehen funktionale Abhängigkeiten zwischen den Attributen
Anzahl → LieferNr, ArtikelNr In einer Lieferung (LieferNr) werden verschiedene Artikel
(ArtikelNr) in einer bestimmten Anzahl (Anzahl) geliefert.
LieferNr → Lieferdatum Eine Lieferung (mit der LieferNr) erfolgt an einem Tag
(Lieferdatum).
ArtikelNr → Artikelname Zu einer Artikelnummer (ArtikelNr) gibt es immer genau
einen Artikelnamen (Artikelname).
ArtikelNr → Lieferfirma Ein Artikel mit einer Nummer (ArtikelNr) wird von genau
einer bestimmten Firma (Lieferfirma) geliefert.
Lieferfirma → AnschriftLieferfirma Jede Lieferfirma (Lieferfirma) hat genau eine Anschrift
(Anschrift Lieferfirma).

Transitive Abhängigkeit
Eine transitive Abhängigkeit besteht, wenn ein Attribut a von einem Attribut b und ein Attribut b
von einem Attribut c funktional abhängig ist. In diesem Fall ist a transitiv von c abhängig.

Das obige Beispiel enthält eine transitive Abhängigkeit. Die Lieferfirma hängt von der Artikel-
nummer ab, die Lieferfirmen-Anschrift aber von der Lieferfirma (AnschriftLieferfirma →
Lieferfirma → ArtikelNr).

Der Normalisierungsprozess
Die Normalisierung eines relationalen Schemas wird in mehreren Stufen vollzogen. Dabei müssen
die Daten in den Relationen in jeder Stufe bestimmte Bedingungen erfüllen. Das Resultat der
Anwendung dieser Regeln wird als Normalform des Relationenschemas bezeichnet.

Beim Normalisierungsprozess werden die Daten einer Relation auf mehrere Relationen verteilt.
Die einzelnen Stufen des Normalisierungsprozesses werden als erste bis fünfte Normalform
bezeichnet. Oft ist es sinnvoll, die Normalisierung nur bis zur dritten Normalform durchzuführen.

© HERDT-Verlag
Schulversion 53
4 Das relationale Datenmodell

Die weiteren Normalformen verkomplizieren danach die Verwaltung der Datenbank zu sehr,
da viele kleine Relationen entstehen.

Wie weit die Normalisierung realisiert wird, ist auch immer unter dem Gesichtspunkt der
Performance der Abarbeitung der SQL-Anfragen zu entscheiden. Zu weitgehende Normalisie-
rungen werden unter Umständen aus Performancegründen wieder denormalisiert, um langen
Laufzeiten entgegenzuwirken.

Nicht normalisierte Datenstruktur


Eine Datenstruktur wird als nicht normalisiert bezeichnet, wenn in einem Datensatz ein Attribut
nicht atomar ist, sondern stattdessen eine Werteliste angegeben wird. Zum Beispiel arbeitet der
Mitarbeiter Richter an den Projekten 1, 2 und 3.

PersonalNr Nachname Vorname AbtNr AbtBezeichng ProjNr ProjektBeschreibung Tätigkeit

0004 Richter Hans 3 Verkauf 1, 2, 3 Kundenumfrage, Sachbearbeiter,


Konkurrenzanalyse, Leiter
Verkaufsmesse

mehrere Werte in einem Datenfeld

Diese Relation ist schwer auszuwerten, da einige Attribute mehrere Werte haben. Werden z. B.
alle Mitarbeiter gesucht, die an Projekt 3 mitarbeiten, ist eine komplizierte Auswertung not-
wendig, da erst alle Werte des Attributs ProjNr untersucht werden müssen. Mitunter sind keine
genauen Zuordnungen mehr möglich. Zum Beispiel lässt sich nicht mehr herausfinden, in wel-
chem Projekt der Mitarbeiter Richter welche Tätigkeit ausübt.

Beispiel
In der folgenden schrittweisen Umsetzung wird die folgende Datenstruktur in die verschiedenen
Normalformen überführt:
PersonalNr Name Vorname AbtNr AbtBezeichnung ProjNr ProjektBeschreibung Tätigkeit
0001 Eichenau Maria 1 Personal
1, Kundenumfrage, Leiterin,
0002 Glahn Stefanie 2 Einkauf
3 Konkurrenzanalyse Sachbearbeiterin
0003 Kirsch Karin 2 Einkauf 1 Kundenumfrage Sachbearb.
2, Verkaufsmesse, Leiter,
0004 Conolly Sean 3 Verkauf
3 Konkurrenzanalyse Leiter
0005 Frawley Lutz 3 Verkauf 2 Verkaufsmesse Präsent.-Vorbereitung

1. Normalform (1NF)
Eine Relation befindet sich in der 1. Normalform, wenn …
 sie zweidimensional ist, d. h. ein Gebilde aus Zeilen und Spalten,
 sich in jedem Datensatz nur Daten befinden, die zu einem Objekt der realen Welt gehören,
und jeder Datensatz nur einmal vorkommt,
 sich in jeder Spalte nur Daten befinden, die einem Attribut entsprechen, und das Attribut
nur einmal in der Relation vorkommt,
 für jedes Attribut nur ein Wert eingetragen ist.

54 Schulversion © HERDT-Verlag
Das relationale Datenmodell 4

Gehen Sie bei der Transformation einer nicht normalisierten Datenstruktur in die 1. Normalform
wie folgt vor:
 Entfernen Sie alle Mehrfacheinträge in einem Attribut. Erstellen Sie pro Mitarbeiter/Projekt-
kombination einen eigenen Datensatz. Dabei darf jedem Attribut eines Datensatzes
höchstens ein Wert zugewiesen sein.

Im Ergebnis liegt die Datenstruktur in einer Tabelle mit einem Tupel pro Mitarbeiter/Projekt-
kombination vor.

PersonalNr Name Vorname AbtNr AbtBezeichnung ProjNr ProjektBeschreibung Tätigkeit


0001 Eichenau Maria 1 Personal
0002 Glahn Stefanie 2 Einkauf 1 Kundenumfrage Leiterin
0002 Glahn Stefanie 2 Einkauf 3 Konkurrenzanalyse Sachbearbeiterin
0003 Kirsch Karin 2 Einkauf 1 Kundenumfrage Sachbearb.
0004 Conolly Sean 3 Verkauf 2 Verkaufsmesse Leiter
0004 Conolly Sean 3 Verkauf 3 Konkurrenzanalyse Leiter
0005 Frawley Lutz 3 Verkauf 2 Verkaufsmesse Präsent.-Vorbereitung

Probleme
 Die Relation weist Redundanzen auf, z. B. treten Mitarbeiterdaten, Abteilungsnamen und
Projektnamen im Beispiel mehrfach auf.
 Die Relation enthält voneinander unabhängige Sachgebiete, wie zum Beispiel Mitarbeiter,
Abteilungen, Projekte.
 Daten können nicht eindeutig identifiziert werden. Beispielsweise kann der Abteilungsname
Einkauf nur über eine Personal- und Projektnummer ermittelt werden.

2. Normalform (2NF)
Eine Relation befindet sich in der 2. Normalform, wenn die 1. Normalform erfüllt ist und wenn jedes
Nicht-Schlüsselfeld vom ganzen Primärschlüssel (der auch aus mehreren Feldern bestehen kann)
abhängig ist. Wichtig hierbei ist, dass Datenfelder nicht nur von einem Teilschlüsselfeld, sondern
vom gesamten Schlüssel funktional abhängig sind.

Gehen Sie bei der Transformation von der 1. Normalform in die 2. Normalform wie folgt vor:
 Zerlegen Sie die Relation in kleinere Relationen, sodass in jeder Relation alle Nicht-Schlüssel-
felder nur noch vom Primärschlüssel abhängen.
 Besteht ein Primärschlüssel aus mehreren Attributen, ist zu prüfen, ob es Attribute gibt, die
eigentlich nur von einem Teil des Primärschlüssels abhängen. Ist das der Fall, so sind dieser
Teil des Primärschlüssels und die zugehörigen Attribute in eine neue Relation zu bringen.

© HERDT-Verlag
Schulversion 55
4 Das relationale Datenmodell

Aus der ursprünglichen Tabelle entstehen für das verwendete Beispiel drei Tabellen.

Werden die Attribute der obigen Relation MITARBEITER der Reihe Attribut Datentyp
nach untersucht, ergibt sich, dass die Attribute Name, Vorname PersonalNr Zahl
nur von einem Teil des Primärschlüssels, von der PersonalNr, Name Text

abhängen. Auch zwischen den Attributen AbtNr und PersonalNr Vorname Text
AbtNr Zahl
ist eine eindeutige Beziehung erkennbar. Alle anderen Attribute
hängen nicht oder nur zum Teil vom Attribut PersonalNr ab.
Die Relation MITARBEITER besitzt nur noch vier Attribute.
Attribut Datentyp
PERSONAL (PersonalNr, Name, Vorname, AbtNr) AbtNr Zahl
Name Text
Des Weiteren ist das Attribut AbtBezeichnung nicht vom Primär-
schlüssel abhängig, sondern nur vom Attribut AbtNr. Kein weiteres
Attribut hängt vom Attribut AbtNr ab. Die Relation ABTEILUNG Attribut Datentyp
wird gebildet. ProjNr Zahl
Beschreibung Text
ABTEILUNG (AbtNr, Name)

Die Projektbeschreibung ist nur von einem Teil des Primär- Attribut Datentyp
schlüssels abhängig, vom Attribut ProjNr. Die Relation PROJEKT ProjNr Zahl
entsteht. PersonalNr Zahl
Tätigkeit Text
PROJEKT (ProjNr, Beschreibung)
Relationen in 2. Normalform
Die Funktion, in der ein Mitarbeiter an einem Projekt arbeitet,
geht nur aus der Kombination der Attribute ProjNr und PersonalNr
hervor. So entsteht eine weitere Relation ARBEITET_AN.

ARBEITET_AN (ProjNr, PersonalNr, Tätigkeit)

3. Normalform (3NF)
Eine Tabelle befindet sich in der 3. Normalform, wenn alle Datenfelder nur vom gesamten
Schlüssel abhängig sind und untereinander keine Abhängigkeiten auftreten. Sobald ein Nicht-
Schlüsselfeld nur über ein anderes Nicht-Schlüsselfeld identifizierbar ist, wird von transitiver
Abhängigkeit gesprochen. Transitive Abhängigkeiten verursachen ebenfalls Datenredundanz
und -inkonsistenz.

Für das verwendete Beispiel befinden sich alle Tabellen der 2. Normalform bereits in der
3. Normalform, da keine transitiven Abhängigkeiten bestehen. Zur Darstellung der Umwandlung
von der 2. in die 3. Normalform wird das Beispiel erweitert.

56 Schulversion © HERDT-Verlag
Das relationale Datenmodell 4

Die Relation ARBEITET_AN wird ergänzt und soll zusätzlich die Attribute Stunden und Stunden-
lohn besitzen. Der Stundenlohn wird von der Art der Tätigkeit bestimmt. Damit ist der Stunden-
lohn nicht direkt, sondern transitiv vom Schlüsselfeld (ProjNr, PersonalNr) abhängig. Ändert sich
beispielsweise der Stundenlohn für die Tätigkeit Bearbeitung, muss eine Änderung in mehreren
Tupeln vorgenommen werden.

Attribut PersonalNr ProjektNr Tätigkeit Stunden Stundenlohn


ProjNr 0002 1 Leitung 25 50,00
PersonalNr 0003 1 Bearbeitung 55 30,00
Tätigkeit 0004 1 Bearbeitung 70 30,00
Stunden 0004 2 Leitung 25 50,00
Stundenlohn 0005 2 Präsentationsvorbe 160 35,00
reitung
Transitive Abhängigkeiten
0004 3 Leitung 25 50,00
0002 3 Bearbeitung 80 30,00
0003 3 Bearbeitung 65 30,00

Gehen Sie bei der Transformation von der 2. Normalform in die 3. Normalform wie folgt vor:
 Entfernen Sie für die 3. Normalform alle transitiven Abhängigkeiten durch Teilen der
Relation in mehrere Relationen, in denen alle Nicht-Schlüsselfelder direkt vom gesamten
Schlüsselfeld abhängig sind.

Die Relation ARBEITET_AN wird in zwei Relationen zerlegt. Der Stundenlohn und die Tätigkeit
werden einer neuen Relation TÄTIGKEIT zugeordnet.

Relation Attribut PersonalNr ProjektNr TätigkeitsNr Stunden


ARBEITET_AN PersonalNr 0002 1 1 25
ProjNr 0003 1 2 55
TätigkeitsNr 0004 1 2 70
Stunden 0004 2 1 25
0005 2 3 160
0004 3 1 25
0002 3 2 80
0003 3 2 65

Relation Attribut TätigkeitsNr Tätigkeit Stundenlohn


TÄTIGKEIT TätigkeitsNr 1 Leitung 50,00
Tätigkeit 2 Bearbeitung 30,00
Stundenlohn 3 Präsentationsvorbereitung 35,00

Relationen in 3. Normalform

Zusätzliche Schlüsselfelder einfügen


Lange Textfelder sind für Schlüsselfelder ungeeignet, da sie mehr Speicherplatz für den Index
benötigen. Außerdem zieht eine Änderung des Textes auch eine Änderung in den Relationen
nach sich, die in Beziehung zu dieser Relation stehen. Abhilfe schafft das Hinzufügen eines
weiteren Schlüsselfeldes.

Die Tabellen erhalten damit beispielsweise folgende Struktur:


ARBEITET_AN (ProjNr, PersonalNr, Stunden, TätigkeitsNr)
TÄTIGKEIT (TätigkeitsNr, Tätigkeit, Stundenlohn)

© HERDT-Verlag
Schulversion 57
4 Das relationale Datenmodell

Weitere Normalformen
Es gibt weitere Normalformen, die in der Praxis aber kaum Bedeutung haben. Mit jeder wei-
teren Stufe der Normalisierung kommen weitere Relationen hinzu, und damit ist häufig ein
Geschwindigkeitsverlust bei Abfragen und Transaktionen verbunden.

Sie sollten versuchen, bei der Normalisierung des relationalen Modells einen guten Kompromiss
zwischen der Speicherung von abhängigen Daten (eventuell auch redundanten Daten) und der
Verarbeitungsgeschwindigkeit zu finden.

Boyce-Codd-Normalform (BCNF)
Die Abhängigkeiten von einzelnen Schlüsseln oder Schlüsselattributen untereinander werden
bis zur 3. Normalform (3NF) nicht berücksichtigt. In der Boyce-Codd-Normalform werden sie
beseitigt.

Eine Relation befindet sich in Boyce-Codd-Normalform, wenn kein Attribut funktional abhängig
von einer Attributgruppe ohne Schlüsseleigenschaft ist.

Das bedeutet, dass in einer Relation keine funktionalen Abhängigkeiten zwischen einem minimalen
Schlüssel (nicht zusammengesetzten Schlüssel) und den Attributen bestehen dürfen. Die meisten
Relationen der 3NF befinden sich bereits in BCNF. Nur die Relationen, die mehrere überlappende,
minimale Schlüssel besitzen, die eine funktionale Abhängigkeit erzeugen und somit wiederum
Redundanzen hervorrufen, sind zu überführen.

4. und 5. Normalform PersonalNr ProjektNr Kinder


0002 1 Hans
In der 4. Normalform befinden sich Relationen, die sich in der 3NF 0002 1 Gerd
befinden und die keine paarweise auftretenden mehrwertigen 0003 2 Johanna
Abhängigkeiten der Attribute enthalten. Eine mehrwertige Abhän- 0003 2 Jens
gigkeit besteht, wenn mehrere Nichtschlüsselattribute direkt vom 0003 3 Johanna
Schlüssel abhängig sind, aber nicht voneinander abhängig sind. In 0003 3 Jens
der nebenstehenden Tabelle ist sowohl das Attribut ProjektNr als Relation mit mehrwertigen
auch das Attribut Kinder direkt vom Attribut PersonalNr abhängig. Abhängigkeiten
Ist es möglich, eine Relation in zwei Relationen zu zerlegen und die ursprüngliche Relation durch
einen Natural Join dieser beiden Relationen wiederherzustellen, befindet sich die Ausgangs-
relation noch nicht in der 4. Normalform.

Eine Zerlegung in die 4. Normalform ist nicht immer möglich bzw. nötig. Wenn zwischen
den Attributen inhaltliche Zusammenhänge bestehen, kann sich die Relation bereits in der
4NF befinden.

Ist eine verlustlose Zerlegung in Einzelabhängigkeiten in der 4. Normalform nicht möglich,


werden in der 5. Normalform weitere Primärschlüssel hinzugefügt. Das geschieht so lange,
bis nur noch Einzelabhängigkeiten der Attribute von einem oder mehreren Primärschlüsseln
bestehen (keine Join Dependencies). Kann eine Relation nicht durch einen Join aus Einzel-
relationen erstellt werden, befindet sie sich in der 5. Normalform.

Diese beiden Normalformen führen, wie auch die Boyce-Codd-Normalform, zu einer größeren
Menge von Relationen.

58 Schulversion © HERDT-Verlag
Das relationale Datenmodell 4

Beispiel Arbeitsgruppe Raum Arbeitsplatz


1 1 1
Die räumliche Zuordnung von Arbeitsgruppen und Arbeitsplätzen ist
1 1 2
in einer Relation gespeichert. Diese Relation befindet sich in der 1 1 3
dritten Normalform, da der einzige Primärschlüssel die Kombination 2 1 4
aller drei Attribute ist. Es liegen aber Redundanzen vor, da jede 2 1 5
Arbeitsgruppe mehrere Arbeitsplätze benötigt und es in jedem 3 3 1
Raum mehrere Arbeitsplätze gibt. Der Primärschlüssel besitzt somit 3 3 2
mehrwertige Abhängigkeiten. Diese lassen sich durch Aufteilung in 3 3 3
zwei Tabellen beseitigen. Relation in 3. Normalform

Die beiden Ergebnisrelationen befinden sich dann in der 4. und ebenfalls in der 5. Normalform,
da eine verlustfreie Zerlegung möglich ist.

Arbeitsgruppe_ Raum Arbeitsplatz


11 1
11 2
11 3
21 4
Arbeitsgruppe_Raum Arbeitsgruppe Raum 21 5
11 1 1 33 1
21 2 1 33 2
33 3 3 33 3

Relation in 4. und 5. Normalform

4.4 Theorie relationaler Sprachen


Sprachen, die mit relationalen Datenbanken arbeiten, müssen in der Lage sein, folgende
Operationen auszuführen:
 Anlegen von neuen Relationen
 Verändern von Relationen
 Löschen von Relationen
 Erzeugen von Relationen aus vorhandenen Relationen mit ausgewählten Tupeln und
ausgewählten Attributen

Eine Datenbanksprache besitzt also Operationen zum PersonalNr ProjektNr Tätigkeit Stunden
Abfragen sowie zum Anlegen, Verändern und Löschen der 0002 1 Leitung 25
Datensätze einer Datenbank. Das Retrieval (das Auffinden 0003 1 Bearbeitung 55
der gewünschten Daten) bildet den Kern der Sprache; es 0004 1 Bearbeitung 70
ist der schwierigere Teil einer Datenbankoperation. Sind 0004 2 Leitung 25
0005 2 Präsentation 160
die Daten erst einmal gefunden, können sie relativ einfach
0004 3 Leitung 25
geändert bzw. gelöscht werden.
0002 3 Bearbeitung 80
0003 3 Bearbeitung 65

Relation ARBEITET_AN

© HERDT-Verlag
Schulversion 59
4 Das relationale Datenmodell

Die meisten relationalen Datenbanksprachen, wie z. B. SQL, setzen sich aus zwei Sprachpara-
digmen zusammen, der Relationenalgebra und den Relationenkalkülen. Die Beispiele in diesem
Kapitel werden mithilfe folgender Relationen erläutert:

PersonalNr Name Vorname Abteilung Gebdatum ProjektNr Beschreibung


0001 Eichenau Maria 1 15.05.1987 1 Kundenumfrage
0002 Glahn Stefanie 2 02.05.1978 2 Verkaufsmesse
0003 Kirsch Karin 2 24.05.1988 3 Konkurrenzanalyse
0004 Conolly Sean 3 26.04.1976 Relation PROJEKT1
0005 Frawley Lutz 3 09.09.1979

Relation MITARBEITER1

PersonalNr Name Vorname Abteilung Gebdatum ProjektNr Beschreibung


0011 Schneider Jakob 1 06.02.1968 1 Kundenumfrage
0012 Unterwegner Daniel 3 12.04.1973 4 Wirtschaftlichkeitsanalyse

Relation MITARBEITER2 Relation PROJEKT2

Relationenalgebra
Als Algebra wird im Bereich der Mathematik ein System bezeichnet, welches aus nicht leeren
Mengen und Operationen auf diesen Mengen besteht. Die nicht leeren Mengen sind in der
Relationenalgebra die Relationen und die Operationen darauf sind die Datenbankoperationen,
z. B. Datenbankanfragen. Durch die Datenbankoperationen werden aus den vorhandenen
Relationen (den Basisrelationen) neue Relationen erzeugt, die aber nicht in der Datenbank
gespeichert werden. Im Folgenden werden Operationen vorgestellt, die für eine relationale
Sprache unverzichtbar sind.

Projektion In der Projektion werden nur bestimmte Attribute einer Relation (Spalten einer
Symbol: π Tabelle) in einer Relation dargestellt, die übrigen werden weggelassen.
Doppelte Tupel werden dabei nicht entfernt.
Beispiel: Gesucht sind die Attribute Nachname, Vorname und Gebdatum der
Relation MITARBEITER1.
Name Vorname Gebdatum
Eichenau Maria 15.05.1987
Glahn Stefanie 02.05.1978
Kirsch Karin 24.05.1988
Conolly Sean 26.04.1976
Frawley Lutz 09.09.1979

(Beispiel: Kapitel 8, Datenabfrage2.sql)


Selektion Die Selektion liefert eine Teilmenge aller Tupel einer Relation. Entsprechend der
Symbol: σ Selektionsbedingung werden diese Tupel ermittelt. Die Teilmenge enthält alle
Attribute der Basisrelation.
Beispiel: Gesucht sind alle Tupel aus der Relation ARBEITET_AN, in denen die
Projektnummer den Wert 2 hat.
PersonalNr ProjektNr Tätigkeit Stunden
0004 2 Leitung 25
0005 2 Präsentation 160

(Beispiel: Kapitel 8, Datenabfrage2.sql)

60 Schulversion © HERDT-Verlag
Das relationale Datenmodell 4

Vereinigung Wenn zwei Relationen A und B die gleichen Attribute (mit gleichen Namen und
Symbol: ∪ Wertebereichen) besitzen, ist es möglich, eine Vereinigung V = A ∪ B zu bilden.
Die Vereinigung V enthält dann alle Tupel beider Mengen.
Beispiel: Gesucht wird die Vereinigung der Relationen MITARBEITER1 und
MITARBEITER2.
MITARBEITER := MITARBEITER1 ∪ MITARBEITER2
PersonalNr Name Vorname Abteilung Gebdatum
0001 Eichenau Maria 1 15.05.1987
0002 Glahn Stefanie 2 02.05.1978
0003 Kirsch Karin 2 24.05.1988
0004 Conolly Sean 3 26.04.1976
0005 Frawley Lutz 3 09.09.1979
0011 Schneider Jakob 1 06.02.1968
0012 Unterwegner Daniel 3 12.04.1973

(Beispiel: Kapitel 11, Union.sql)


Differenz Die Bildung der Differenz ist nur dann möglich, wenn die zwei Relationen A und
Symbol: - B, analog zur Vereinigung, die gleichen Attribute (mit gleichen Namen und
Wertebereichen) besitzen. Dann sind in der Ergebnisrelation D := A - B alle Tupel
aus A enthalten, die nicht in B enthalten sind.
Beispiel: Die Anwendung der Differenz der Relationen PROJEKT und PROJEKT2
ergibt folgende Ergebnisrelation:
DIFFERENZ := PROJEKT - PROJEKT2
ProjektNr Beschreibung
2 Verkaufsmesse
3 Konkurrenzanalyse

(vgl. Abschnitt 11.5 Schnitt- und Differenzmengen)


Durchschnitt Der Durchschnitt der beiden Relationen A und B enthält nur die Tupel aus A, die
Symbol: ∩ auch in B enthalten sind. Voraussetzung ist wieder, dass die Namen und Werte-
bereiche der Attribute beider Relationen übereinstimmen.
Beispiel: Der Durchschnitt der Relationen PROJEKT und PROJEKT2 ergibt
folgende Ergebnismenge:
Durchschnitt := PROJEKT ∩ PROJEKT2
ProjektNr Beschreibung
1 Kundenumfrage

(vgl. Abschnitt 11.5 Schnitt- und Differenzmengen)


Umbenennen Attribute lassen sich in einer anderen Relation mit einem anderen Attribut-
Symbol: ← namen darstellen. Die Domains (Wertebereiche) bleiben aber erhalten. So
können Relationen für den Benutzer mit anderen, aussagekräftigeren Attribut-
namen angezeigt werden. Ein wichtiger Anwendungsfall der Umbenennung ist
der, dass für einige Operationen gleiche Attributnamen vorausgesetzt werden,
beispielsweise für eine Vereinigung zweier Relationen. Sollen zwei Relationen
mit gleichen Wertebereichen, aber mit verschiedenen Attributnamen vereinigt
werden, müssen die Attributnamen der einen Relation zuvor umbenannt
werden.

© HERDT-Verlag
Schulversion 61
4 Das relationale Datenmodell

Umbenennen Beispiel: Bei den Attributen der Relation ARBEITET_AN soll PersonalNr in
Symbol: ← Personalnummer umbenannt werden.
Ergebnisrelation := ARBEITET_AN PersonalNr  Personalnummer
PersonalNr ProjektNr Tätigkeit Stunden
0002 1 Leitung 25
0003 1 Bearbeitung 55
… … … …

(Beispiel: Kapitel 8, Datenabfrage3.sql)


Kartesisches Das kartesische Produkt zweier Relationen K = A x B wird wie in der Mengen-
Produkt lehre gebildet. Es werden alle Tupel der einen Relation mit allen Tupeln der
anderen Relation kombiniert.
Symbol: x Beispiel: Gesucht wird das kartesische Produkt der Relationen MITARBEITER2
und PROJEKT. Welcher Mitarbeiter könnte an welchem Projekt
mitarbeiten?
Ergebnisrelation := MITARBEITER2 x PROJEKT
PersonalNr Name Vorname Abteilung Gebdatum ProjektNr Beschreibung
0011 Schneider Jakob 1 06.02.1968 1 Kundenumfrage
0011 Schneider Jakob 1 06.02.1968 2 Verkaufsmesse
0011 Schneider Jakob 1 06.02.1968 3 Konkurrenzanalyse
0012 Unterwegner Daniel 3 12.04.1973 1 Kundenumfrage
0012 Unterwegner Daniel 3 12.04.1973 1 Verkaufsmesse
0012 Unterwegner Daniel 3 12.04.1973 1 Konkurrenzanalyse

(Beispiel: Kapitel 11, CrossJoin.sql)


Verbund Nicht immer interessiert das gesamte kartesische Produkt, sondern nur ein
(Join) bestimmter Teil davon. Eine solche Teilmenge liefert der Verbund. Er besitzt
Symbol: eine Bedingung, die eine Einschränkung der Ergebnismenge bewirkt. Es gibt
verschiedene Möglichkeiten, zwei Relationen durch einen Verbund zu
kombinieren.
Natürlicher Zwei Relationen R1 und R2 werden über die Gleichheit zweier Attribute mit-
Verbund einander verbunden. Dabei ist ai das i-te Attribut der Relation R1 und aj ist das
(Natural-Join) j-te Attribut der Relation R2.
V := R1 R1(ai)=R2(aj) R2
In die Ergebnisrelation werden nur die Tupel übernommen, bei denen die
Attribute ai und aj der Relationen R1 und R2 gleich sind. Das Vergleichsattribut
ist in der Zielrelation nur einmal enthalten (obwohl es praktisch zweimal vor-
handen ist).

62 Schulversion © HERDT-Verlag
Das relationale Datenmodell 4

Natürlicher Beispiel: Gesucht wird ein natürlicher Verbund zwischen den Relationen
Verbund MITARBEITER1 und ARBEITET_AN mit der Bedingung, dass das
(Natural-Join) Attribut PersonalNr in beiden Relationen übereinstimmt (somit gibt
es auch nur ein Attribut PersonalNr, obwohl es in beiden Relationen
vorhanden ist).
VERBUND := MITARBEITER1 PersonalNr= PersonalNr ARBEITET_AN
PersonalNr Name Vorname Abteilung Gebdatum ProjektNr Beschreibung Stunden
0002 Glahn Stefanie 2 02.05.1978 1 Leitung 25
0003 Kirsch Karin 2 24.05.1988 1 Bearbeitung 55
0004 Conolly Sean 3 26.04.1976 1 Bearbeitung 70
0004 Conolly Sean 3 26.04.1976 2 Leitung 25
0005 Frawley Lutz 3 09.09.1979 2 Präsentation 160
0004 Conolly Sean 3 26.04.1976 3 Leitung 25
0002 Glahn Stefanie 2 02.05.1978 3 Bearbeitung 80
0003 Kirsch Karin 2 24.05.1988 3 Bearbeitung 65

(Beispiel: Kapitel 11, NaturalJoin.sql)

Weitere Verbundoperationen:
Theta-Join Im Theta-Join sind auch die Vergleichsoperatoren <, > ... zulässig. Das Ver-
gleichsattribut ist zweimal vorhanden.
(Beispiel: Kapitel 11, ThetaJoin.sql)
Equi-Join Der Equi-Join erlaubt nur den Vergleichsoperator =, das Vergleichsattribut
ist zweimal vorhanden.
(Beispiele: Kapitel 11, EinfacheVerknuepfung1.sql und InnerJoin.sql)
Self-Join Im Self-Join werden Tupel einer Relation miteinander verbunden.
(Beispiel: Kapitel 11, SelfJoin.sql)
Semi-Join Der Semi-Join als spezielle Form des Equi-Joins dient der Verknüpfung von
verteilten Datenbanken über Operationen.
Outer-Join Alle zuvor erwähnten Verbundoperationen gehören zu den Inner-Joins, die nur
Tupel übeenehmen, die die Bedingung erfüllen. Im Outer-Join werden auch
die Tupel übernommen, für die kein entsprechendes Tupel der anderen
Relation vorhanden ist.
Im verwendeten Beispiel (natürlicher Verbund) erscheint beim Outer-Join der
Mitarbeiter mit der PersonalNr 0001. Die Attribute ProjektNr, Tätigkeit und
Stunden sind hier leer.
Es gibt 3 Formen des Outer-Joins: den Left-Outer-Join (alle Tupel der linken
Relation werden übernommen), den Right-Outer-Join (alle Tupel der rechten
Relation werden übernommen) und den symmetrischen Outer-Join (Vereini-
gung des Left- und des Right-Outer-Joins).
(Beispiel: Kapitel 11, OuterJoin.sql)

© HERDT-Verlag
Schulversion 63
4 Das relationale Datenmodell

Relationenkalkül
Während die Relationenalgebra prozedural aufgebaut ist (durch Angabe einer Operation wird eine
Ergebnismenge berechnet), wird im Relationenkalkül die Menge der auszuwählenden Tupel
deskriptiv, ohne Angabe der anzuwendenden Operation aufgeführt. Das Relationenkalkül wird in
zwei Ausprägungen unterteilt, in das Tupelkalkül (tupelorientiertes Relationenkalkül) und das
Domainkalkül (werteorientiertes Relationenkalkül).

 Ein relationales Tupelkalkül wird in Anlehnung an die Prädikatenlogik in der Form


{t|P(t)}
angegeben. Dabei ist t die Tupelvariable und P(t) das Prädikat, das erfüllt sein muss,
damit ein Tupel in die Ergebnisrelation aufgenommen wird.
 Im Domainkalkül werden Variablen für Wertebereiche (nicht für Tupel) eingesetzt.
Das Domainkalkül wird in der Form
{[d1, d2,..., dn] | P(d1, d2,..., dn)}
notiert; di ist eine Domainvariable, die für einen Attributwert steht, und P ist ein Prädikat.

Die Prädikate sind logische Ausdrücke, für deren Formulierung neben den Vergleichsoperatoren
(>, <, =, ≠ ...) die folgenden Zeichen verwendet werden:

Zeichen Name, Bedeutung Beispiel


∧ Logisches Und (AND) a ∧ b  Der Ausdruck ist wahr, wenn a und b wahr sind.
∨ Logisches Oder (OR) a ∨ b  Der Ausdruck ist wahr, wenn a oder b wahr ist.
¬ Negation (NOT) ¬a  Der Ausdruck ist wahr, wenn a falsch ist.
∀ Allquantor, "für alle ... " (∀x)b  Für alle Werte x ist der Ausdruck b wahr.
∃ Existenzquantor, (∃x)b  Es existiert ein Wert x, sodass der Ausdruck b
"es existiert ..." wahr ist.

Beispiele
Es werden alle Personalnummern in der Relation ARBEITET_AN gesucht, die an dem Projekt mit
der Nummer 1 mitarbeiten:
{ARBEITET_AN.PersonalNr | ARBEITET_AN.ProjektNr = '1'}

Es werden die Namen der Personen gesucht, die an dem Projekt mit der Nummer 2 mitarbeiten.
Dazu werden die Relationen MITARBEITER1 und ARBEITET_AN ausgewertet:
{MITABEITER1.Name | ∃ ARBEITET_AN(ARBEITET_AN.ProjektNr = '2') ∧
(ARBEITET_AN. PersonalNr = MITARBEITER1.PersonalNr)}

Es werden die Namen aller Personen gesucht, die an dem Projekt mitarbeiten, das vom Mit-
arbeiter 0004 geleitet wird:
ARBEITET_AN as A A wird als Tupelvariable für den Typ ARBEITET_AN definiert.
ARBEITET_AN as B B wird als Tupelvariable für den Typ ARBEITET_AN definiert.
{MITABEITER1.Name | ∃ A(A. PersonalNr = MITARBEITER1.PersonalNr) ∧
∃ B (B.Tätigkeit = 'Leitung' ∧ B.PersonalNr = '0004')}

64 Schulversion © HERDT-Verlag
Das relationale Datenmodell 4

Es werden die Namen aller Personen gesucht, die an keinem Projekt mitarbeiten:
ARBEITET_AN as A A wird als Tupelvariable für den Typ ARBEITET_AN definiert.
{MITABEITER1.Name | ∀ A(A. PersonalNr ≠ MITARBEITER1.PersonalNr)}

4.5 Übung

Aufgaben zur Datenbanktheorie


Übungsdatei: -- Ergebnisdateien: Uebung1.pdf, Uebung2.pdf, Uebung3.pdf,
Uebung4.pdf, Uebung5.pdf, Uebung6.pdf

1. Die Daten eines Busreise-Unternehmens sollen in einer Datenbank gespeichert werden.


Die folgende Abbildung zeigt die Daten in einer nicht normalisierten Relation:
Attribut Datentyp Beschreibung
FahrtNr Zahl Nummer der Fahrt
BusNr Zahl Nummer des Busses
Hersteller Text Herstellerfirma des Busses
AnzahlPlaetze Zahl Anzahl der Plätze im Bus
PolKZ Zahl Polizeiliches Kennzeichen des Busses
Erstzulassung Datum Datum der ersten Zulassung des Busses
Anschaffungspreis Zahl (Währung) Anschaffungspreis des Busses
gewartet_am Datum Datum der Wartung
gewartet_von Text Bus wurde gewartet von Firma
Maengel Text Bei der Wartung festgestellte Mängel
Kosten Zahl (Währung) Kosten für Wartung und Reparatur
FahrtZiel Text Ort, an den der Bus fahren soll
FahrtDatum Datum Abfahrtsdatum
Abfahrtzeit Zeit Abfahrtszeit
Fahrzeit Zahl Dauer der Fahrt
FahrerName Text Name des Fahrers
FahrerVorname Text Vorname des Fahrers
FahrerStrasse Text Straße, in der der Fahrer wohnt
FahrerPLZ Text PLZ der Anschrift des Fahrers
FahrerWohnort Text Wohnort des Fahrers
FahrerTelefon Text Telefonnummer des Fahrers
FahrerGehalt Zahl (Währung) Gehalt des Fahrers
gebuchtePlaetze Zahl Anzahl der für die Fahrt gebuchten Plätze

Entwerfen Sie ein Entity-Relationship-Modell für die vorgegebenen Daten. Versuchen Sie
dabei, zusammengehörige Daten zu finden und diese in mehreren Relationen zusammen-
zufassen.
2. Überführen Sie dieses ER-Modell in das relationale Modell.
3. Normalisieren Sie den Datenbankentwurf (bis zur dritten Normalform). Achten Sie auf
transitive Abhängigkeiten.
4. Was ist bei der Datenerfassung in Bezug auf die Schlüsselwerte zu beachten?
5. Welche Beziehungen bestehen zwischen den Relationen des Beispiels Busreise-
Unternehmen? Wie werden diese Beziehungen im Relationenmodell umgesetzt?
6. Erstellen Sie für jede Relation eine Beispieltabelle mit einigen Beispielwerten.

© HERDT-Verlag
Schulversion 65
5 Datenbanken

5
5. Datenbanken

5.1 Die Datenbankabfragesprache SQL


Die Datenbankabfragesprache SQL wurde aus der Abfragesprache SEQUEL (Structured English
QUEry Language) der Firma IBM entwickelt. Mit der Entwicklung der Sprache wurde das Ziel
verfolgt, auch für Nicht-Programmierer eine relativ einfache Sprache zur Abfrage von Daten-
banken zur Verfügung zu stellen, die keine mathematischen Notationen (z. B. die Quantoren
∀ und ∃) verwendet.

SQL entwickelte sich zum internationalen Standard und wurde 1986 vom ANSI (American
National Standards Institute) als Standard SQL1 (SQL-86) festgelegt. Im Laufe der Jahre wurde
die Sprache intensiv weiterentwickelt und ANSI veröffentlichte weitere Standards, die analog zu
dem betreffenden Jahr mit SQL-89, SQL-92, SQL:1999, SQL:2003, SQL:2006, SQL:2008, SQL:2011
und SQL:2016 bezeichnet wurden. Für SQL-92 wird allgemein auch die Bezeichnung SQL2 und für
SQL:1999 die Bezeichnung SQL3 verwendet. Die neueste Version SQL:2016 wurde im Dezember
des Jahres 2016 veröffentlicht. Der Standard wurde im Vergleich zur Vorversion neben einer
Reihe optionaler Ergänzungen um zwei Funktionen erweitert:

 Die Unterstützung von JSON


Die JavaScript Object Notation (JSON) dient als kompaktes Datenformat dem Daten-
austausch zwischen Anwendungen und ist besonders im Bereich der Web- und mobilen
Anwendungen weit verbreitet. Das Format besitzt eine einfach lesbare Textform, ist
unabhängig von Programmiersprachen und wird in allen wichtigen Programmiersprachen
durch sogenannte Parser zur Analyse der Daten unterstützt.
 Die Unterstützung des sogenannten row pattern matching
Diese Funktion dient der Analyse von Tabellenzeilen zur Erkennung von Ähnlichkeiten und
Trends unter Verwendung regulärer Ausdrücke, befindet sich jedoch noch im Anfangs-
stadium. So werden nicht alle regulären Ausdrücke unterstützt und auch die praktische
Anwendung ist zum Zeitpunkt der Erstellung dieses Buches nur eingeschränkt möglich,
lediglich das DBMS Oracle unterstützt einige Möglichkeiten.

Die Spezifikation umfasst sowohl die Syntax und Semantik der Datenbankabfrage- und Daten-
manipulationssprache SQL als auch Konzepte des DBS (Transaktionen, Zugriffsschutz, Sicherung
der Integrität, Implementierung objektorientierter Funktionalität etc.).

66 Schulversion © HERDT-Verlag
Datenbanken 5

Bei all den Weiterentwicklungen der Sprache basieren aktuelle Datenbanken in der Regel immer
noch auf dem SQL2-Standard. Die Modifikationen der nachfolgenden Standards werden dabei in
unterschiedlichem Maß in die Datenbanken implementiert.

Der Sprachumfang von SQL2 wird durch die drei Conformance Level untergliedert:

Entry-Level Der Entry-Level wird von den meisten relationalen DBS unterstützt und ent-
spricht nahezu dem ANSI-Standard von 1989. Er umfasst die grundlegenden
Befehle zum Anlegen von Datenbanken und Tabellen, zu deren Bearbeitung und
Verwaltung (z. B. CREATE-, SELECT-, SHOW-Anweisungen).
Intermediate- Der Intermediate-Level bietet zusätzliche Funktionalität (z. B. einen zusätzlichen
Level Datums- und Zeit-Datentyp, Mengenoperationen, dynamisches SQL).
Full-Level Der Full-Level enthält Funktionen, die bis jetzt nur unvollständig in DBS
implementiert sind (z. B. Constraints über mehrere Tabellen, Constraint-Modi,
SELECT-Befehle in der FROM-Klausel).

Die Hersteller von DBMS implementieren meist die gesamte Funktionalität des SQL2-Entry-Levels
und Teile der anderen Level. Häufig werden aber auch eigene Erweiterungen eingebaut, was die
Portierung erschwert. Anpassungen lassen sich aber relativ leicht durchführen.

Ab SQL:1999 wird die Sprache nicht mehr in die drei Level eingeteilt. Ein Kernsystem Core-SQL
enthält einen großen Teil des Funktionsumfangs der Sprache (entsprechend dem Full-Level).
Zusätzlich werden Erweiterungen angeboten. Von diesen ursprünglich 14 Stück sind noch
9 relevant:
 Teil 1: SQL/Framework
 Teil 2: SQL/Foundation
 Teil 3: SQL/CLI (Call-Level Interface)
 Teil 4: SQL/PSM (Persistent Stored Modules)
 Teil 9: SQL/MED (Management of External Data)
 Teil 10: SQL/OLB (Object Language Bindings)
 Teil 11: SQL/Schemata (Information and Definition Schemas)
 Teil 13: SQL/JRT (SQL Routines and Types Using the Java TM Programming Language)
 Teil 14: SQL/XML (XML-Related Specifications)

In diesen Bereich gehört auch die Erweiterung zu JSON. Zusätzlich gibt es noch weitere SQL-
Pakete für Multimedia und Anwendungen.

Für die Version SQL:2008 entschied die Standardisierungskommission, dass vier der neun Teile –
SQL/CLI, SQL/MED, SQL/OLB und SQL/JRT – stabil sind und keine weitere Überarbeitung benötigen.
Somit betreffen die späteren Neuerungen nur die Teile SQL/Framework, SQL/Foundation, SQL/
PSM, SQL/Schemata und SQL/XML.

Zwecks Einsicht können auf der Webseite http://www.iso.org die Definitionen der einzelnen Teile
des Standards erworben werden. Zu erreichen ist Liste der Dokumente über die Suche nach
'9075'.

© HERDT-Verlag
Schulversion 67
5 Datenbanken

SQL ist eine interaktive Sprache und erlaubt Ad-hoc-Abfragen von Datenbanken (Abfragen, die
sofort ausgeführt werden). Über sogenannte SQL-Skripts können Sie mehrere SQL-Anweisungen
automatisiert ausführen lassen. Außer zur interaktiven Eingabe wird SQL auch in Anwendungen
zur Kommunikation mit einer Datenbank eingesetzt. Dabei können lesende wie auch schreibende
Zugriffe durchgeführt werden.

Zum Sprachumfang von SQL gehören vier Befehlsgruppen:

DDL (Data Definition Language) Erstellen von Datenbanken, Tabellen (Relationen) und Indizes
DQL (Data Query Language) Abfragen von Daten
DML (Data Manipulation Anlegen, Ändern und Löschen von Datensätzen
Language)
DCL (Data Control Language) Anlegen von Benutzern und Vergabe von Zugriffsrechten

5.2 Datenbank erstellen


Beim Aufbau einer Datenbank gehen Sie prinzipiell wie folgt vor:
 Legen Sie zuerst die Datenbank an.
Sie dient als Container für die Tabellen und alle weiteren Datenbankobjekte.
 Erstellen Sie danach die benötigten Tabellen.
Dabei legen Sie zunächst nur die Struktur der Tabellen fest, d. h., welche Spalten sie ent-
halten sollen und welche Datentypen darin gespeichert werden und legen den Primär-
schlüssel für die Tabelle fest.
 Füllen Sie jetzt die Tabellen mit den Daten.
Tabellen sind die einzigen Datenbankobjekte, in denen die Daten physisch gespeichert
werden. Nun können Sie Auswertungen der Daten vornehmen oder weitere Aktionen
ausführen, z. B. Daten ändern oder löschen.

Der erste Schritt beim Erstellen einer Datenbank ist das Anlegen der Datenbank selbst. In ihr
werden später die Daten in Form von mehreren Tabellen gespeichert.

Sie können unbegrenzt viele Datenbanken erstellen und so die zu speichernden Daten nach
Themengebieten zusammenfassen. Falls unterschiedliche Benutzer mit dem Datenbanksystem
arbeiten, sollten Sie auf die korrekte Vergabe von Zugriffsrechten für die einzelnen Benutzer
achten.

68 Schulversion © HERDT-Verlag
Datenbanken 5

Erstellen und Auswählen einer neuen Datenbank in MariaDB

Über die Anweisung CREATE DATABASE erstellen Sie eine neue Datenbank. Diese Datenbank
enthält noch keine eigenen Tabellen. Oft sind jedoch bereits einige Systemtabellen enthalten,
die z. B. Informationen über die Datenbank und die Datenbankobjekte enthalten, sogenannte
Metadaten.

Um eine Datenbank erstellen zu können, benötigen Sie das Ausführungsrecht für die CREATE-
DATABASE-Anweisung. Der Administrator vergibt dieses Recht mit der Anweisung GRANT
CREATE DATABASE. Der Benutzer, der die Datenbank erstellt, wird danach zu ihrem
Eigentümer.

Datenbank in MariaDB erstellen


In MariaDB können Sie eine neue Datenbank entweder über den Datenbank-Client mariaDB
monitor erstellen, der zum Lieferumfang von MariaDB für die verschiedenen Betriebssysteme
gehört, oder Sie verwenden eines der Hilfsprogramme mit grafischer Oberfläche, die es für
MariaDB gibt.

Aufgrund ihrer Herkunft als Ableger von MySQL verwendet MariaDB an vielen Stellen Kompon-
enten von MySQL, so dass sich dieser Name in der Bezeichnung von Zusatzprogrammen und
Befehlen wiederfindet.

Über die folgenden Anweisungen erstellen Sie eine neue Datenbank in MariaDB und wählen
diese aus.

CREATE DATABASE IF NOT EXISTS mav;


USE mav;

 Mit dieser Anweisung wird eine neue Datenbank mit dem Namen mav erstellt, falls diese
noch nicht existiert.
 Die neue Datenbank wird ausgewählt, damit sie bearbeitet werden kann. Es kann immer nur
eine Datenbank ausgewählt sein.

Das Erstellen einer Datenbank in MariaDB bedeutet das Erzeugen eines neuen Verzeichnisses im
Dateisystem mit dem entsprechenden Datenbanknamen. Je nach verwendetem Betriebssystem
wird daher zwischen Groß- und Kleinschreibung unterschieden, z. B. unter Linux. Die Datenbank-
verzeichnisse befinden sich im Verzeichnis ..\data des MariaDB-Installationsverzeichnisses oder
des MariaDB-Benutzerverzeichnisses (unter Windows beispielsweise C:\Program Files\MariaDB
10.2\data).

© HERDT-Verlag
Schulversion 69
5 Datenbanken

Syntax
CREATE DATABASE [IF NOT EXISTS] datenbankname;

 Mit der SQL-Anweisung CREATE werden neue Datenbankobjekte erzeugt. Danach erfolgt
die Angabe, welches Objekt erzeugt werden soll, in diesem Fall eine neue Datenbank
(DATABASE). Zum Abschluss müssen Sie den gewünschten Namen der Datenbank angeben.
 Falls die Datenbank bereits existiert, wird eine Fehlermeldung ausgegeben. Um dies zu
umgehen, kann die Anweisung IF NOT EXISTS hinzugefügt werden. In diesem Fall wird die
Datenbank nur dann erstellt, falls sie noch nicht existiert.

Für die Vergabe des Datenbanknamens unter MariaDB gelten die folgenden Regeln:

 Der Name darf maximal 64 Zeichen umfassen.


 Es sind alle Zeichen erlaubt, die in einem Verzeichnisnamen des betreffenden Betriebs-
systems verwendet werden dürfen. Nicht erlaubt ist grundsätzlich das Zeichen /.

Datenbank mit PostgreSQL erstellen


In PostgreSQL können Sie eine Datenbank mit dem Datenbank-Client psql erstellen, der zum
Lieferumfang von PostgreSQL für die verschiedenen Betriebssysteme gehört, oder Sie ver-
wenden eines der Hilfsprogramme mit grafischer Oberfläche, die es für PostgreSQL gibt.

Über die folgende Anweisung wird eine Datenbank mit PostgreSQL erstellt:

CREATE DATABASE mav


WITH OWNER = "postgres"

 Mit dieser Anweisung wird eine neue Datenbank mit dem Namen mav erstellt. PostgreSQL
erwartet dabei die Angabe eines Datenbankdateinamens für die Datenbank. Mit den optio-
nalen Parametern WITH OWNER wird der Besitzer der Datenbank festgelegt. Es können später
weitere Benutzer für die Datenbank angelegt werden.

Syntax
CREATE DATABASE datenbankname
[WITH OWNER benutzername
TEMPLATE template
ENCODING kodierung
TABLESPACE tablespace];

 Über die SQL-Anweisung CREATE werden neue Datenbankobjekte erzeugt. Danach erfolgt
die Angabe, welches Objekt erzeugt werden soll; in diesem Fall eine Datenbank (DATABASE).
 Optional kann beim Erstellen ein Besitzer der Datenbank festgelegt werden. Dazu wird der
Parameter OWNER verwendet. Der Besitzer muss bereits angelegt sein. Wenn Sie statt-
dessen den Standardwert verwenden möchten (in dem Fall der Benutzer, der den Befehl
ausführt), geben Sie DEFAULT ein.
 Mit dem Parameter TEMPLATE kann eine Datenbankvorlage gewählt werden, die für die
Erstellung der neuen Datenbank verwendet werden soll.

70 Schulversion © HERDT-Verlag
Datenbanken 5

 Der Parameter ENCODING ermöglicht Ihnen die Festlegung einer Zeichenkodierung


(z. B. SQL_ASCII). Der Standardwert ist hier die Kodierung der gewählten Datenbankvorlage.
 Möchten Sie einen anderen Tablespace angeben als in der Datenbankvorlage, können Sie
über den Parameter TABLESPACE individuelle Einstellungen vornehmen.

Für die Vergabe des Datenbanknamens unter PostgreSQL gelten die folgenden Regeln:

 Der Datenbankname unterliegt den Regeln des verwendeten Dateisystems. Es sind alle
Zeichen erlaubt, die in einem Verzeichnisnamen des verwendeten Betriebssystems ver-
wendet werden können. Nicht erlaubt ist grundsätzlich das Zeichen /.
 Der Name darf maximal 64 Zeichen umfassen.

5.3 Datenbank anzeigen und auswählen

Datenbank anzeigen
Wenn Sie den Namen einer bestimmten Datenbank nicht kennen,
können Sie sich eine Liste der vorhandenen Datenbanken anzeigen
lassen.

In MariaDB zeigen Sie mit der Anweisung SHOW DATABASES Anzeige der vorhandenen
alle bestehenden Datenbanken an. Datenbanken in MariaDB

Syntax
SHOW DATABASES;

In PostgreSQL geben Sie den Befehl "\l" (Backslash und kleines L) ein, um eine Auflistung aller
Datenbanken sowie deren Eigentümer anzeigen zu lassen.

Anzeige der vorhandenen Datenbanken in PostgreSQL

Syntax
\l

© HERDT-Verlag
Schulversion 71
5 Datenbanken

Datenbank auswählen in MariaDB


Bevor Sie mit einer bestimmten Datenbank und den darin befindlichen Datenbankobjekten
arbeiten können, müssen Sie diese auswählen.

In MariaDB erfolgt die Angabe eines berechtigten Benutzers bereits beim Aufruf des Datenbank-
Clients, eine bestimmte Datenbank ist dann jedoch noch nicht aktiviert. Um die zu bearbeitende
Datenbank auszuwählen, verwenden Sie die Anweisung USE. Danach folgt die Angabe des
Datenbanknamens.

USE mav;

 Die Datenbank mav wird ausgewählt.

Syntax der Anweisung USE in MariaDB


USE datenbankname;

 Die Anweisung USE wählt die angegebene Datenbank aus. Alle weiteren Anweisungen
beziehen sich auf diese Datenbank.

Datenbank wechseln mit PostgreSQL


In PostgreSQL erfolgt die Angabe eines berechtigten Benutzers und der betreffenden Datenbank
bereits beim Aufruf des Datenbank-Clients. Das heißt, Sie sind bereits mit der Datenbank ver-
bunden, mit der Sie sich anmelden. Möchten Sie eine andere Datenbank zur Bearbeitung wählen,
geben Sie "\c datenbankname" ein.

Datenbank wechseln mit PostgreSQL

Syntax in PostgreSQL
\c datenbankname;

 Die Anweisung \c wählt die angegebene Datenbank aus. Alle weiteren Anweisungen
beziehen sich auf diese Datenbank.

72 Schulversion © HERDT-Verlag
Datenbanken 5

5.4 Datenbank löschen


Über die Anweisung DROP DATABASE wird eine Datenbank mit allen enthaltenen Daten
gelöscht. Dabei wird keine Warnmeldung ausgegeben, der Vorgang kann nicht rückgängig
gemacht werden. Mit diesem Befehl werden die Katalogeinträge der Datenbank sowie das
Verzeichnis inklusive der Daten gelöscht.

Syntax in MariaDB
DROP DATABASE [IF EXISTS] datenbankname;

 Der Name der Datenbank folgt am Ende der Anweisung.


 Die Anweisung IF EXISTS verhindert das Auftreten von Fehlermeldungen, falls die Daten-
bank nicht existiert.

Syntax in PostgreSQL
DROP DATABASE datenbankname;

 Der Name der Datenbank folgt am Ende der Anweisung.

5.5 Übung
Neue Datenbanken erstellen und löschen
Übungsdatei: -- Ergebnisdatei: Uebung.sql

1. Erstellen Sie eine Datenbank mit dem Namen Uebungen. Verwenden Sie dazu den ent-
sprechenden Datenbank-Client.
2. Erstellen Sie eine Datenbank mit dem Namen testdb.
3. Wechseln Sie zur Datenbank testdb.
4. Löschen Sie die Datenbank testdb.

© HERDT-Verlag
Schulversion 73
6 Tabellen erstellen und verwalten

6
6. Tabellen erstellen und verwalten

6.1 Tabellen erstellen


Tabellen (Relationen) sind die einzigen Objekte einer Datenbank, in denen die Daten gespeichert
werden. Jeder Zugriff auf die Daten erfolgt über die Tabellen. Bei jeder Abfrage oder Auswertung
muss der Name der Tabelle angegeben werden. Die Datenbank dient dabei als Container für die
logisch zusammengehörigen Tabellen. Der Tabellenname muss innerhalb einer Datenbank ein-
deutig sein, kann aber in mehreren Datenbanken eines DBS verwendet werden.

Eine Tabelle besteht aus einzelnen Feldern (Datenfeldern, Attributen, Spalten). Durch die Namen
und Datentypen der Felder wird die Struktur bzw. das Schema der Tabelle festgelegt. Zusammen-
gehörige Daten werden in eine Zeile der Tabelle eingetragen. Sie bilden einen Datensatz bzw. ein
Tupel.

Um eine Tabelle erstellen zu können, benötigen Sie das Ausführungsrecht für die Anweisung
CREATE TABLE. Der Administrator vergibt dieses Recht mit der Anweisung GRANT CREATE
TABLE. Der Benutzer, der die Tabelle erstellt, wird danach zu ihrem Eigentümer.

Einfache Tabellen erstellen


Eine Tabelle mit den dazugehörigen Datenfeldern erstellen Sie mit der Anweisung CREATE TABLE.
Die Anweisung besitzt sehr viele zusätzliche Optionen, die z. B. das Erstellen von Indizes oder das
Definieren von Standardwerten erlauben.

Beispiel: Mitarbeiter.sql
Im Folgenden wird eine Tabelle mit vier Feldern zum Speichern von Mitarbeiterdaten erzeugt.

CREATE TABLE t_ma


(id INTEGER NOT NULL,
 vname VARCHAR(100),
name VARCHAR(100),
 adr TEXT);

 Die neue Tabelle erhält den Namen t_ma. In Klammern folgt die Definition der Datenfelder.

74 Schulversion © HERDT-Verlag
Tabellen erstellen und verwalten 6

 Das erste Datenfeld heißt id und ist vom Typ INTEGER. Es kann ganze Zahlen mit einer Länge
von vier Bytes speichern. Da anhand der Einträge im Feld id die einzelnen Datensätze identifi-
ziert werden sollen, wird zusätzlich festgelegt, dass das Feld immer einen Wert enthalten muss
(NOT NULL, vgl. nachfolgende Tabelle).
 Die Felder vname und name werden mit dem Datentyp VARCHAR und einer maximalen
Länge von 100 Zeichen definiert. Bei diesem Datentyp werden nur so viele Zeichen in der
Tabelle gespeichert wie tatsächlich benötigt.
 Hier wird zu Demonstrationszwecken ein Datenfeld vom Typ TEXT angelegt. Es ermöglicht
das Speichern größerer Textmengen mit variabler Länge. In der praktischen Umsetzung
spaltet man die Adresse in einzelne Felder verschiedener Länge vom Datentyp VARCHAR,
beispielsweise plz, ort, str und hnr, auf und speichert die Adresse nicht in einem einzigen
Datenfeld.

 Damit Sie einen Tabellennamen besser von anderen


Datenbankobjekten (z. B. Abfragen oder Stored
Procedures) unterscheiden können, empfiehlt es sich,
ein Präfix als Kennzeichen voranzustellen, z. B. t_.
 Wie lang der Name eines Datenbankobjektes sein
Erstellen einer neuen Tabelle mit MariaDB
kann, ist vom jeweiligen DBS abhängig.

Syntax
CREATE TABLE tabellenname
(datenfeld1 datentyp1 [DEFAULT standardwert1 | NULL | NOT NULL]
[AUTO_INCREMENT],
...
datenfeldX datentypX [DEFAULT standardwertX | NULL | NOT NULL]
[AUTO_INCREMENT],
PRIMARY KEY(datenfeldname));

 Mit der Anweisung CREATE TABLE wird eine neue leere Tabelle in der aktiven Datenbank
erstellt. Danach folgt der gewünschte Tabellenname. Dieser muss eindeutig sein.
 In runden Klammern folgen die Definitionen der einzelnen Datenfelder. Für jedes Datenfeld
müssen dabei ein Name und ein Datentyp angegeben werden. Es muss mindestens ein
Datenfeld definiert werden.
 Mit der Angabe PRIMARY KEY kann ein Datenfeld als Primärschlüssel festgelegt werden.
Der Primärschlüssel ermöglicht es, einen Datensatz eindeutig zu identifizieren.

Folgende optionale Parameter sind bei der Definition von Datenfeldern möglich:

Der Wert NULL bedeutet, dass ein Datenfeld keinen Inhalt besitzt. Er ist nicht mit der Zahl 0
und je nach Datenbanksystem auch nicht mit einer leeren Zeichenkette identisch. NULL-
Werte können entstehen, wenn beim Einfügen von Daten in eine Tabelle für bestimmte
Spalten keine Werte angegeben werden. In einer Abfrage kann auf den Wert NULL geprüft
werden.

© HERDT-Verlag
Schulversion 75
6 Tabellen erstellen und verwalten

NULL Mit diesem Parameter wird festgelegt, dass das Datenfeld


standardmäßig keinen Wert (auch nicht 0 oder eine leere
Zeichenkette) enthält und ein Datensatz in diesem Feld auch
keinen Wert enthalten muss.
NOT NULL Mit diesem Parameter wird die Eingabe eines Wertes für das
entsprechende Datenfeld erzwungen. Die Angabe NOT NULL ist
für Schlüsselfelder unbedingt anzugeben.
DEFAULT standardwert Der Parameter DEFAULT definiert einen Standardwert für das
Datenfeld. Erhält dieses Datenfeld bei der Eingabe der Daten
keinen Wert, wird der Standardwert verwendet.
Mit NOT NULL definierte Datenfelder benötigen immer einen
Standardwert.
AUTO_INCREMENT Der Wert dieses Datenfeldes wird automatisch beim Anlegen
(MariaDB) eines neuen Datensatzes aus dem Wert des Datenfeldes des
SERIAL (PostgreSQL) vorherigen Datensatzes plus eins errechnet. Dieser Wert kann
vom Benutzer nicht geändert werden. Diese Einstellung ist
besonders für den Primärschlüssel empfehlenswert, da dadurch
automatisch ein eindeutiger Schlüsselwert erzeugt wird.

In verschiedenen Datenbanksystemen sind nicht immer alle angegebenen Möglichkeiten zur Defini-
tion einer Tabellenstruktur vorhanden. Es ist auch möglich, dass diese einen anderen Namen für die
betreffende Einstellung verwenden.

Beispiele für die Definition von Datenfeldern


Definition in der Erklärung
CREATE-TABLE-Anweisung
ort VARCHAR(100) Das Datenfeld ort wird mit dem Datentyp VARCHAR definiert
und ist maximal 100 Zeichen lang.
id INTEGER NOT NULL Für das Datenfeld id wird der Integer-Datentyp zum Speichern
von ganzen Zahlen festgelegt. Die Angabe NOT NULL erzwingt –
da kein DEFAULT-Wert festgelegt wird – die Eingabe eines
Wertes beim Anlegen eines neuen Datensatzes.
anzahl DEFAULT 1 Für das Datenfeld anzahl wird ein Standardwert 1 definiert.
ort DEFAULT "Berlin" Im Datenfeld ort wird der Standardwert Berlin verwendet.

76 Schulversion © HERDT-Verlag
Tabellen erstellen und verwalten 6

6.2 Datentypen festlegen


Beim Erstellen einer Tabelle muss für jedes Datenfeld ein Datentyp angegeben werden. Der ver-
wendete Datentyp entscheidet, ob in einem Feld Zahlen, Zeichenketten oder andere Daten
gespeichert werden. SQL bietet eine große Anzahl an Datentypen, im Folgenden werden einige
typische Datentypen beispielhaft vorgestellt. Einige der vorgestellten Datentypen werden nicht
von allen DBMS unterstützt.

Numerische Datentypen für ganzzahlige Werte


In Feldern dieses Datentyps werden ganzzahlige Werte (Integer-Zahlen) ohne Kommastellen
gespeichert.

Datentyp Speicherbedarf Wertebereich


SMALLINT 2 Byte -32768 bis +32767
INTEGER 4 Byte -2147483648 bis +2147483647
BIGINT 8 Byte -9223372036854775808 +9223372036854775808

Integer-Datentypen eignen sich besonders für eindeutige Identifikationsnummern, z. B.


Primärschlüssel einer Tabelle. Der Zugriff auf solche Datenfelder erfolgt besonders schnell,
da Prozessoren in Computern für Zahlenwerte optimiert sind.

Numerische Datentypen für Fließkommazahlen


Mit diesen Datentypen können Sie Zahlenwerte mit Nachkommastellen speichern. Die Daten-
typen unterscheiden sich dabei im Wertebereich.

Datentyp Speicherbedarf Wertebereich


FLOAT (n) 4 oder 8 Byte Die Gesamtstellenanzahl kann durch n festgelegt
werden. Je nach Angabe von n können 7 bis 15 signi-
fikante Stellen plattformunabhängig gespeichert
werden.
REAL 4 Byte 7 signifikante Stellen (keine plattformunabhängige
Speicherung)
DOUBLE PRECISION 8 Byte 15 signifikante Stellen (keine plattformunabhängige
Speicherung)

Die Datentypen können einen Zahlenwert mit der angegebenen Anzahl an Gleitkommastellen
speichern. Alle Ziffern nach der Anzahl signifikanter Stellen werden abgeschnitten, daher wird
bei diesen Datentypen nicht immer die genaue Größe gespeichert, sondern die näherungsweise
Größe.

© HERDT-Verlag
Schulversion 77
6 Tabellen erstellen und verwalten

Numerische Datentypen für Festkommazahlen


Diese Datentypen eignen sich für das Speichern formatierter Zahlen mit einer festen Anzahl von
Nachkommastellen. Damit können z. B. Währungsangaben oder Messwerte gespeichert werden.

Datentyp Erklärung
NUMERIC(Präzision, Skalierung) Der Parameter Präzision (1-15) legt die
DECIMAL(Präzision, Skalierung) Gesamtzahl der signifikanten Stellen der Zahl
fest. Der Parameter Skalierung (1-15) be-
Beispiel:
stimmt die Anzahl der Nachkommastellen, die
DECIMAL(8,3) speichert Zahlen zwischen kleiner oder gleich der Gesamtzahl der Stellen
-99999,999 und 99999,999 sein muss. Der Unterschied zwischen NUMERIC
und DECIMAL liegt darin, dass NUMERIC die
exakte Anzahl und DECIMAL die minimale
Anzahl der signifikanten Stellen agibt.

Datentypen für Datums- und Zeitwerte


Für Datums- und Zeitwerte gibt es spezielle Datentypen. Abhängig vom Datenbank-Server
werden unterschiedliche Wertebereiche zugelassen.

Datentyp Speicherbedarf Wertebereich


DATE 4 Byte unterschiedlich:
01.01.1000 bis 31.12.9999 (MariaDB)
4713 BC bis 5874897 AD (PostgreSQL)
TIME 3 bzw. 8 Byte unterschiedlich:
-838:59:59 bis 838:59:59 (MariaDB)
00:00:00 bis 23:59:99 (PostgreSQL)
TIMESTAMP 4 bzw. 8 Byte unterschiedlich:
'1970-01-01 00:00:01' bis '2038-01-19 03:14:07'
(MariaDB)
4713 v.u.Z. bis 1465001 u.Z. (PostgreSQL)

 Bei der Eingabe können Datumswerte in verschiedenen Formaten angegeben werden.


Die Umwandlung in das interne Format erfolgt automatisch.
 Zeitwerte geben Sie in der Form hh:mm:ss an.
 Bei Timestamps kann über die Angabe eines Zusatzwertes die Genauigkeit gesteuert werden
(bis zur Speicherung von Microsekunden).
In MariaDB erfolgt dies über YYYY:MM:DD HH:MM:SS[.fraction], wobei fraction
ein Wert zwischen 000000 und 999999 ist.
In PostgreSQL wird zwischen Timestamps mit und ohne Zeitzone unterschieden. Die Angabe
zur Steuerung der Genauigkeit der Sekunden erfolgt über einen Zusatzwert p im Bereich
zwischen 0 und 6 vor der Angabe des Timestamps: TIMESTAMP [(p)] YYYY:MM:DD
HH:MM:SS.

78 Schulversion © HERDT-Verlag
Tabellen erstellen und verwalten 6

Eingabeformat Beispiel
tt.mm.jj 12.07.18
tt-mmm-jj 12-JUL-18
mm-tt-jj 07-12-18

Für die Angabe des Monatsnamens können Sie folgende Syntax verwenden: Jan, Feb, Mar, Apr,
May, Jun, Jul, Aug, Sep, Oct, Nov, Dec. Die Groß- und Kleinschreibung wird dabei nicht beachtet.

Jahresangaben können zwei- oder vierstellig erfolgen. Bei zweistelliger Angabe wird automatisch
das aktuelle Jahrhundert angenommen.

Datentypen für Zeichen und Texte


SQL sieht verschiedene Datentypen vor, um Textinformationen zu speichern. Es gibt dabei Daten-
typen mit variabler und fester Länge.

Datentyp Erklärung
CHAR(Länge) Dieser Datentyp dient zum Speichern beliebiger Textinformationen. Die
Länge = 1..255 maximale Länge wird dabei als Parameter übergeben. Unabhängig von
der tatsächlichen Länge der gespeicherten Information wird stets die bei
der Definition angegebene Anzahl Zeichen gespeichert.
VARCHAR(Länge) Zum Speichern beliebiger Textinformationen wird auch dieser Typ ver-
Länge = 1..255 wendet. Auch hier wird die maximale Länge als Parameter übergeben. In
ein Datenfeld dieses Typs eingegebener Text wird in seiner tatsächlichen
Länge gespeichert; in zwei zusätzlichen Bytes wird die Länge des Textes
abgelegt.
BLOB Dieser Datentyp (Binary Large Objects) wird zum Speichern großer, auch
(mariaDB) binärer Datenmengen eingesetzt, z. B. sehr großer Textdateien, Grafi-
ken, Bilder oder Videos.
BYTEA Bei PostgreSQL gibt es den Datentyp BLOB nicht, dafür kann jedoch der
(PostgreSQL) Datentyp BYTEA verwendet werden, der vergleichbar mit BLOB ist.
TEXT Wie auch in BLOB-Feldern können Sie hier größere Informations-
mengen mit variabler Länge speichern. Der Unterschied zu BLOB-
Feldern liegt in der anderen Sortierreihenfolge, die bei TEXT-Feldern
unabhängig von der Groß- und Kleinschreibung ist.

Da der Datentyp VARCHAR zwei zusätzliche Bytes für die Längenspeicherung benötigt, sollten Sie
ihn nicht für die Definition sehr kurzer Datenfelder einsetzen. In einigen Datenbanksystemen
erfolgt der Zugriff auf die mit fester Länge gespeicherten CHAR-Datenfelder schneller als auf
VARCHAR-Datenfelder. VARCHAR-Datenfelder eignen sind besonders für die Speicherung von
unterschiedlich langen Texten.

© HERDT-Verlag
Schulversion 79
6 Tabellen erstellen und verwalten

Logischer Datentyp
SQL bietet auch die Möglichkeit, logische Werte zu speichern.

Datentyp Erklärung
BOOLEAN Logische Werte Ja/Nein bzw. True/False. NULL ist ebenfalls möglich und wird
als UNKNOWN interpretiert.

Datentypumwandlung
Datentypen lassen sich ineinander umwandeln. Das ist z. B. bei Vergleichen von Werten unter-
schiedlichen Datentyps oder bei Abfragen erforderlich, in denen zwei Tabellen über Datenfelder
unterschiedlichen Typs verknüpft werden. Es wird zwischen impliziter (automatischer) und
expliziter Typumwandlung unterschieden.

Eine implizite Typumwandlung findet beispielsweise statt, wenn Sie eine Zahl vom Typ
SMALLINT mit einer INTEGER-Zahl vergleichen. Die Konvertierung erfolgt immer vom
„niedrigeren“ zum „höheren“ Datentyp, z. B. von SMALLINT zu INTEGER.

Explizit wird eine Typumwandlung über die Funktion CAST durchgeführt.

Syntax der CAST-Anweisung


CAST (Wert AS Datentyp)

 Die Funktion wandelt den angegebenen Wert in den Datentyp um, der nach dem Schlüsselwort
AS aufgeführt ist.
 Es können folgende Typen ineinander umgewandelt werden:
NUMERIC  CHAR, VARCHAR, DATE
CHAR, VARCHAR  NUMMERIC, DATE
DATE  CHAR, VARCHAR, DATE
BLOB, TEXT  nicht möglich

6.3 Constraints in Tabellen verwenden


Beim Erstellen von Tabellen können Sie bereits einfache Bedingungen für die zu speichernden
Daten definieren. Dazu gehört z. B., dass NULL-Werte nicht zugelassen sein sollen, dass ein Feld
als Primärschlüssel dienen soll oder dass eine Gültigkeitsprüfung für einen Wertebereich eines
Datenfeldes durchgeführt werden soll. Wenn diese sogenannten Constraints (engl. für Zwang,
Nebenbedingung) bei der Datenbearbeitung nicht erfüllt sind, wird eine Fehlermeldung
ausgegeben.

Sie können Constraints entweder bei der Definition einer Spalte festlegen (Spaltenconstraint)
oder nach Angabe aller Spalten als Zusatz angeben (Tabellenconstraint).

80 Schulversion © HERDT-Verlag
Tabellen erstellen und verwalten 6

Beispiel: Produkte.sql
CREATE TABLE t_produkte
(p_id INTEGER NOT NULL,
name VARCHAR(50), lagernr INTEGER, anzahl INTEGER,
PRIMARY KEY(p_id));

 Die Spalte p_id beinhaltet die Bedingung, dass NULL-Werte nicht zugelassen sind (Spalten-
constraint).
 Nach Angabe aller Spalten wird die Bedingung festgelegt, dass die Spalte p_id als Primär-
schlüssel dient (Tabellenconstraint).

In diesem Beispiel könnte der Primärschlüssel auch als Spaltenconstraint festgelegt werden.

CREATE TABLE t_produkte


(p_id INTEGER PRIMARY KEY,
name VARCHAR(50), lagernr INTEGER, anzahl INTEGER);

Integritätsregeln für Tabellen mit der Anweisung CONSTRAINT festlegen


Möchten Sie für Ihre Tabellen eine bestimmte Gültigkeitsprüfung angeben, die die Integritäts-
regeln Ihrer Datenbank gewährleistet, können Sie die Anweisung CONSTRAINT verwenden, die
nach der Definition der Datenfelder angegeben wird. Bei der Erstellung der Integritätsregeln gilt:

 Ein Datenfeld kann mehrere CONSTRAINT-Anweisungen besitzen.


 Eine CONSTRAINT-Anweisung kann sich auf mehrere Datenfelder beziehen.
 Wenn die Prüfung einer CONSTRAINT-Anweisung den Wert FALSE ergibt, werden keine
Daten hinzugefügt bzw. geändert.
 CONSTRAINT-Anweisungen können nachträglich für bestehende Tabellen hinzugefügt
werden.

MariaDB erlaubt die Syntax, ignoriert jedoch reine CONSTRAINT-Anweisungen ohne eine
Fremdschlüsselbeziehung.

Beispiel: MitarbeiterAbteilungen.sql
In der Tabelle t_ma_abt wird die Beziehung zwischen den Mitarbeitern und den Abteilungen
gespeichert. Jeder Mitarbeiternummer wird eine Abteilungsnummer zugeordnet. Der Wert einer
Mitarbeiternummer muss immer größer als 1 sein. Diese Bedingung wird als Gültigkeitsprüfung
definiert.

Einige DBS, wie zum Beispiel PostgreSQL, akzeptieren den Wert NULL.

 CREATE TABLE t_ma_abt


(id INTEGER NOT NULL,
 abtname VARCHAR(25) DEFAULT "Produktion",
 ma_nr INTEGER,
 CONSTRAINT mpruef CHECK(ma_nr > 1));

© HERDT-Verlag
Schulversion 81
6 Tabellen erstellen und verwalten

 An dieser Stelle wird für das Datenfeld


abtname der Standardwert Produktion
definiert. Wenn bei einer späteren Daten-
eingabe keine Angabe erfolgt, wird dieser
Wert verwendet. Erstellen der Tabelle t_ma_abt innerhalb der
Datenbank mav in MariaDB
 Das Datenfeld ma_nr wird als Integer-Zahl
deklariert.
 Zusätzlich erfolgt nach der Definition der
Datenfelder die Angabe einer Gültigkeits-
prüfung (mpruef). Der eingegebene Wert
für das Feld ma_nr wird nur akzeptiert,
wenn er größer ist als 1.

Syntax
CREATE TABLE tabellenname
(datenfeld1 datentyp1 [DEFAULT standardwert1 | NULL | NOT NULL]
[AUTO_INCREMENT],
...
datenfeldX datentypX [DEFAULT standardwertX | NULL | NOT NULL]
[AUTO_INCREMENT],
CONSTRAINT constraintname1 CHECK (gültigkeitsprüfung),
...
PRIMARY KEY(datenfeldname));

 Die Tabellendefinition erfolgt mit der Anweisung CREATE TABLE. Danach werden in
runden Klammern die Datenfelder und Tabellenoptionen angegeben.
 Die Angabe einer Gültigkeitsbedingung wird mit dem Schlüsselwort CONSTRAINT einge-
leitet. Danach wird der gewünschte Name der Bedingung angegeben. Nach dem Schlüssel-
wort CHECK folgt in runden Klammern die Gültigkeitsbedingung.

Die Gültigkeitsbedingung muss erfüllt (wahr) sein, damit der Wert in der Tabelle gespeichert
wird. Die folgende Tabelle zeigt einige Möglichkeiten:

Bedingung Erklärung
nummer <= 100 wahr, wenn nummer kleiner oder gleich 100 ist
name NOT LIKE "%Ä%" wahr, wenn name den Buchstaben Ä nicht enthält
abteilung IN ("Einkauf", wahr, wenn abteilung den Wert Einkauf oder Verkauf
"Verkauf") besitzt

82 Schulversion © HERDT-Verlag
Tabellen erstellen und verwalten 6

6.4 Domänen verwenden

Domänen definieren
Domänen (engl. Domains) sind benutzerdefinierte Datentypen, die Sie einmalig definieren und in
verschiedenen Tabellen zum Definieren von Feldtypen verwenden können. Mit der Verwendung
von Domänen kann die Definition von Integritätsregeln deutlich vereinfacht werden, da die
Regeln dort nur einmalig und nicht bei jeder Tabellendefinition angegeben werden müssen.
Im Falle einer Änderung müssen Sie nicht jede Tabelle einzeln bearbeiten, sondern nur die ent-
sprechende Domäne verändern. Domänen sind in der gesamten Datenbank verfügbar, in der sie
definiert wurden.

Der MariaDB-Server unterstützt die Verwendung von Domänen nicht.

Beispiel
CREATE DOMAIN d_ma_nr AS INTEGER;
CREATE DOMAIN d_benutzer AS VARCHAR(15) DEFAULT "gast";
CREATE DOMAIN d_abt AS VARCHAR(15)
CHECK(VALUE IN
("Einkauf","Verkauf","Marketing","Verwaltung","Produktion"));

 Die Domäne d_ma_nr wird als Integer-Datentyp definiert.


 Die Domäne d_benutzer wird mit dem Datentyp VARCHAR und 15 Zeichen Länge definiert.
Zusätzlich wird ein Standardwert angegeben.
 Auch die Domäne d_abt wird als VARCHAR festgelegt. Darüber hinaus wird eine Prüfung
integriert, die sicherstellt, dass der zu speichernde Wert in der angegebenen Liste enthalten
ist.

Syntax
CREATE DOMAIN domänenname AS datentyp [DEFAULT standardwert];

 Die Definition einer Domäne wird mit den Schlüsselwörtern CREATE DOMAIN eingeleitet.
Danach folgen der Name der Domain und nach der Angabe AS der gewünschte Datentyp.
 Ein Standardwert wird mit dem Schlüsselwort DEFAULT angegeben.
 Wie bei der Namensvergabe von Tabellen vorgeschlagen, können Sie Domänen mit dem
Präfix d_ kennzeichnen.

Eine Domäne kann neben dem Datentyp auch mit verschiedenen Bedingungen und Prüfungen
definiert werden. Dafür wird das Schlüsselwort CHECK verwendet.

CREATE DOMAIN domänenname AS datentyp CHECK (gültigkeitsbedingung);

 Mit dem Schlüsselwort CHECK kann eine Bedingung hinzugefügt werden. In Klammern folgt
danach ein Ausdruck, der einen Wahrheitswert (wahr oder falsch) liefert. Liefert der Aus-
druck den Wert Falsch, wird die entsprechende Operation nicht durchgeführt.

© HERDT-Verlag
Schulversion 83
6 Tabellen erstellen und verwalten

Domänen verwenden
Sie können Domänen in Tabellen auf die gleiche Weise wie Standarddatentypen verwenden.

Beispiel
Es wird eine neue Domäne definiert, die in einer Tabellendefinition eingesetzt wird. Der Vorteil
des Einsatzes einer Domäne ist in diesem Fall, dass Sie die Liste der möglichen Werte erweitern
können, ohne die Tabellendefinition zu ändern.

CREATE DOMAIN d_abt AS VARCHAR(15)


CHECK(VALUE IN
("Einkauf","Verkauf","Marketing","Verwaltung","Produktion"));
CREATE TABLE t_ma_abt
(id INTEGER,
 abtname d_abt,
ma_nr INTEGER);

 Hier wird die Domäne d_abt mit dem Datentyp VARCHAR definiert. Zusätzlich wird eine
Bedingung angegeben, die sicherstellt, dass nur die angegebenen Abteilungsnamen
verwendet werden können.
 Mit der Anweisung CREATE TABLE wird die Tabelle t_ma_abt definiert. Sie soll für jeden
Mitarbeiter die zugehörige Abteilung speichern.
 An dieser Stelle wird für das Datenfeld abtname als Datentyp die Domäne d_abt verwendet.

Domänen ändern
Der Datentyp einer Domäne kann nicht geändert werden, da darauf auch die Typen der Daten-
felder in den Tabellen beruhen. Sie können jedoch den Standardwert und die Gültigkeitsprüfung
über die Anweisung ALTER DOMAIN verändern.

Beispiel
Die Definition der Domäne d_abt wird geändert. Es wird ein neuer Standardwert festgelegt und
über die Anweisung DROP CONSTRAINT die bisherige Gültigkeitsprüfung der Domäne entfernt.

ALTER DOMAIN d_abt SET DEFAULT "Produktion";


ALTER DOMAIN d_abt DROP CONSTRAINT;

84 Schulversion © HERDT-Verlag
Tabellen erstellen und verwalten 6

Syntax
ALTER DOMAIN domänenname [SET DEFAULT standardwert]
[DROP DEFAULT]
[ADD CHECK (gültigkeitsbedingung)]
[DROP CONSTRAINT];

 Über die Anweisung ALTER DOMAIN können Sie eine Domäne bearbeiten. Als erster
Parameter wird dabei der Domänenname angegeben.
 Mit dem danach folgenden Parameter wird angegeben, was geändert oder gelöscht werden
soll.

SET DEFAULT standardwert Legt einen neuen Standardwert fest


DROP DEFAULT Löscht den bisherigen Standardwert
ADD CHECK Fügt eine Gültigkeitsbedingung hinzu
(gültigkeitsbedingung)
DROP CONSTRAINT Entfernt die bestehende Gültigkeitsprüfung

Beachten Sie, dass Sie keine vorhandene Gültigkeitsprüfung bearbeiten oder ergänzen können.
Sie müssen zuerst die bestehende Prüfung mit DROP CONSTRAINT löschen und danach eine
neue Prüfung definieren.

Domänen löschen
Eine Domäne löschen Sie mit der Anweisung DROP DOMAIN. Danach können Sie die Domäne
beispielsweise mit einem anderen Datentyp neu erstellen. Um eine Domäne zu löschen, darf sie
in keiner Tabelle als Datentyp verwendet werden. Die entsprechende Datenfelddefinition muss
zuerst gelöscht werden.

Syntax
DROP DOMAIN domänenname [CASCADE/RESTRICT];

 Die Anweisung DROP DOMAIN löscht eine Domäne. Als Parameter muss ein gültiger
Domänenname angegeben werden.
 Der Parameter CASCADE löscht alle Objekte, die von der Domäne abhängig sind.
 Mit der Anweisung RESTRICT (Standardwert) können Sie verhindern, dass die Domäne
gelöscht wird, sofern noch andere Objekte von ihr abhängen.

© HERDT-Verlag
Schulversion 85
6 Tabellen erstellen und verwalten

6.5 Vorhandene Tabellen anzeigen, ändern und löschen

Vorhandene Tabellen anzeigen


Über die Anweisung SHOW TABLES können Sie die in der Datenbank
vorhandenen Tabellen auflisten. Die Abbildung zeigt das Ergebnis der
Auflistung unter MariaDB.

Anzeige der Tabellen


Syntax
SHOW TABLES [FROM datenbankname] [LIKE "muster"];

 Die Anweisung SHOW TABLES zeigt eine Liste der vorhandenen Tabellen in der aktuell
geöffneten Datenbank an.
 Mit dem Schlüsselwort FROM kann eine andere Datenbank benannt werden.
 Mithilfe von LIKE kann die Anzeige der Tabellen auf ein bestimmtes Muster im Tabellen-
namen beschränkt werden. Durch Verwendung des Musters m% werden beispielsweise nur
die Tabellen angezeigt, die mit dem Buchstaben m beginnen.

Der Befehl SHOW TABLES ist in PostgreSQL nicht hinterlegt. Sie können sich in psql die Tabellen
der aktuellen Datenbank jedoch anzeigen lassen, indem Sie den Befehl "\dt" bzw. "\d"
eingeben.

Tabellenstruktur ändern
Die Struktur einer Tabelle können Sie jederzeit über die Anweisung ALTER TABLE ändern.
Sie können …
 Datenfelder hinzufügen oder löschen,
 Datenfelddefinitionen verändern,
 Gültigkeitsprüfungen hinzufügen oder löschen,
 Schlüssel und Indizes hinzufügen oder löschen.

Mit dem Schlüsselwort ADD fügen Sie einer bestehenden Tabelle ein neues Datenfeld hinzu.
Die bereits in der Tabelle vorhandenen Datensätze enthalten danach ein neues leeres Datenfeld,
das gegebenenfalls den festgelegten Standardwert enthält. Für das Löschen eines Datenfelds,
Schlüssels oder Indizes wird die Anweisung DROP verwendet.

Beispiel: AlterTableBeispiele.sql
Im Folgenden werden einige Anweisungen zum Ändern der Tabellenstruktur vorgestellt.

ALTER TABLE t_lager


ADD artikel VARCHAR(20) DEFAULT "unbekannt";
ALTER TABLE t_ma_abt
ADD PRIMARY KEY (id);

86 Schulversion © HERDT-Verlag
Tabellen erstellen und verwalten 6

ALTER TABLE t_lager


ADD CONSTRAINT ppruef CHECK (preis > 0);
ALTER TABLE t_lager
DROP wert;

 Der Tabelle t_lager wird das neue Datenfeld artikel mit dem Standardwert unbekannt
hinzugefügt.
 Mit dieser Anweisung wird das Feld id der Tabelle t_ma_abt nachträglich als Primärschlüssel
definiert.
 Hier wird eine neue Gültigkeitsbedingung für die Tabelle t_lager definiert. Der Wert für das
Feld preis wird bei der Eingabe überprüft; er muss größer als 0 sein.
 Mithilfe der Anweisung DROP wird das angegebene Datenfeld in der Tabelle gelöscht.

Beim Löschen eines Datenfelds werden die enthaltenen Werte in allen Datensätzen gelöscht.

Syntax
ALTER TABLE tabellenname
[ADD datenfelddefinition]
[ADD indexdefinition]
[ADD CONSTRAINT constraintname CHECK (gültigkeitsbedingung)]
[DROP objektname];

 Für das Ändern einer Tabelle wird die Anweisung ALTER TABLE verwendet. Danach folgt
der Name der zu ändernden Tabelle.
 Mit dem Schlüsselwort ADD wird das Hinzufügen eines Datenfelds, Indizes oder Schlüssels
oder einer Gültigkeitsbedingung eingeleitet.
 Mit der Klausel DROP wird ein Datenfeld, Index, Schlüssel oder eine Gültigkeitsbedingung
gelöscht.
 Die Definition eines Datenfelds, Indexes, Schlüssels oder einer Gültigkeitsbedingung folgt
der gleichen Syntax wie die Erstellung einer Tabelle.
 Gültigkeitsprüfungen gelten nur für die nach der Änderung neu hinzugefügten oder
geänderten Datensätze.

PostgreSQL prüft hinzu-


gefügte Gültigkeits-
prüfungen für vorhandene
Datensätze und lehnt die
Änderung bei einem
Verstoß der vorhandenen
Daten gegen die neue
Gültigkeitsprüfung ab.

Verhalten von CONSTRAINT-Prüfungen in PostgreSQL

© HERDT-Verlag
Schulversion 87
6 Tabellen erstellen und verwalten

Seit der Version 9.2 ist es möglich, durch die Klausel NOT VALID die Überprüfung der vorhande-
nen Daten zu unterdrücken. Mittels der Anweisung VALIDATE CONSTRAINT kann zu einem
späteren Zeitpunkt geprüft werden, ob die zum Zeitpunkt der Änderung vorhandenen Daten der
neuen Gültigkeitsprüfung entsprechen.

Anzeige der Tabellenstruktur


Möchten Sie sich die Tabellenstruktur in der Konsole
anzeigen lassen, geben Sie bei PostgreSQL den Befehl
"\d tabellenname" ein.

Bei MariaDB können Sie sich die Tabellenstruktur


mithilfe des Befehls DESCRIBE <Tabellenename>
anzeigen lassen. Der Befehl SHOW TABLE STATUS
liefert eine Gesamtübersicht über die Tabellen der Tabellenstruktur der Tabelle t_lager in
Datenbank, jedoch keine Informationen zu deren PostgreSQL anzeigen
Struktur.

Eine alternative Möglichkeit besteht in der Verwendung des Befehls SHOW CREATE TABLE
<Tabellenname>, welcher die Anweisung zeigt, die notwendig wäre, um die Tabelle in ihrer
vorhandenen Form zu erstellen.

Tabellenstruktur in der Listenansicht (Option \G) des notwendigen Erstellungsbefehls der Tabelle

Tabellen löschen
Zum Löschen einer Tabelle verwenden Sie die Anweisung DROP TABLE. Dabei werden die
Definition der Tabellenstruktur und alle in der Tabelle gespeicherten Datensätze gelöscht.

Syntax
DROP TABLE tabellenname;

 Mit der Anweisung DROP TABLE wird die angegebene Tabelle mit allen enthaltenen Daten
gelöscht.

88 Schulversion © HERDT-Verlag
Tabellen erstellen und verwalten 6

Beim Löschen einer Tabelle müssen Sie folgende Besonderheiten beachten:

 Wenn andere Datenbankobjekte die zu löschende Tabelle verwenden oder referenzieren,


z. B. durch eine Sicht (VIEW) oder eine gespeicherte Prozedur (STORED PROCEDURE),
ist das Löschen nicht möglich. Es müssen zuerst alle Referenzen entfernt werden.
 Sie müssen entweder Eigentümer der Tabelle sein oder über die notwendigen Rechte
zum löschen der Tabelle verfügen.
 Es dürfen keine Transaktionen aktiv sein, die die betreffende Tabelle verwenden.

6.6 Übung

Tabellen erstellen und löschen


Übungsdatei: -- Ergebnisdateien: Uebung1.sql, Uebung2.sql,
Uebung3.sql

1. Erstellen Sie eine Datenbank mit dem Namen testdb.


Wechseln Sie zu dieser neuen Datenbank.
Erstellen Sie eine neue Tabelle t_artikel mit den Datenfeldern id, name und preis.
Verwenden Sie geeignete Datentypen.
Löschen Sie die Tabelle und anschließend die Datenbank.
2. Wechseln Sie zur Datenbank Uebungen.
Erstellen Sie eine Tabelle t_person mit den Datenfeldern id, vname und name.
Verwenden Sie dabei geeignete Datentypen.
Für alle Datenfelder soll eine Eingabe erforderlich sein. Erweitern Sie die Definition der
Datenfelder für diesen Zweck.
Fügen Sie ein neues Datenfeld beschaeftigt_seit in die Tabelle ein. Es soll einen Datumswert
speichern.
Löschen Sie das Datenfeld wieder.
3. Wechseln Sie zur Datenbank Uebungen.
Löschen Sie die in Übung 2 erstellte Tabelle t_person.
Erstellen Sie eine geeignete Domäne, die als Datentyp für die Speicherung von Vorname
und Nachname verwendet werden soll. Es soll für das Datenfeld unbedingt eine Eingabe
erforderlich sein. Nennen Sie die Domäne Namen.
Erstellen Sie die Tabelle t_person mit folgenden Datenfeldern: id, vname, name, strasse, hnr,
plz und ort. Verwenden Sie dabei geeignete Datentypen bzw. die neu definierte Domäne.

© HERDT-Verlag
Schulversion 89
7 Daten einfügen, aktualisieren, löschen

7
7. Daten einfügen, aktualisieren, löschen

7.1 Daten einfügen

Einfügen eines Datensatzes


Um Datensätze in eine Tabelle einzufügen, verwenden Sie die Anweisung INSERT INTO.
Dabei ist es möglich, einen vollständigen Datensatz oder nur Werte für ausgewählte Datenfelder
einzufügen.

Falls die Tabelle ein Datenfeld enthält, das mit dem Parameter AUTO_INCREMENT (MariaDB)
bzw. SERIAL (PostgreSQL) definiert wurde, wird das Feld beim Einfügen automatisch um den
Wert 1 erhöht.

Um Daten in eine Tabelle einzufügen, müssen Sie Besitzer der Tabelle sein bzw. über die ent-
sprechenden Rechte verfügen. Der Administrator vergibt diese Rechte mit der GRANT-INSERT-
Anweisung.

In der Praxis werden Sie nur in seltenen Fällen mithilfe der INSERT-INTO-Anweisung
Datensätze manuell in eine Tabelle einfügen. In der Regel erfolgt die Dateneingabe über eine
entsprechende grafische Oberfläche, wie z. B. phpmyAdmin, phppgAdmin oder SQuirreL.

Beispiel: DatensatzEinfuegen.sql
Zuerst wird die Tabelle t_ma_dt für die Speicherung der Mitarbeiter in Deutschland erstellt.
Danach werden drei Datensätze in diese Tabelle eingefügt.

CREATE TABLE t_ma_dt


(id INTEGER NOT NULL AUTO_INCREMENT,
name VARCHAR(50), vname VARCHAR(50), str VARCHAR(150),
hnr VARCHAR(5), plz VARCHAR(5), ort VARCHAR(50), gebdat DATE,
land varchar(4), PRIMARY KEY(id));
INSERT INTO t_ma_dt (name, vname, str, hnr, plz, ort, gebdat,
land) VALUES ("Illner", "Markus", "Goetheweg Str.", "55",
"70173", "Stuttgart", "1976-12-23", "D");

90 Schulversion © HERDT-Verlag
Daten einfügen, aktualisieren, löschen 7

INSERT INTO t_ma_dt (name, vname, str, hnr, plz, ort, gebdat,
land) VALUES ('Schubert', 'Steve', 'Albert-Schweitzer-Str.',
'10', '70174', 'Stuttgart', '1982-02-15', 'D');
INSERT INTO t_ma_dt (name, vname) VALUES ("Sattke", "Beatrice");

 Die benötigte Tabelle t_ma_dt wird mit den entsprechenden Datenfeldern definiert. Das
Feld id wird dabei als Primärschlüssel festgelegt, dessen Wert automatisch erhöht wird. Das
Beispiel bildet die Schreibweise von MariaDB ab. Bei PostgreSQL würde hier der Parameter
SERIAL stehen.
 An dieser Stelle wird ein vollständiger Datensatz in die Tabelle eingefügt. Die Daten, die in
Textfeldern gespeichert werden, sind in Anführungszeichen eingeschlossen. Da der Wert
für das Feld id automatisch erstellt wird, kann er bei der Eingabe entfallen.
 Auch hier wird ein Datensatz in die Tabelle eingefügt. Statt Anführungszeichen kann zur
Eingabe von Textinformationen auch ein Apostroph verwendet werden.
 Ein unvollständiger Datensatz, der nur aus dem Namen und Vornamen besteht, wird ein-
gefügt. Die anderen Werte sind gleich dem NULL-Wert, sie können durch eine spätere
Aktualisierung nachgetragen werden.

Alphanumerische Werte, Textinformationen bzw. Datums- und Zeitangaben müssen innerhalb


der INSERT-INTO-Anweisung in Anführungszeichen oder Apostrophe eingeschlossen werden.
Bei numerischen Werten kann dies entfallen.

Syntax
INSERT INTO tabellenname (feld1, ..., feldX)
VALUES (wert1, ..., wertX);

 Die Anweisung wird mit den Schlüsselwörtern INSERT INTO eingeleitet. Danach folgt der
Name der gewünschten Tabelle.
 In runden Klammern werden, durch Kommata getrennt, die Namen der Datenfelder
angegeben, in die Werte eingefügt werden sollen.
 Nach dem Schlüsselwort VALUES folgt in runden Klammern die Angabe der einzelnen
Werte. Diese müssen in der gleichen Reihenfolge angegeben werden, wie die zugehörigen
Datenfelder in der Liste davor. Dadurch ist es möglich, eine beliebige Reihenfolge für die
Datenfelder zu wählen.
 Textinformationen, Datums- und Zeitwerte sind in Apostrophe ('') oder Anführungszeichen
("") einzuschließen. Beachten Sie dabei, dass nicht alle Datenbanksysteme Anführungs-
zeichen akzeptieren.

Sie brauchen nicht alle Datenfelder einer Tabelle mit Daten zu füllen. Die nicht aufgeführten
Felder enthalten nach dem Einfügen automatisch entweder keinen Wert (NULL – nicht zu ver-
wechseln mit der Zahl Null) oder den definierten Standardwert. Es gelten dabei die folgenden
Regeln:

© HERDT-Verlag
Schulversion 91
7 Daten einfügen, aktualisieren, löschen

Angabe bei der Definition Resultat, wenn kein Wert für das Datenfeld angegeben wird
des Datenfelds
DEFAULT standardwert Im Datenfeld wird der angegebene Standardwert gespeichert.
NULL Das Datenfeld bleibt leer. Es enthält den Wert NULL.
NOT NULL Es wird eine Fehlermeldung ausgegeben, da das Datenfeld einen
Wert enthalten muss.
Keine Angabe Das Datenfeld bleibt leer. Es enthält den Wert NULL.

Soll in einem Datenfeld kein Wert gespeichert werden, können Sie ihm in der INSERT-INTO-
Anweisung auch direkt den Wert NULL zuweisen.

Abfrage der eingefügten Datensätze


Um das erfolgreiche Einfügen der neuen Datensätze zu überprüfen, können Sie eine einfache
Datenabfrage durchführen.

Beispiel
Mit der folgenden SELECT-Anweisung werden Datensätze aus der Tabelle t_ma_dt abgefragt.
Mit der Angabe des Zeichens * wird die Anzeige aller Datenfelder erreicht.

SELECT * FROM t_ma_dt;

Abfrageergebnis zu den neuen Datensätzen der Tabelle t_ma_dt

In Kapitel 8 (Einfache Datenabfragen) wird die SELECT-Anweisung ausführlich erläutert.

Einfügen mehrerer Datensätze


Die zweite Form der INSERT-INTO-Anweisung ermöglicht das Einfügen mehrerer Datensätze.
Die einzufügenden Daten werden dabei mithilfe einer Abfrage aus einer existierenden Tabelle
gewonnen.

Beispiel: MehrereDatensaetzeEinfuegen.sql
Im ersten Schritt werden mehrere Datensätze in die Tabelle t_ma_dt eingefügt. Danach wird die
Tabelle t_ma_frankfurt erzeugt, die nicht notwendigerweise die gleiche Struktur wie die Tabelle
t_ma_dt besitzen muss. Dieser werden danach über eine INSERT-INTO-Anweisung Daten
hinzugefügt.

92 Schulversion © HERDT-Verlag
Daten einfügen, aktualisieren, löschen 7

INSERT INTO t_ma_dt (name, vname, str, hnr, plz, ort, gebdat,
land) VALUES ("Meier", "Susann", "Hauptweg", "4", "60385",
"Frankfurt", "1972-04-21", "D");
INSERT INTO t_ma_dt (name, vname, str, hnr, plz, ort, gebdat,
land) VALUES ("Brauer", "Claudia", "Bahnhofstr.", "156",
"60386", "Frankfurt", "1971-04-28", "D");
INSERT INTO t_ma_dt (name, vname, str, hnr, plz, ort, gebdat,
land) VALUES ("Yildiz", "Umit", "Universitätsstr.", "24",
"60322", "Frankfurt", "1974-08-29", "D");
INSERT INTO t_ma_dt (name, vname, str, hnr, plz, ort, gebdat,
land) VALUES ("Becker", "Sebastian", "Heidestr.", "150",
"60385", "Frankfurt", "1994-08-14", "D");
CREATE TABLE t_ma_frankfurt
(id INTEGER NOT NULL AUTO_INCREMENT, name VARCHAR(50), vname
VARCHAR(50), str VARCHAR(150), hnr VARCHAR(5),
plz VARCHAR(5), ort VARCHAR(50), gebdat DATE,
land varchar(4), PRIMARY KEY(id));
INSERT INTO t_ma_frankfurt
(name, vname, str, hnr, plz, ort, gebdat, land)
SELECT name, vname, str, hnr, plz, ort, gebdat, land
FROM t_ma_dt WHERE ort = "Frankfurt";

 Zuerst werden vier neue Datensätze in die Tabelle t_ma_dt eingefügt. Diese sollen dann
später ausgewählt werden.
 An dieser Stelle wird die neue Tabelle t_ma_frankfurt definiert. Sie soll nur Mitarbeiter aus
Frankfurt aufnehmen.
 Mit der INSERT-INTO-Anweisung erfolgt das Einfügen der Datensätze in die neue Tabelle.
Dazu werden in einer Abfrage alle Datensätze aus der Tabelle t_ma_dt ausgewählt, bei
denen der Inhalt des Feldes ort dem Wert Frankfurt entspricht. Die SELECT-Anweisung
liefert vier Datensätze, die sofort in die Tabelle eingefügt werden.

Einfügen der Datensätze

Ergebnis der Abfrage

© HERDT-Verlag
Schulversion 93
7 Daten einfügen, aktualisieren, löschen

Syntax
INSERT INTO tabellenname (feld1, ..., feldX)
SELECT [*|datenfelder] FROM tabellenname [WHERE bedingung];

 Die Anweisung wird mit den Schlüsselwörtern INSERT INTO eingeleitet. Danach folgt der
Name der gewünschten Tabelle.
 In runden Klammern folgen, durch Kommata getrennt, die Namen der Datenfelder, in die
Werte eingefügt werden sollen. Die Reihenfolge muss nicht der Reihenfolge der Datenfelder
bei der Definition der Tabelle entsprechen.
 Danach wird eine gültige SELECT-Anweisung angegeben, die als Abfrage einen oder meh-
rere Datensätze aus einer Tabelle liefert. Der Aufbau der zurückgelieferten Datensätze muss
dabei mit den Angaben in der Datenfeldliste übereinstimmen.

Die Datenfeldliste kann auch entfallen. In diesem Fall müssen die Anzahl und die Reihenfolge der
durch die Abfrage zurückgelieferten Datenfelder mit der der Tabelle übereinstimmen, in die diese
eingefügt werden sollen. Dies betrifft auch die einfache INSERT-INTO-Anweisung.

7.2 Daten aktualisieren


Beim Ausführen der INSERT-INTO-Anweisung wird stets ein neuer Datensatz erzeugt und in
der Tabelle gespeichert. Sie können jedoch auch gezielt existierende Datensätze bearbeiten und
verändern. Zu diesem Zweck stellt SQL die UPDATE-Anweisung zur Verfügung.

Mit der UPDATE-Anweisung können Sie einen oder auch mehrere Datensätze gleichzeitig aktu-
alisieren. Die Auswahl der betreffenden Datensätze erfolgt dabei über eine WHERE-Klausel.
Wenn Sie keine Bedingung angeben, werden alle Datensätze aktualisiert.

Um Daten in einer Tabelle zu verändern, müssen Sie Besitzer der Tabelle sein bzw. über die
entsprechenden Rechte verfügen. Der Administrator vergibt diese Rechte mit der GRANT-
UPDATE-Anweisung. Werden in dem UPDATE-Befehl noch andere Tabellen angesteuert, z. B.
über die WHERE-Bedingung, müssen Sie für diese Tabellen über das Recht SELECT verfügen.

Beispiel: DatenAktualisieren.sql
In den folgenden UPDATE-Anweisungen werden die Daten in verschiedenen Tabellen verändert.

UPDATE t_ma_dt SET str = "Hauptstr.", "hnr" = "17"


WHERE name = "Meier" AND vname = "Susann";
UPDATE t_ma_frankfurt SET ort = "Frankfurt/Main";
UPDATE t_lager SET stueck = stueck + 100 WHERE stueck < 100;

 Es wird der Inhalt der Datenfelder str und hnr aktualisiert. Die Auswahl des betreffenden
Datensatzes erfolgt über die Felder name und vname, die beide den angegebenen Wert
besitzen müssen.

94 Schulversion © HERDT-Verlag
Daten einfügen, aktualisieren, löschen 7

 Der Inhalt des Datenfelds ort wird in Frankfurt/Main geändert. Da keine Bedingung zur
Eingrenzung der Datensätze angegeben ist, werden alle Datensätze der Tabelle aktualisiert.
 Mit dieser Anweisung wird für alle Datensätze der Tabelle t_lager, für die die angegebene
Bedingung gilt (Stückzahl kleiner als 100), der aktuelle Wert des Felds stueck um den Wert
100 erhöht.

Bei der Aktualisierung eines Datensatzes müssen Sie keine absoluten Werte angeben. Sie können
auch Rechenoperationen mit dem aktuellen Datenfeldinhalt durchführen, z. B.
feld = feld + 20.

Syntax MariaDB
UPDATE tabellenname SET feld1 = wert1, ..., feldX = wertX FROM
tabellennamen [WHERE bedingung];

 Die Anweisung beginnt mit dem Schlüsselwort UPDATE. Danach wird der Name der
gewünschten Tabelle angegeben.
 Mit dem Schlüsselwort SET wird die Wertzuweisung eingeleitet. Sie erfolgt stets nach dem
Muster datenfeldname = wert. Der Wert kann dabei eine Zahl, ein Text, ein berech-
neter Ausdruck oder eine Unterabfrage sein, abhängig vom Datentyp des Datenfeldes. Für
die Änderung mehrerer Werte werden die Datenfeld-Wert-Paare durch Komma getrennt.
 Wenn Sie in der Anweisung WHERE zusätzlich Spalten anderer Tabellen eingeben möchten,
müssen Sie in der Anweisung FROM die betreffenden Tabellennamen angeben.
 Nach der Wertzuweisung können Sie mithilfe der Anweisung WHERE eine Bedingung
angeben. Die Aktualisierung erfolgt dann nur bei den Datensätzen, die diese Bedingung
erfüllen.
 Wird keine Bedingung angegeben, erfolgt die Wertzuweisung bei allen Datensätzen.

Syntax PostgreSQL
Die Syntax von PostgreSQL ist größtenteils identisch, bis auf den Zusatz ONLY, mit dem Sie
steuern können, dass nur die Felder der ausgewählten Tabelle geändert werden sollen. Lassen Sie
den Ausdruck ONLY weg, werden auch die entsprechenden Zeilen in den selektierten Tabellen
geändert.

UPDATE [ONLY] tabellenname SET feld1 = wert1, ..., feldX = wertX


FROM tabellennamen [WHERE bedingung];

Beispiele für die Wertzuweisung


Wertzuweisung in der UPDATE-Anweisung Erläuterung
SET bezeichnung = "Gerätenummer" Zuweisen einer Textinformation
SET anzahl = 200 Speichern der Zahl 200 im Feld anzahl

© HERDT-Verlag
Schulversion 95
7 Daten einfügen, aktualisieren, löschen

Wertzuweisung in der UPDATE-Anweisung Erläuterung


SET anzahl = anzahl * 2 Der aktuelle Wert des Felds anzahl wird mit
zwei multipliziert und wieder im Feld anzahl
gespeichert.
SET bezeichnung = (SELECT artikel Mittels einer Unterabfrage wird aus der
FROM t_lager WHERE id = 20) Tabelle t_lager ein Datensatz abgefragt
und der ermittelte Wert im Datenfeld
bezeichnung gespeichert.

Bei Wertzuweisungen durch Unterabfragen müssen Sie die Abfrage so definieren, dass Sie nur
einen Datensatz zurückliefert. MariaDB unterstützt keine Unterabfragen in der UPDATE-
Anweisung.

7.3 Bedingtes Einfügen / Aktualisieren von Daten


Seit dem Standard SQL:2003 gibt es die Möglichkeit, Daten in Abhängigkeit vom vorhandenen
Datenbestand entweder hinzuzufügen oder, wenn sie in Abhängigkeit einer angegebenen
Bedingung bereits schon in einer Tabelle vorhanden sind, zu aktualisieren. Die im Standard
dafür beschriebene Anweisung heißt MERGE. Häufig wird für die Funktionalität die Bezeichnung
upsert verwendet.

Die Umsetzung in den einzelnen DBMS ist sehr unterschiedlich, nur einzelne – beispielsweise
Oracle und DB2 – haben die im Standard vorgegebene Syntax direkt implementiert.

In MariaDB wird die Funktion über die Syntax INSERT ... ON DUPLICATE KEY UPDATE
realisiert. In PostgreSQL besteht seit der Version 9.5 die Möglichkeit, mittels INSERT INTO
... ON CONFLICT Daten entweder einzufügen oder zu aktualisieren.

Beispiel: BedingtesEinfuegenAendern.sql
In den folgenden Anweisungen wird in PostgreSQL entweder ein neuer Datensatz hinzugefügt
oder ein vorhandener entsprechend der Bedingung aktualisiert.

INSERT INTO t_lager(id, preis) VALUES (8, 1)


ON CONFLICT DO NOTHING;
INSERT INTO t_lager(id, preis) VALUES (8, 2)
ON CONFLICT (id) DO UPDATE SET preis = 2;

 Es soll zur Tabelle t_lager ein Datensatz mit den Werten 8 für das Feld id und 1 für das Feld
preis hinzugefügt werden. Falls es bereits ein Datensatz existiert, beim das Feld id den Wert
8 besitzt soll keine Aktion ausgeführt werden.
 Hier wird für die identische Situation bestimmt, dass bei einem schon vorhandenen Daten-
satz der Wert des Feldes preis geändert werden soll.

96 Schulversion © HERDT-Verlag
Daten einfügen, aktualisieren, löschen 7

Anwendung des Befehls im Beispiel

7.4 Daten löschen


Mithilfe der DELETE-Anweisung können Sie einen oder mehrere Datensätze einer Tabelle
löschen. Die Auswahl der Datensätze kann dabei wie bei der UPDATE-Anweisung mit einer
WHERE-Klausel eingegrenzt werden.

Um Daten in einer Tabelle löschen zu können, müssen Sie Besitzer der Tabelle sein bzw. über
die entsprechenden Rechte verfügen. Der Administrator vergibt diese Rechte mit der GRANT-
DELETE-Anweisung.

Werden in der Anweisung noch weitere Tabellen angesteuert, müssen Sie über das Recht
SELECT für diese Tabellen verfügen.

Beispiel: DatenLoeschen.sql
Es werden im Folgenden einige Möglichkeiten zum Löschen von Datensätzen mit verschiedenen
Bedingungen vorgestellt.

DELETE FROM t_lager WHERE stueck = 0;


DELETE FROM t_ma_dt WHERE ort = "Frankfurt";
DELETE FROM t_ma_frankfurt;

 Alle Datensätze der Tabelle t_lager werden gelöscht, bei denen der Wert im Feld stueck
gleich 0 ist.
 Es werden alle Datensätze aus der Tabelle t_ma_dt gelöscht, bei denen als Ort der Wert
Frankfurt gespeichert wurde.
 Da keine Bedingung angegeben wurde, werden alle Datensätze der Tabelle t_ma_frankfurt
gelöscht.

© HERDT-Verlag
Schulversion 97
7 Daten einfügen, aktualisieren, löschen

Syntax MariaDB
DELETE FROM tabellenname [WHERE bedingung];

 Die Anweisung wird mit den Schlüsselwörtern DELETE FROM eingeleitet. Danach folgt
der gewünschte Tabellenname.
 Um den Löschvorgang auf einen oder mehrere bestimmte Datensätze einzugrenzen,
kann eine WHERE-Klausel angegeben werden.

Syntax PostgreSQL
Wie schon bei dem Befehl UPDATE ist auch hier die Syntax von PostgreSQL größtenteils identisch
mit der von MariaDB, bis auf den Zusatz ONLY, mit dem Sie steuern können, dass nur die Felder
der ausgewählten Tabelle gelöscht werden sollen. Lassen Sie den Ausdruck ONLY weg, werden
auch die entsprechenden Zeilen in den selektierten Tabellen gelöscht.

DELETE FROM [ONLY] tabellenname [WHERE bedingung];

Wenn Sie keine Bedingung angeben, werden ohne Nachfrage alle Datensätze der Tabelle
gelöscht. Als Resultat verbleibt eine leere Tabelle.

7.5 Übung

Daten eingeben und löschen


Übungsdatei: -- Ergebnisdateien: Uebung1.sql, Uebung2.sql

1. Wechseln Sie zur Datenbank Uebungen.


Fügen Sie der Tabelle t_lager ein neues Datenfeld hinzu. Es soll Artikelnamen mit maximal
100 Zeichen Länge speichern. Wählen Sie einen geeigneten Datentyp und benennen Sie das
Feld mit name.
Fügen Sie folgende Datensätze in die Tabelle t_lager ein.

ID Name Stückzahl Preis


1 Kugelschreiber 200 2,99
2 Ordner 123 2,50
3 Heftklammern 423 0,99
4 Bleistift 170 0,99
5 Umschläge B6 230 0,80

Fügen Sie einen Datensatz für den Artikel Schreibblock A4 mit dem Preis 1,99 und der ID 6
hinzu. Für diesen Artikel ist keine Stückzahl bekannt.

98 Schulversion © HERDT-Verlag
Daten einfügen, aktualisieren, löschen 7

Führen Sie eine einfache Datenabfrage durch, um das erfolgreiche Einfügen der neuen
Datensätze zu überprüfen.
Ändern Sie die Stückzahl der vorhandenen Bleistifte von 170 auf 270.
Ändern Sie den Preis der Ordner von 2,50 auf 2,80.
Löschen Sie den Datensatz Schreibblock A4.
2. Wechseln Sie zur Datenbank Uebungen.
Fügen Sie folgende Datensätze in die Tabelle t_ma_dt ein.

Name Vorname Straße Haus- PLZ Ort Geburtsdatum Land


nummer
Haas Martina Blumenweg 23 63065 Offenbach 01.06.1972 D
Richter Carsten Frankfurter Str. 16 63067 Offenbach 18.10.1982 D
Seiler Janine Goethestr. 61 63067 Offenbach 11.11.1990 D
Hartmann Jochen Berliner Str. 23 60528 Frankfurt 25.03.1979 D
Goldbach Martin Frankfurter Str. 6 60529 Frankfurt 06.07.1981 D
Naumann Norbert Goethestr. 161 60594 Frankfurt 06.11.1972 D

In die Tabelle t_ma_frankfurt sollen alle Datensätze aus der Tabelle t_ma_dt eingefügt
werden, bei denen der Ort den Wert Frankfurt oder Offenbach besitzt.
Erstellen Sie zu diesem Zweck eine INSERT-Anweisung mit einer geeigneten Unterabfrage.
Die WHERE-Klausel soll dabei folgendermaßen lauten:
ort = "Frankfurt" OR ort = "Offenbach"
Überprüfen Sie mit einer einfachen Datenabfrage, ob die neuen Datensätze in die Tabelle
t_ma_frankfurt eingefügt wurden.
Ändern Sie in den Datensätzen der Tabelle t_ma_frankfurt den Wert Frankfurt in
Frankfurt/Main.

© HERDT-Verlag
Schulversion 99
8 Einfache Datenabfrage

8
8. Einfache Datenabfrage

8.1 Grundlagen zu einfachen Datenabfragen

Einführung zur SELECT-Anweisung


Das gezielte Abfragen der gespeicherten Informationen und Daten kann eine schwierige Aufgabe
beim Arbeiten mit einer Datenbank sein. In SQL wird dazu die SELECT-Anweisung verwendet.
Sie ist die komplexeste SQL-Anweisung, besitzt viele optionale Erweiterungen und wird in der
Praxis am häufigsten genutzt.

Die SELECT-Anweisung ähnelt einer Frage bzw. Aufforderung an das Datenbanksystem, die
gewünschten Daten zu liefern. Die Frage können Sie dabei sehr einfach halten oder sehr komplex
formulieren, z. B. mit vielschichtigen Bedingungen. Je nach Qualität der Anfrage erhalten Sie
danach Daten, die schlecht oder sehr gut zu Ihren Erfordernissen passen. Als Ergebnis liefert die
SELECT-Abfrage im Regelfall die Daten in Tabellenform.

Die Vor- und Familiennamen aller Mitarbeiter aus der Tabelle t_ma können Sie z. B. mit einer
recht einfachen Anweisung abfragen.

SELECT vname, name FROM t_ma;

Diese Anweisung übermittelt dem Datenbanksystem die Aufforderung, alle Daten aus den
Datenfeldern vname und name zu liefern, die in der Tabelle t_ma gespeichert sind.

SELECT-Anweisung verwenden
Mithilfe der SELECT-Anweisung können Sie alle oder ausgewählte Datenfelder von Tabellen
abfragen. Die SELECT-Anweisung muss die gewünschten Daten dabei nicht nur aus einer
einzigen Tabelle ermitteln. Es sind auch verknüpfte Abfragen über zwei oder mehr Tabellen
möglich.

Die mit einer SELECT-Anweisung abgefragten Daten können Sie gezielt über sogenannte
WHERE-Bedingungen eingrenzen. Außerdem ist das Sortieren und Gruppieren des Abfrage-
ergebnisses möglich.

100 Schulversion © HERDT-Verlag


Einfache Datenabfrage 8

Beispiel: Datenabfrage1.sql
Mit dieser Anweisung werden alle Datenfelder und alle Datensätze aus der Tabelle t_ma_dt
gelesen und angezeigt.

SELECT * FROM t_ma_dt;

Die Abfrage liefert in MariaDB eine übersichtliche Darstellung der Tabelle

Die einfachste SELECT-Anweisung lautet SELECT * FROM Tabellenname. Damit rufen Sie
schnell alle Datensätze einer gewünschten Tabelle ab.

Beispiel: Datenabfrage2.sql
Mit der folgenden Anweisung werden nur die Datenfelder name, vname, plz und ort aus der
Tabelle t_ma_dt ausgelesen. Gleichzeitig wird die Abfrage auf alle Datensätze begrenzt, bei
denen der Wert im Feld plz mit der Ziffer 6 beginnt und bei denen der Wert im Feld gebdat ein
Datum nach dem 01.01.1975 beinhaltet. Die Datensätze werden bei der Anzeige aufsteigend
nach der Postleitzahl sortiert.

Bei dieser Form der Abfrage handelt es sich um eine Projektion und – bedingt durch die gleich-
zeitige Beschränkung auf ausgewählte Datensätze – um eine Selektion (vgl. Abschnitt 4.4: Theorie
relationaler Sprachen, Übersicht der Operationen der Relationenalgebra, Stichworte 'Projektion',
'Selektion').

SELECT name, vname, plz, ort FROM t_ma_dt


WHERE plz LIKE '6%' AND gebdat > "1975-01-01" ORDER BY plz;

Die Abfrage liefert nur eine Auswahl der vorhandenen Datensätze

© HERDT-Verlag
Schulversion 101
8 Einfache Datenabfrage

Syntax einer einfachen Datenabfrage


SELECT [DISTINCT] * | Datenfeld [, Datenfeld] FROM Tabellenname
[WHERE Bedingung]
[GROUP BY Datenfeld [, Datenfeld] [HAVING Bedingung] ]
[ORDER BY Datenfeld [, Datenfeld] [ASC|DESC]]
[LIMIT [Start, ] Anzahl];

 Die Anweisung wird mit dem Schlüsselwort SELECT eingeleitet.


 Um doppelte (identische) Datensätze zu vermeiden, können Sie nach dem Schlüsselwort
SELECT die Angabe DISTINCT hinzufügen.
 Danach folgt die Angabe der Namen der gewünschten Datenfelder. Die Datenfeldnamen
müssen den bei der Tabellendefinition angegebenen Namen entsprechen. Die Feldnamen
werden durch Kommata getrennt. Das Zeichen * steht für alle Datenfelder der Tabelle.
 Nach dem Schlüsselwort FROM folgt die Angabe der gewünschten Tabelle.

Alle folgenden Angaben sind optional und können entfallen.

 Die WHERE-Klausel, gefolgt von einer Bedingung, schränkt die Datensatzauswahl ein.
Es werden nur die Datensätze geliefert, für welche die Bedingung zutrifft.
 Mit GROUP BY, gefolgt vom Namen eines Datenfeldes oder einer Datenfeldliste, können
die Daten nach diesen Feldern gruppiert werden.
 Über die HAVING-Klausel kann die gruppierte Abfrage durch eine Bedingung eingeschränkt
werden. Die Angabe von Aggregatfunktionen in der Bedingung ist hier möglich.
 Über das Schlüsselwort ORDER BY, gefolgt von einem oder mehreren Datenfeldnamen,
wird die Sortierung der Ausgabedaten beeinflusst.
 Mit dem Schlüsselwort LIMIT kann die Anzahl der zurückgelieferten Datensätze begrenzt
werden. Gleichzeitig ist dabei die Ausgabe ab einem bestimmten Startdatensatz möglich.

Die Reihenfolge der Feldnamen in der SELECT-Abfrage ist beliebig und nicht an die Anordnung der
Datenfelder in der Tabelle gebunden. Sie können daher die Daten in der Ergebnisliste in die von
Ihnen gewünschte Ordnung bringen.

Besondere Möglichkeit bei der Datenausgabe


Spalten umbenennen
Als Spaltenüberschrift in der Ausgabe der Daten wird stets der Name des Datenfeldes verwendet.
Sie können mit dem Schlüsselwort AS für jedes Datenfeld der Abfrage einen Ersatznamen (Alias)
definieren. Auf diese Weise können Sie z. B. die Datenausgabe durch aussagekräftigere Feld-
namen benutzerfreundlicher gestalten oder in komplexen Abfragen den Eingabeaufwand durch
abgekürzte Feldnamen reduzieren.

Beispiel: Datenabfrage3.sql
Es wird eine Abfrage ausgewählter Datensätze und Datenfelder mit neuen aussagekräftigen
Feldnamen erzeugt. Die Festlegung eines anderen Spaltennamens entspricht der Operation Um-
benennen der Relationenalgebra (vgl. Abschnitt 4.4: Theorie relationaler Sprachen, Übersicht der
Operationen der Relationenalgebra, Stichwort 'Umbenennen').

102 Schulversion © HERDT-Verlag


Einfache Datenabfrage 8

SELECT name AS "Familienname", vname AS "Vorname", plz AS


"Postleitzahl",
 gebdat AS "Geburtsdatum" FROM t_ma_dt
 WHERE gebdat < "1975-01-01";

 Hier werden für die einzelnen Elemente der SELECT-Anweisung Ersatznamen definiert.
Diese Namen erscheinen in der Datenausgabe als Spaltenüberschriften.

Ersatznamen können z. B. die Lesbarkeit der Datenausgabe verbessern

 Entspricht der Ersatzname einem SQL-Schlüsselwort, z. B. ALTER oder UPDATE, oder


soll der Name Leerzeichen enthalten, müssen Sie ihn in Anführungszeichen ("") oder
Apostrophe ('') setzen. Anderenfalls wird bei der Ausführung eine Fehlermeldung
erzeugt.
 Wenn Sie bei PostgreSQL in einer Abfrage mit Anführungszeichen arbeiten, sollten Sie
diese durchgängig für alle Namen verwenden, da Sie sonst u. U. unerwünschte Ergeb-
nisse erhalten.
 Da bei PostgreSQL Großbuchstaben in Abfragen ignoriert werden, müssen Sie Namen,
die mit einem Großbuchstaben beginnen sollen, immer in Anführungszeichen setzen,
nur dann werden sie auch mit Großbuchstaben wiedergegeben.

Konstante Werte ausgeben


In manchen Fällen ist es notwendig, zusätzlich zu den Datenfeldern einen konstanten Wert in den
Ergebnisdaten zu übergeben. Solche Werte werden in der Liste der Datenfelder in Apostrophe
bzw. Anführungszeichen gesetzt, um sie von den Feldnamen zu unterscheiden.

Beispiel: Datenabfrage4.sql
Die folgende Abfrage liefert in der ersten Spalte einen konstanten Wert.

SELECT 'Mitarbeiter' AS 'angestellt als', vname, name


FROM t_ma_dt WHERE id < 4;

 Der konstante Wert Mitarbeiter wird in Anführungszeichen gesetzt. Er wird für jeden Daten-
satz des Ergebnisses der Abfrage in dieser Form übernommen. Als Spaltenüberschrift wird
angestellt als festgelegt. Wird die Spaltenüberschrift nicht explizit mithilfe von AS umbenannt,
erscheint dort ebenfalls der konstante Wert.

© HERDT-Verlag
Schulversion 103
8 Einfache Datenabfrage

Ausgabe eines konstanten Wertes

Anzahl der Datensätze beschränken


Die SELECT-Abfrage liefert standardmäßig alle Datensätze einer Tabelle bzw. alle Datensätze,
auf die die angegebene Bedingung zutrifft. Bei sehr vielen Datensätzen kann dies lange dauern
und es werden meist auch nicht sofort alle Datensätze als Ergebnis benötigt. Mit dem Schlüssel-
wort LIMIT können Sie die Anzahl der zurückgelieferten Datensätze begrenzen.

Beispiel: Datenabfrage5.sql
Die Abfrage liefert die Vornamen und Familiennamen aller Mitarbeiter, bei denen die Postleitzahl
mit 6 beginnt. Die Ergebnismenge wird mit der Angabe LIMIT 10 auf die ersten 10 Datensätze
beschränkt.

SELECT vname, name FROM t_ma_dt WHERE plz LIKE "6%" LIMIT 10;

Beispiel: Datenabfrage6.sql
Durch die Angabe von LIMIT können Sie zusätzlich die Ausgabe der Datensätze ab einer
bestimmten Position in der Ergebnismenge der Abfrage bestimmen. Um beispielsweise 10
Datensätze ab dem 5. Datensatz anzuzeigen, verwenden Sie die Angabe von LIMIT 5,10.

SELECT vname, name FROM t_ma_dt WHERE plz LIKE "6%" LIMIT 5,10;

Nicht alle Datenbanksysteme unterstützen die LIMIT-Funktion.

Doppelte Datensätze vermeiden


Um doppelte Datensätze zu vermeiden, können Sie nach dem Schlüsselwort SELECT die Angabe
DISTINCT hinzufügen. Dabei ist es ausreichend, wenn sich die Daten in einem Datenfeld
unterscheiden, um von der Datenbank als unterschiedlich erkannt zu werden.

Beispiel: DatenabfrageDistinct.sql
Im Folgenden wird der Unterschied zwischen den Ergebnismengen bei Verwendung von
DISTINCT gezeigt.

SELECT plz, ort FROM t_ma LIMIT 10;


SELECT DISTINCT plz, ort FROM t_ma LIMIT 10;

 Bei dieser Abfrage werden alle Postleitzahlen und Orte aus der Tabelle t_ma ermittelt und
die ersten 10 Datensätze ausgegeben.

104 Schulversion © HERDT-Verlag


Einfache Datenabfrage 8

 Durch die Angabe des Schlüsselwortes DISTINCT werden keine doppelten Datensätze
ausgegeben, sodass sich eine andere Ergebnismenge ergibt.

Ausgabe mit doppeltem Datensatz Ausgabe der Abfrage ohne doppelten Datensatz

Berechnungen ausführen
In einer SELECT-Abfrage können Sie verschiedene Berechnungen durchführen. Die Ergebnisse
werden wie der Inhalt eines Datenfeldes behandelt. Für Berechnungen können Sie alle numeri-
schen Datenfelder der Tabelle sowie konstante Werte verwenden.

Beispiel: DatenabfrageBerechnung.sql
Es wird der Wert der gelagerten Artikel aus Anzahl und Stückpreis berechnet.

SELECT id, preis, stueck, preis*stueck AS "Lagerwert"


FROM t_lager LIMIT 10;

 In der Abfrage werden die Werte der Datenfelder preis und stueck multipliziert, um den
Wert der gelagerten Artikel zu ermitteln.

Abfrage mit berechneten Werten

Für die Berechnungen akzeptiert das Datenbanksystem nur numerische Datenfelder, z. B. vom Typ
Integer oder Float. Wenn Sie Berechnungen mit anderen Datentypen versuchen, wird eine
Fehlermeldung ausgegeben.

Folgende Operatoren können Sie für Berechnungen in Operator Erklärung


SELECT-Abfragen in SQL verwenden:
- Subtraktion
Für die Ausführungsreihenfolge werden Operatoren nach + Addition
Prioritäten eingeteilt. Dabei gilt wie in der Mathematik, * Multiplikation
dass Punktrechnung vor Strichrechnung ausgeführt wird.
/ Division
Die Ausführungsreihenfolge kann jedoch durch Klammer-
paare () festgelegt werden, wobei der Inhalt der Klammern % Modulo
immer zuerst ausgewertet wird.

© HERDT-Verlag
Schulversion 105
8 Einfache Datenabfrage

8.2 Bedingungen definieren

Einführung
Mithilfe der WHERE-Klausel können Sie die mit einer SELECT-Abfrage zurückgelieferten Daten
einschränken bzw. filtern. Dies ist vor allem bei sehr großen Datenmengen wichtig und wird von
Datenbanken auch bei mehreren Millionen Datensätzen sehr schnell ausgeführt, wenn diese dafür
optimiert wurden (z. B. durch Verwendung von Indizes).

Für das Definieren der WHERE-Bedingung steht in SQL eine große Anzahl verschiedener Operato-
ren und Funktionen zur Verfügung. Einzelne Bedingungen können darüber hinaus mithilfe von
logischen Verknüpfungen miteinander verbunden werden.

Möglichkeiten für WHERE-Bedingungen finden Sie in der folgenden Tabelle.

Bedingung Beispiel Erklärung


Vergleichsoperatoren preis < 100 Vergleicht den Wert eines
name = "Meier" Datenfelds mit einem vor-
gegebenen Wert
Bereichsprüfung preis BETWEEN 10 AND 100 Prüft, ob der Wert eines
Feldes innerhalb eines
bestimmten Bereichs liegt
Elementprüfung abteilung IN ("Einkauf", Prüft, ob der Wert eines
"Verkauf") Feldes sich in der ange-
gebenen Liste befindet
Mustervergleich name LIKE "M%" Überprüft einen Feldinhalt auf
Übereinstimmung mit einem
angegebenen Muster
NULL-Wertprüfung preis IS NULL Prüft einen Feldinhalt auf den
Wert NULL (Datenfeld enthält
keinen Wert)
Logische Operatoren preis < 100 AND preis > 10 Verknüpfen mehrerer
name <> "Meier" OR name <> Bedingungen
"Mayer"
Existenzbedingungen EXISTS (SELECT * FROM Durch Existenzbedingungen
t_lager WHERE wird getestet, ob die Ant-
t_artikel.name = worttabelle einer Unter-
t_lager.name) anfrage leer ist oder nicht.
Es ist möglich, Existenz-
bedingungen zu negieren
(NOT EXISTS).

In WHERE-Bedingungen können Sie nur Datenfelder und konstante Werte verwenden. Ersatz-
namen, die Sie in der Datenfeldliste einer SELECT-Anweisung mit dem Schlüsselwort AS
definiert haben, sind nicht möglich, da Sie der Datenbank zu diesem Zeitpunkt noch nicht
bekannt sind.

106 Schulversion © HERDT-Verlag


Einfache Datenabfrage 8

Vergleichsoperatoren
Beim Vergleich werden zwei Ausdrücke über einen Operator
Operator Erklärung
miteinander verglichen. Dabei können zwei Datenfelder oder
ein Datenfeld und ein konstanter Ausdruck miteinander ver- < kleiner als
glichen werden.
> größer als
SQL besitzt die in der nebenstehenden Tabelle aufgelisteten <> ungleich
Operatoren.
= ist gleich
Für den Vergleich von Textwerten sind nur die Operatoren = >= größer oder gleich
und <>, die auf Gleichheit oder Ungleichheit überprüfen,
<= kleiner oder gleich
erlaubt. Für detailliertere Textvergleiche nach bestimmten
Mustern können Sie den LIKE-Operator verwenden.

Beispiel: BedingungVergleich.sql
In diesen Anweisungen wird die Verwendung verschiedener Vergleichsoperatoren gezeigt.

SELECT * FROM t_lager WHERE preis < 20;


SELECT * FROM t_ma WHERE ort = "Hamburg";
SELECT * FROM t_ma WHERE ort <> "Berlin";

 Die Abfrage liefert alle Datensätze, bei denen der Preis kleiner ist als 20.
 Hier wird die Tabelle t_ma nach allen Datensätzen gefiltert, bei denen der Ort Hamburg ist.
 Die Ergebnismenge der Abfrage enthält alle Datensätze, bei denen der Ort nicht Berlin ist.

 Bei Vergleichen mit numerischen Werten mit Kommastellen müssen Sie die Dezimalstellen
mit einem Punkt statt mit einem Komma trennen, z. B. 12.5 statt 12,5.
 Wenn bei einem Vergleich von Textwerten die Groß- bzw. Kleinschreibung keine Rolle spielt,
können Sie den Wert eines Datenfeldes vor dem Vergleich mithilfe der Funktionen UPPER
bzw. LOWER in Groß- bzw. Kleinschreibung überführen.

Beispiel: BedingungVergleichText.sql
Im folgenden Vergleich soll die Groß-/Kleinschreibweise ignoriert werden. Dies ist beispielsweise
dann sinnvoll, wenn Werte wie Hamburg, HAMBURG, hamburg auftreten können, die zwar alle
den gleichen Ort bezeichnen, aber unterschiedlich geschrieben wurden.

SELECT * FROM t_ma WHERE UPPER(ort) = 'HAMBURG';

 Mit der Funktion UPPER wird der Wert des Datenfeldes ort vor dem Vergleich in Groß-
buchstaben gewandelt.

Einige Systeme unterscheiden nicht zwischen Groß- und Kleinschreibung, wie z. B. MariaDB und
PostgreSQL. Sie erhalten mit und ohne Aufruf der Funktionen das gleiche Ergebnis.

© HERDT-Verlag
Schulversion 107
8 Einfache Datenabfrage

Bereichsprüfung
Die Operatoren BETWEEN und IN erleichtern das Definieren von Wertebereichen oder Werte-
listen, indem sie mehrere verbundene Vergleichsausdrücke ersetzen. Mit dem Operator
BETWEEN prüfen Sie, ob der Wert eines Datenfelds in einem bestimmten Wertebereich liegt.
Der Operator ersetzt dabei die Bedingung x >= Wert1 AND x <= Wert2.

Beispiel: BedingungOperatorBetween.sql
Die ersten beiden Ausdrücke verwenden unterschiedliche Operatoren, um alle Artikel mit einem
Preis zwischen 10 und 100 zu ermitteln. Im dritten Ausdruck wird ein alphabetischer Bereich
angegeben.

SELECT * FROM t_lager WHERE preis >= 10 AND preis <= 100;
SELECT * FROM t_lager WHERE preis BETWEEN 10 AND 100;
SELECT * FROM t_ma WHERE name BETWEEN 'Be' AND 'Bo';

 Bei dieser Bedingung wird mit zwei Vergleichen geprüft, ob der Preis größer oder gleich 10
und gleichzeitig kleiner oder gleich 100 ist.
 Der BETWEEN-Operator vereinfacht den Ausdruck .
 Auch ein alphabetischer Bereich kann auf diese Weise angegeben werden. Es werden hier
die Datensätze ausgewählt, bei denen die Namen zwischen Be und Bo liegen. Das sind alle
Namen, die mit Be beginnen, bis zu den Namen, die mit Bn beginnen. Auch der Wert Bo
wird als richtig erkannt. Namen, die mit Bo beginnen, werden nicht mit ausgewählt, da sie
außerhalb der Bereichsgrenzen liegen.

Syntax
SELECT ... WHERE Datenfeld BETWEEN Untergrenze AND Obergrenze;

 Zuerst wird das zu überprüfende Datenfeld angegeben. Danach folgen das Schlüsselwort
BETWEEN und die Angabe der unteren und der oberen Grenze, die mit AND verbunden
werden.
 Die Werte für Unter- und Obergrenze sind im Wertebereich enthalten.

Elementprüfung
Sie können auch prüfen, ob der Wert eines Datenfeldes in einer Liste von Werten enthalten ist.
Dazu definieren Sie eine Werteliste, die alle möglichen Werte enthält. Mithilfe des IN-Operators
testen Sie in einer Bedingung, ob der Wert in der Liste enthalten ist.

Beispiel: BedingungOperatorIn.sql
Die beiden folgenden Ausdrücke verwenden unterschiedliche Operatoren, um die Mitarbeiter
aus drei verschiedenen Orten zu ermitteln.

SELECT * FROM t_ma


WHERE ort = 'Berlin' OR ort = 'Wien' OR ort = 'Hamburg';
SELECT * FROM t_ma WHERE ort IN ('Berlin', 'Wien', 'Hamburg');

108 Schulversion © HERDT-Verlag


Einfache Datenabfrage 8

 Hier wird durch drei jeweils durch OR-Verknüpfungen miteinander verbundene Vergleiche
geprüft, ob der Wert des Datenfeldes ort gleich Berlin, Wien oder Hamburg ist.
 Übersichtlicher wird die gleiche Bedingung mit dem IN-Operator formuliert. Die Liste
enthält die drei gewünschten Orte.

Syntax
SELECT ... WHERE Datenfeld IN (Werteliste);

 Zuerst erfolgt die Angabe des gewünschten Datenfeldes, gefolgt vom Schlüsselwort IN.
Danach wird, in runde Klammern gesetzt, eine Liste mit den gewünschten Werten
angegeben.
 Die einzelnen Werte der Liste werden durch Kommata getrennt. Textwerte müssen in
Anführungszeichen ("") oder Apostrophe ('') eingeschlossen werden.

Mustervergleich
Speziell für Textwerte existiert der LIKE-Operator, der einen flexiblen Vergleich mit einem vor-
gegebenen Muster ermöglicht. Dies ist besonders dann nützlich, wenn Ihnen als Suchkriterium
nur ein Teil einer Information zur Verfügung steht.

In dem Vergleichsmuster können Sie zwei verschiedene Platzhalterzeichen verwenden.

Platzhalter Erklärung Beispiel Mögliches Ergebnis


% Platzhalter steht für kein, name LIKE "F%" Funke, Franz, Fahrmann
ein oder mehrere name LIKE "%son" Benson, Jenson, Morrison
beliebige Zeichen name LIKE "%ill%" Miller, Filler, Ofillson
_ Platzhalter steht für exakt name LIKE "M_ller" Müller, Möller, Miller
ein beliebiges Zeichen name LIKE "____" Adas, Funk, Tier

Microsoft Access verwendet statt des Platzhalters "%" das Zeichen "*".

Beispiel: BedingungOperatorLike.sql
Durch die Verwendung des Operators LIKE werden Mitarbeiter der Tabelle t_ma durch ver-
schiedene Mustervergleiche selektiert.

SELECT * FROM t_ma WHERE name LIKE "Me%";


SELECT * FROM t_ma WHERE name LIKE "M%er";

 Die Abfrage liefert alle Mitarbeiter, deren Name mit Me beginnt.


 Die Abfrage liefert alle Mitarbeiter, deren Name mit M beginnt und auf er endet.

© HERDT-Verlag
Schulversion 109
8 Einfache Datenabfrage

Auswahl aller Namen nach einem bestimmten Muster

Wenn in den zu vergleichenden Werten die als Platzhalterzeichen definierten Zeichen % bzw. _
vorkommen, müssen Sie mit dem Schlüsselwort ESCAPE ein Zeichen als sogenanntes Flucht-
zeichen (Escape-Zeichen) kennzeichnen. Mit dem Fluchtzeichen können Sie in einem Muster
festlegen, dass das folgende Zeichen kein Platzhalter ist.

Beispiel: BedingungOperatorLikeEscape.sql
Es soll nach allen Mitarbeitern in Abteilungen gesucht werden, deren Name mit Abt_ beginnt.
Da im Muster Abt_ der Unterstrich verwendet wird, dieses Zeichen jedoch standardmäßig als
Platzhalter dient, muss ein Fluchtzeichen definiert werden.

SELECT * FROM t_abt WHERE name LIKE "Abt\ _%" ESCAPE "\ ";

 Mithilfe von ESCAPE wird das Zeichen \ als Fluchtzeichen definiert. Im Muster wird durch
das Voranstellen dieses Zeichens festgelegt, dass der Unterstrich in diesem Fall nicht als
Platzhalter zu sehen ist. Das folgende Prozent-Zeichen arbeitet jedoch ganz normal als
Platzhalterzeichen.

Auswahl aller Abteilungsnamen, die mit der Zeichenkette Abt_ beginnen

Syntax
SELECT ... WHERE Datenfeld LIKE "Muster" [ESCAPE "Zeichen "];

 Zuerst erfolgt die Angabe des gewünschten Datenfelds. Danach folgen das Schlüsselwort
LIKE und das anzuwendende Muster in Anführungszeichen oder Apostrophen.
 Falls im Muster eines der Zeichen % oder _ verwendet werden muss, wird mit dem
Schlüsselwort ESCAPE ein Fluchtzeichen definiert. Dieses Zeichen steht, gefolgt von
einem Leerzeichen, in Anführungszeichen oder Apostrophen.
 Im Muster wird das Fluchtzeichen dem gewünschten Zeichen, durch ein Leerzeichen
getrennt, vorangestellt.

110 Schulversion © HERDT-Verlag


Einfache Datenabfrage 8

Logische Operatoren
Mithilfe von logischen Operatoren können Sie mehrere Bedingungen miteinander verbinden.
Auf diese Weise erhalten Sie sehr komplexe Suchkriterien.

SQL ermöglicht den Einsatz der folgenden logischen Operatoren:

AND UND-Verknüpfung: Beide Bedingungen müssen erfüllt sein.


OR ODER-Verknüpfung: Mindestens eine der Bedingungen muss erfüllt sein.
NOT NICHT-Operator: Die nachfolgende Bedingung wird negiert (aus wahr wird
falsch und aus falsch wird wahr).

Beispiel: BedingungOperatorLogik.sql
In den folgenden Anweisungen werden mehrere Bedingungen mit logischen Operatoren
verbunden.

SELECT * FROM t_ma WHERE name LIKE 'M%' AND ort <> 'Berlin';
SELECT * FROM t_ma WHERE name LIKE 'M%' AND
(ort = 'Berlin' OR ort = 'Hamburg');
SELECT * FROM t_ma WHERE NOT (name LIKE "M%");

 Die Abfrage liefert alle Mitarbeiter, deren Name mit M beginnt und die nicht in Berlin
wohnen.
 Mit dieser Abfrage werden alle Mitarbeiter ermittelt, deren Name mit M beginnt und die
in Berlin oder Hamburg wohnen.
 Hier werden alle Mitarbeiter gesucht, deren Name nicht mit M beginnt.

Sie können mehrere logische Verknüpfungen beliebig kombinieren. Damit die Bedingung dabei
übersichtlich bleibt und so von der Datenbank interpretiert wird, wie Sie es wünschen, sollten Sie
auf die korrekte Klammersetzung achten.

8.3 Abfrageergebnisse gruppieren


Um die Datensätze einer Tabelle nach einem oder mehreren Kriterien zusammenzufassen
(Gruppen zu bilden), verwenden Sie die GROUP-BY-Anweisung. Auf diese Weise suchen Sie alle
Datensätze, die in einem bestimmten Datenfeld den gleichen Wert besitzen, und fassen diese
zu einer Gruppe zusammen.

Das Gruppieren ermöglicht das Kombinieren von normalen Datenfeldern und Aggregatfunktionen in
einer SELECT-Abfrage, was sonst eine Fehlermeldung erzeugen würde. Aggregatfunktionen dienen
beispielsweise dazu, die Anzahl der selektierten Datensätze oder den Minimal- bzw. Maximalwert
einer Spalte zu ermitteln. In einer SELECT-Abfrage ohne Gruppierung bezieht sich die Aggregat-
funktion auf die gesamte Abfrage. Verwenden Sie Aggregatfunktionen in gruppierten Abfragen,
beziehen sich diese auf die Gruppen und nicht auf die gesamte Abfrage.

© HERDT-Verlag
Schulversion 111
8 Einfache Datenabfrage

Beispiel: Gruppierung.sql
Es soll ermittelt werden, wie viele Mitarbeiter aus jedem Ort kommen. Dazu werden alle Daten-
sätze nach dem jeweiligen Ort gruppiert (zusammengefasst) und danach wird die Anzahl der
Werte der Spalte "name" je Gruppe gezählt.

SELECT ort AS Wohnort, COUNT(name) FROM t_ma GROUP BY ort;

 Die Datensätze der Tabelle werden mithilfe der Anweisung GROUP BY nach dem Ort grup-
piert. Für jede Gruppe wird mit der Aggregatfunktion COUNT die Anzahl der Mitarbeiter
ermittelt, die in diesem Ort wohnen. Der Name des Feldes, auf welches die Aggregatfunktion
angewendet werden soll, folgt dem Funktionsnamen in runden Klammern.

Durch die Gruppierung sind interessante statistische Auswertungen möglich

In gruppierten Abfragen kann die Menge der Datensätze über die HAVING-Klausel eingeschränkt
werden. In der HAVING-Klausel ist im Unterschied zur WHERE-Bedingung die Verwendung von
Aggregatfunktionen möglich, was in der Praxis häufig benötigt wird.

Syntaktisch ist die Verwendung der HAVING-Klausel ohne eine Gruppierung mittels der GROUP-
BY-Anweisung möglich. Im Regelfall werden aber beide gemeinsam eingesetzt. Dabei ist die mit
HAVING definierte Bedingung nach der GROUP-BY-Anweisung anzugeben.

Beispiel: Having.sql
Es soll ermittelt werden, wie viele Mitarbeiter aus jedem Ort kommen. Dabei sollen jedoch nur
die Orte ausgegeben werden, aus denen mindestens 10 Mitarbeiter stammen. In der zweiten
Beispielanweisung werden alle Namen gesucht, die mehr als einmal in der Tabelle enthalten sind.

SELECT ort AS Wohnort, COUNT(name) FROM t_ma


GROUP BY ort HAVING COUNT(name) >= 10;
SELECT name, COUNT(name) FROM t_ma
GROUP BY name HAVING COUNT(name) > 1;

 Mithilfe der HAVING-Klausel wird festgelegt, dass nur die Orte ausgegeben werden, aus
denen zehn oder mehr Mitarbeiter kommen.
 Diese Anweisung gibt alle Namen zurück, die mehr als einmal in der Tabelle t_ma enthalten sind.

In der Auswertung erscheinen nur Orte, In der Auswertung erscheinen nur Namen,
in denen zehn und mehr Mitarbeiter wohnen die mindestens zweimal vorkommen

112 Schulversion © HERDT-Verlag


Einfache Datenabfrage 8

Syntax
SELECT ... GROUP BY Datenfeld[,Datenfeld,...] [HAVING Bedingung];

 Mithilfe der GROUP-BY-Klausel lassen sich Abfragen nach einem oder mehreren Daten-
feldern gruppieren. Dabei wird erst nach dem ersten Datenfeld gruppiert, innerhalb der
ersten Gruppierung nach dem zweiten Datenfeld usw.
 Mit der HAVING-Klausel kann die Ergebnismenge in einer gruppierten Abfrage ein-
geschränkt werden. In der Bedingung können Aggregatfunktionen angegeben werden,
was bei der WHERE-Klausel nicht zulässig ist.

8.4 Abfrageergebnisse sortieren


Die SELECT-Anweisung liefert die Datensätze in keiner definierten Reihenfolge. Meist ver-
wendet die Datenbank dabei die Reihenfolge, in der die Daten in die Tabelle eingegeben wurden.
Um das Abfrageergebnis nach einem oder mehreren Datenfeldern zu sortieren, können Sie die
ORDER-BY-Klausel verwenden.

Beispiel: DatenSortieren.sql
In den folgenden Abfragen werden mehrere Möglichkeiten des Sortierens der Ergebnisdaten
einer Abfrage gezeigt.

SELECT vname, name, plz, ort FROM t_ma ORDER BY name, vname;
SELECT id, stueck FROM t_lager ORDER BY preis DESC LIMIT 15;
SELECT ort AS Wohnort, COUNT(name) AS "Anzahl Mitarbeiter"
FROM t_ma GROUP BY ort ORDER BY ort;

 In dieser Anweisung wird zuerst nach dem Familiennamen und dann nach dem Vornamen
der Mitarbeiter sortiert.
 Mit dem Schlüsselwort DESC wird eine absteigende Sortierung erreicht. Alle Datensätze der
Tabelle t_lager werden ausgewählt und nach dem Preis in absteigender Reihenfolge sortiert.
Der Preis wird dabei nicht angezeigt. Die Anzeige wird auf 15 Datensätze beschränkt.
 Die Sortieranweisung lässt sich auch bei gruppierten Daten anwenden. Hier wird die
Ausgabeliste nach dem Ort sortiert.

Absteigende Sortierung nach dem Anzahl der Mitarbeiter aus den jeweiligen Orten, sortiert
Artikelpreis nach Ortsnamen

© HERDT-Verlag
Schulversion 113
8 Einfache Datenabfrage

Syntax
SELECT ... ORDER BY Datenfeld[, Datenfeld, ...] [ASC|DESC];

 Das Abfrageergebnis wird nach dem angegebenen Datenfeld geordnet. Sind mehrere
Datenfelder angegeben, wird erst nach dem ersten, dann nach dem zweiten usw. sortiert.
 Standardmäßig wird in aufsteigender Reihenfolge sortiert, ASC (ascending) braucht somit
nicht angegeben zu werden. Um eine absteigende Sortierreihenfolge zu erhalten, geben Sie
DESC (descending) an.

Eine Sortierung nach Aggregatfunktionen ist nur in einigen Datenbanksystemen möglich (wie z. B.
in MariaDB oder PostgreSQL). Sie können alternativ durch Speichern der Ergebnisse einer Funk-
tion in einem eigenen Datenfeld oder durch Stored Procedures zu dem gewünschten Ergebnis
kommen.

8.5 Übung

Abfragen in Datenbanken durchführen


Übungsdatei: -- Ergebnisdateien: Uebung1.sql, Uebung2.sql

1. Wechseln Sie zur Datenbank Uebungen.


Erstellen Sie eine Datenabfrage für die Tabelle t_ma, um die Vornamen und Familiennamen
aller Mitarbeiter zu ermitteln. Begrenzen Sie das Abfrageergebnis auf 15 Datensätze.
Erweitern Sie die Abfrage, damit Sie zusätzlich die Postleitzahl und den Ort der Mitarbeiter
erhalten.
Definieren Sie für alle Felder der Abfrage sinnvolle Ersatznamen.
Ändern Sie die Abfrage, sodass Sie nur Mitarbeiter aus Hamburg und Berlin erhalten.
Verwenden Sie dazu die IN-Anweisung. Zusätzlich sollen die Mitarbeiter vor dem Jahr 1980
geboren sein. Lassen Sie sich die Ergebnisse der Abfrage nach Familiennamen der Mitar-
beiter sortieren.
2. Wechseln Sie zur Datenbank Uebungen.
Ermitteln Sie aus der Tabelle t_lager für jeden Artikel den Bruttopreis, indem Sie zu dem
in der Tabelle gespeicherten Preis 19 % Mehrwertsteuer hinzufügen.
Gruppieren Sie die Tabelle anhand der Stückzahl und ermitteln Sie in einer Abfrage die
Anzahl der Artikel, die mit einer bestimmten Stückzahl vorhanden sind.
Schränken Sie die Abfrage auf Stückzahlen mit weniger als 10 Artikeln ein.
Sortieren Sie das Abfrageergebnis wenn möglich absteigend nach der Stückzahl.

114 Schulversion © HERDT-Verlag


Schlüsselfelder und Indices 9

9
9. Schlüsselfelder und Indices

9.1 Einführung zu Schlüsseln und Indizes


In vielen Datenbanksystemen werden Schlüssel und Indizes als gleichwertig behandelt. Für das
relationale Datenmodell sind nur Schlüssel von Bedeutung. In der Datenbank wird jedoch für
jeden Schlüssel automatisch ein Index angelegt.

Schlüssel Durch einen Schlüssel wird jeder Datensatz einer Tabelle eindeutig identifiziert.
Ein Schlüssel wird aus einem Datenfeld oder einer Kombination von Datenfeldern
der Tabelle gebildet. Wie auch im relationalen Datenmodell können Schlüssel
benutzt werden, um Beziehungen zwischen logisch zusammengehörigen Tabellen
herzustellen.
Indizes Ein Index wird für ein bestimmtes Datenfeld oder auch mehrere Datenfelder ange-
legt, nach denen häufig sortiert oder in denen häufig gesucht wird. Er ähnelt dem
Inhaltsverzeichnis eines Buches und ist in Form eines B*-Baumes aufgebaut. Das
Durchsuchen der Datensätze wird durch einen Index zum Teil erheblich beschleu-
nigt. Für einen Schlüssel wird vom DBMS meist automatisch ein Index erstellt. Für
eine Tabelle können Sie mehrere Indizes definieren.

 Bei den Schlüsseln im relationalen Datenmodell werden Primär-, Sekundär- und Fremd-
schlüssel unterschieden. Nicht in jedem Datenbanksystem sind alle Schlüsselarten verfügbar.
 Für jede Tabelle können mehrere Indizes erstellt werden, jedoch nur ein Primärschlüssel.

Primärschlüssel
Der Primärschlüssel ist ein Schlüssel, der einen Datensatz eindeutig kennzeichnet, z. B. eine
Kundennummer. Häufig handelt es sich dabei um eine fortlaufende Nummer. Das Datenbank-
system kann diese Nummern in der Regel automatisch erzeugen.

Jede Tabelle kann nur einen Primärschlüssel enthalten. Alle weiteren Schlüssel sind Sekundär-
schlüssel. Im relationalen Datenmodell muss für jede Tabelle zwingend ein Primärschlüssel
definiert werden. Dieses Schlüsselfeld darf niemals leer sein.

© HERDT-Verlag
Schulversion 115
9 Schlüsselfelder und Indices

Sekundärschlüssel
Ähnlich wie beim Primärschlüssel müssen sich die Datensätze auch in den Sekundärschlüsseln
unterscheiden. Sie dienen dazu, Redundanzen in den gespeicherten Daten zu vermeiden, da in
einem Schlüsselfeld ein Wert nicht mehrfach vorkommen darf. Besitzt eine Tabelle Abteilungen
beispielsweise die Felder ID und Name, kann das Feld ID zur eindeutigen Kennzeichnung der
Datensätze verwendet werden (ist demnach Primärschlüssel). Damit als Abteilungsname eine
Abteilung nicht mehrfach verwendet werden kann, wird das Feld Name zusätzlich als Sekundär-
schlüssel definiert.

Jede Tabelle kann mehrere Sekundärschlüssel enthalten. Diese Schlüsselfelder dürfen niemals
leer sein und sie müssen sich in jedem Datensatz unterscheiden.

Fremdschlüssel
Ein Fremdschlüssel bezeichnet die Übereinstimmung eines Datenfeldes in einer Tabelle mit dem
Primärschlüssel einer anderen Tabelle. Im relationalen Datenmodell werden häufig sogenannte
Beziehungs-Tabellen verwendet, die zwei Tabellen miteinander verbinden.

Beispiel
Es existieren die Tabellen t_ma und t_proj. In der Tabelle t_ma werden alle Daten der Mitarbeiter
eines Unternehmens gespeichert. Jeder Datensatz ist mit einer eindeutigen ID-Nummer (Mit-
arbeiternummer) als Primärschlüssel gekennzeichnet. Die Tabelle t_proj speichert die im Unter-
nehmen laufenden und abgeschlossenen Projekte. Auch hier wird jeder Datensatz mit einem
Primärschlüssel (der Projektnummer) gekennzeichnet.

Jeder Mitarbeiter ist einem oder


mehreren Projekten zugeordnet,
es besteht eine n:m-Beziehung
zwischen beiden Tabellen.

Durch eine weitere Tabelle


t_ma_proj wird die Referenz
hergestellt. Hier werden die
Mitarbeiternummern mit den Primärschlüssel-Fremdschlüssel-Beziehung am Beispiel einer
zugehörigen Projektnummern n:m-Beziehung
gespeichert.

Da die Felder Mitarbeiternummer und Projektnummer in den jeweiligen Tabellen Primärschlüssel


sind, entsteht eine Fremdschlüsselbeziehung. In der Tabelle t_ma_proj werden sie daher als
Fremdschlüssel bezeichnet.

Indizes
Indizes erleichtern die Suche nach Datensätzen, insbesondere bei sehr großen Datenmengen.
Standardmäßig durchsucht das Datenbanksystem bei der Suche nach bestimmten Werten in
einer oder mehreren Spalten nacheinander alle Datensätze einer Tabelle. Existiert für eine oder
mehrere Spalten jedoch ein Index, dann wird dieser zur Suche herangezogen und beschleunigt
die Suche.

116 Schulversion © HERDT-Verlag


Schlüsselfelder und Indices 9

 Ein Index bringt vor allem dann große Geschwindigkeitsvorteile, wenn die Datensätze sehr
viele Daten enthalten oder die Tabelle sehr groß ist.
 Beachten Sie, dass beim Einfügen, Löschen und Ändern von Datensätzen alle definierten
Indizes aktualisiert werden müssen. Dies kann beim Füllen von Tabellen sehr viel Zeit in
Anspruch nehmen.

Erzeugen Sie die Indizes für umfangreiche Tabellen erst nach dem Einfügen der Datensätze,
da diese Operation sonst länger dauern kann.

9.2 Schlüsselfelder festlegen und bearbeiten

Primärschlüssel definieren und löschen


Primärschlüssel werden in der Regel beim Erstellen einer Tabelle definiert. Dazu können Sie die
Anweisung PRIMARY KEY verwenden.

Beispiel: PrimaerschluesselErstellen.sql
Das Feld id der Tabelle t_proj wird als Primärschlüssel definiert. Da das Primärschlüsselfeld keine
NULL-Werte enthalten darf, wird es mit NOT NULL definiert. Beim Einfügen neuer Datensätze
soll es automatisch weiterzählen.

CREATE TABLE t_proj


 (id INTEGER NOT NULL AUTO_INCREMENT,
name VARCHAR(50),
beginn DATE,
ende DATE,
 PRIMARY KEY(id));

 Die Tabelle t_proj wird erstellt. Sie soll die Namen der verschiedenen Projekte mit einer
eindeutigen Projektnummer (id) speichern.
 Das Feld id soll jeden Datensatz eindeutig kennzeichnen und als Primärschlüssel eingesetzt
werden. Da es ausschließlich ganze Zahlen aufnehmen soll, wird es vom Typ INTEGER
deklariert. Die Anweisung NOT NULL legt fest, dass das Feld niemals leer sein darf. Die
Angabe AUTO_INCREMENT legt fest, dass der Datenfeldinhalt bei jedem neuen Datensatz
um den Wert eins erhöht wird.
 Durch die Angabe von PRIMARY KEY wird das Feld id als Primärschlüssel definiert.

Syntax für die Definition des Primärschlüssels


Wenn Sie den Primärschlüssel für eine Spalte anlegen möchten, können Sie direkt nach der
betreffenden Spaltendefinition die Option PRIMARY KEY eingeben (Spaltenconstraint).

© HERDT-Verlag
Schulversion 117
9 Schlüsselfelder und Indices

CREATE TABLE tabellenname


(primärschlüsselfeld datentyp PRIMARY KEY ... ,
...);

 Der Primärschlüssel wird als normales Datenfeld in der CREATE-TABLE-Anweisung


deklariert.
 Durch die Option PRIMARY KEY in der betreffenden Spaltendefinition wird bereits für die
Spalte festgelegt, dass sie eindeutig sein muss und keine NULL-Werte enthalten darf. Die
Angabe NOT NULL entfällt daher.

Neben der oben beschriebenen Syntax haben Sie auch die Möglichkeit, den Primärschlüssel erst
nach der Angabe aller Spalten festzulegen (Tabellenconstraint), beispielsweise, wenn der Primär-
schlüssel aus mehreren Spalten bestehen soll. In diesem Fall sieht die Syntax folgendermaßen aus.

CREATE TABLE tabellenname


(primärschlüsselfeld1 datentyp ... NOT NULL,
primärschlüsselfeld2 datentyp ... NOT NULL,
...
PRIMARY KEY(primärschlüsselfeld1, primärschlüsselfeld2));

 Der Primärschlüssel wird als normales Datenfeld in der CREATE-TABLE-Anweisung


deklariert. Da der Schlüssel niemals leer sein darf, muss in manchen DBMS die Option
NOT NULL verwendet werden.
 Am Ende der Tabellendefinition wird mit der Angabe PRIMARY KEY das entsprechende
Datenfeld als Primärschlüssel gekennzeichnet. Der Name des Datenfeldes wird dabei in
runde Klammern eingeschlossen. Werden mehrere Datenfelder als Primärschlüssel
festgelegt, sind diese durch Kommata getrennt anzugeben.

Werden Primärschlüssel über mehrere Datenfelder angelegt, müssen sich die Datensätze in min-
destens einem der Datenfelder unterscheiden. Beachten Sie, dass sich durch komplexe Primär-
schlüssel viele Operationen verlangsamen (Bearbeitung der Daten, Abfragen) und mehr Platz zu
deren Speicherung benötigt wird. Da Primärschlüssel zum Verknüpfen von Tabellen benötigt
werden, sollten diese möglichst einen Datentyp besitzen, der wenig Speicherplatz verwendet.

 Mit der Angabe AUTO_INCREMENT wird in MariaDB erreicht, dass der Wert eines Feldes
beim Einfügen eines neuen Datensatzes automatisch erhöht wird. Derartige Datenfelder
eignen sich gut als Primärindex.
 Bei PostgreSQL haben Sie die Möglichkeit, als Datentyp SERIAL zu wählen, wenn Sie eine
Spalte erzeugen möchten, die automatisch eine eindeutige Nummerierung erstellt. SERIAL
ist kein echter Datentyp, sondern eine abgekürzte Schreibweise für eine Spalte, die den
Datentyp INTEGER mit einem sequenziellen Vorgabewert erstellt und NULL-Werte nicht
zulässt.

CREATE TABLE tabellenname


(primärschlüsselfeld SERIAL PRIMARY KEY ... ,
...);

118 Schulversion © HERDT-Verlag


Schlüsselfelder und Indices 9

Primärschlüssel nachträglich hinzufügen oder löschen


Der Primärschlüssel wird meist bereits beim Erstellen einer Tabelle definiert. In einigen Fällen
kann es jedoch notwendig sein, die Definition nachträglich zu ändern bzw. den Primärschlüssel
einer bestehenden Tabelle hinzuzufügen. Dies können Sie mit der ALTER-TABLE-Anweisung
erreichen. Mit der gleichen Anweisung ist es auch möglich, einen vorhandenen Primärschlüssel
zu löschen.

Syntax
ALTER TABLE tabellenname ADD PRIMARY KEY (datenfeldname);
ALTER TABLE tabellenname DROP PRIMARY KEY;

 Die Anweisung wird mit den Schlüsselwörtern ALTER TABLE eingeleitet. Danach folgt der
Tabellenname.
 Die ALTER-TABLE-Anweisung erlaubt verschiedene Änderungen an der Tabellenstruktur.
Mit der Angabe ADD PRIMARY KEY wird der in runden Klammern angegebene Datenfeld-
name als Primärschlüssel definiert.
 Besteht der Primärschlüssel aus mehreren Datenfeldern, werden diese durch Kommata
getrennt.
 Mit der Angabe DROP PRIMARY KEY wird ein vorhandener Primärschlüssel gelöscht.

Das nachträgliche Hinzufügen eines Primärschlüssels ist nur möglich, wenn das entsprechende
Datenfeld mit der Angabe NOT NULL definiert wurde. Gleichzeitig dürfen die Datensätze keinen
doppelten Wert in diesem Feld enthalten.

Sekundärschlüssel erstellen und löschen


Neben dem Primärschlüssel können Sie mehrere Sekundärschlüssel definieren, die sich aus
beliebig vielen Datenfeldern zusammensetzen können. Diese Sekundärschlüssel werden mit
der Anweisung UNIQUE beim Erstellen einer Tabelle definiert.

Beispiel: SekundaerschluesselErstellen.sql
Es wird eine Tabelle t_artikel mit einem Primärschlüssel und zwei Sekundärschlüsseln erzeugt.

 CREATE TABLE t_artikel


(id INTEGER NOT NULL AUTO_INCREMENT,
 name VARCHAR(100) NOT NULL, code VARCHAR(30) NOT NULL,
lieferant INTEGER, bemerkung VARCHAR(100),
 PRIMARY KEY(id),
 UNIQUE namecodeindex (name, code));

 Das Datenfeld id soll als Primärschlüssel verwendet werden. Dadurch darf es keine NULL-
Werte enthalten. Außerdem soll es automatisch weiterzählen, wenn ein neuer Datensatz
eingefügt wird. Zu diesem Zweck wird es bei MariaDB mit der Angabe NOT NULL und
AUTO_INCREMENT definiert.

© HERDT-Verlag
Schulversion 119
9 Schlüsselfelder und Indices

 Für jeden Artikel sollen ein spezifischer Name und ein Code gespeichert werden. Da sich
die Artikel in mindestens einem dieser Daten unterscheiden, können beide als Sekundär-
schlüssel eingesetzt werden. Da für alle Schlüssel keine NULL-Werte erlaubt sind, wird auch
hier die Angabe NOT NULL verwendet.
 Der Primärschlüssel wird an dieser Stelle festgelegt.
 Mit der UNIQUE-Klausel werden die Felder name und code als Sekundärschlüssel definiert.
Optional kann bei MariaDB ein Name für diesen Schlüssel angegeben werden (nicht bei
PostgreSQL). In diesem Fall soll er namecodeindex heißen.

Alle Schlüsselfelder dürfen niemals leer bleiben. Daher müssen Sie bei der Definition der Daten-
felder die Angabe NOT NULL verwenden.

Sie können die Anweisung für eine Spalte direkt bei der Definition des betreffenden Datenfeldes
angeben (Spaltenconstraint).

Syntax
CREATE TABLE tabellenname
(datenfeld1 datentyp1 [schlüsselname] UNIQUE...,
...);

 Die Sekundärschlüssel werden als normale Datenfelder in der CREATE-TABLE-Anweisung


deklariert.
 Durch die Option UNIQUE in dem betreffenden Datenfeld wird bereits für die Spalte
festgelegt, dass sie als Sekundärschlüssel dienen soll.
 Optional kann ein Name für den Sekundärschlüssel angegeben werden (nicht in allen DBS
möglich, PostgreSQL unterstützt diese Möglichkeit nicht). Wird nichts angegeben, verwendet
die Datenbank in der Regel den Namen des ersten Datenfeldes als Schlüsselnamen.

Neben der oben beschriebenen Syntax haben Sie auch die Möglichkeit, den Sekundärschlüssel
erst nach der Angabe aller Spalten festzulegen. Dies ist beispielsweise nötig, wenn der Schlüssel
aus mehreren Spalten bestehen soll. In diesem Fall sieht die Syntax folgendermaßen aus:

Syntax
CREATE TABLE tabellenname
(datenfeld1 datentyp1 ...,
...
UNIQUE [schlüsselname] (datenfeldliste));

 Am Ende der Tabellendefinition werden mit der Angabe UNIQUE die entsprechenden
Datenfelder als Sekundärschlüssel gekennzeichnet. Die Namen der Datenfelder werden dabei
durch Kommata getrennt und in runde Klammern eingeschlossen.

Sekundärschlüssel nachträglich hinzufügen oder löschen


Genau wie Primärschlüssel können Sie einer Tabelle auch nachträglich Sekundärschlüssel
hinzufügen oder diese löschen. Dazu verwenden Sie die ALTER-TABLE-Anweisung.

120 Schulversion © HERDT-Verlag


Schlüsselfelder und Indices 9

Syntax
ALTER TABLE tabellenname ADD UNIQUE [schlüsselname]
(datenfeldliste);
ALTER TABLE tabellenname DROP INDEX schlüsselname;

 Die Anweisung wird mit den Schlüsselwörtern ALTER TABLE eingeleitet. Danach folgt der
Tabellenname.
 Die ALTER-TABLE-Anweisung erlaubt verschiedene Änderungen an der Tabellenstruktur.
Mit der Angabe ADD UNIQUE können Sie ein oder mehrere Datenfelder als Sekundär-
schlüssel definieren. Zusätzlich ist es in manchen DBS möglich, einen Schlüsselnamen
festzulegen.
 Mit der Angabe DROP INDEX wird ein vorhandener Sekundärschlüssel gelöscht. Dazu ist der
Name des Schlüssels notwendig.

Das nachträgliche Hinzufügen eines Sekundärschlüssels ist nur möglich, wenn die entsprechen-
den Datenfelder mit der Angabe NOT NULL definiert wurden. Gleichzeitig müssen alle Daten-
sätze in diesem Feld unterschiedliche Werte besitzen. Ist dies nicht der Fall, erhalten Sie eine
Fehlermeldung.

Fremdschlüssel erstellen
Im relationalen Datenmodell werden die Datenbestände auf mehrere Tabellen aufgeteilt, um sie
möglichst effizient zu speichern und Redundanzen zu vermeiden. In einigen Tabellen werden
dadurch nur Verweise auf die Primärschlüssel anderer Tabellen gespeichert. Diese Verweise
werden Fremdschlüssel genannt. Sie werden mit der Anweisung FOREIGN KEY/REFERENCES
beim Erstellen einer Tabelle definiert.

Damit die referenzielle Integrität gewahrt bleibt, dürfen keine Datensätze aus einer Tabelle
gelöscht werden, ohne dabei auch alle Verweise auf diese Datensätze in anderen Tabellen zu
entfernen. Die Verweise würden sonst auf einen nicht mehr vorhandenen Datensatz zeigen.
Sie dürfen beispielsweise keinen Mitarbeiter aus der Mitarbeitertabelle löschen, bevor Sie die
Verweise auf diesen Mitarbeiter aus der Projektverwaltung entfernt haben.

Durch die Definition von Fremdschlüsseln beachtet die Datenbank automatisch die Regeln der
referenziellen Integrität und verweigert entsprechende INSERT-, DELETE- und UPDATE-
Anweisungen mit einer Fehlermeldung.

Nicht alle Datenbanksysteme unterstützen Fremdschlüssel in vollem Umfang.

Beispiel: FremdschluesselErstellen.sql
Im Folgenden wird eine Tabelle t_ma_proj mit zwei Fremdschlüsseln erstellt, um die Verbindung
zwischen den Tabellen t_ma und t_proj herzustellen. Wenn Sie neue Datensätze in diese Tabelle
einfügen, müssen Sie gültige ID-Nummern der beiden anderen Tabellen verwenden. Ansonsten
erhalten Sie eine Fehlermeldung.

© HERDT-Verlag
Schulversion 121
9 Schlüsselfelder und Indices

 CREATE TABLE t_ma_proj


 (ma_id INTEGER NOT NULL,
proj_id INTEGER NOT NULL,
 FOREIGN KEY (ma_id) REFERENCES t_ma (id),
 FOREIGN KEY (proj_id) REFERENCES t_proj (id));

 Die Tabelle enthält zwei Datenfelder, um eine Zuordnung eines Projektes zu einem Mit-
arbeiter zu ermöglichen. Da die Felder Verweise auf die Primärschlüssel der jeweiligen
Tabellen speichern sollen, werden sie mit den gleichen Datentypen wie diese (beide
INTEGER) und der Angabe NOT NULL deklariert.
 Die Tabelle enthält zwei Fremdschlüssel. Der erste weist das Datenfeld ma_id als Verweis
auf das Feld id in der Tabelle t_ma aus.
 Der zweite Fremdschlüssel definiert das Feld proj_id als Verweis auf das Feld id in der
Tabelle t_proj.

Sie können für jede Tabelle mehrere Fremdschlüssel erstellen. Achten Sie dabei darauf, dass
Sie in einer Tabelle keinen Fremdschlüssel auf eine Tabelle erstellen, die wiederum einen
Fremdschlüssel enthält, der auf die erste Tabelle verweist. Diese sogenannten zirkulären
Referenzen können zu Problemen beim Einfügen und Löschen von Datensätzen führen.

Syntax für das Erstellen von Fremdschlüsseln


Wenn Sie den Fremdschlüssel für eine Spalte anlegen möchten, können Sie direkt nach der
betreffenden Spaltendefinition die Option REFERENCES eingeben (Spaltenconstraint).

CREATE TABLE tabellenname


(datenfeld1 datentyp1,
datenfeld 2 datentyp 2
REFERENCES tabellenname (datenfeldname)
[ON UPDATE referenzoption] [ON DELETE referenzoption]),
datenfeld 3 datentyp 3);
...;

 Der Fremdschlüssel wird bei der betreffenden Spaltendefinition der CREATE-TABLE-


Anweisung deklariert.
 Nach der Angabe des Datenfeldes, das auf einen Primärschlüssel einer anderen Tabelle
verweist, folgt die Anweisung REFERENCES und der Name der Tabelle, auf die verwiesen
wird. In runden Klammern folgt dann der Name des Primärschlüsselfeldes dieser Tabelle.
 Wenn benötigt, können danach verschiedene Optionen angegeben werden, die das Ver-
halten bei Fremdschlüsselverletzungen steuern.

Neben der oben beschriebenen Syntax haben Sie auch die Möglichkeit, den Fremdschlüssel erst
nach der Angabe aller Spalten festzulegen (Tabellenconstraint). In diesem Fall sieht die Syntax
folgendermaßen aus.

122 Schulversion © HERDT-Verlag


Schlüsselfelder und Indices 9

CREATE TABLE tabellenname


(datenfeld1 datentyp1 ...,
...
FOREIGN KEY (datenfeldname)
REFERENCES tabellenname (datenfeldname)
[ON UPDATE referenzoption] [ON DELETE referenzoption]) ...;

 Die Fremdschlüssel werden am Ende der CREATE-TABLE-Anweisung deklariert.


 Nach der Angabe FOREIGN KEY folgt in runden Klammern der Name des Datenfeldes,
das auf einen Primärschlüssel einer anderen Tabelle verweist.
 Danach folgen das Schlüsselwort REFERENCES und der Name der Tabelle, auf die verwiesen
wird. In runden Klammern folgt dann der Name des Primärschlüsselfeldes dieser Tabelle.
 Wenn benötigt, können danach verschiedene Optionen angegeben werden, die das Ver-
halten bei Fremdschlüsselverletzungen steuern.
 Durch Kommata getrennt können mehrere Fremdschlüsseldefinitionen angegeben werden.

Optionen für das Verhalten bei Fremdschlüsselverletzungen


Beim Einfügen eines Datensatzes in eine Tabelle mit Fremdschlüsseln prüft das Datenbanksystem,
ob eine Entsprechung in der referenzierten Tabelle vorhanden ist. Ist dies nicht der Fall, wird eine
Fehlermeldung ausgegeben.

Beispiel
In die Tabelle t_ma_proj wird ein neuer Datensatz eingefügt. Dieser verweist auf eine Projekt-
nummer (Projektnummer 5), die in der Tabelle t_proj nicht existiert (es sind nur die Projektnum-
mern 1 bis 4 vorhanden). Das Datenbanksystem verweigert die Ausführung der SQL-Anweisung,
damit die referenzielle Integrität erhalten bleibt.

Einfügen einer nicht gültigen Projektnummer in eine Tabelle mit Fremdschlüsseln unter MariaDB

Für das Löschen oder Aktualisieren eines Datensatzes, auf den noch Referenzen in anderen
Tabellen bestehen, können Sie das Verhalten der Datenbank differenzierter steuern. Dazu
verwenden Sie bei der Definition des Fremdschlüssels die Angabe ON DELETE option bzw.
ON UPDATE option.

Folgende Optionen sind dabei möglich:

NO ACTION Die Ausführung der Anweisung wird abgebrochen.


CASCADE Beim Löschen werden alle Datensätze in anderen Tabellen, die auf diesen
Datensatz verweisen, ebenfalls gelöscht.
Beim Aktualisieren werden alle referenzierten Datensätze in anderen Tabellen
ebenfalls geändert.

© HERDT-Verlag
Schulversion 123
9 Schlüsselfelder und Indices

SET Alle referenzierten Datenfelder werden auf den DEFAULT-Wert (Standardwert)


DEFAULT zurückgesetzt.
SET NULL Alle referenzierten Datenfelder werden auf den Wert NULL gesetzt.

Wenn Sie keine Option angeben, wird standardmäßig jede Anweisung abgebrochen, die die
referenzielle Integrität verletzt.

Beispiel: FremdschluesselDatensatzLoeschen.sql
Das Projekt mit der ID 4 ist abgeschlossen und soll aus der Tabelle t_proj gelöscht werden. Damit
in der Tabelle t_ma_proj keine Datensätze mit ungültigen Verweisen auf dieses Projekt gespei-
chert bleiben, wird dem Fremdschlüssel die Option ON DELETE CASCADE hinzugefügt.

DROP TABLE t_ma_proj;


CREATE TABLE t_ma_proj
(ma_id INTEGER NOT NULL,
proj_id INTEGER NOT NULL,
 FOREIGN KEY (ma_id) REFERENCES t_ma (id) ON DELETE CASCADE,
FOREIGN KEY (proj_id) REFERENCES t_proj (id)
ON DELETE CASCADE);
INSERT INTO t_ma_proj (ma_id, proj_id) VALUES(2, 1);
INSERT INTO t_ma_proj (ma_id, proj_id) VALUES(5, 1);
INSERT INTO t_ma_proj (ma_id, proj_id) VALUES(8, 1);
INSERT INTO t_ma_proj (ma_id, proj_id) VALUES(11, 1);
INSERT INTO t_ma_proj (ma_id, proj_id) VALUES(14, 4);
INSERT INTO t_ma_proj (ma_id, proj_id) VALUES(18, 4);
DELETE FROM t_proj WHERE id = 4;

 Die bereits vorhandene Tabelle t_ma_proj wird


gelöscht und nochmals neu erstellt.
 Mit der zusätzlichen Option ON DELETE CASCADE
wird erreicht, dass alle Datensätze der Tabelle
automatisch gelöscht werden, wenn in der
referenzierten Tabelle ein verknüpfter Datensatz
gelöscht wird.
 In die Tabelle t_ma_proj werden verschiedene
Datensätze eingefügt. Zwei Datensätze verweisen
auf das Projekt mit der Id 4.
 An dieser Stelle wird in der Tabelle t_proj das Projekt Die verknüpften Datensätze der Tabelle
mit der Id 4 gelöscht. Alle Datensätze in der Tabelle t_ma_proj werden automatisch gelöscht
t_ma_proj, die sich auf diesen Datensatz beziehen,
werden ebenfalls gelöscht.

124 Schulversion © HERDT-Verlag


Schlüsselfelder und Indices 9

Fremdschlüssel nachträglich hinzufügen


Mithilfe der ALTER-TABLE-Anweisung können Sie einer Tabelle auch nachträglich Fremdschlüs-
sel hinzufügen. Dies kann z. B. dann sinnvoll sein, wenn Sie die Tabelle mit den Fremdschlüsseln
anlegen möchten, bevor Sie die referenzierte Tabelle erstellen.

Syntax
ALTER TABLE tabellenname ADD FOREIGN KEY (datenfeldname)
REFERENCES tabellenname (datenfeldname)
[ON UPDATE referenzoption] [ON DELETE referenzoption];

 Die Anweisung wird mit den Schlüsselwörtern ALTER TABLE eingeleitet. Danach folgt der
Tabellenname.
 Die ALTER-TABLE-Anweisung erlaubt verschiedene Änderungen an der Tabellenstruktur.
Mit der Angabe ADD FOREIGN KEY wird ein neuer Fremdschlüssel definiert. Danach folgt
in runden Klammern der Name des Datenfeldes in der aktuellen Tabelle, das auf einen
Primärschlüssel einer anderen Tabelle verweist.
 Danach folgen das Schlüsselwort REFERENCES und der Name der Tabelle, auf die ver-
wiesen wird. In runden Klammern folgt der Name des Primärschlüsselfeldes dieser Tabelle.
 Wenn benötigt, können danach verschiedene Optionen angegeben werden, die das Ver-
halten bei Fremdschlüsselverletzungen steuern.

9.3 Indizes
Indizes erstellen
Die Suche in großen Datenbeständen kann mit Indizes erheblich beschleunigt werden. Ein Index
ähnelt dem Inhaltsverzeichnis eines Buches, in dem Suchbegriffe geordnet vorliegen und auf die
entsprechenden Seiten des Buches verwiesen wird. Liegt ein Index für eine Tabelle vor, durchsucht
das DBMS nicht mehr sequenziell alle Datensätze der Tabelle, sondern nur den kompakteren Index,
und es wählt gezielt die passenden Datensätze aus. Indizes werden meist in gesonderten Dateien
gespeichert. Mit der Anweisung CREATE INDEX wird ein Index erstellt.

Beispiel: IndexErstellen.sql
In zwei separaten Anweisungen werden eine Tabelle und ein Index für ein Feld dieser Tabelle
definiert.

CREATE TABLE t_produkt


(id INTEGER NOT NULL, name VARCHAR(50),
bemerk VARCHAR(100), datum DATE, PRIMARY KEY (id));
INSERT INTO t_produkt ...
CREATE INDEX i_produkt_name ON t_produkt (name);
SELECT id, name FROM t_produkt WHERE name LIKE "S%"
ORDER BY name;

© HERDT-Verlag
Schulversion 125
9 Schlüsselfelder und Indices

 Die Tabelle wird über die CREATE-TABLE-Anweisung erstellt. Das Datenfeld id soll als
Primärschlüssel eingesetzt werden.
 In die Tabelle t_produkt werden einige Datensätze eingefügt.
 An dieser Stelle wird ein Index mit dem Namen i_produkt_name für das Feld name der
Tabelle erstellt.
 Wird in einer WHERE-Bedingung das Datenfeld name verwendet, kommt der Index
automatisch zum Einsatz.
Bei PostgreSQL müssen statt Anführungszeichen Hochkommata verwendet werden
(LIKE 'S%').

Der Indexname wird nur benötigt, um den Index zu einem späteren Zeitpunkt löschen zu können.
Der Index wird von der Datenbank automatisch verwendet, wenn die Suche über ein oder meh-
rere mit einem Index versehene Felder verläuft. Ob ein Index bei der Ausführung einer Abfrage
wirklich genutzt wird, kann nicht garantiert werden, da dies von der jeweiligen Abfrage-Engine
unter anderem aufgrund von Statistiken entschieden wird. In der Regel wird jedoch auf den Index
zurückgegriffen.

Beachten Sie, dass der Index richtungsabhängig ist. Standardmäßig wird der Index immer in
aufsteigender Suchrichtung für das entsprechende Datenfeld erstellt. Einen absteigenden Index
erreichen Sie mit der Anweisung CREATE DESC INDEX. Diese Anweisung wird von MariaDB
jedoch nicht unterstützt.

Syntax
CREATE INDEX indexname ON tabellenname (datenfeldname [ASC|DESC] );

 Die Anweisung zum Erstellen eines neuen Index beginnt mit CREATE INDEX.
 Danach folgt der gewünschte Indexname. Dieser Name wird nur zur internen Verwaltung der
Indizes verwendet. Über den Indexnamen kann ein Index später wieder gelöscht werden.
 Nach dem Schlüsselwort ON werden der Name der Tabelle sowie in runden Klammern der
Name des Datenfelds angegeben, für das der Index erzeugt werden soll. Falls ein absteigen-
der Index gewünscht wird, kann die Anweisung um das Schlüsselwort DESC erweitert
werden.

Über die Anweisung SHOW INDEX FROM table können Sie sich alle definierten Indizes der
Datenbank anzeigen lassen. In der Konsole von PostgreSQL können Sie die Indizes mit dem Befehl
"\di" anzeigen lassen.

Richtlinien für das Erstellen von Indizes


Es ist nicht zweckmäßig, für alle Datenfelder einer Tabelle Indizes zu erstellen. In manchen Fällen
kann das Suchverhalten dadurch verlangsamt werden. Für das Erstellen der Indizes sollten Sie
folgende Richtlinien beachten:

 Für Datenfelder, die an Primär-, Sekundär- oder Fremdschlüsseln beteiligt sind, werden von
den meisten Datenbanksystemen automatisch Indizes erstellt. Sie benötigen daher keinen
zusätzlichen Index.

126 Schulversion © HERDT-Verlag


Schlüsselfelder und Indices 9

 Für Datenfelder, deren Werte sich nur wenig unterscheiden (z. B. ein Feld zum Speichern
der Anrede Herr und Frau), bringt ein Index keine Geschwindigkeitsvorteile.
 Bei Tabellen mit wenigen Daten bringt ein Index ebenfalls kaum Geschwindigkeitsvorteile.
 Erstellen Sie Indizes für Tabellen, in denen große Datenmengen gefiltert, gruppiert oder
sortiert werden müssen.
 Für sich häufig ändernde Datenfelder sollten keine Indizes erstellt werden, da der Index mit
jeder Datenaktualisierung ebenfalls aktualisiert werden muss.
 Indizes sind nur für sehr häufig in Abfragen benötigte Datenfelder von Vorteil. Für selten
verwendete Felder wird nur unnötig Speicherplatz belegt und Rechenzeit zum Aktualisieren
des Indexes in Anspruch genommen.
 Für Datenfelder, die auf- und absteigend sortiert werden müssen, müssen Sie zwei
verschiedene Indizes erstellen.
 Aggregatfunktionen nutzen keinen Index, da z. B. zur Summenbildung alle Felder
durchlaufen werden müssen.

Indizes löschen
Mit der DROP-INDEX-Anweisung können Sie einen bestehenden Index löschen.

Syntax
DROP INDEX indexname [ON tabellenname];

 Der Index wird mit der Anweisung DROP INDEX gelöscht. Dazu ist der Name des Indexes
notwendig.
 Beim Datenbanksystem MariaDB ist die Angabe der zugehörigen Tabelle notwendig.

Wenn Sie eine sehr große Datenmenge in eine Tabelle einfügen oder sie daraus löschen wollen,
können Sie die Indizes der Tabelle vorher löschen und nach dem betreffenden Vorgang wieder
erstellen. Diese Vorgehensweise ist wesentlich schneller, als wenn bei jedem Einfüge- oder
Löschvorgang der Index aktualisiert werden müsste.

© HERDT-Verlag
Schulversion 127
9 Schlüsselfelder und Indices

9.4 Übung

Primär- und Fremdschlüssel erstellen


Übungsdatei: -- Ergebnisdateien: Uebung1.sql, Uebung2.sql

1. Erstellen Sie eine neue Datenbank Bibliothek.


Wechseln Sie in diese Datenbank.
Erstellen Sie die Tabelle t_buecher mit folgenden Datenfeldern:
isbn, Text mit maximal 13 Zeichen
titel, autor, Text mit maximal 100 Zeichen
auflage, preis.
Wählen Sie geeignete Datentypen.
Definieren Sie das Feld isbn als Primärschlüssel.
Erstellen Sie die Tabelle t_leser mit folgenden Datenfeldern:
nr, name, vname, gebdat und adr.
Wählen Sie geeignete Datentypen.
Definieren Sie das Feld nr als Primärschlüssel.
Erstellen Sie eine weitere Tabelle t_verleih, die eine Verbindung zwischen den Lesern und
den Büchern herstellt. Sie soll folgende Datenfelder enthalten:
isbn, leser, datum.
Wählen Sie geeignete Datentypen.
Erstellen Sie eine geeignete Fremdschlüsselbeziehung zu den anderen beiden Tabellen.
Beim Löschen eines Buches oder eines Lesers sollen auch alle zugehörigen
Datensätze dieser Tabelle gelöscht werden.
2. Wechseln Sie zur Datenbank Bibliothek.
Definieren Sie einen Index für das Datenfeld autor der Tabelle t_buecher.
Erstellen Sie eine geeignete Abfrage, die den Index verwendet.
Definieren Sie einen weiteren Index für das Datenfeld titel der Tabelle t_buecher.
Nennen Sie eine Abfrage, bei der dieser Index verwendet wird.
Definieren Sie einen kombinierten Index für die Datenfelder isbn und leser der Tabelle
t_ verleih.
Wie lautet eine Abfrage, bei der der Index verwendet wird?
Erstellen Sie einen Index für die Suche im Feld name der Tabelle t_leser.
Lassen Sie sich alle Indizes anzeigen.
Löschen Sie den Index für die Suche im Feld name der Tabelle t_leser.

128 Schulversion © HERDT-Verlag


Funktionen in Abfragen 10

10
10. Funktionen in Abfragen

10.1 Standard-Funktionen in SQL

Standard- und Nichtstandard-Funktionen


Bei der Arbeit mit den Daten eines Datenbanksystems kann der Einsatz von mathematischen
Funktionen oder Funktionen für Zeichenketten nützlich sein. Mit diesen Funktionen können Sie
bereits bei der Abfrage von Daten bestimmte Bearbeitungen vornehmen. Oder Sie machen eine
Bedingung in einer SELECT- oder UPDATE-Anweisung vom Resultat einer Funktion abhängig.

Die meisten Datenbanksysteme stellen eine weit größere Bandbreite an Funktionen für viele
Einsatzbereiche zur Verfügung, als im ANSI-SQL Standard verbindlich definiert ist. MariaDB und
PostgreSQL verfügen beispielsweise über sehr viele integrierte Funktionen, die vom Datenbank-
system mit hoher Geschwindigkeit ausgeführt werden.

In diesem Kapitel werden nur Funktionen vorgestellt, die von den meisten Datenbanksystemen
angeboten werden. Mehr Informationen zu den nicht standardisierten Funktionen finden Sie in
den Anleitungen zu Ihrem Datenbanksystem.

Aggregatfunktionen
Im Standard-SQL sind nur die Aggregatfunktionen definiert. Sie dienen vor allem der statistischen
Auswertung der gespeicherten Daten.

In vielen Fällen werden nicht die einzelnen Datensätze einer Abfrage benötigt, sondern beispiels-
weise nur eine Information über die Anzahl der ermittelten Datensätze oder über einen Minimal-
bzw. Maximalwert. Für diesen Zweck existieren in SQL Aggregatfunktionen, die Berechnungen
über alle oder ausgewählte Datensätze durchführen. In runden Klammern wird bei den Aggregat-
funktionen das gewünschte Datenfeld angegeben, auf das die Funktion angewendet werden soll.

In einigen Datenbanksystemen kann das Durchlaufen aller Datensätze großer Tabellen trotz
eines definierten Indexes sehr lange dauern, da auf jeden Datensatz zugegriffen werden muss.
In diesem Fall sollten Sie statt des Einsatzes einer Aggregatfunktion die Verwendung von Triggern
vorziehen.

© HERDT-Verlag
Schulversion 129
10 Funktionen in Abfragen

Beispiel: Aggregatfunktionen1.sql
Die folgenden Abfragen verwenden verschiedene Aggregatfunktionen.

SELECT COUNT(id) AS Anzahl, AVG(preis) AS "Preis


Durchschnitt", MIN(preis) AS "Preis Minimum",
MAX(preis) AS "Preis Maximum " FROM t_lager;
SELECT COUNT(id) AS Anzahl, AVG(preis) AS "Preis Durchschnitt"
FROM t_lager WHERE stueck > 100;

 Mithilfe der verschiedenen Aggregatfunktionen werden die Anzahl der Artikel, der Durch-
schnittspreis, der minimale und der maximale Preis ermittelt.

Statistische Daten über die Tabelle t_lager in PostgreSQL

 Die angegebenen Aggregatfunktionen ermitteln die Anzahl der Artikel und den Durch-
schnittspreis der Produkte, von denen sich mehr als 100 Stück im Lager befinden.

Statistische Berechnungen über einen Teil der Datensätze der Tabelle t_lager in PostgreSQL

Die folgenden Aggregatfunktionen stehen zur Verfügung:

Funktion Erklärung Beispiel


COUNT() Liefert die Anzahl der Werte SELECT ma_id,
in der Ergebnismenge einer COUNT(proj_id) FROM
SELECT-Abfrage bzw. einer t_ma_proj GROUP BY ma_id;
Gruppierung
COUNT(DISTINCT) Liefert die Anzahl der unter- SELECT COUNT(DISTINCT
schiedlichen Werte in einer plz)
Abfrage oder Gruppierung FROM t_ma;

AVG() Liefert den Durchschnittswert SELECT AVG(stueck)


eines Datenfeldes der Abfrage FROM t_lager;
oder Gruppierung
MIN() Liefert den kleinsten bzw. SELECT MIN(preis)
MAX() größten Wert eines Datenfeldes FROM t_lager;
der Abfrage oder Gruppierung
SUM() Liefert die Summe der Werte SELECT SUM(preis)
eines Datenfeldes in der FROM t_lager WHERE
Abfrage oder Gruppierung stueck>10;

130 Schulversion © HERDT-Verlag


Funktionen in Abfragen 10

In Abfragen können entweder nur Aggregatfunktionen oder nur Datenfelder angegeben


werden, eine Mischung wie in dem folgenden Beispiel verursacht eine Fehlermeldung.
Eine Ausnahme stellen gruppierte Abfragen dar.

SELECT ort AS Wohnort, COUNT(name) FROM t_ma;

Diese Anweisung enthält ein Datenfeld und eine Aggregatfunktion und verursacht somit eine
Fehlermeldung.

Fehlermeldung in PostgreSQL

Wenn Sie in einer SELECT-Abfrage eine GROUP-BY-Anweisung angeben, gruppieren Sie die
Datensätze der Tabelle anhand der Werte des angegebenen Datenfeldes. In gruppierten
SELECT-Abfragen ist eine Kombination von Datenfeldern und Aggregatfunktionen möglich.
Die Aggregatfunktionen werden jeweils auf diese Gruppen angewendet. Fehlt die GROUP-BY-
Anweisung, beziehen sich die Funktionen auf alle Datensätze der Abfrage.

Beispiel: Aggregatfunktionen2.sql
In den folgenden drei SELECT-Anweisungen wird die Wirkung der Aggregatfunktion COUNT()
mit und ohne GROUP-BY-Anweisung gezeigt.

SELECT * FROM t_ma_proj;


SELECT COUNT(ma_id) FROM t_ma_proj;
SELECT proj_id, COUNT(ma_id) FROM t_ma_proj GROUP BY proj_id;

 Mit dieser einfachen SQL-Anweisung werden alle Datensätze der Tabelle zurückgeliefert.
 Durch Verwenden der Funktion COUNT() ohne GROUP-BY-Anweisung wird die Anzahl
der Datensätze in der Tabelle ermittelt.
 Die Tabelle wird mithilfe von GROUP BY nach dem Datenfeld proj_id gruppiert. Für jede
dieser Gruppen wird die Anzahl der Datensätze und damit die Anzahl der Mitarbeiter pro
Projekt ermittelt.

Ermitteln der Anzahl der Datensätze in der Ermitteln der Anzahl der Mitarbeiter pro Projekt
Tabelle

© HERDT-Verlag
Schulversion 131
10 Funktionen in Abfragen

Aggregatfunktionen in Bedingungen
Aggregatfunktionen können nicht in einer WHERE-Klausel verwendet werden. Eine Auswahl der
Datensätze über das Ergebnis einer Aggregatfunktion ist jedoch mithilfe der HAVING-Klausel
möglich.

Beispiel: Aggregatfunktionen3.sql
Die gruppierte Abfrage wird durch eine HAVING-Klausel eingeschränkt.

SELECT proj_id, COUNT(ma_id) FROM t_ma_proj


GROUP BY proj_id HAVING COUNT(ma_id)>2;

 Durch das Hinzufügen der HAVING-Klausel werden nur die Projekte angezeigt, in denen
mehr als zwei Mitarbeiter tätig sind.

Die HAVING-Klausel wird im Gegensatz zur WHERE-Klausel von den meisten Datenbanksystemen
nicht optimiert und führt daher zu einer längeren Ausführungszeit der Abfrage. Sie sollten die
HAVING-Klausel nur dann verwenden, wenn Sie Aggregatfunktionen oder Ersatznamen in der
Bedingung benötigen.

Filtern von zu aggregierenden Datensätzen


Der im SQL Standard definierte Zusatz FILTER ermöglicht, die in einer Aggregation auszu-
wertenden Datensätze nach einem logischen Kriterium zu filtern. PostgreSQL unterstützt diese
Möglichkeit seit der Version 9.4.

In MariaDB ist die Anwendung derzeit noch nicht möglich.

Beispiel: Aggregatfunktionen4.sql
Durch den Einsatz des Filters werden in einer Abfrage sowohl die Anzahl aller als auch der Artikel,
von denen mehr als 200 Stück vorrätig sind, ermittelt.

SELECT COUNT(id) AS Anzahl FROM t_lager2;


SELECT COUNT(id) AS Anzahl FROM t_lager WHERE stueck > 200;
SELECT COUNT(id) AS Anzahl, COUNT(id) FILTER (WHERE stueck>200)
AS AnzahlGrößer200 FROM t_lager;

 Über die Aggregatfunktion COUNT wird die Anzahl der Datensätze ermittelt. Mittels AS wird
eine Spaltenüberschrift definiert.
 Die WHERE Bedingung schränkt die Menge der berücksichtigten Datensätze insgesamt ein.
Es werden nur die Datensätze gezählt, von denen mehr als 200 Stück auf Lager sind.
 Der Zusatz FILTER ermöglicht die Ermittlung beider Zahlen in einer Abfrage. Er wird nach
der Aggregatfunktion unter Angabe der Filterbedingung mittels WHERE angegeben. Danach
steht der anzuzeigende Spaltenname.

132 Schulversion © HERDT-Verlag


Funktionen in Abfragen 10

10.2 Nicht standardisierte Funktionen

Funktionen verwenden
Um das Ergebnis einer Funktion zu erhalten, müssen Sie eine SELECT-Abfrage verwenden. Im
einfachsten Fall wird dabei der Funktionsaufruf nach dem Schlüsselwort SELECT angegeben.

Soll sich die Funktion auf den Datenbestand einer Tabelle beziehen, ist die Angabe der FROM-
Klausel notwendig. Der Funktionsaufruf erfolgt im Bereich der Datenfeldliste zwischen den
Schlüsselwörtern SELECT und FROM.

Als Argument der Funktion können Sie verwenden:


 Datenfelder der Tabelle bzw. der Tabellen, auf die sich die Abfrage bezieht
 Konstante Werte
 Ergebnisse aus Berechnungen oder Ergebnisse anderer Funktionen (Schachtelung ist
möglich)
 Sie können die in diesem Abschnitt erläuterten Funktionen im Gegensatz zu Aggregat-
funktionen auch in WHERE-Bedingungen anwenden. Dazu verknüpfen Sie das Ergebnis einer
Funktion durch Vergleichsoperatoren mit einem konstanten Wert oder einem Datenfeld.
 Einige Funktionen können auch in anderen Anweisungen eingesetzt werden, wie beispiels-
weise als Wert in der VALUES-Klausel der INSERT-Anweisung.
Zum Beispiel: INSERT INTO ... VALUES (rand(),...);
 SELECT-Anweisungen ohne die FROM-Klausel werden nicht von allen DBMS akzeptiert.

Beispiel: FunktionenVerwenden.sql
In den drei folgenden Abfragen werden verschiedene Funktionen verwendet.

SELECT mod(24,5);
SELECT id, round(preis) FROM t_lager WHERE stueck > 200;
SELECT name, vname FROM t_ma WHERE lower(name) = "meyer";

© HERDT-Verlag
Schulversion 133
10 Funktionen in Abfragen

 Die einfachste Form zum Aus-


führen einer Funktion ist der
Aufruf mithilfe der SELECT-
Anweisung ohne die Angabe
einer Tabelle.
 Die Funktion round liefert in
dieser Abfrage den gerundeten
Preis der Artikel im Lager. Mit der
Bedingung wird die Abfrage auf
Artikel beschränkt, von denen
mehr als zweihundert Stück im Einsatz von Funktionen
Lager sind.
 Hier wird die Funktion in einer Bedingung angewendet. Die Abfrage liefert alle Datensätze
der Tabelle, bei denen der Name Meyer lautet. Damit der Vergleich nicht von der Schreib-
weise mit Groß- oder Kleinbuchstaben abhängig ist, wird der Inhalt des Feldes name zuerst
mithilfe der Funktion lower in Kleinbuchstaben umgewandelt.

Mathematische Funktionen
Alle Funktionen, die das Datenbanksystem zur Verfügung stellt, dürfen nur im Bereich der
Datenfeldliste einer SELECT-Abfrage verwendet werden. Die verschiedenen mathematischen
Funktionen können Sie auf numerische Datenfelder, z. B. auf den INTEGER- oder FLOAT-
Datentyp, anwenden.

Funktion Erklärung Beispiel


abs(zahl) Gibt den absoluten Wert einer
Zahl wieder, d. h. den Wert
ohne Vorzeichen
ceiling(zahl) Rundet den angegebenen Wert
MariaDB auf die nächste größere ganze
ceil(Zahl) PostgreSQL Zahl
floor(zahl) Rundet den angegebenen Wert
auf die nächste kleinere ganze
Zahl
round(zahl) Rundet die angegebene Dezi-
malzahl nach den üblichen
mathematischen Regeln auf
eine ganze Zahl
round(zahl, Rundet die angegebene Dezi-
stellen) malzahl nach den üblichen
mathematischen Regeln auf
die angegebene Anzahl
Dezimalstellen.

134 Schulversion © HERDT-Verlag


Funktionen in Abfragen 10

Funktion Erklärung Beispiel


log(zahl) MariaDB Ermittelt den natürlichen
ln (zahl) PostgreSQL Logarithmus

mod(zahl1,zahl2) Liefert den Rest der Ganzzahl-


division von zahl1 durch zahl2

pi() Liefert den Wert von PI

rand()MariaDB Liefert eine zufällige Zahl im


random() PostgreSQL Bereich 0 bis 1

sign(zahl) Ermittelt das Vorzeichen einer


Zahl und liefert daraufhin den
Wert -1 bzw. 0 oder 1
sin(zahl) Berechnet die entsprechenden
cos(zahl) Winkelfunktionen für den ange-
tan(zahl) gebenen Wert
sqrt(zahl) Ermittelt die Quadratwurzel für
die übergebene Zahl

Viele Datenbanksysteme stellen noch weitere mathematische Funktionen zur Verfügung,


beispielsweise zum Berechnen weiterer Winkelfunktionen.

 Sie können mehrere Funktionen über mathematische Operatoren miteinander verbinden,


um komplexere Berechnungen auszuführen. Das Argument einer Funktion kann dabei auch
ein numerisches Datenfeld oder das Ergebnis einer Berechnung sein.
 Um ganzzahlige Zufallszahlen im Bereich von 1 bis 1000 zu erzeugen, können Sie den Aufruf
round( rand() * 1000 ) + 1 verwenden.
(Bei PostgreSQL heißt der Ausdruck round( random() * 1000 ) + 1.)

© HERDT-Verlag
Schulversion 135
10 Funktionen in Abfragen

Funktionen für Zeichenketten


Die folgenden Funktionen dienen zur Verarbeitung von Textwerten und Zeichenketten (engl.
strings), z. B. von Datenfeldern des Typs VARCHAR. Sie können in der Regel bis zu 32767 Zeichen
verarbeiten.

Manche Funktionen benötigen als Argument die Position (den Index) eines Zeichens innerhalb
der Zeichenkette, mit dem begonnen werden soll. Das erste Zeichen einer Zeichenkette besitzt
die Position 1.

Überschrift Überschrift Beispiel


ascii(string) Liefert den ASCII-Wert des
ersten Zeichens der
Zeichenkette
char(wert) MariaDB Wandelt den angegebenen
chr(wert) ASCII-Wert in das ent-
PostgreSQL sprechende Zeichen um
length(string) Ermittelt die Länge der
Zeichenkette

lower(string) Wandelt die angegebene


upper(string) Zeichenkette in Klein- bzw.
Großbuchstaben um
ltrim(string) Entfernt alle führenden bzw.
rtrim(string) alle abschließenden Leer-
zeichen in der Zeichenkette
substring(string, Liefert ein Teilstück der angegebenen Zeichenkette, definiert durch
anfang ,länge) Anfangsposition und Länge bzw. Endposition
substr(string,
anfang, ende)

136 Schulversion © HERDT-Verlag


Funktionen in Abfragen 10

10.3 Übung

Mit Funktionen arbeiten


Übungsdatei: -- Ergebnisdateien: Uebung1.sql, Uebung2.sql

1. Wechseln Sie zur Datenbank Bibliothek.


Erstellen Sie jeweils eine Abfrage, um die Anzahl der Datensätze in der Tabelle t_buecher
und der Tabelle t_leser zu ermitteln.
Gruppieren Sie eine Abfrage über die Tabelle t_verleih so, dass ihnen angezeigt wird, wie
viele Bücher die einzelnen Leser ausgeliehen haben. Lassen Sie die Lesernummer und die
Anzahl der Bücher ausgeben.
Sortieren Sie die Ausgabe absteigend nach der Lesernummer.
Beschränken Sie die Abfrage auf die Leser, die mehr als ein Buch ausgeliehen haben.
Lassen Sie sich die Namen der Leser und die Anzahl der Zeichen der Namen ausgeben.
Ermitteln Sie die ISBN-Nummern und den aufgerundeten Preis der vorhandenen Bücher.
2. Erzeugen Sie eine neue Tabelle t_mess, in der Messwerte erfasst werden sollen.
Die Tabelle soll die Felder nr und wert haben. Das Feld nr soll ein Selbstzählfeld sein.
Füllen Sie die Tabelle mit 11 Datensätzen. Für die Messwerte (Spalte wert) sind dabei
Zufallszahlen zwischen 1 und 1000 zu generieren.
Erstellen Sie eine Abfrage, die folgende statistische Berechnungen über die Spalte wert
durchführt: Anzahl, nach mathematischen Regeln gerundeter Durchschnittswert, Minimum
und Maximum.
Legen Sie aussagekräftige Spaltenüberschriften fest.

© HERDT-Verlag
Schulversion 137
11 Datenabfragen für mehrere Tabellen

11
11. Datenabfragen für mehrere Tabellen

11.1 Tabellen verknüpfen

Datenbestände in mehreren Tabellen


Bei relationalen Datenbanken werden die Daten in der Regel auf mehrere, logisch zusammen-
gehörige Tabellen verteilt. In einer Abfrage müssen diese Daten so zusammengefügt werden,
dass eine brauchbare Ergebnismenge entsteht. Eine wichtige Rolle spielen dabei Primär- und
Fremdschlüssel, die die Verbindung von Datensätzen in mehreren Tabellen vereinfachen.
Die Verknüpfung von mehreren Tabellen miteinander ist ein wichtiger Aspekt des relationalen
Datenmodells.

Die SELECT-Abfrage kann auf verschiedene Weise erweitert werden, um den Zugriff auf meh-
rere Tabellen gleichzeitig zu ermöglichen. Die Abfragen können sich auf zwei oder auch mehr
Tabellen beziehen.

Verknüpfung von Tabellen über Mengenoperationen


Die Datenbestände in den einzelnen Tabellen stellen Mengen von Datensätzen (Tupeln) dar.
Durch SQL-Anweisungen können diese unterschiedlich miteinander verknüpft werden. Voraus-
setzung für die Ausführung einer Mengenoperation ist, dass beide Tabellen vereinigungs-
verträglich sind. Das bedeutet, beide Tabellen müssen die gleiche Struktur besitzen, Feldnamen
und Wertebereiche müssen übereinstimmen. Wenn Sie zwei oder mehr vereinigungsverträgliche
Mengen addieren, erhalten Sie einen Datenbestand, der alle Datensätze aus allen Tabellen ent-
hält. Sie können auch Schnittmengen bilden, um nur solche Datensätze zu ermitteln, die in allen
beteiligten Tabellen vorhanden sind. Folgende drei Mengenoperationen werden beim Verknüp-
fen von Tabellen am häufigsten eingesetzt:

Vereinigungs- Verbindung von zwei oder mehr Tabellen zu einem Datenbestand


menge Beispiel: Alle Datensätze aus der Projekttabelle von Frankfurt und aus der
Projekttabelle von Leipzig werden zusammengefasst.

Schnittmenge Aus zwei oder mehr Mengen werden nur die Datensätze herausgesucht, die in
allen Mengen gleich sind. Die Schnittmenge entspricht dem Durchschnitt der
Relationenalgebra.
Beispiel: Es werden die Datensätze aus der Projekttabelle von Frankfurt und
aus der Projekttabelle von Berlin herausgesucht, die gleich sind (nur die
Projekte, an denen sowohl in Frankfurt als auch in Berlin gearbeitet wird).

138 Schulversion © HERDT-Verlag


Datenabfragen für mehrere Tabellen 11

Differenzmenge Aus zwei oder mehr Mengen werden alle die Datensätze ermittelt, die zwar
in der einen Menge, jedoch nicht in der anderen Menge enthalten sind.
Beispiel: Die Datensätze aus der Projekttabelle von Frankfurt, die nicht in der
Projekttabelle von Leipzig vorhanden sind (nur die Projekte, an denen nur in
Frankfurt gearbeitet wird)

Verbund von Tabellen (Joins)


Der Verbund mehrerer Tabellen wird als Join (engl. verbinden, vereinigen) bezeichnet. Über
Joins werden die Datensätze aus zwei oder mehreren Tabellen kombiniert. Der umfangreichste
Join ist das kartesische Produkt zweier Tabellen (auch als Cross-Join bezeichnet). Da dieses aber
selten ein sinnvolles Ergebnis liefert, erfolgt in den verschiedenen Joins eine Einschränkung der
ausgewählten Datensätze. Dazu werden jeweils ein oder mehrere Felder beider Tabellen mitein-
ander verglichen. Die Datensätze, die der Vergleichsbedingung genügen, werden in die Ergebnis-
tabelle aufgenommen. Es gibt verschiedene Arten von Joins, die sich durch die Kriterien unter-
scheiden, nach denen sie Spalten und Datensätze in die Ergebnismenge (-tabelle) übernehmen.

Als Beispiel dienen die folgenden Tabellenausschnitte, die durch die verschiedenen Joins
verbunden werden.

ID Name Vorname Nr. Nr Abteilung


1 Naumann Steve 1 1 Einkauf
2 Baumann Janine 1 7 Personal
3 Hartmann Heike 7 10 EDV
4 Naumann Jens 11

Tabelle A Tabelle B

Cross-Join Mit diesem Verbund wird das kartesische Produkt beider Tabellen gebildet.
Das heißt, jeder Datensatz der einen Tabelle wird mit jedem Datensatz der
anderen Tabelle kombiniert.
ID Name Vorname Nr Nr Abteilung
1 Naumann Steve 1 1 Einkauf
1 Naumann Steve 1 7 Personal
1 Naumann Steve 1 10 EDV
2 Baumann Janine 1 1 Einkauf
2 Baumann Janine 1 7 Personal

Theta-Join Es werden bestimmte Datensätze aus dem kartesischen Produkt zweier


Tabellen durch eine Bedingung ausgewählt. In dieser Bedingung wird eine
Spalte aus der einen und eine Spalte aus der anderen Tabelle über eine
logische Operation verglichen, z. B. A.Nr < B.Nr. Wird auf Gleichheit
geprüft, so erhalten Sie eine Spezialform des Theta-Join, den Equi-Join. Für
das Beispiel A.Nr < B.Nr erhalten Sie die folgende Ergebnistabelle:
ID Name Vorname Nr Nr Abteilung
1 Naumann Steve 1 7 Personal
1 Naumann Steve 1 10 EDV
2 Baumann Janine 1 7 Personal
2 Baumann Janine 1 10 EDV
3 Hartmann Heike 7 10 EDV

© HERDT-Verlag
Schulversion 139
11 Datenabfragen für mehrere Tabellen

Inner-Join = Die Datensätze aus beiden Tabellen werden verbunden, wenn ein oder
Equi-Join mehrere gemeinsame Felder den gleichen Wert haben (deshalb auch Equi-
Join – äquivalent). Dieser Join ist der am häufigsten verwendete Verbund.
Für das Beispiel A.Nr = B.Nr erhalten Sie die folgende Ergebnistabelle:
ID Name Vorname Nr Nr Abteilung
1 Naumann Steve 1 1 Einkauf
2 Baumann Janine 1 1 Einkauf
3 Hartmann Heike 7 7 Personal

Natural-Join Der Natural-Join arbeitet wie der Inner-Join – mit dem Unterschied, dass
in der Ergebnistabelle keine identischen Spalten enthalten sind.
ID Name Vorname Nr Abteilung
1 Naumann Steve 1 Einkauf
2 Baumann Janine 1 Einkauf
3 Hartmann Heike 7 Personal

Left-Outer-Join Von der ersten (linken) Tabelle werden alle Datensätze in die Ergebnis-
Linke Inklusions- menge aufgenommen. Von der zweiten (rechten) Tabelle werden nur die
Verknüpfung dazugehörigen Datensätze übernommen. Die Felder der zweiten Tabelle
bleiben leer, wenn kein passender Datensatz vorhanden ist.
ID Name Vorname Nr Nr Abteilung
1 Naumann Steve 1 1 Einkauf
2 Baumann Janine 1 1 Einkauf
3 Hartmann Heike 7 7 Personal
4 Naumann Jens 11 NULL NULL

Rigth-Outer-Join Von der zweiten (rechten) Tabelle werden alle Datensätze in die Ergebnis-
Rechte Inklusions- menge aufgenommen. Von der ersten (linken) Tabelle werden nur die
Verknüpfung dazugehörigen Datensätze übernommen. Die Felder der ersten Tabelle
bleiben leer, wenn kein passender Datensatz vorhanden ist.
ID Name Vorname Nr Nr Abteilung
1 Naumann Steve 1 1 Einkauf
2 Baumann Janine 1 1 Einkauf
3 Hartmann Heike 7 7 Personal
NULL NULL NULL NULL 10 EDV

Full-Outer-Join = Der Full-Join ist eine Kombination aus dem Left-Outer-Join und dem Right-
Full-Join Outer-Join. Alle Datensätze beider Tabellen werden in die Ergebnismenge
übernommen. Passen Datensätze aus beiden Tabellen laut Vergleichs-
operation zusammen, so werden sie verbunden.
ID Name Vorname Nr Nr Abteilung
1 Naumann Steve 1 1 Einkauf
2 Baumann Janine 1 1 Einkauf
3 Hartmann Heike 7 7 Personal
4 Naumann Jens 11 NULL NULL
NULL NULL NULL NULL 10 EDV

140 Schulversion © HERDT-Verlag


Datenabfragen für mehrere Tabellen 11

Semi-Join Um einen Semi-Join zu erhalten, werden zwei Tabellen über einen Natural-
Join verbunden. Anschließend erfolgt eine Projektion auf die Spalten der
ersten Tabelle.
ID Name Vorname Nr
1 Naumann Steve 1
2 Baumann Janine 1
3 Hartmann Heike 7

Self-Join Der Self-Join ist einer der zuvor genannten Joins, bei dem nicht zwei ver-
schiedene Tabellen miteinander verbunden werden, sondern zweimal
dieselbe.
ID Name Vorname Nr Chef
1 Naumann Steve 1 NULL
2 Baumann Janine 1 1
3 Hartmann Heike 7 NULL
4 Naumann Jens 11 NULL

Tabelle A um eine Spalte erweitert

ID Name Vorname Nr Chef


1 Naumann Steve 1 NULL
2 Baumann Janine 1 Naumann
3 Hartmann Heike 7 NULL
4 Naumann Jens 11 NULL

Self-Join auf Tabelle A

In SQL2 (Entry Level) gibt es für einige der vorgestellten Joins Befehle. Joins, für die kein Befehl
existiert, lassen sich über eine Kombination einer anderen Join-Art mit einer Selektion oder
Projektion nachbilden.

11.2 Einfaches Verknüpfen von Tabellen


Mithilfe einer SELECT-Anweisung können Sie zwei oder mehr Tabellen verbinden, indem Felder
aus mehreren Tabellen selektiert werden. Dazu lassen sich in der WHERE-Klausel Bedingungen
für die Verknüpfung der beteiligten Tabellen angeben. Es werden jeweils zwei Felder aus
unterschiedlichen Tabellen verglichen. Ist die Bedingung für zwei Datensätze der beteiligten
Tabellen erfüllt, so werden diese miteinander verbunden.

Auf diese Weise können Sie verschiedene Arten von Joins realisieren. Wenn Sie in der WHERE-
Bedingung keine Felder angeben, die miteinander verknüpft sind, erhalten Sie einen Cross-Join.
Beim Cross-Join ist in der Ergebnismenge jeder Datensatz der einen Tabelle mit jedem Datensatz
der anderen Tabelle verknüpft.

© HERDT-Verlag
Schulversion 141
11 Datenabfragen für mehrere Tabellen

Beispiel: EinfacheVerknuepfung1.sql
In der Abfrage werden die zwei Tabellen t_ma und t_abt verknüpft, sodass ein einfacher Equi-
Join entsteht (vgl. Abschnitt 4.4 Theorie der relationalen Sprachen, Übersicht der Operationen
der Relationenalgebra, Stichwort 'Equi-Join'). Sie erhalten eine Ergebnismenge, die alle Daten-
sätze beinhaltet, in denen die Felder abtnr und id der beiden Tabellen die gleichen Werte
besitzen. Es werden somit bestimmte Felder der Tabellen selektiert.

SELECT t_ma.vname, t_ma.name, t_ma.abtnr,


 t_abt.* FROM t_ma, t_abt
 WHERE t_ma.abtnr = t_abt.id;

 In der Datenfeldliste der SELECT-Anweisung werden die gewünschten Felder definiert.


Damit die Zuordnung der Datenfelder zu der Tabelle eindeutig ist, wird der Name der
Tabelle, gefolgt von einem Punkt, vorangestellt.
 Aus der Tabelle t_abt sollen alle Datenfelder angezeigt werden. Dazu kann auch hier der
Platzhalter * verwendet werden. Im FROM-Bereich werden die beiden Tabellen angegeben.
 In der WHERE-Bedingung wird der Zusammenhang zwischen den Tabellen definiert.
In diesem Fall muss im Feld abtnr der Tabelle t_ma und im Feld id der Tabelle t_abt der
gleiche Wert zu finden sein.

Zuordnen von Abteilungen zu den Mitarbeitern über eine einfache Verknüpfung von zwei Tabellen

Syntax der SELECT-Anweisung für einen Equi-Join


SELECT datenfeldliste FROM tabelle1, tabelle2, ...
WHERE tabelle1.datenfeld = tabelle2.datenfeld [AND ...];

 Die Verknüpfung der Tabellen erfolgt in einer SELECT-Anweisung. In der Datenfeldliste


werden die gewünschten Datenfelder bzw. der Platzhalter * angegeben. Falls die Namen der
Felder nicht eindeutig sind (gleiche Feldnamen in mehreren Tabellen), muss der Tabellen-
name mit einem Punkt vorangestellt werden.
 Nach dem Schlüsselwort FROM werden durch Kommata getrennt die Namen der Tabellen
angegeben, die miteinander verknüpft werden sollen.
 In der WHERE-Bedingung müssen die übereinstimmenden Datenfelder der Tabellen ange-
geben werden.

142 Schulversion © HERDT-Verlag


Datenabfragen für mehrere Tabellen 11

Beispiele für Datenfeldlisten in Joins finden Sie in der folgenden Tabelle.

Beispiel Erklärung
SELECT * FROM tabelle1, Liefert alle Felder aus allen beteiligten Tabellen
tabelle2 ...
SELECT tabelle1.feld1, Liefert die angegebenen Felder der Tabelle
tabelle1.feld2, tabelle1 und alle Felder der Tabelle tabelle2
tabelle2.* ...
SELECT tabelle1.*, tabelle2.* Gleichbedeutend mit der Angabe SELECT *
...

Wenn der Name eines Datenfeldes in der Datenfeldliste oder der WHERE-Klausel eindeutig ist,
weil er nur in einer Tabelle vorkommt, können Sie auf die Angabe des Tabellennamens
verzichten.

Neben der Bedingung, unter welcher die Felder verknüpft werden, können in der WHERE-Klausel
auch weitere Auswahlkriterien für die Abfrage angegeben werden.

Beispiel: EinfacheVerknuepfung2.sql
In diesem Beispiel werden zwei Tabellen verknüpft und die Datensätze durch eine zusätzliche
Bedingung gefiltert.

SELECT t_ma.vname, t_ma.name, t_ma.abtnr, t_abt.*


FROM t_ma, t_abt
 WHERE t_ma.abtnr = t_abt.id AND t_abt.ort = "Frankfurt";

 Die Abfrage wird wie im vorigen


Beispiel als Equi-Join mit zwei
beteiligten Tabellen gebildet.
 Neben der ersten Bedingung mit
den übereinstimmenden Feldern
der beiden Tabellen wird hier noch
ein zusätzliches Auswahlkriterium
angegeben. Damit sollen die Daten- Auswahl über zwei Tabellen mit einer zusätzlichen Bedingung
sätze herausgefiltert werden, bei
denen im Feld ort der Tabelle
t_abt der Wert Frankfurt zu finden ist.

Die beiden verknüpften Datenfelder in der WHERE-Klausel können auch mit einem anderen
Operator als dem Vergleichsoperator verbunden werden. In diesem Fall entsteht ein Theta-Join.
So können Sie beispielsweise alle Datensätze ermitteln, die in dem verknüpften Feld nicht über-
einstimmen oder in denen der Wert der ersten Spalte größer ist als der Wert der zweiten Spalte.

© HERDT-Verlag
Schulversion 143
11 Datenabfragen für mehrere Tabellen

Ersatznamen für Tabellen definieren


Beim Verwenden von Verknüpfungen ist es an vielen Stellen notwendig, den Tabellennamen
anzugeben. So müssen Sie z. B. die Datenfelder in der Datenfeldliste oder der WHERE-Klausel
spezifizieren. Da dies besonders bei sehr langen Tabellennamen unübersichtlich wird, können Sie
mit dem Schlüsselwort AS einen Ersatznamen definieren. Beim Self-Join ist dies sogar zwingend
notwendig.

Beispiel: VerknüpfungErsatznamen.sql
SELECT m.vname, m.name, m.abtnr, a.*
FROM t_ma AS m, t_abt AS a
WHERE m.abtnr = a.id;

 Mithilfe des Schlüsselwortes AS wird für die Tabelle t_ma der Name m und für die Tabelle
t_abt der Name a definiert.

 Wenn Sie Ersatznamen für Tabellen definiert haben, müssen Sie in der Abfrage diese Namen
in der Datenfeldliste, der WHERE-Bedingung und in weiteren Klauseln zwingend verwenden.
Die richtigen Tabellennamen sind in dieser Abfrage ungültig.

Eine andere Möglichkeit, den Ersatznamen festzulegen, ist die, den Aliasnamen ohne das
Schlüsselwort AS direkt hinter dem Tabellennamen anzugeben.

SELECT m.vname, m.name, m.abtnr, a.* FROM t_ma m, t_abt a


WHERE m.abtnr = a.id;

11.3 Tabellen verknüpfen mit JOIN


Eine andere Möglichkeit, Tabellen miteinander zu verknüpfen, bietet die SELECT-Anweisung
mit der JOIN-Klausel. Damit sind die meisten Verknüpfungsarten realisierbar. Die Datensätze
stammen dabei aus zwei oder mehr Tabellen.

Da eine Verknüpfung mit JOIN übersichtlicher und weniger fehleranfällig ist, als eine einfache
Verknüpfung und gleichzeitig das relationale Datenmodell besser widerspiegelt, sollten Sie diese
der WHERE-Klausel vorziehen.

Cross-Join
Beim Cross-Join wird das kartesische Produkt aus den beiden Tabellen gebildet (vgl. Abschnitt 4.4
Theorie der relationalen Sprachen, Übersicht der Operationen der Relationenalgebra, Stichwort
'Kartesisches Produkt'). Häufig sind die Ergebnisse dieser Operation nicht sehr aussagekräftig.
Werden die Datensätze aus den Tabellen aber durch eine WHERE-Klausel und Projektion ein-
geschränkt, lassen sich auch sinnvolle Ergebnismengen ermitteln.

144 Schulversion © HERDT-Verlag


Datenabfragen für mehrere Tabellen 11

Beispiel: CrossJoin.sql
Welche Mitarbeiter aus Bern könnten an welchen Projekten mitarbeiten?

SELECT t_ma.vname, t_ma.name, t_ma.abtnr, t_proj.* FROM t_ma


 CROSS JOIN t_proj WHERE t_ma.ort = 'Bern';

 Die Felder vname, name und abtnr aus der Tabelle t_ma und alle Felder der Tabelle t_proj
werden in der Ergebnismenge angezeigt.
 Die Tabelle t_ma und die Tabelle t_proj werden durch einen Cross-Join verknüpft. Durch die
WHERE-Klausel wird die Ergebnismenge auf die Mitarbeiter aus Bern beschränkt.

Ergebnismenge des Full-Join

Syntax
SELECT datenfelder FROM tabelle1 CROSS JOIN tabelle2;

 Die Verknüpfung erfolgt in einer SELECT-Anweisung. Die Datenfelder, die in der Ergebnis-
menge enthalten sein sollen, werden in der Datenfeldliste angegeben. Auch der Platzhalter *
kann angegeben werden.
 Nach dem Schlüsselwort FROM folgt der Name der ersten Tabelle. Nach der Angabe CROSS
JOIN wird der Name der zweiten Tabelle angegeben.
 Zusätzlich können eine WHERE-Klausel und weitere Klauseln der SELECT-Anweisung ver-
wendet werden (z. B. ORDER BY, GROUP BY).

Inner-Join (Equi-Join)
Die Verknüpfung von zwei oder mehr Tabellen über ein gemeinsames Feld (oder auch mehrere
gemeinsame Felder) lässt sich in der SELECT-Anweisung über die Angabe der Schlüsselwörter
INNER JOIN realisieren. Die Werte der gemeinsamen Felder müssen beim Equi-Join gleich sein,
damit die Datensätze verbunden und in die Ergebnismenge aufgenommen werden.

© HERDT-Verlag
Schulversion 145
11 Datenabfragen für mehrere Tabellen

Beispiel: InnerJoin.sql
Analog zu Beispiel EinfacheVerknüpfung1.sql sollen die zwei Tabellen t_ma und t_abt verknüpft
werden, aber nun mithilfe der INNER-JOIN-Klausel.

SELECT t_ma.vname, t_ma.name, t_ma.abtnr, t_abt.id, t_abt.name


 FROM t_ma INNER JOIN t_abt
 ON t_ma.abtnr = t_abt.id
 WHERE t_ma.ort = 'Zürich';

 In der Datenfeldliste der SELECT-Anweisung werden die gewünschten Felder aus den ein-
zelnen Tabelen angegeben.
 Die Verknüpfung erfolgt über die Schlüsselwörter INNER JOIN. Dabei wird der Name der
ersten Tabelle über diese Klausel mit dem Namen der zweiten Tabelle verknüpft.
 Das übereinstimmende Feld
beider Tabellen wird in diesem
Fall nicht mehr in der WHERE-
Klausel definiert. Stattdessen
folgt die Klausel ON, die den
Zusammenhang zwischen den
Tabellen herstellt. Die Felder
abtnr der Tabelle t_ma und id
der Tabelle t_abt sind die Erstellen eines Inner-Joins über zwei Tabellen mit der JOIN-
gemeinsamen Felder oder Join- Klausel
Felder der beiden Tabellen.
 Um die Ergebnismenge einzu-
schränken, werden nur Mitar-
beiter aus Zürich ausgewählt.

Syntax
SELECT datenfeldliste FROM tabelle1 INNER JOIN tabelle2
ON tabelle1.datenfeld = tabelle2.datenfeld [WHERE ...];

 Die Verknüpfung erfolgt in einer SELECT-Anweisung. Die Datenfelder, die in der Ergebnis-
menge enthalten sein sollen, werden in der Datenfeldliste angegeben. Auch der Platzhalter *
kann verwendet werden.
 Nach dem Schlüsselwort FROM folgt der Name der ersten Tabelle. Nach den Schlüsselwörtern
INNER JOIN folgt der Name der zweiten Tabelle.
 Die zu vergleichenden Datenfelder beider Tabellen werden nach dem Schlüsselwort ON
angegeben.
 Zusätzlich können eine WHERE-Klausel und weitere Klauseln der SELECT-Anweisung
verwendet werden (z. B. ORDER BY, GROUP BY).

146 Schulversion © HERDT-Verlag


Datenabfragen für mehrere Tabellen 11

Inner-Joins über mehr als zwei Tabellen


Es besteht auch die Möglichkeit, mehr als zwei Tabellen über Joins miteinander zu verknüpfen.
Dabei werden zunächst zwei Tabellen mit JOIN verknüpft, die eine (Zwischen-)Ergebnismenge
erzeugen. Diese wird wiederum über JOIN mit einer weiteren Tabelle verknüpft usw.

Unter Verwendung des relationalen Datenmodells sind in der Praxis beispielsweise auch Joins
über mehr als 10 Tabellen keine Seltenheit.

Beispiel: InnerJoinMehrereTabellen.sql
Es soll in einer Abfrage ermittelt werden, welche Mitarbeiter an welchen Projekten beteiligt sind.
Die Namen der Mitarbeiter sind in der Tabelle t_ma gespeichert, die Namen der Projekte in der
Tabelle t_proj.

Da ein Mitarbeiter in mehreren Projekten tätig sein kann, ist eine zusätzliche Tabelle t_ma_proj
notwendig, um die Beziehungen zwischen den Projekten und den Mitarbeitern herzustellen. Um
gleichzeitig Mitarbeitername und Projektname zu selektieren, ist eine Abfrage über drei Tabellen
notwendig.

 SELECT m.vname, m.name, p.name, p.ende


 FROM t_ma_proj AS mp INNER JOIN t_ma AS m
 ON mp.ma_id = m.id INNER JOIN t_proj AS p
ON mp.proj_id = p.id
 ORDER BY m.name;

 Hier wird der erste


Inner-Join definiert.
Für die Tabellennamen
werden dabei Ersatz-
namen angegeben.
 Der nächste INNER
JOIN-Befehl verknüpft
die Ergebnismenge der
Das Ergebnis der verknüpften Abfrage über drei Tabellen
beiden ersten Tabellen
zusätzlich mit der Ta-
belle t_proj. Auch hier
wird eine ON-Klausel
angegeben.
 Die Datensätze werden bei der Ausgabe nach dem Mitarbeiternamen sortiert.

Bei sehr vielen verknüpften Tabellen können Sie zur besseren Übersicht die einzelnen Teile
des Inner-Joins mit runden Klammern zusammenfassen. Dabei wird der Ausdruck
tabelle1 INNER JOIN tabelle2 ON bedingung
als ein Inner-Join in Klammern gesetzt.

© HERDT-Verlag
Schulversion 147
11 Datenabfragen für mehrere Tabellen

Syntax
SELECT datenfelder FROM ((tabelle1 INNER JOIN tabelle2
ON bedingung) INNER JOIN tabelle3 ON bedingung) ...;

 Jeder Inner-Join erzeugt eine Datenmenge. Diese kann mit einer anderen Tabelle über einen
weiteren Inner-Join und der zugehörigen ON-Klausel verknüpft werden kann.
 Die Klammern um die einzelnen Inner-Joins können entfallen. Sie dienen nur der besseren
Übersichtlichkeit.

Natural-Join
Ein Inner-Join wird zum Natural-Join, wenn gleiche Spalten entfernt werden (vgl. Abschnitt 4.4
Theorie der relationalen Sprachen, Übersicht der Operationen der Relationenalgebra, Stichwort
'natürlicher Verbund'). Den Natural-Join gibt es auch als Left-Natural- und Right-Natural-Join.
Eine WHERE- oder ON-Bedingung ist beim Natural-Join nicht vorhanden. Voraussetzung ist das
Vorhandensein namensgleicher Spalten.

Die Syntax NATURAL JOIN wird nicht von allen Datenbanksystemen unterstützt. Sie können
einen Natural-Join auf einfache Art erzeugen, indem Sie einen Inner-Join verwenden und eine
Projektion hinzufügen.

Dem Vorteil der Methode – dem einfachen Aufbau der Bedingung – stehen auch Nachteile
gegenüber. Zum einen ist die Abfrage langsamer, zum anderen ist die Ausgabe des Ergebnisses
aufgrund der nicht zuordenbaren Spaltenbezeichnung des Vergleichsfeldes oft unklarer.

Beispiel: NaturalJoin.sql
SELECT * FROM t_m_p INNER JOIN t_proj ON t_m_p.id = t_proj.id;
SELECT * FROM t_m_p NATURAL JOIN t_proj;

 Der Inner-Join wird über die namensgleichen Spalten id der Tabellen t_m_p und t_proj
ausgeführt.
 Alternativ kann bei dieser Konstellation ein Natural-Join benutzt werden. Eine Projektion
ist nicht notwendig, doppelte Spalten werden automatisch entfernt.

Unterschied zwischen einem Inner- und einem Natural-Join

148 Schulversion © HERDT-Verlag


Datenabfragen für mehrere Tabellen 11

Theta-Join
Ein Theta-Join wird wie ein Equi-Join bzw. Inner-Join erstellt, es wird aber in der ON-Klausel nicht
auf Gleichheit geprüft, sondern ein anderer logischer Operator eingesetzt. Als logische Opera-
toren sind die Zeichen >, <, >=, <=, <> erlaubt.

Beispiel: ThetaJoin.sql
Es werden Mitarbeiter aus der Tabelle t_ma gesucht, die älter sind als Mitarbeiter der Tabelle
t_ma_dt.

SELECT t_ma.name, t_ma.vname, t_ma.gebdat


t_ma_dt.name, t_ma_dt.vname, t_ma_dt.gebdat
 FROM t_ma INNER JOIN t_ma_dt
 ON t_ma.gebdat < t_ma_dt.gebdat LIMIT 10

 Es sollen die Felder name,


vname und gebdat beider
Tabellen angezeigt werden.
 Die Tabellen werden über
das Schlüsselwort INNER
JOIN verbunden.
 In der ON-Klausel wird nicht
auf Gleichheit, sondern auf
'größer als' verglichen. Mit
der Angabe LIMIT 10 wird
die Anzeige auf die ersten
10 Datensätze beschränkt.

Outer-Joins
Beim Inner-Join werden in der Ergebnismenge nur die Datensätze aufgeführt, die über die Join-
Felder in beiden verknüpften Tabellen eine Übereinstimmung haben. Wenn Sie jedoch alle
Datensätze einer Tabelle benötigen und diese um die Daten aus der verknüpften Tabelle erwei-
tern wollen, ist ein Outer-Join die bessere Wahl. Ist in der verknüpften Tabelle kein passender
Datensatz vorhanden, so werden die Datenfelder dieser Tabelle mit NULL-Werten belegt (vgl.
Abschnitt 4.4 Theorie der relationalen Sprachen, Übersicht der Operationen der Relationen-
algebra, Stichwort 'Outer-Join').

Beim Outer-Join wird zwischen einem Verknüpfen von links und von rechts unterschieden.
Damit können sie festlegen, ob die Tabelle links oder rechts des Schlüsselworts JOIN vollständig
übernommen wird. Die entsprechenden Join-Typen werden mit LEFT OUTER JOIN für das
Verknüpfen von links und RIGHT OUTER JOIN für das Verknüpfen von rechts bezeichnet.

© HERDT-Verlag
Schulversion 149
11 Datenabfragen für mehrere Tabellen

Beispiel: OuterJoin.sql
Es soll eine Mitarbeiterliste erzeugt werden, die für jeden Mitarbeiter die entsprechende
Abteilung enthält. Durch eine Umstrukturierung im Unternehmen sind jedoch noch nicht alle
Mitarbeiter in der Datenbank einer Abteilung zugeordnet. Mit einem Inner-Join erhalten Sie
daher nur die Mitarbeiter, für die ein Datensatz in der Abteilungstabelle existiert. Durch das
Anwenden eines Outer-Joins wird eine vollständige Mitarbeiterliste erstellt.

 SELECT m.vname, m.name, a.name


 FROM t_ma AS m LEFT OUTER JOIN t_abt AS a
 ON m.abtnr = a.id ORDER BY m.name DESC LIMIT 15;

 Die Tabelle t_ma stellt die linke Tabelle


dar, aus der alle Datensätze verwendet
werden. Durch die Angabe von LEFT
OUTER JOIN wird sie mit der Tabelle
t_abt verknüpft.
 In der ON-Klausel werden die beiden Join-
Felder verbunden. Zusätzlich soll die
Ausgabe der Datensätze absteigend nach
den Mitarbeiternamen sortiert werden.
Mit der Angabe LIMIT 15 wird die
Anzeige auf die ersten 15 Datensätze
beschränkt.

Die Mitarbeiterliste als Ergebnis des Outer-Joins

Das gleiche Ergebnis wie im obigen Beispiel erhalten Sie, wenn Sie die Namen der Tabellen
vertauschen und die Verknüpfung durch die Angabe von RIGHT OUTER JOIN realisieren.

Syntax
SELECT datenfeldliste FROM tabelle1 LEFT|RIGHT OUTER JOIN
tabelle2 ON bedingung ...;

 Der Outer-Join wird ähnlich dem Inner-Join gebildet. Nach dem Schlüsselwort FROM folgt
der Name der ersten Tabelle. Über die Angabe von LEFT OUTER JOIN bzw. RIGHT OUTER
JOIN wird diese mit der zweiten Tabelle verknüpft.
 Nach dem Schlüsselwort ON wird die Beziehung zwischen den Join-Feldern angegeben.
 Die Tabelle vor dem OUTER JOIN wird als linke Tabelle, die andere als rechte Tabelle
bezeichnet. Je nachdem, ob LEFT oder RIGHT OUTER JOIN angegeben ist, wird die linke
oder rechte Tabelle vollständig in das Abfrageergebnis übernommen.
 Sie können Inner- und Outer-Joins auch mischen. Dies ist jedoch schwer nachvollziehbar und
verkompliziert das Erzeugen der gewünschten Ergebnisdatenmenge.
 Auch Outer-Joins können über mehr als zwei Tabellen definiert werden. Sie können Klam-
mern setzen, um die Übersichtlichkeit zu erhöhen und die Reihenfolge der Joins gezielt
zu steuern.

150 Schulversion © HERDT-Verlag


Datenabfragen für mehrere Tabellen 11

Falls Sie einmal nicht das gewünschte Ergebnis bei einem Join erhalten, sollten Sie die Tabellen-
reihenfolge verändern.

Eine Tabelle mit sich selbst verknüpfen (Self-Join)


Es müssen nicht immer zwei verschiedene Tabellen miteinander verbunden werden. Sie können
auch eine Tabelle mit sich selbst verknüpfen und einen sogenannten Self-Join erzeugen. Dabei
müssen Sie für die Tabelle zwei verschiedene Ersatznamen angeben.

Der Self-Join ist immer dann sinnvoll, wenn sich ein Feld einer Tabelle auf ein anderes in der
gleichen Tabelle bezieht. Sie können Self-Joins aber auch verwenden, um die Daten einer Tabelle
zu analysieren.

Beispiel: SelfJoin.sql
In der Tabelle t_abt werden die Abteilungsnamen und die jeweiligen Orte gespeichert. Um alle
Abteilungen herauszufinden, an deren Standorten sich weitere Abteilungen befinden, kann ein
Self-Join verwendet werden.

SELECT a1.name,a2.name,a1.ort FROM t_abt AS a1


INNER JOIN t_abt AS a2 ON a1.ort = a2.ort
 WHERE a1.id <> a2.id;

 Die Tabelle t_abt wird über den Befehl


INNER JOIN mit sich selbst verknüpft.
Dabei erhält sie die Ersatznamen a1 und a2.
Da alle Abteilungen gesucht werden, an
deren Standort sich eine zweite Abteilung
befindet, ist das Auswahlkriterium in der
ON-Klausel der Ort.
 Damit ein sinnvolles Ergebnis entsteht, wird
zusätzlich eine Bedingung angegeben, die
bewirkt, dass nicht zwei gleiche Datensätze Abteilungen, die sich am gleichen Ort befinden
miteinander verbunden werden.

© HERDT-Verlag
Schulversion 151
11 Datenabfragen für mehrere Tabellen

11.4 Zwei Tabellen vereinigen


Mit Joins verknüpfen Sie zwei oder mehr Tabellen so, dass bestimmte Datensätze aus den ver-
schiedenen Tabellen miteinander kombiniert werden. Zwei oder mehr Datensätze werden jeweils
in einen Datensatz der Ergebnismenge aufgenommen. Meist ist die Verknüpfung von einem
Vergleich bestimmter Felder der Tabellen abhängig.

Neben dieser Möglichkeit können Sie auch zwei Abfragen vereinigen, sodass eine Ergebnismenge
entsteht, die sowohl Datensätze der ersten als auch der zweiten Abfrage enthält (vgl. Abschnitt
4.4, Übersicht der Operationen der Relationenalgebra, 'Vereinigung'). Es wird die Vereinigungs-
menge beider Abfragen gebildet. Umfassen die Abfragen die ganzen Tabellen, so wird die
Vereinigungsmenge der Tabellen als Ergebnismenge geliefert. Dazu werden zwei SELECT-
Anweisungen über das Schlüsselwort UNION miteinander verbunden. Beide Abfragen müssen
dabei exakt die gleichen Datenfelder zurückliefern (Vereinigungsverträglichkeit).

Beispiel für Vereinigungsmengen Union.sql


Die Tabellen t_ma und t_ma_dt sollen vereinigt werden. Aus der Tabelle t_ma sind aber nur die
Mitarbeiter aus Bern aufzunehmen. In der Ergebnismenge werden die Felder name und ort
benötigt.

SELECT name, ort FROM t_ma WHERE ort = 'Bern'


 UNION SELECT name, ort FROM t_ma_dt;

 Die erste SELECT-Anweisung ermittelt die


Datensätze aus der Tabelle t_ma, bei denen der
Ort Gera ist. Es werden nur die Felder name und
ort projiziert.
 Über das Schlüsselwort UNION wird die Ergeb-
nismenge der zweiten Abfrage angefügt. Die
zweite Abfrage liefert die Felder name und ort
der Tabelle t_ma_dt. Ergebnis der Vereinigung in MariaDB

11.5 Schnitt- und Differenzmengen


Auf die gleiche Weise wie die Vereinigungsmenge lassen sich Schnitt- und Differenzmengen
erzeugen (vgl. Abschnitt 4.4, Übersicht der Operationen der Relationenalgebra, 'Durchschnitt',
'Differenz'). Bei PostgreSQL werden zwei Abfragen dazu über die Schlüsselwörter INTERSECT
bzw. EXCEPT verbunden.

152 Schulversion © HERDT-Verlag


Datenabfragen für mehrere Tabellen 11

Beispiel
Aus den beiden Tabellen t_ma und t_ma_dt werden die gemeinsamen Mitarbeiter gesucht.
Dazu wird eine Schnittmenge über das Schlüsselwort INTERSECT erzeugt.

SELECT name, ort FROM t_ma


INTERSECT SELECT name, ort FROM t_ma_dt;

Ergebnis der Schnittmenge bei PostgreSQL

Es werden alle Mitarbeiter gesucht, die nur in der Tabelle t_ma enthalten sind, nicht aber in der
Tabelle t_ma_ dt.

SELECT name, ort FROM t_ma


EXCEPT SELECT name, ort FROM t_ma_dt;

Diese beiden Operationen stehen nicht in jedem Datenbanksystem zur Verfügung, da sie zum
SQL2 Intermediate Level gehören.

11.6 Unterabfragen
Unterabfragen ermitteln aus anderen Tabellen Informationen, welche für die eigentliche Abfrage
einer Tabelle benötigt werden. Dabei wird die Unterabfrage als innere Abfrage bezeichnet,
welche in die äußere – die eigentliche Abfrage – eingebettet wird.

Als Ergebnis liefert die Unterabfrage einen einzelnen Wert, eine Liste von Werten oder eine
ganze Tabelle. Dieses Ergebnis wird in der äußeren Abfrage als Selektionskriterium in der Bedin-
gung verwendet. Unterabfragen werden immer in Klammern eingefasst. Diese Schreibweise wird
nicht von allen DBMS zwingend vorgeschrieben, ist jedoch auf Grund der besseren Lesbarkeit der
SQL Anweisung üblich.

Unterabfragen sind langsame Operationen. Wenn möglich sollten stattdessen Joins ver-
wendet werden.

Einfache Unterabfragen
Für die Verknüpfungen zwischen den Relationen der Datenbank werden häufig Ziffern als IDs
genutzt. Soll eine Selektion in einer Tabelle nach einem bestimmten Kriterium erfolgen, ist die
Kenntnis der ID des Kriteriums notwendig. Häufig ist jedoch nicht diese, sondern nur die eigent-
liche Bezeichnung des Kriteriums bekannt. Mittels einer Unterabfrage kann die ID ermittelt und
für die eigentliche Selektion verwendet werden.

© HERDT-Verlag
Schulversion 153
11 Datenabfragen für mehrere Tabellen

Beispiel
Es sollen alle in der Tabelle t_ma erfassten Mitarbeiter der Abteilung Controlling ausgegeben
werden. Die Verknüpfung zur Abteilung erfolgt in der Tabelle über den Eintrag der Abteilungs-ID
abtnr. Da diese nicht bekannt ist, wird sie über eine Unterabfrage zuerst ermittelt und anschlie-
ßend in der WHERE Bedingung der äußeren Abfrage verwendet.

SELECT vname, name, ort FROM t_ma


 WHERE abtnr =
(SELECT id FROM t_abt WHERE name = 'Controlling');

 Die SELECT-Anweisung ermittelt die Felder vname, name und ort aus der Tabelle t_ma.
 In der WHERE Bedingung wird
die Abteilungsnummer ver-
wendet. Dafür wird das Feld
abtnr der Tabelle t_ma mit
dem Ergebnis der Unter-
abfrage verglichen. Diese lie-
fert das Feld id aus der Tabelle
t_abt für den Datensatz, der
im Datenfeld name den Ein- Ergebnis in MariaDB
trag Controlling enthält.

Unterabfragen mit EXISTS


Mittels des Schlüsselworts EXISTS für die Unterabfrage kann getestet werden, ob bestimmte
Daten in einer zweiten Tabelle vorhanden sind. Als Ergebnis der Unterabfrage werden keine
konkreten Daten, sondern einer der Werte TRUE oder FALSE zurückgegeben.

Alternativ zu EXISTS ist die Verwendung von NOT EXISTS möglich.

Beispiel
Die Abfrage soll nur die Abteilungen ermitteln, für die in der Tabelle t_ma Mitarbeiter erfasst
sind. Dazu wird mittels des Zusatzes EXISTS in der Unterabfrage geprüft, ob in der Tabelle
t_ma im Feld abtnr ein Eintrag für die jeweilige Abteilungs-ID existiert.

SELECT name FROM t_abt WHERE EXISTS


 (SELECT * FROM t_ma WHERE t_ma.abtnr = t_abt.id);

 In der Bedingung der SELECT-


Anweisung wird der Zusatz EXISTS
angegeben.
 Die Unterabfrage prüft, ob es in der
Tabelle t_ma mindestens einen Daten-
satz gibt, welcher im Feld abtnr den
Wert des Feldes id aus den Datensätzen
der Tabelle t_abt besitzt. Ist diese Ergebnis der Vereinigung in MariaDB
Bedingung wahr, wird die Abteilung in
der äußeren Abfrage ausgewählt.

154 Schulversion © HERDT-Verlag


Datenabfragen für mehrere Tabellen 11

11.7 Übung

Abfragen über mehrere Tabellen durchführen


Übungsdatei: -- Ergebnisdateien: Uebung1.sql, Uebung2.sql

1. Wechseln Sie zur Datenbank Bibliothek.


Erstellen Sie eine einfache Verknüpfung der Tabellen t_leser und t_verleih, um für jeden
Leser die ausgeliehenen Bücher zu ermitteln. Lassen Sie sich in der Abfrage die Vor- und
Familiennamen der Leser und die ISBN-Nummer anzeigen.
Verwenden Sie die gleiche Abfrage und ergänzen Sie diese um eine Sortierung nach
Familiennamen und Vornamen der Leser.
Erstellen Sie die gleiche Abfrage unter Verwendung eines Joins.
Zeigen Sie nun zusätzlich die Namen der Bücher an, die in der Tabelle t_buecher abgelegt
sind. Erweitern Sie dazu die SELECT-Anweisung um eine Verknüpfung zu dieser Tabelle.
2. Wechseln Sie zur Datenbank Uebungen.
Erstellen Sie eine Abfrage über die Tabellen t_lager und t_artikel, um alle am Lager vor-
rätigen Artikel aufzulisten. Verwenden Sie für die Tabellen passende Ersatznamen und lassen
Sie sich die Artikelnummer, den Artikelnamen, den Lieferanten und die Stückzahl anzeigen.
Wandeln Sie die Abfrage so um, dass Sie alle Artikel erhalten, egal ob Sie am Lager sind oder
nicht. Falls vorhanden, sollen neben der Artikelnummer, dem Artikelnamen und der Liefe-
rantennummer auch die Stückzahl und der Preis angezeigt werden.
Erweitern Sie die Abfrage so, dass zusätzlich zu den bisherigen Feldern noch der Name der
Lieferanten zurückgeliefert wird. Dabei sollen nur die Artikel berücksichtigt werden, die am
Lager sind. Sortieren Sie die Ausgabe nach den Artikelnamen.

© HERDT-Verlag
Schulversion 155
12 Sichten

12
12. Sichten

12.1 Vordefinierte Abfragen


Eine wichtige Eigenschaft der Tabellen eines Datenbanksystems ist deren physikalische Existenz
als strukturierte Sammlung von Daten auf einem Speichermedium. Oft werden jedoch nur
bestimmte Datensätze oder Datenfelder einer Tabelle oder mehrerer verknüpfter Tabellen
benötigt.

Abfragen sind eine Möglichkeit, die benötigten Daten bereitzustellen. Abfragen müssen aber
immer wieder eingegeben werden. Um diese sich wiederholende Arbeit einzusparen, können Sie
vordefinierte Abfragen, sogenannte Sichten (engl. views), verwenden. Sichten sind gespeicherte
SELECT-Anweisungen, die bis auf ihre Definition keinen zusätzlichen Speicherplatz benötigen.
Sie verwenden automatisch die aktuellen Datensätze der zugrunde liegenden Tabellen. Sichten
entsprechen der Benutzersicht auf die Daten (vgl. Abschnitt 2.3, 3-Ebenen Modell, externe Ebene
– Benutzersicht).

Mit Sichten können Sie auch einfacher mit verknüpften Tabellen arbeiten, da sie die Arbeit mit
den verknüpften Daten wie mit einer einzigen Tabelle ermöglichen. Gleichzeitig erlauben sie,
den Zugriff auf die Datensätze einer Tabelle für bestimmte Benutzer einzugrenzen. Durch das
Verwenden von Sichten kann der Zugriff auf die Daten ausschließlich auf die Benutzer beschränkt
werden, für die sie relevant sind.

Sichten stellen Ergebnismengen von Abfragen dar, werden aber in SQL wie Tabellen verwendet.
Sie können Daten aus vorhandenen Sichten abfragen und teilweise auch Datensätze mithilfe von
Sichten aktualisieren bzw. neu einfügen. Alle Datenfelder, die beim Erstellen einer Sicht ausge-
blendet wurden, sind auch in der weiteren Verwendung der Sicht nicht vorhanden. Die Struktur
der Tabellen, auf der die Sicht beruht, wird dabei jedoch nicht verändert.

Nicht alle Datenbanksysteme erlauben das Verwenden von Sichten bzw. sie unterstützen nicht
alle Möglichkeiten von Sichten.

156 Schulversion © HERDT-Verlag


Sichten 12

12.2 Sichten erstellen


Sichten werden mit der SQL-Anweisung CREATE VIEW erstellt. Dabei wird ein Name angegeben,
über den Sie im weiteren Verlauf auf die Sicht zugreifen können.

Damit Sie Sichten besser von anderen Elementen des Datenbanksystems unterscheiden können,
sollten Sie bei der Angabe des Namens das Präfix v_ voranstellen. Dadurch grenzen Sie Sichten
insbesondere von Tabellen ab.

Beispiel: SichtErstellen.sql
Die Tabelle t_ma enthält die Daten aller Mitarbeiter des Unternehmens. Die Beschäftigten der
Abteilung 1 sollen jedoch nur Zugriff auf die Mitarbeiter der eigenen Abteilung erhalten. Zu
diesem Zweck wird die Sicht v_ ma_abt1 erstellt, die zu Anschauungszwecken jedoch nur die
Abteilungsnummer sowie den Vor- und Familiennamen der Mitarbeiter enthält.

CREATE VIEW v_ma_abt1 AS


 SELECT abtnr, vname, name FROM t_ma WHERE abtnr = 1;
SELECT * FROM v_ma_abt1;

 Mit der CREATE-VIEW-Anweisung wird die Sicht


v_ma_abt1 definiert.
 Nach dem Schlüsselwort AS folgt die SELECT-
Anweisung, die der Sicht zugrunde liegen soll. Nur die hier
angegebenen Datenfelder sind bei der späteren
Verwendung der Sicht verfügbar.
Abrufen aller Datensätze der Sicht
 In einer Abfrage kann die Sicht wie eine Tabelle ver- v_ma_abt1 in MariaDB
wendet werden. Hier werden alle Datensätze der Sicht
abgerufen. In diesem Fall sind das die Abteilungsnummer
und die Namen aller Mitarbeiter der Abteilung 1.

Abfragen für Sichten


In der SELECT-Anweisung, die einer Sicht zugrunde liegen soll, sind beliebige WHERE-Klauseln
gestattet. Auch Abfragen über mehrere Tabellen (Joins) sind möglich. Nicht zulässig sind dagegen
folgende Klauseln:
 GROUP BY und HAVING
 ORDER BY
 UNION

Die Angabe der Datenfeldnamen in der Abfrage ist optional. Um alle Felder einzuschließen,
können Sie den Operator * verwenden. Ebenfalls zulässig sind Ersatznamen (Aliasnamen).

In folgenden Fällen ist die Angabe von Ersatznamen für Datenfelder zwingend notwendig:
 wenn die Namen der Datenfelder bei Abfragen über mehrere Tabellen nicht eindeutig sind,
 wenn in der Abfrage Ausdrücke oder Aggregatfunktionen verwendet werden.

© HERDT-Verlag
Schulversion 157
12 Sichten

Es besteht zusätzlich die Möglichkeit, Sichten zu erstellen, in deren SELECT-Anweisung


ebenfalls auf eine Sicht zugegriffen wird. Beachten Sie jedoch, dass dies zu schwer durch-
schaubaren Abfragestrukturen führt.

Sichten über mehrere Tabellen


In umfangreichen Datenbeständen kann unter der Verteilung der Daten auf mehrere ver-
schiedene Tabellen die Übersicht leiden. Mit Sichten, die auf Joins beruhen und die Daten aus
mehreren Tabellen zusammenführen, kann die Übersichtlichkeit verbessert werden.

Beispiel: SichtErstellenJoin.sql
Um zu ermitteln, welche Mitarbeiter an welchen Projekten beteiligt sind, wird eine Abfrage über
die Tabellen t_ma, t_ma_proj und t_proj benötigt. Zusätzlich werden aus allen Tabellen nur
bestimmte Datenfelder verwendet.

CREATE VIEW v_ma_proj


 (MitarbeiterNr, Mitarbeitername, ProjektNr, Projektname) AS
 SELECT m.id, m.name, p.id, p.name FROM t_ma_proj mp
INNER JOIN t_ma m ON mp.ma_id = m.id
INNER JOIN t_proj p ON mp.proj_id = p.id;
SELECT * FROM v_ma_proj WHERE ProjektNr = 1;

 Die Sicht wird mit der Anweisung CREATE VIEW erstellt. Um sie von der Tabelle t_ma_proj
zu unterscheiden, wird das Präfix v_ vorangestellt.
 In der Sicht müssen alle Datenfelder der beteiligten Tabellen einen eindeutigen Namen
erhalten. Da in der vorliegenden Abfrage die Namen id und name doppelt vorkommen,
werden für sie spezielle Ersatznamen festgelegt.
 An dieser Stelle folgt die Angabe der zugrunde liegenden Abfrage über die drei Tabellen
mithilfe von Inner-Joins.
 Die probeweise Abfrage über die neu erstellte Sicht liefert die Namen aller Mitarbeiter,
die am Projekt mit der Nummer 1 arbeiten. Ohne diese Sicht wäre dafür die aufwendige
Abfrage () inklusive der WHERE-Klausel aus  notwendig gewesen.

Die Abfrage der Sicht liefert die Daten aus drei Tabellen

Datenfelder in der Sicht benennen


Die Namen aller Datenfelder in einer Sicht müssen eindeutig sein. Insbesondere bei Abfragen, die
sich über mehrere Tabellen erstrecken, können Namen von Datenfeldern mehrmals vorkommen.
In solchen Fällen müssen Sie für die Datenfelder der Sicht neue Datenfeldnamen definieren.
Die Angabe der Datenfeldnamen erfolgt in runden Klammern nach dem Namen der Sicht.

158 Schulversion © HERDT-Verlag


Sichten 12

Syntax
CREATE VIEW viewname [(datenfeldliste)] AS SELECT ...;

 Die Anweisung wird von den Schlüsselwörtern CREATE VIEW eingeleitet. Danach folgt
der Name der Sicht.
 In runden Klammern erfolgt die Angabe der Datenfeldnamen der Sicht. Die Reihenfolge
entspricht den Datenfeldern in der SELECT-Anweisung.
 Falls die Namen der Datenfelder in der Abfrage eindeutig sind, kann die Datenfeldliste
entfallen. In diesem Fall werden die Namen aus der Abfrage verwendet.
 Nach dem Schlüsselwort AS folgt die Angabe der SELECT-Anweisung. Diese kann eine
WHERE-Klausel enthalten und mehrere Tabellen verknüpfen.
 In der Abfrage dürfen die Klauseln GROUP BY, HAVING, ORDER BY und UNION nicht
verwendet werden.

Um eine Sicht zu erstellen, müssen Sie über das entsprechende Recht verfügen. Dieses wird mit
der Anweisung GRANT CREATE VIEW gewährt. Zusätzlich benötigen Sie Leserechte für alle an
der Abfrage beteiligten Tabellen.

12.3 Sichten löschen


Sichten werden mit der Anweisung DROP VIEW gelöscht. Die Anweisung löscht ausschließlich die
Definition der Sichten. Die zugrunde liegenden Tabellen werden dabei nicht verändert. Um eine
Sicht zu löschen, müssen Sie der Besitzer sein oder über die entsprechenden Zugriffsrechte
verfügen.

Beispiel
Mit der Anweisung DROP VIEW wird die Sicht v_ma_abt1 gelöscht.

DROP VIEW v_ma_abt1;

Syntax
DROP VIEW viewname;

 Die Anweisung beginnt mit den Schlüsselwörtern DROP VIEW. Danach folgt der Name
der Sicht.
 Falls die Sicht zu diesem Zeitpunkt durch andere SQL-Anweisungen, z. B. eine SELECT-
Anweisung, verwendet wird, kann sie nicht gelöscht werden.
 Falls Sichten existieren, die auf der gelöschten Sicht basieren, werden diese ebenfalls
gelöscht.

© HERDT-Verlag
Schulversion 159
12 Sichten

12.4 Daten über Sichten einfügen, ändern und löschen

Daten über Sichten einfügen und ändern


Unter bestimmten Voraussetzungen können Sichten in manchen Systemen auch zum Eingeben
und Ändern von Daten verwendet werden. Bei MariaDB existieren für die Verwendung von
INSERT-, UPDATE- und DELETE-Anweisungen jedoch in Sichten viele Einschränkungen, unter
anderen:
 In der SELECT-Anweisungen der Sicht darf nicht das Schlüsselwort DISTINCT verwendet
werden.
 Die Sicht darf sich nur auf eine Tabelle beziehen. Joins sind beim Ändern von Daten nicht
gestattet.
 Die Abfrage darf keine Unterabfragen in der Bedingung verwenden.
Das Verändern der Datensätze in einer Sicht bedeutet das tatsächliche Ändern der entsprechen-
den Datensätze in der zugrunde liegenden Tabelle.

Wird ein Datensatz in eine Sicht eingefügt, die nur ausgewählte Felder einer Tabelle enthält,
werden die restlichen Felder dieses Datensatzes (die nicht in der Sicht enthalten sind) in der
Tabelle mit dem Wert NULL gefüllt. Voraussetzung dafür ist, dass diese Felder den Wert NULL
akzeptieren (d. h., dass sie nicht mit NOT NULL definiert wurden) oder ein entsprechender
Vorgabewert (mit dem Schlüsselwort DEFAULT) festgelegt wurde.

Seit der Version 9.3 unterstützt PostgreSQL diese Anweisungen für einfache Sichten mit aktuali-
sierbaren Spalten, die sich direkt auf eine Tabellenspalte beziehen und seit der Version 9.4
können Daten auch in Sichten mit nicht-aktualisierbaren Spalten, wie beispielsweise einer auf
zwei Spalten beruhenden Berechnung, eingefügt oder verändert werden. Für komplexe Sichten,
welche auf der Abfrage mehrerer Tabellen basieren, können Sie durch die programminternen
Regeln ON INSERT (bzw. ON UPDATE oder ON DELETE) DO-INSTEAD-Datenänderungen
herbeiführen. Mehr dazu finden Sie in der Dokumentaion von PostgreSQL.

Beispiel: SichtDatenÄndern.sql
Es wird eine neue Sicht definiert, die auf Datenfeldern der Tabelle t_ma beruht. Da über die Sicht
Daten in die Tabelle eingefügt werden sollen, müssen sich alle Felder in der Sicht befinden, die
keine NULL-Werte akzeptieren, wie z. B. das Primärschlüsselfeld.

CREATE VIEW v_ma_abt AS


SELECT id, vname, name, abtnr FROM t_ma;
UPDATE v_ma_abt SET abtnr = 2 WHERE abtnr IS NULL;
INSERT INTO v_ma_abt (id, name, vname, abtnr)
VALUES(102, 'Melzer', 'Martin', 1);

 Es wird eine neue Sicht auf Basis der Tabelle t_ma erstellt. Da das Feld id als Primärschlüssel
definiert wurde und einen Wert enthalten muss, wird es in die Sicht aufgenommen. Nur so
ist das Einfügen neuer Datensätze in die Tabelle möglich.
 Mit der UPDATE-Anweisung wird in allen Datensätzen, die noch keinen Wert im Feld abtnr
enthalten (abtnr IS NULL), der Wert 2 eingefügt.
 Ein neuer Datensatz wird wie bei Tabellen mit der INSERT-INTO-Anweisung eingefügt.
Dem Primärschlüssel id muss dabei ein eindeutiger Wert zugewiesen werden.

160 Schulversion © HERDT-Verlag


Sichten 12

Daten über Sichten löschen


Mithilfe der DELETE-Anweisung können Sie für eine Sicht Datensätze in der Basistabelle löschen.

Daten beim Verändern überprüfen


Wird in der SELECT-Anweisung, die der Sicht zugrunde liegt, eine WHERE-Klausel angegeben,
wird die Situation beim Einfügen, Ändern oder Löschen von Daten der Sicht undurchsichtiger. Sie
können zwar auch jetzt diese Operationen ausführen, die Sicht enthält jedoch nur die Daten-
sätze, auf die die angegebene Bedingung zutrifft. Wird beispielsweise ein Datensatz eingefügt,
der nicht der Bedingung entspricht, lässt sich durch das Anzeigen der Datensätze der Sicht nicht
überprüfen, ob die Operation erfolgreich war.

Wollen Sie erreichen, dass nur Datensätze eingefügt, gelöscht oder geändert werden können, die
in der Sicht auch angezeigt werden, fügen Sie der Definition der Sicht die Klausel WITH CHECK
OPTION hinzu. So wird beim Bearbeiten der Daten ebenfalls die Bedingung aus der SELECT-
Anweisung beachtet.

In PostgreSQL ist diese Option seit der Version 9.4 implementiert.

Beispiel: SichtDatenÄndernCheck.sql
Im Folgenden wird eine Sicht erstellt, die entsprechend der Bedingung in der Abfrage prüft, ob
bei Änderungsoperationen im Datenfeld abtnr der Wert 1 angegeben wurde. Ist dies nicht der
Fall, wird eine Fehlermeldung angezeigt.

CREATE VIEW v_ma_abt1 AS


SELECT * FROM t_ma WHERE abtnr = 1
 WITH CHECK OPTION;
INSERT INTO v_ma_abt1
(id, name, vname, abtnr)
VALUES(103, 'Funke', 'Franziska', 2);
INSERT INTO v_ma_abt1
(id, name, vname, abtnr)
VALUES(103, 'Funke', 'Franziska', 1);

 Die Sicht enthält alle Datenfelder der Tabelle t_ma und umfasst alle Mitarbeiter der
Abteilung 1.
 Am Ende der CREATE-VIEW-Anweisung erfolgt die Angabe des Befehls zur
Datenüberprüfung.
 Hier soll ein Datensatz eingefügt werden, der im Feld abtnr den Wert 2 besitzt. Dies wider-
spricht der WHERE-Klausel in der Definition der Sicht, die nur Datensätze mit dem Wert 1
im Feld abtnr zulässt. Das DBMS erzeugt eine Fehlermeldung.
 Diese INSERT-Anweisung wird korrekt ausgeführt, da das Feld abtnr den Wert 1 besitzt.

Fehlermeldung beim Einfügen eines Datensatzes, der die WHERE-Klausel nicht erfüllt, über eine Sicht

© HERDT-Verlag
Schulversion 161
12 Sichten

Die Überprüfung der Daten wird auch beim Löschen von Datensätzen mit der DELETE-
Anweisung angewendet. Sie können daher nur die Datensätze löschen, die auch von der Sicht
angezeigt werden.

Syntax
CREATE VIEW viewname AS SELECT ... WITH CHECK OPTION;

 Die Definition der Sicht erfolgt über die Anweisung CREATE VIEW, gefolgt vom Namen
der Sicht und der SELECT-Anweisung, die die Sicht definiert.
 Nach der Abfrage wird die Klausel WITH CHECK OPTION angegeben, damit eine Über-
prüfung der Datensätze, die geändert, eingefügt oder gelöscht werden sollen, mit der
WHERE-Klausel der Abfrage erfolgt.

12.5 Übung

Sichten erstellen
Übungsdatei: -- Ergebnisdateien: Uebung1.sql, Uebung2.sql

1. Wechseln Sie zur Datenbank Uebungen.


Erstellen Sie basierend auf der Tabelle t_ma eine Sicht v_ma_berlin, die die ID-Nummer, den
Familiennamen, den Vornamen, die Abteilung, die Straße, die Hausnummer, den Ort und die
Postleitzahl aller Mitarbeiter aus Berlin enthält.
Rufen Sie mit einer Abfrage alle Datensätze der Sicht ab. Sortieren Sie die Ausgabe einmal
aufsteigend nach Familienname und Vorname sowie ein zweites Mal nach der Abteilungs-
nummer.
Löschen Sie die Sicht. Eventuell müssen Sie vorher laufende Abfragen mit dem Befehl
COMMIT bestätigen.
Erstellen Sie die Sicht neu und verwenden Sie dabei die Option zur Datenüberprüfung.
Erstellen Sie einen neuen Datensatz für die Mitarbeiterin Helene Weigelt, Südstr. 6a, 10114
Berlin. Die Mitarbeiter-ID soll 140 lauten.
Versuchen Sie, für den gerade eingefügten Datensatz den Ort von Berlin in Potsdam zu
ändern. Was stellen Sie fest?
2. Wechseln Sie zur Datenbank Uebungen.
Erstellen Sie eine Sicht, die für alle Mitarbeiter aus Berlin die Projektnummern anzeigt, an
denen die Mitarbeiter beteiligt sind. Verknüpfen Sie dazu die Tabellen t_ma und t_ma_proj
mit einem Join.
Rufen Sie zuerst alle Datensätze der Sicht ab. Zeigen Sie danach nur die Datensätze an,
für die die Projektnummer 2 ist.
Erstellen Sie eine SELECT-Anweisung, um die Anzahl der Mitarbeiter aus Berlin, die am
Projekt 2 beteiligt sind, zu ermitteln.
Ermitteln Sie diesen Wert mithilfe einer Sicht und vergleichen Sie die Komplexität der
Abfragen.

162 Schulversion © HERDT-Verlag


Cursor 13

13
13. Cursor

13.1 Sequenzielles Lesen von Datensätzen


SELECT-Abfragen liefern in der Regel eine Ergebnismenge mit allen Datensätzen, auf die eine
angegebene Bedingung, sofern vorhanden, zutrifft. Da sich auch alle anderen Anweisungen in
SQL auf Mengen beziehen, wird SQL auch als mengenorientierte Sprache bezeichnet. Insbe-
sondere bei der Weiterverarbeitung der Datensätze in einem eigenen Programm kann es nützlich
sein, nur einen bestimmten Datensatz aus der Ergebnismenge abzurufen. Dieser wird verarbeitet
und anschließend wird der nächste Datensatz aufgerufen.

Eine Möglichkeit wäre, die Bedingung der Abfrage so zu verändern, dass nur ein einziger Daten-
satz zurückgeliefert wird. Eine effektivere Lösung ist jedoch das Verwenden eines Cursors (engl.
Cursor = Positions- bzw. Schreibmarke).

Damit Sie die Datensätze einer Abfrage Schritt für Schritt bearbeiten können, wird intern ein
Datenpuffer angelegt. Der Cursor (Zeiger) verweist nun auf eine bestimmte Stelle im Puffer und
erlaubt den Zugriff auf den entsprechenden Datensatz. Das Verarbeiten der Ergebnismenge der
Abfrage erfolgt dabei wie das sequenzielle Lesen aus einer Datei. Zuerst wird die Datei geöffnet,
danach wird ein Datensatz nach dem anderen gelesen. Am Ende wird die Datei geschlossen und
der Zugriff beendet.

Bei der Arbeit mit einem Cursor sind folgende SQL-Befehle von Bedeutung:

DECLARE CURSOR Definieren eines Cursors mit der zugrunde liegenden Abfrage
OPEN Öffnen des Datenpuffers zur sequenziellen Abfrage der Datensätze
FETCH Abrufen eines Datensatzes
CLOSE Schließen des Datenpuffers

Mit der Anweisung DECLARE CURSOR erstellen Sie einen serverseitigen Cursor, der direkt über
das Datenbanksystem verwaltet wird. Eine andere Möglichkeit sind sogenannte clientseitige
Cursor, bei denen die Verwaltung in einer Anwendung erfolgt, die auf die Datenbank aufsetzt,
z. B. ein PHP-Script in der Web-Programmierung.

© HERDT-Verlag
Schulversion 163
13 Cursor

Serverseitige Cursor benötigen viel Arbeitsspeicher und Rechenzeit auf dem verarbeitenden
Computer. Sie sind daher weniger für viele simultane Zugriffe geeignet. Clientseitige Cursor
bieten sich für kleine Datenbestände an, wie sie bei Datenbanken im Internet häufig vorkommen.

Beachten Sie, dass das sequenzielle Lesen von Datensätzen mithilfe eines Cursors nicht direkt in
einem Datenbankfrontend angewendet werden kann. Dies ist nur innerhalb eines Anwendungs-
programms über sogenanntes eingebettetes SQL und eine interne Schnittstelle zum Datenbank-
system möglich. Solche Anwendungsprogramme können beispielsweise in C oder C++ program-
miert werden.

13.2 Cursor erstellen


Mit der SQL-Anweisung DECLARE CURSOR wird ein Cursor definiert. Dabei können Sie eine
beliebige gültige SQL-Abfrage verwenden. Mit dieser Anweisung wird nur der Zeiger auf die
Ergebnismenge erzeugt, ein Datenzugriff erfolgt dabei noch nicht. Die Definition des Cursors
muss vor allen anderen SQL-Anweisungen ausgeführt werden, die den Cursor verwenden sollen.

Beispiel: CursorErzeugen.sql
Die folgende SQL-Anweisung erzeugt einen Cursor zum sequenziellen Lesen des aktuellen Lager-
bestandes. Dabei wird eine einfache SELECT-Abfrage verwendet, die als Ergebnismenge alle
Artikel liefert, von denen mindestens ein Stück am Lager ist.

DECLARE c_lager CURSOR FOR


 SELECT * FROM t_lager WHERE stueck >= 1;

 Es wird der Cursor c_lager definiert. Das Präfix c_ soll das Unterscheiden von anderen
Datenbankobjekten, z. B. Tabellen, erleichtern.
 Nach dem Schlüsselwort FOR folgt die SELECT-Abfrage, die in diesem Fall alle Datenfelder
der Tabelle t_lager zurückliefert. Als Bedingung wird angegeben, dass die Stückzahl
mindestens 1 betragen muss.

Syntax
DECLARE cursorname CURSOR FOR SELECT ...;

 Die Anweisung beginnt mit dem Schlüsselwort DECLARE. Danach folgt der gewünschte
Name des Cursors.
 Nach dem Schlüsselwort FOR wird eine gültige SELECT-Anweisung angegeben, die auch
Joins und Bedingungen enthalten kann.

164 Schulversion © HERDT-Verlag


Cursor 13

13.3 Datenzugriff mit dem Cursor


Um Datensätze mithilfe eines Cursors zu lesen, muss der zuvor definierte Cursor explizit geöffnet
werden. Dies geschieht mit der SQL-Anweisung OPEN. Mit der FETCH-Anweisung können Sie
danach Datensatz für Datensatz auslesen.

Die OPEN-Anweisung führt die bei der Definition des Cursors angegebene SELECT-Abfrage aus
und speichert das Ergebnis in einem Datenpuffer. Danach befindet sich der Zeiger auf dem ersten
Datensatz der Ergebnismenge.

Beispiel: CursorOpenFetch.sql
Mit der OPEN-Anweisung wird der im vorherigen Beispiel definierte Cursor c_lager geöffnet und
mit FETCH wird der erste Datensatz ausgelesen. Die Werte der einzelnen Datenfelder werden
dabei in Variablen des Programms gespeichert.

OPEN c_lager;
FETCH c_lager INTO :id, :stueck, :preis;

 Hier wird der vorher definierte Cursor c_lager geöffnet.


 Mit der FETCH-Anweisung erfolgt das Lesen des ersten Datensatzes. Die Werte der einzel-
nen Datenfelder werden dabei in den angegebenen Variablen des Programms gespeichert.
Nach dem Ausführen der Anweisung wird der Zeiger auf dem zweiten Datensatz der
Ergebnismenge positioniert.

Nach dem Öffnen des Cursors befindet sich der Zeiger stets auf dem ersten Datensatz. Jedes
Ausführen der FETCH-Anweisung liefert den aktuellen Datensatz und rückt den Zeiger auf den
nächsten Datensatz. Einige Datenbanksysteme erlauben zusätzlich das Abrufen des vorherigen,
des ersten, des letzten oder eines beliebigen Datensatzes. Mehr Informationen dazu finden Sie
in der Dokumentation Ihres Datenbanksystems unter dem Stichwort FETCH.

Syntax
OPEN cursorname;
FETCH cursorname INTO|USING :hostvariable1, ...;

 Mit dem Schlüsselwort OPEN, gefolgt vom Namen des Cursors, wird der Zugriff auf die
Ergebnismenge der dazugehörigen Abfrage ermöglicht.
 Um den nächsten Datensatz abzurufen, wird die FETCH-Anweisung verwendet. Dem
Schlüsselwort FETCH folgt dabei der Name des Cursors.
 Über das Schlüsselwort INTO bzw. USING wird das Speichern der Werte der einzelnen
Datenfelder in entsprechende Variablen des ausführenden Programms gesteuert. Diese
Variablen müssen vorher definiert werden und einen passenden Datentyp besitzen.
 Über eine Statusvariable können Sie prüfen, ob sich der Cursor auf einem gültigen bzw.
dem letzten Datensatz befindet.

© HERDT-Verlag
Schulversion 165
13 Cursor

13.4 Cursor schließen


Wird der Datenpuffer nicht mehr benötigt, können Sie den Cursor mit der Anweisung CLOSE
wieder schließen. Mit dieser Anweisung wird der Cursor inaktiv und die Verknüpfung mit der
Ergebnismenge wird aufgehoben. Alle verwendeten Systemressourcen sind danach wieder frei-
gegeben. Sie können jetzt keine Zugriffe mehr auf die Daten vornehmen. Eine anschließende
OPEN-Anweisung öffnet den Cursor wieder für einen erneuten Datenzugriff. Die Definition des
Cursors, die mit der Anweisung DECLARE CURSOR erfolgte, wird beim Schließen nicht verändert.

Syntax
CLOSE cursorname;

 Die Anweisung beginnt mit dem Schlüsselwort CLOSE. Danach folgt der Name des Cursors.

166 Schulversion © HERDT-Verlag


Zugriffsrechte und Benutzer verwalten 14

14
14. Zugriffsrechte und Benutzer verwalten

14.1 Sicherheitskonzepte
Benutzerverwaltung in Datenbanksystemen
Datenbanksysteme speichern häufig sensible Daten, zu deren Schutz ein Sicherheitskonzept mit
einer Rechteverwaltung für die Objekte der Datenbank notwendig ist. Dieses Konzept ist bei allen
Datenbanksystemen im Wesentlichen ähnlich aufgebaut und unterscheidet sich nur in Details der
Umsetzung.

Der wichtigste Schritt im Aufbau eines sicheren Datenbanksystems besteht im Verwalten unter-
schiedlicher Benutzer bzw. Benutzergruppen. Diesen Benutzern können mit den SQL-Anweisungen
GRANT und REVOKE definierte Zugriffsberechtigungen zugeteilt oder entzogen werden.

Die Benutzerverwaltung übernimmt in der Regel der Datenbank- oder Systemadministrator.


Er verfügt über die meisten Rechte im System und kann diese anderen Benutzern zuweisen
oder entziehen. Für den Datenbankadministrator wird beim Installieren des Datenbanksystems
automatisch ein Benutzerkonto erstellt. Dieser Benutzer hat einen vom verwendeten Datenbank-
system abhängigen Namen.

Datenbanksystem Benutzername des Administrators Standard-Passwort


MariaDB root keins
PostgreSQL postgres keins
Microsoft SQL-Server sa keins

Nach der Installation des Datenbanksystems sollten Sie unbedingt das Passwort des standard-
mäßig installierten Datenbankadministrators ändern bzw. ein Passwort vergeben, um die
Sicherheit des Systems zu bewahren. Da Sie nur für bestimmte Befehle über die Administra-
torrechte verfügen müssen, sollten Sie (auch für sich selbst) zusätzlich einen Benutzer mit
etwas eingeschränkten Rechten erstellen, den Sie als Standardbenutzer einrichten.

© HERDT-Verlag
Schulversion 167
14 Zugriffsrechte und Benutzer verwalten

Bei der Eingabe des Passwortes gelten folgende Regeln:


 Das Passwort kann maximal 32 Zeichen lang sein. Es sind jedoch nur die ersten acht Zeichen
relevant.
 Bei der Überprüfung des Passwortes wird, im Gegensatz zum Benutzernamen, zwischen
Groß- und Kleinschreibung unterschieden.

Benutzer eines Datenbanksystems


Die Benutzer in einem Datenbanksystem sind unabhängig von den Benutzern des Betriebs-
systems, auf dem das Datenbanksystem installiert ist. Sie müssen für das Datenbanksystem extra
angelegt werden. Die Benutzer des Datenbanksystems sind in der Hierarchie über den einzelnen
Datenbanken angeordnet. Daher müssen die Benutzer auch nur einmal angelegt werden.
Anschließend kann ein Benutzer dann Zugriff auf alle oder einzelne ausgewählte Datenbanken
des Systems erhalten.

Grundsätzlich ist jeder Benutzer, der ein Datenbankobjekt wie z. B. eine Tabelle erstellt, automa-
tisch auch Besitzer dieses Objektes. Alle anderen Benutzer des Systems besitzen für ein Daten-
bankobjekt eines anderen Benutzers nach dessen Erstellung keine Zugriffsrechte. Eine Ausnahme
ist der Datenbankadministrator, der über alle Datenbankobjekte verfügen kann. Er kann auch
anderen Benutzern zusätzliche Rechte einräumen.

14.2 Benutzerverwaltung unter PostgreSQL

Mit Rollen arbeiten in PostgreSQL


Sie können in PostgreSQL sowohl einzelne Benutzer als auch Benutzergruppen erstellen. Der
Vorteil von Gruppen ist, dass Sie diese mit bestimmten Rechten versehen können, welche dann
automatisch allen Benutzern zugewiesen werden, die dieser Gruppe angehören.

Bei PostgreSQL werden die Benutzer und Gruppen unter dem Begriff „Rollen“ zusammengefasst.
Sie werden allein dadurch unterschieden, dass eine Rolle, die als Benutzer dient, sich im Daten-
banksystem anmelden kann, während andere Rollen das nicht können. Dabei können Rollen
sowohl individuelle Zugriffsrechte besitzen als auch Teil einer anderen Rolle sein.

Neue Benutzer anlegen


Bei der Installation von PostgreSQL wird automatisch ein mit allen Rechten ausgestatteter
Benutzer angelegt. In der Regel heißt dieser Benutzer postgres. Um weitere Benutzer zu
erzeugen, müssen Sie sich zunächst mit diesem Benutzer anmelden. Anschließend können Sie
mithilfe der Anweisung CREATE ROLE und der Option LOGIN einen Benutzer anlegen und,
wenn gewünscht, einige Benutzerattribute festlegen.

168 Schulversion © HERDT-Verlag


Zugriffsrechte und Benutzer verwalten 14

Beispiel: BenutzerAnlegenPostgreSQL.sql
Im folgenden Beispiel sollen die Benutzer pscherhorn und jbossert erstellt werden. Beide Benut-
zer sollen ein Passwort erhalten. Der Benutzer pscherhorn soll alle Rechte erhalten, also ein
sogenannter Superuser sein. Der Benutzer jbossert darf Datenbanken erstellen. Zusätzlich sollen
die Benutzer fmueller und pfunke erstellt werden, die zunächst keine Rechte haben.

CREATE ROLE fmueller LOGIN; CREATE ROLE pfunke LOGIN;


CREATE ROLE pscherhorn LOGIN PASSWORD 'passwort' SUPERUSER;
CREATE USER jbossert PASSWORD 'passwort' CREATEDB;

 Die Benutzer fmueller und pfunke werden ohne weitere Optionen angelegt.
 Der Benutzer pscherhorn wird angelegt. Mit der Anweisung PASSWORD geben Sie dem
Benutzer ein Passwort mit. Die zusätzliche Anweisung SUPERUSER bewirkt, dass dieser
Benutzer alle Zugriffsrechte erhält.
 Hier wird der Benutzer jbossert erstellt. Auch diesem Benutzer wird ein Passwort zuge-
wiesen und durch die Anweisung CREATEDB das Recht erteilt, Datenbanken zu erstellen. Da
versäumt wurde, den Zusatz LOGIN einzugeben, wird sich der Benutzer nicht im Daten-
banksystem anmelden können.

Möchten Sie in dem Namen Sonderzeichen oder Großbuchstaben verwenden, müssen Sie den
Namen in Anführungszeichen setzen.

Syntax zum Anlegen neuer Benutzer


Die Anweisung CREATE ROLE ist sehr umfangreich. Hier ein Beispiel der wichtigsten Optionen:

CREATE ROLE benutzername LOGIN [[WITH]


| [ENCRYPTED | UNENCRYPTED] PASSWORD 'passwort'
| SUPERUSER | NOSUPERUSER
| CREATEROLE | NOCREATEROLE
| CREATEDB | NOCREATEDB
| INHERIT | NOINHERIT
| IN ROLE rollenname(n) [, ...]
| VALID UNTIL 'datum' ];

 Neue Benutzer legen Sie mit der Anweisung CREATE ROLE gefolgt von einem eindeutigen
Benutzernamen und der Option LOGIN an.

 Wenn Sie die Anweisung LOGIN nicht hinzufügen, erstellen Sie eine Rolle, die lediglich
als Gruppe dient. Mit dieser Rolle können Sie sich nicht im Datenbanksystem anmelden.

Sie haben die Möglichkeit, weitere Attribute beim Anlegen des Benutzers festzulegen, z. B.:

[ENCRYPTED|UNENCRYPTED] Der Benutzer erhält ein Passwort. Bei Angabe der


PASSWORD 'passwort' Option ENCRYPTED wird das Passwort verschlüsselt.
UNENCRYPTED ist der Vorgabewert.
SUPERUSER | NOSUPERUSER Ist der Benutzer Superuser, erhält er alle Zugriffsrechte.
NOSUPERUSER ist der Vorgabewert.

© HERDT-Verlag
Schulversion 169
14 Zugriffsrechte und Benutzer verwalten

CREATEROLE | NOCREATEROLE Mit der Option CREATEROLE erhält der Benutzer das
Recht, Rollen zu erstellen.
CREATEDB | NOCREATEDB Mit der Option CREATEDB erhält der Benutzer das
Recht, Datenbanken zu erstellen.
INHERIT | NOINHERIT Hier können Sie festlegen, ob der Benutzer automatisch
alle Rechte der Rollen erben soll, denen er angehört.
IN ROLE rollenname(n) Ordnet den Benutzer einer oder mehreren Rollen zu
VALID UNTIL 'datum' Beschränkt die Gültigkeit eines Passworts auf ein
bestimmtes Datum
CONNECTION LIMIT limitangabe Mit der Anweisung CONNECTION LIMIT können Sie
ein Verbindungslimit eingeben, das die Anzahl der
Datenbankverbindungen des Benutzers beschränkt.

Alternativ zu dem Befehl CREATE ROLE name LOGIN kann auch noch der Befehl CREATE USER
verwendet werden. Diese Anweisung wurde in älteren Versionen von PostgreSQL verwendet.

Benutzerattribute anzeigen
Um sich einen Überblick über die Rollen im Datenbanksystem zu verschaffen, können Sie in
PostgreSQL alle Rollen und deren Attribute mit dem Befehl "\du" anzeigen. In der Ansicht
werden die Rollennamen aufgelistet sowie einige andere Informationen angegeben, z. B. ob die
Rolle Superuser ist und ob sie Datenbanken erstellen darf.

Rollen und deren Attribute anzeigen

Benutzerattribute ändern
Möchten Sie die Benutzer bzw. die Rollen bearbeiten, können Sie mit der Anweisung ALTER
ROLE arbeiten. Bei dieser Anweisung können Sie u. a. die gleichen Optionen eingeben wie bei
der Anweisung CREATE ROLE. Zusätzlich haben Sie z. B. die Möglichkeit, mit dem Befehl
RENAME TO eine Rolle umzubenennen.

Beispiel: BenutzerAendernPostgreSQL.sql
ALTER ROLE hschneider CREATEDB;
ALTER USER jbossert LOGIN;
ALTER ROLE pscherhorn RENAME TO phscherhorn;

 Die Rolle hschneider kann nun Datenbanken erstellen.


 Die Rolle jbossert kann sich nun im Datenbanksystem einloggen.
 Die Rolle pscherhorn wird umbenannt in phscherhorn.

170 Schulversion © HERDT-Verlag


Zugriffsrechte und Benutzer verwalten 14

 Sie können nicht die Rolle ändern, mit der Sie aktuell eingeloggt sind.
 Wenn Sie eine Rolle umbenennen, die ein Passwort hat, wird dieses gelöscht.

Möchten Sie eine Rolle löschen, verwenden Sie die Anweisung DROP ROLE rollenname.

14.3 Benutzerverwaltung unter MariaDB

Neue Benutzer anlegen


MariaDB verwaltet die Benutzernamen in einer Tabelle mit dem Namen user in der Datenbank
mysql. Um einen neuen Benutzer anzulegen, wird ein neuer Datensatz in dieser Tabelle erstellt.
Um dies zu erreichen, bietet MariaDB verschiedene Wege:

 die Verwendung der speziellen Befehle CREATE USER und GRANT, die den Server ver-
anlassen, die Tabelle user zu bearbeiten;
 das direkte Einfügen der Datensätze mittels der SQL-Anweisung INSERT in die Tabelle user.

Die Verwendung der speziellen Befehle ist vorzuziehen, da diese klarer und weniger fehler-
anfällig sind.

Beim Anlegen des Benutzers müssen Sie neben Benutzernamen zusätzlich Angaben darüber
machen, von welchen Computern (Hosts) im Netzwerk der Zugriff erfolgen darf. Die Vergabe
eines Passwortes ist nicht zwingend erforderlich, sollte aber aus Gründen der Datensicherheit
immer erfolgen. Bei der Verwendung von GRANT ist die Angabe eines Passwortes mittels der
Option IDENTIFIED BY in Abhängigkeit von den Servereinstellungen unter Umständen jedoch
notwendig.

Zum Einrichten eines neuen Benutzers benötigen Sie umfassende Rechte. Auf die Datenbank
mysql haben nur Benutzer mit allen Rechten Zugriff, in der Regel daher nur der Datenbank-
administrator.

Beispiel: BenutzerAnlegenMariaDB.sql
Im folgenden Beispiel sollen die Benutzer fmueller und pfunke erstellt werden. Der Benutzer
pfunke darf nur von dem Computer aus auf die Datenbank zugreifen, auf dem sie installiert ist.
Für den Benutzer fmueller ist dagegen Zugriff von beliebigen Computern des Netzwerks erlaubt.

CREATE USER 'fmueller'@'%' IDENTIFIED BY 'geheim';


CREATE USER 'pfunke'@'localhost' IDENTIFIED BY 'geheim';

 Hier wird der Benutzer fmueller erstellt. Dem Datenfeld host wird dabei der Platzhalter %
zugewiesen. Dieser bewirkt, dass der Zugriff von beliebigen Computern im Netzwerk
erfolgen kann. Das Passwort wird per Standard verschlüsselt in der Datenbank gespeichert.
Dadurch ist das Passwort bei SELECT-Abfragen der Tabelle user auch für den Administrator
nicht lesbar.
 Dem Benutzer pfunke sind nur Zugriffe vom lokalen Computer aus erlaubt. Deshalb wird
dem Feld host der Wert localhost zugewiesen.

© HERDT-Verlag
Schulversion 171
14 Zugriffsrechte und Benutzer verwalten

Syntax zum Anlegen neuer Benutzer


CREATE USER 'user'@'host' IDENTIFIED BY 'passwort';

 Neue Benutzer legen Sie mit der CREATE USER-Anweisung an.


 Den Benutzernamen und den Wert für das Datenfeld host geben Sie in Apostrophe einge-
schlossen und getrennt durch das Zeichen '@' an. Der Hostname bezeichnet den Netzwerk-
namen des Computers, von dem aus der Zugriff erfolgen soll. Wird dieser nicht angegeben,
wird '%' verwendet.
 Das Passwort für den Benutzer folgt ebenfalls in Apostrophe eingeschlossen nach den
Schlüsselwörtern IDENTIFIED BY. Die Verschlüsselung des Passwortes in der Datenbank
erfolgt automatisch.

Beispiele für die Angabe des Hostnamens

Wert Erklärung
% Alle Computer im Netzwerk
localhost Lokaler Computer, auf dem der MariaDB-Server installiert ist
db.testserver.de Computer mit dem Domainnamen db.testserver.de
%.testserver.de Computer, deren Domain auf testserver.de endet
server Computer mit dem Netzwerknamen server

Die neuen Benutzer verfügen standardmäßig über keine Rechte. Diese können Sie nachträglich
mit der Anweisung GRANT definieren.

Benutzer verwalten
Um Benutzerdaten unter MariaDB anzuzeigen, können Sie die Tabelle mysql.user mit einem
SELECT-Befehl abfragen, beispielsweise in der Form
SELECT user, password FROM mysql.user;

Zum Löschen eines Benutzers nutzen Sie den Befehl


DROP USER 'user'

Zum Ändern vergebener Benutzerrechte empfiehlt es sich, die Befehle GRANT und REVOKE
zu verwenden.

Die direkte Bearbeitung der Tabelle mysql.user mit dem Befehl


UPDATE mysql.user SET datenfeld = wert, ...;
ist ebenfalls möglich.

172 Schulversion © HERDT-Verlag


Zugriffsrechte und Benutzer verwalten 14

14.4 Zugriffsrechte an Benutzer vergeben

Zugriffsrechte mit GRANT definieren


Standardmäßig kann außer dem Datenbankadministrator nur derjenige Benutzer ein Datenbank-
objekt bearbeiten, der es auch erstellt hat. Um zusätzliche Zugriffsrechte zu definieren, wird die
SQL-Anweisung GRANT verwendet.

Mit der Anweisung GRANT vergeben Sie Rechte für verschiedene SQL-Anweisungen, die sich
auf ein ausgewähltes oder alle Datenbankobjekte beziehen. So können Sie beispielsweise einem
Benutzer schreibenden Zugriff auf eine bestimmte Tabelle ermöglichen und einen lesenden
Zugriff auf alle Tabellen und Datenbanken. Standardmäßig können Benutzerrechte nur vom
Datenbankadministrator vergeben werden.

Beispiel: Grant.sql
Im folgenden Beispiel wird davon ausgegangen, dass die Benutzer fmueller und pfunke angelegt
wurden. Dem Benutzer fmueller sollen alle Rechte für die Tabelle t_ma gewährt werden. Zusätz-
lich soll er Leserechte und Aktualisierungsrechte für die Tabelle t_proj erhalten. Der Benutzer
pfunke soll für die Tabelle t_ma nur Leserechte erhalten.

GRANT ALL ON t_ma TO fmueller;


GRANT SELECT, UPDATE ON t_proj TO fmueller;
GRANT SELECT ON t_ma TO 'pfunke'@'localhost';

 Hier werden mithilfe des Schlüsselworts ALL alle Rechte für die Tabelle t_ma an den
Benutzer fmueller vergeben.
 Für den gleichen Benutzer wird für die Tabelle t_proj das Ausführen der SELECT- und
UPDATE-Anweisung gestattet.
 Der Benutzer pfunke erhält an dieser Stelle Leserechte für die Tabelle t_ma.

Syntax der GRANT-Anweisung


GRANT rechteliste ON datenbankobjekt TO benutzername;

 Die Anweisung beginnt mit dem Schlüsselwort GRANT.


 Danach folgt die Angabe des zu vergebenden Rechts. Sollen mehrere Rechte vergeben
werden, müssen diese mit Kommata getrennt werden.
 Nach dem Schlüsselwort ON folgt der Name des Datenbankobjekts, für das die Rechte
gelten sollen.
 Am Ende folgt nach dem Schlüsselwort TO der Benutzername.

© HERDT-Verlag
Schulversion 173
14 Zugriffsrechte und Benutzer verwalten

Möglichkeiten für das Vergeben von Rechten


Folgende Rechte können mit der GRANT-Anweisung z. B. vergeben werden:

ALL [PRIVILEGES] Gewährt alle Rechte für das entsprechende Datenbankobjekt


DELETE Recht zum Löschen von Datensätzen, Ausführen der DELETE-
Anweisung
EXECUTE Ausführungsrecht für Stored Procedures
INSERT Recht zum Einfügen neuer Datensätze, Ausführen der INSERT-
Anweisung
SELECT Leserecht, Recht zum Ausführen der SELECT-Anweisung
UPDATE Recht zum Ändern von Datensätzen, Ausführen der UPDATE-
Anweisung

Je nach Datenbanksystem sind viele zusätzliche Rechte möglich. Mehr Informationen erhalten Sie
im Hilfesystem des jeweiligen Datenbanksystems.

Für Datenbankobjekte Rechte vergeben


Benutzerrechte können entweder für alle oder für bestimmte Datenbankobjekte vergeben
werden, dabei haben Sie z. B. folgende Möglichkeiten:

GRANT rechte ON *.* TO ... Die betreffenden Rechte gelten für alle Daten-
banken und Tabellen.
GRANT rechte ON Die Rechte gelten für alle Tabellen der ange-
datenbank.* TO ... gebenen Datenbank.
GRANT rechte ON Die Rechte gelten für die angegebene Tabelle
datenbank.tabelle TO ... der angegebenen Datenbank.
GRANT rechte ON * TO ... Die Rechte gelten für alle Tabellen der aktuellen
Datenbank.
GRANT rechte ON tabelle TO ... Die Rechte gelten für die angegebene Tabelle
der aktuellen Datenbank.

Ist die Datenbank des Objekts, dessen Rechte geändert werden sollen, nicht die aktuelle, müssen
Sie den Namen der Datenbank, gefolgt von einem Punkt, dem Namen des Objekts voranstellen.

Wurde der Benutzername, den Sie in der GRANT-Anweisung angeben, vorher nicht angelegt,
so wird er durch diese Anweisung definiert. Achten Sie aus diesem Grund auf die richtige
Schreibweise des Benutzernamens, da Sie sonst einen neuen Benutzer anlegen und nicht die
Rechte des vorhandenen Nutzers ändern.

174 Schulversion © HERDT-Verlag


Zugriffsrechte und Benutzer verwalten 14

Privilegien an andere Benutzer weitergeben


Im Datenbanksystem ist der Objekteigentümer derjenige, der das alleinige Recht zur Vergabe von
Privilegien hat. Dieses Recht kann er jedoch in der GRANT-Anweisung mithilfe der Option WITH
GRANT OPTION an andere weitergeben.

Beispiel: WithGrantOption.sql
Der Benutzer fmueller soll alle Rechte für die Tabelle t_ma besitzen und zusätzlich selber in der
Lage sein, Privilegien für diese Tabelle an andere Benutzer zu vergeben. Der Benutzer pfunke
soll das Privileg erhalten, Daten der Tabelle t_proj auszuwählen, und er soll in der Lage sein,
das Privileg auch an andere Benutzer der Tabelle weiterzugeben.

GRANT ALL ON t_ma TO fmueller WITH GRANT OPTION;


GRANT SELECT ON t_proj TO pfunke @localhost WITH GRANT OPTION;

 Mit der GRANT-Anweisung und der Option ALL werden dem Benutzer an dieser Stelle alle
Privilegien für die Tabelle t_ma erteilt. Durch die Option WITH GRANT OPTION wird ihm
das Recht erteilt, diese Privilegien für die betreffende Tabelle auch an andere zu vergeben.
 Mit der GRANT-Anweisung und der Option SELECT wird dem Benutzer an dieser Stelle das
Privileg der Auswahl für die Tabelle t_proj erteilt. Durch die Option WITH GRANT OPTION
wird ihm das Recht erteilt, dieses Privileg für die betreffende Tabelle auch an andere zu
vergeben.

Benutzerrechte einsehen
Um die gewährten Benutzerrechte für den aktuell angemeldeten Benutzer unter MariaDB anzu-
zeigen, können Sie diese mit dem Befehl SHOW GRANTS FOR CURRENT_USER (Kurzform:
SHOW GRANTS) abfragen.

Für einen bestimmten Benutzer verwenden Sie entsprechend dessen Namen in der FOR-Klausel,
zum Beispiel:
SHOW GRANTS FOR fmueller;

In PostgreSQL erhalten Sie über den Befehl \dp eine Übersicht der Benutzern gewährten Rechte.

© HERDT-Verlag
Schulversion 175
14 Zugriffsrechte und Benutzer verwalten

14.5 Benutzern die Zugriffsrechte entziehen

Zugriffsrechte mit REVOKE löschen


Mit der GRANT-Anweisung werden Benutzerrechte in SQL vergeben. Um den Benutzern diese
Rechte wieder zu entziehen, verwenden Sie die REVOKE-Anweisung.

Falls ein Benutzer bis auf ein Recht alle anderen Zugriffsrechte erhalten soll, kann es effektiver
sein, wenn Sie ihm zuerst mit GRANT ALL alle Rechte gewähren. Mit der REVOKE-Anweisung
können Sie danach einzelne Rechte wieder entziehen.

Beispiel: Revoke.sql
Dem Benutzer fmueller sollen alle eventuell gewährten Rechte an der Tabelle t_proj wieder ent-
zogen werden. Für die Tabelle t_ma besitzt der gleiche Benutzer alle Rechte. Damit er jedoch
keine Datensätze löschen kann, wird dieses Recht wieder entzogen.

REVOKE ALL ON t_proj FROM fmueller;


REVOKE DELETE ON t_ma FROM fmueller;

 Mit der REVOKE-Anweisung und der Option ALL werden dem Benutzer an dieser Stelle
alle Rechte für die Tabelle t_proj entzogen.
 Hier wird dem gleichen Benutzer explizit das Recht zum Löschen von Datensätzen in der
Tabelle t_ma entzogen.

Wurde einem Benutzer ein Recht von mehreren Instanzen gewährt, behält er das Recht so lange,
bis alle Instanzen es ihm entzogen haben.

Syntax der REVOKE-Anweisung


REVOKE rechteliste ON datenbankobjekt FROM benutzer;

 Die Anweisung wird mit dem Schlüsselwort REVOKE eingeleitet. Danach folgt das zu
entziehende Benutzerrecht.
 Sollen mehrere Rechte entzogen werden, müssen diese mit Kommata getrennt werden.
Mit dem Schlüsselwort ALL werden alle Rechte entzogen.
 Nach dem Schlüsselwort ON wird der Name des Datenbankobjektes angegeben, für das
die Rechte entzogen werden sollen.
 Danach folgen das Schlüsselwort FROM und der Benutzername.

Um Benutzerrechte für einzelne Datenfelder zu entziehen, können Sie nach der Angabe
des Benutzerrechts in runden Klammern die Namen der gewünschten Datenfelder angeben.
Die Vorgehensweise ist dabei analog zur GRANT-Anweisung.

176 Schulversion © HERDT-Verlag


Zugriffsrechte und Benutzer verwalten 14

Die GRANT-Option wieder entziehen


Möchten Sie einem Benutzer ein Privileg entziehen, das er auch an andere Benutzer weiter-
gegeben hat, müssen Sie darauf achten, dass den anderen Benutzern dieses Recht auch entzogen
wird. Bei MariaDB funktioniert das automatisch. Bei PostgreSQL müssen Sie die Option CASCADE
hinzufügen.

Beispiel: RevokeGrantOption.sql
Dem Benutzer fmueller soll das Recht, Privilegien für die Tabelle t_proj weiterzugeben, wieder
entzogen werden.

REVOKE GRANT OPTION FOR ALL ON t_proj FROM fmueller CASCADE;

 Mit der REVOKE-Anweisung und der Option GRANT OPTION FOR ALL werden dem
Benutzer an dieser Stelle alle Rechte für die Tabelle t_proj entzogen. Mit der Option
CASCADE wird auch allen Benutzern, die dieses Privileg von fmueller erhalten haben,
das Privileg entzogen.

14.6 Übung

Benutzer in einer Datenbank anlegen


Übungsdatei: -- Ergebnisdatei: Uebung.SQL

1. Legen Sie in Ihrer Datenbank einen neuen Benutzer mit dem Namen umeyer und einem
beliebigen Passwort an.
2. Gewähren Sie diesem Benutzer für die Tabelle t_ma Rechte zum Lesen und Aktualisieren
von Datensätzen.
3. Melden Sie sich an der Datenbank mit dem neuen Benutzernamen an.
4. Versuchen Sie, einen Datensatz in der Tabelle t_ma zu löschen.
5. Entziehen Sie dem Benutzer alle Rechte für die Tabelle t_ma.
6. Gewähren Sie dem Benutzer nun alle Rechte für die Tabelle t_proj, Leserechte für die
Tabelle t_ma und das Recht zum Ändern der Abteilungsnummer in der Tabelle t_ma.
7. Entziehen Sie dem Benutzer das Recht zum Löschen von Datensätzen in der Tabelle t_proj.
Prüfen Sie danach, was jetzt mit den anderen Rechten des Benutzers an der Tabelle geschieht.

© HERDT-Verlag
Schulversion 177
15 Transaktionsverwaltung

15
15. Transaktionsverwaltung

15.1 Konsistente Datenbestände und Transaktionen


Datenbanksysteme erlauben den gleichzeitigen Datenzugriff mehrerer Benutzer. Bei lesendem
Zugriff auf die Daten ist dies kein Problem. Wenn jedoch mehrere Benutzer zur selben Zeit die
gleichen Datensätze bearbeiten, muss das Datenbanksystem für die Konsistenz der Daten sorgen.

Darüber hinaus muss die Datenkonsistenz auch bei Fehlern gewährleistet werden, die z. B.
durch Programmfehler oder Hardwareausfälle auftreten können. Das Datenbanksystem
muss daher in der Lage sein, die betroffenen Daten in jedem Fall in den letzten konsistenten
Zustand zu überführen. Zu diesem Zweck verwenden die meisten Systeme die sogenannte
Transaktionsverwaltung.

Transaktionen
Transaktionen sind eine Gruppe von logisch zusammenhängenden Datenbankoperationen
(SQL-Anweisungen), die nur gemeinsam ausgeführt werden sollen. Kann auf Grund eines Fehlers,
einer Zugriffsverletzung oder Ähnlichem eine der Operationen nicht ausgeführt werden, dann
wird keine der Operationen in der Transaktion ausgeführt und der Datenbestand wird in den
Ausgangszustand versetzt.

Das Datenbanksystem garantiert bei der Ausführung einer Transaktion die Einhaltung der vier
grundlegenden Eigenschaften, die auch als ACID-Eigenschaften bezeichnet werden:

Atomicity – Atomarität Die Transaktion, die aus einer oder mehreren Operationen bestehen
'Alles oder Nichts' kann, wird entweder vollständig ausgeführt oder gar nicht. Tritt
während der Transaktion ein Fehler auf (z. B. Programmfehler, Hard-
warefehler oder Betriebssystemabsturz), werden alle bisherigen
Operationen der Transaktion rückgängig gemacht.

178 Schulversion © HERDT-Verlag


Transaktionsverwaltung 15

Consistency – Ist die Transaktion abgeschlossen, befindet sich die Datenbank in


Konsistenz einem konsistenten Zustand. Dazu tragen die definierten Integritäts-
bedingungen (Wertebereiche, Schlüsseleigenschaften, Fremd-
schlüssel usw.) bei, welche die logische Konsistenz sichern. Ver-
letzungen dieser Integritätsbedingungen führen zum Zurücksetzen
der Transaktion. Während einer Transaktion können aber zwischen-
zeitlich inkonsistente Zustände auftreten, die mit einer weiteren
Operation wiederhergestellt werden. Solche „verzögerten Integritäts-
bedingungen“ treten beispielsweise bei der Umbuchung zwischen
Konten auf. Sie werden meist am Ende der Transaktion überprüft.
Isolation – Isolation Transaktionen laufen isoliert ab, mehrere gleichzeitig ablaufende
Transaktionen stören und beeinträchtigen sich nicht gegenseitig.
Das wird seitens des DBMS durch geeignete Synchronisations-
maßnahmen erreicht. Dies ist eine wichtige Voraussetzung zur
Sicherung der Konsistenz der Datenbank.
Durability – Das Ergebnis einer erfolgreichen Transaktion ist dauerhaft (persis-
Dauerhaftigkeit tent). Das bedeutet, dass vom DBMS sichergestellt wird, dass auch
beim Auftreten von Fehlern bei der Übertragung der Transaktions-
ergebnisse in die Datenbank die Änderungen vollständig durchgeführt
werden.

Isolationsebenen (Transaction Isolation Level)


Durch den Transaction Isolation Level wird der Grad der Parallelität von Transaktionen gesteuert.
Je höher Sie den Level wählen, desto sicherer können Benutzer sein, dass sie bei einer Leseaktion
die aktuellen Daten erhalten, und umso weniger Probleme bezüglich der Konsistenz können
auftreten. Je höher Sie aber die Isolationsebenen wählen, desto geringer ist der Durchsatz bei
einer großen Zahl gleichzeitiger Zugriffe, was durch die notwendigen zeitweiligen Sperrungen der
Daten hervorgerufen wird. Im SQL2-Standard werden vier Transaction Isolation Levels definiert.

Isolationsebene 0: Auf Daten, die von einer Transaktion geschrieben werden, kann
READ UNCOMMITTED mittels einer anderen Transaktion lesend zugegriffen werden.
Dabei können zum Teil neue und veraltete Daten gelesen werden =
unsauberes Lesen (dirty read). Von der Transaktion werden keine
Sperren auf die Datensätze gesetzt.
Isolationsebene 1: Datensätze, die von der Transaktion modifiziert werden, sind
READ COMMITTED gesperrt, Datensätze, die nur gelesen wurden, aber nicht. Dadurch
können die Datensätze, die nur gelesen wurden, zwischenzeitlich
geändert werden. Das Problem des inkonsistenten Lesens und das
sogenannte Phantome-Problem können auftreten.
Isolationsebene 2: Die Transaktion sperrt alle Datensätze, die von ihr gelesen und
REPEATABLE READ geschrieben werden. Nur das Phantome-Problem kann hier noch
auftreten.
Isolationsebene 3: Damit wird sichergestellt, dass in einer Transaktion gelesene Daten
SERIALIZABLE bis zum Ende der Transaktion gültig sind. Das Lesen von sogenannten
Phantomen wird verhindert. Diese Ebene bietet volle Serialisier-
barkeit.

© HERDT-Verlag
Schulversion 179
15 Transaktionsverwaltung

Phantome sind ausgewählte Daten, die einmal von einer Transaktion A gelesen wurden und
anschließend durch Schreib-, Änderungs- oder Lösch-Operationen in einer anderen Transaktion B
geändert werden. Die gleiche Leseoperation der ersten Transaktion A würde danach eine andere
Auswahl von Daten bringen. Transaktion A arbeitet mit veralteten Daten. Beispielsweise werden in
Transaktion A alle Artikel ausgewählt, von denen weniger als 1 Stück im Lager ist. In Transaktion B
werden 2 dieser Artikel gelöscht. Bei der gleichen Anfrage würde Transaktion A nun 2 Datensätze
weniger erhalten. Sie arbeitet nun mit Daten, die eigentlich nicht mehr vorhanden sind.

Über die Anweisung zum Start der Transaktion können das Verhalten und die Sicherheit jeder
einzelnen Transaktion eingestellt bzw. beeinflusst werden. Die dafür zur Verfügung stehenden
verschiedenen Kombinationen an Einstellungen sind vielfältig. Es werden aber nicht von
jedem DBS alle möglichen Einstellungen und Isolationslevels unterstützt.

Beispiel für eine Transaktion: Transaktionen.sql


Für eine Aktion sollen alle Artikel, von denen mehr als 200 Stück am Lager sind, um 5 % verbilligt
angeboten werden. Die Artikel, von denen zwischen 100 und 200 Stück vorrätig sind, werden um
2 % billiger.

Diese Operationen sind entweder für alle oder für keinen Artikel auszuführen. Eine Wiederholung
der Operation würde auch bereits geänderte Preise nochmals ändern.

SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;


UPDATE t_lager SET preis = preis * 0.95 WHERE stueck > 200;
UPDATE t_lager SET preis = preis * 0.98
WHERE stueck > 100 and stueck <= 200;
COMMIT;

 Mit dieser Anweisung wird eine neue Transaktion gestartet. Die Option ISOLATION LEVEL
REPEATABLE READ steuert das Verhalten des Datenbanksystems während der Trans-
aktion. In diesem Fall wird das Isolationslevel 2 gesetzt.
 Hier erfolgen die beiden UPDATE-Anweisungen zum Ändern der Preise in der Tabelle
t_lager.
 Mit der Anweisung COMMIT wird die begonnene Transaktion bestätigt und die Änderungen
werden endgültig ausgeführt.

15.2 Transaktionen erstellen


Transaktionen können mit der START-TRANSACTION- oder der SET-TRANSACTION-
Anweisung gestartet werden. Bei der zweiten Version haben Sie die Möglichkeit, mit verschie-
denen Klauseln zu steuern, wie sich das DBMS während der Transaktion in Bezug auf Zugriffe
anderer Transaktionen auf die gleichen Tabellen verhalten soll. Zusätzlich ist es möglich, nur
lesende Zugriffe oder lesende und schreibende Zugriffe für die Anweisungen der Transaktion
zuzulassen.

180 Schulversion © HERDT-Verlag


Transaktionsverwaltung 15

Sie können bei MariaDB und PostgreSQL für das Starten einer Standard-Transaktion die
Anweisung BEGIN ohne weitere Parameter verwenden.
BEGIN;

Syntax der SET-TRANSACTION-Anweisung


SET TRANSACTION [transaktionsname] [READ WRITE|READ ONLY]
[WAIT|NO WAIT] [ISOLATION LEVEL SERIALIZABLE| REPEATABLE READ |
READ COMMITTED| READ UNCOMMITTED];

 Die Anweisung beginnt mit den Schlüsselwörtern SET TRANSACTION. Danach kann ein
Transaktionsname angegeben werden.
 Über die Schlüsselwörter READ WRITE oder READ ONLY können Sie steuern, für welche
Zugriffe die Sperrung der Tabellen für die Operationen während der Transaktion erfolgen
soll (nicht bei MariaDB).
 Dann kann über die Klausel WAIT bzw. NO WAIT das Warteverhalten der Transaktion in
Bezug auf andere Prozesse beeinflusst werden (nicht bei MariaDB und PostgreSQL).
 Optional kann durch die Klausel ISOLATION LEVEL, gefolgt von den entsprechenden
Schlüsselwörtern, angegeben werden, welche Isolationsebene für die Transaktion eingestellt
werden soll.

Zugriffsart für Tabellen festlegen


Mit den Optionen READ WRITE und READ ONLY können Sie festlegen, ob während der Trans-
aktion alle Zugriffsarten oder nur lesende Zugriffe auf die Daten ausgeführt werden sollen.

READ WRITE Die Operationen der Transaktion können Daten aus den betreffenden Tabellen
lesen und Datensätze in den Tabellen ändern, löschen und neu einfügen.
READ ONLY Die Operationen der Transaktion dürfen nur Daten aus den Tabellen mit der
SELECT-Anweisung lesen.

Die READ-WRITE-Option ist die Standardeinstellung. Diese Angabe kann daher auch entfallen.

Wenn Sie eine Transaktion für schreibende Zugriffe sperren, erzeugt das Ausführen einer
INSERT-, UPDATE- oder DELETE-Anweisung eine Fehlermeldung. Wird eine solche Transaktion
beispielsweise in einem Anwendungsprogramm eingesetzt, so können Sie damit das unerlaubte
oder unbewusste Ändern von Daten durch den Benutzer des Programms unterbinden.

Das Datenbanksystem MariaDB unterstützt die Optionen READ WRITE und READ ONLY nicht.
Dafür kann durch die Anweisung LOCK TABLES das Lese- bzw. Schreibrecht für den aktuellen
Thread eingeräumt werden. Beispielsweise kann auf die Tabelle t_lager nur noch lesend
zugegriffen werden, wenn sie durch die Anweisung
LOCK TABLE t_lager READ;

gesperrt wird. Durch den Aufruf von UNLOCK TABLES wird diese Sperrung wieder aufgehoben.

© HERDT-Verlag
Schulversion 181
15 Transaktionsverwaltung

Warten auf andere Prozesse


Mit den Optionen WAIT und NO WAIT steuern Sie das Verhalten der Transaktionen, wenn
andere Transaktionen gerade auf die gleichen Daten zugreifen.

WAIT Wird festgestellt, dass eine andere Transaktion auf die gleichen Tabellen
zugreift, wird mit den Operationen der Transaktion gewartet, bis alle anderen
Zugriffe beendet wurden. Dadurch werden Zugriffskonflikte vermieden.
NO WAIT Beim gleichzeitigen Zugriff anderer Transaktionen auf die an der Transaktion
beteiligten Tabellen wird sofort eine Fehlermeldung erzeugt und die Trans-
aktion wird abgebrochen.

Die Option WAIT ist die Standardeinstellung. Sie kann daher auch entfallen.

Die Option NO WAIT ist sinnvoll, wenn Sie z. B. bei Lesezugriffen auf eine Tabelle sofort erfahren
möchten, dass die Abfrage möglicherweise ungültige und nicht mehr aktuelle Daten liefert.

Unter MariaDB und PostgreSQL sind die Optionen WAIT und NO WAIT nicht verfügbar.

Isolation Level
Mit der Option ISOLATION LEVEL können Sie beim Erstellen einer Transaktion steuern, wie
diese von anderen Transaktionen isoliert werden soll. Die Isolation der Daten bei konkurrieren-
den Transaktionen auf den gleichen Datenbestand ist ein wichtiges Merkmal vieler relationaler
Datenbanksysteme.

Bei der Isolation der Daten entsteht das Problem, dass einerseits der parallele Zugriff mehrerer
Benutzer unbedingt erwünscht ist, andererseits jedoch die Konsistenz der Daten durch isolierte
Transaktionen bewahrt werden soll. Durch eine zu starke Isolation verliert ein Datenbanksystem
seine Tauglichkeit für die Nutzung durch sehr viele parallele Benutzerzugriffe. Die meisten Daten-
banksysteme verfügen daher über unterschiedliche Implementierungen der Klausel ISOLATION
LEVEL. Mehr Informationen darüber finden Sie im Hilfesystem Ihrer Datenbank.

Im Folgenden sind einige Klauseln aufgeführt. Diese können in verschiedenen DBS mit unter-
schiedlichen Schlüsselwörtern definiert sein.

ISOLATION LEVEL READ Zu Beginn der Transaktion werden die aktuellen


UNCOMMITTED Daten kopiert; es wird ein Schnappschuss davon
oder erzeugt. Dieser Schnappschuss dient als Grund-
ISOLATION LEVEL SNAPSHOT lage für die Operationen der Transaktion. Ände-
rungen, die durch andere gleichzeitig laufende
Transaktionen durchgeführt werden, sind im
Datenbestand dieser Transaktion nicht sichtbar
(Isolationsebene 0).

182 Schulversion © HERDT-Verlag


Transaktionsverwaltung 15

ISOLATION LEVEL READ Bei Angabe dieser Klausel können im Verlauf der
COMMITTED Transaktion auch Änderungen durch andere
Transaktionen stattfinden, wenn diese mit
COMMIT abgeschlossen wurden. Für die Trans-
aktion sind diese Änderungen sichtbar (Isolations-
ebene 1).
ISOLATION LEVEL REPEATABLE Bei diesem Isolation Level wird sichergestellt,
READ dass die an der Transaktion beteiligten Tabellen
oder für Schreibzugriffe anderer Transaktionen
ISOLATION LEVEL SNAPSHOT gesperrt sind. Andere Transaktionen können aber
TABLE STABILITY trotzdem daraus lesen (Isolationsebene 2).
ISOLATION LEVEL SERIALIZABLE Dieser Isolation Level gewährt die volle Serialisier-
barkeit (Isolationsebene 3).

In einigen SQL-Dialekten wird für die Wahl des ISOLATION LEVEL nur die entsprechende
Nummer angegeben.

Meist ist der niedrigste Isolation Level die Standardeinstellung. Sie ist für viele Anwendungen mit
wenigen gleichzeitigen Benutzern ausreichend.

Mehr Aufwand bei der Isolation der Daten müssen Sie betreiben, wenn Sie ein Datenbanksystem
mit vielen Tausend gleichzeitig arbeitenden Benutzern betreiben. Dann leidet die Performance
der Datenbank unter einem ungeeigneten Isolation Level.

Besonderheiten bei MariaDB


Um Transaktionen verwenden zu können, müssen Sie in MariaDB den Tabellentyp InnoDB
verwenden. Dieser ist mit Ausnahme der Systemtabellen der Standardtabellentyp.

Welche Tabellentypen von dem aktuell gestarteten MariaDB-Server unterstützt werden, erfahren
Sie durch Aufruf der SQL-Anweisung SHOW ENGINES in der MariaDB-Konsole.

Der MariaDB-Tabellentyp MyISAM unterstützt keine Transaktionen, da dieser Tabellentyp kein


Sperren auf Datenebene unterstützt.

Um Transaktionen unter MariaDB benutzen zu können, stellen Sie sicher, dass bei Installation des
MariaDB-Servers die Unterstützung des InnoDB -Tabellentyps nicht durch den Eintrag skip-
innodb ausgeschaltet wurde bzw. unter Linux das configure-Skript mit dem zusätzlichen
Parameter --with-innodb ausgeführt wurde.

© HERDT-Verlag
Schulversion 183
15 Transaktionsverwaltung

Wenn Sie eine ältere Version des Ursprungssystems von MariaDB MySQL verwenden sollten,
können Sie explizit Tabellen vom Typ InnoDB erstellen.

 Erstellen Sie in einer Datenbank eine Tabelle vom Typ InnoDB.

CREATE TABLE tabellenname (


feldname_1 datentyp
...
feldname_n datentyp(länge),
PRIMARY KEY (feldname)) TYPE=InnoDB;

oder Haben Sie nach einem Systemupdate noch Tabellen in Verwendung, die mit einer
älteren Version erstellt wurden, wandeln Sie eine vorhandene MyISAM-Tabelle mit
der SQL-Anweisung ALTER TABLE in eine Tabelle vom Typ InnoDB um.

ALTER TABLE tabellenname TYPE=INNODB;

Wandeln Sie keine MariaDB-Systemtabellen (MyISAM-Tabellentyp) in den Tabellentyp


InnoDB um, da sonst Ihr MariaDB-System nicht mehr gestartet werden kann.

15.3 Transaktionen abschließen


Mit der Anweisung COMMIT schließen Sie eine Transaktion ab. Alle Änderungen an den Daten
werden daraufhin endgültig durchgeführt.

 Alle Änderungen werden fest in die Datenbank geschrieben.


 Die neuen Daten werden für andere Prozesse sichtbar gemacht.
 Alle offenen Cursors werden geschlossen.

Auch wenn in der Transaktion nur SELECT-Abfragen verwendet wurden, sollten Sie die
Transaktion mit COMMIT beenden, da eventuelle andere Prozesse auf den Zugriff warten.

Syntax der COMMIT-Anweisung


SET TRANSACTION ...;
...
COMMIT [TRANSACTION transaktionsname];

 Die Anweisung beginnt mit dem Schlüsselwort COMMIT.


 Einige Datenbanksysteme erwarten danach das Schlüsselwort TRANSACTION.
 Wurde beim Erstellen einer Transaktion ein Name angegeben, so kann gezielt diese Trans-
aktion beendet werden. Standardmäßig wird die aktuelle Transaktion abgeschlossen.

184 Schulversion © HERDT-Verlag


Transaktionsverwaltung 15

15.4 Transaktionen zurücksetzen


Transaktionen erlauben das Zurücknehmen aller Änderungen an den Daten bis zum Zustand vor
der Transaktion. Dies erreichen Sie mit der ROLLBACK-Anweisung. Die Anweisung nimmt stets
alle Anweisungen in ihrer Gesamtheit zurück. Es ist nicht möglich, einzelne Änderungen zu
verwerfen. Wie mit der COMMIT-Anweisung wird auch mit ROLLBACK die Transaktion beendet.

Falls das Datenbanksystem aufgrund eines Fehlers abstürzt, wird beim Neustart in der Regel
automatisch ein ROLLBACK ausgeführt und alle noch offenen Transaktionen werden verworfen.

Beispiel: Rollback.sql
Es sollen alle Artikel aus dem Datenbestand gelöscht werden, die nicht mehr am Lager sind. Dazu
will ein Mitarbeiter aus der Tabelle t_lager alle Artikel löschen, deren Stückzahl kleiner ist als 1.
Durch einen Eingabefehler löscht er jedoch alle Artikel mit einer Stückzahl größer als 1. Mit der
Anweisung ROLLBACK wird die Änderung rückgängig gemacht.

BEGIN;
SELECT COUNT(id) FROM t_lager WHERE stueck < 1;
DELETE FROM t_lager WHERE stueck > 1;
ROLLBACK;

 Hier wird die Transaktion gestartet.


 Die Abfrage ermittelt, wie viele Artikel gelöscht werden müssen.
 Mit der DELETE-Anweisung sollen die betreffenden Artikel gelöscht werden. Durch einen
Eingabefehler wird aus der korrekten Bedingung stueck < 1 jedoch fälschlicherweise
stueck > 1. Dadurch werden alle Daten der gelagerten Artikel gelöscht.
 Die Anweisung ROLLBACK macht das Löschen der Artikel wieder rückgängig, indem alle
Änderungen der Anweisungen innerhalb der Transaktion zurückgesetzt werden.

In einer realen Anwendung mit grafischer Benutzeroberfläche können durch die Schaltflächen OK
und Abbrechen die entsprechenden Aktionen bestätigt (OK – COMMIT) oder rückgängig (Abbrechen
– ROLLBACK) gemacht werden.

Syntax der ROLLBACK-Anweisung


SET TRANSACTION ...;
...
ROLLBACK [TRANSACTION transaktionsname];

 Die Anweisung beginnt mit dem Schlüsselwort ROLLBACK.


 Falls beim Erstellen einer Transaktion ein Name angegeben wurde, kann mithilfe des
Schlüsselworts TRANSACTION, gefolgt vom gewünschten Namen, eine Transaktion
gezielt zurückgenommen werden.

© HERDT-Verlag
Schulversion 185
15 Transaktionsverwaltung

15.5 Übung

Mit Transaktionen arbeiten


Übungsdatei: -- Ergebnisdateien: Uebung1-Client1.sql,
Uebung1-Client2.sql,Uebung2.sql

1. Starten Sie zweimal den Datenbank-Client psql (PostgreSQL) bzw. mysql (MariaDB).
Wechseln Sie jeweils zur Datenbank Uebungen.
Starten Sie in beiden Clients eine neue Transaktion.
Führen Sie in beiden Clients eine SELECT-Abfrage aus, um alle Datensätze der Tabelle
t_ lager zu ermitteln.
Vergleichen Sie die beiden Ergebnisse.
Fügen Sie nun in einem Client in die Tabelle t_lager einen neuen Artikel mit der
ID-Nummer 55, der Stückzahl 30, dem Preis 25 und der Bezeichnung 'A5 Ordner' ein.
Führen Sie in beiden Clients wiederum die Abfrage für alle Datensätze der Tabelle aus.
Was stellen Sie fest?
Schließen Sie die erste Transaktion nach dem Einfügen der Daten ab und wiederholen Sie
den vorherigen Schritt. Vergleichen Sie die Ergebnisse.
Wird der neue Datensatz in dem anderen Client noch nicht angezeigt, führen Sie dort
ebenfalls ein COMMIT aus und wiederholen Sie die Anzeige der Tabelle.
2. Starten Sie in der Datenbank Uebungen eine neue Transaktion.
Löschen Sie alle Mitarbeiter, die aus Berlin kommen, aus der Tabelle t_ma.
Führen Sie eine SELECT-Abfrage auf diese Tabelle aus, um zu prüfen, ob die Datensätze
gelöscht wurden.
Verwerfen Sie die Änderungen der Transaktion.
Führen Sie die SELECT-Abfrage erneut aus und überprüfen Sie das Ergebnis.

186 Schulversion © HERDT-Verlag


Stored Procedures 16

16
16. Stored Procedures

16.1 Programmabläufe speichern


Beim Einsatz von Datenbanksystemen spielt der Datenbankserver eine herausragende Rolle.
Er arbeitet am zentralen Speicherort der Daten, verwaltet die Daten dort und liefert auf Anfragen
die entsprechenden Ergebnisse. Durch diese zentrale Datenhaltung wird ein kontrollierter Zugang
zu den Daten gewährleistet.

Damit der Server seiner Aufgabe als zentrale Verarbeitungseinheit gerecht wird, sollten alle
aufwendigen Arbeiten mit den Daten direkt auf dem Server durchgeführt werden. Die Clients
erhalten nur die Ergebnisdaten und werden dadurch entlastet, dass sie keine Berechnungen
durchführen müssen.

Für diesen Zweck ist es notwendig, dass ganze Abläufe von SQL-Anweisungen auf dem Daten-
bankserver ausgeführt werden und auch die Bearbeitung möglicher Zwischenschritte hier erfolgt.
In SQL können Sie dafür sogenannte Prozeduren oder Stored Procedures (gespeicherte Proze-
duren) einsetzen, mit denen Programmabläufe vereinfacht und automatisiert werden können.

In der Praxis werden die Daten oft nicht nur auf einem Datenbankserver gehalten, sondern z. B.
durch Replikation (Daten in mehreren Datenbanken auf dem gleichen Stand halten) und Shadow-
ing (Kopie der Datenbank) auf mehreren Servern verteilt. Außerdem können Unternehmensdaten
auf mehrere Server verteilt sein (z. B. Filialen einer Sparkasse), sodass es keinen gemeinsamen
Datenbestand gibt.

Prozeduren auf dem Server speichern


Stored Procedures sind auf dem Server gespeicherte Prozeduren (Unterprogramme), in denen
neben den üblichen SQL-Anweisungen auch zusätzliche Befehle zur Ablaufsteuerung und
Auswertung von Bedingungen zur Verfügung stehen. Sie sind damit den Makros mancher
Anwendungsprogramme vergleichbar, mit denen Sie Programmabläufe automatisieren können.

© HERDT-Verlag Schulversion 187


16 Stored Procedures

Beispiel
Bei der Arbeit mit einem Datenbanksystem werden meist verschiedene Daten abgefragt und
verarbeitet. Bei der Verarbeitung werden aber oft die gleichen Arbeitsabläufe, jedoch mit unter-
schiedlichen Werten und/ oder Parametern ausgeführt. Diese Arbeitsabläufe können in Stored
Procedures zusammengefasst werden. Bei einer Banküberweisung werden z. B. der Betrag und
die Informationen zu den beiden Konten benötigt. Sie können diese vom Client (Bankautomat)
an eine Stored Procedure auf dem Server übergeben. Diese führt die notwendigen Operationen
aus und liefert als Rückgabewert eine Information zum Erfolg oder Misserfolg der Überweisung.

Höhere Verarbeitungsgeschwindigkeit
Ein wichtiger Vorteil der Stored Procedures liegt in einem Geschwindigkeitsgewinn bei der Aus-
führung umfangreicher Datenbearbeitungen. Dieser liegt vor allem darin begründet, dass die
Prozeduren auf dem Server ausgeführt werden und daher direkten Zugriff auf die gespeicherten
Daten erhalten. Ein oft sehr zeitaufwendiger Transport der Daten über ein Netzwerk entfällt.
Je langsamer das Netzwerk ist und je größer der Datenbestand, umso deutlicher wird dabei der
Gewinn an Geschwindigkeit. Die Verringerung der Datenmenge bei der Datenübertragung über
das Netzwerk kann bei vielen aktiven Client-Anwendungen sehr bedeutsam sein.

Bessere Systemsicherheit
Neben der höheren Geschwindigkeit spricht auch eine bessere Sicherheit des Datenbanksystems
für den Einsatz von Stored Procedures. Mit ihrer Hilfe ist es möglich, den Anwender einer Daten-
bank von vielen systemrelevanten Daten abzuschirmen. Er erfährt nicht die Namen der Tabellen
und deren Struktur und er erhält keinen Zugriff auf möglicherweise sensible Daten, die bei der
Verarbeitung durch gespeicherte Prozeduren verwendet werden.

Thin Clients
Um Updates und Programmänderungen zu vereinfachen, wird die Funktionalität der Anwendun-
gen vom Client mehr auf den Server verlagert. Die Thin Clients (thin = dünn) besitzen dann nur
wenig Funktionalität, z. B. eine Benutzeroberfläche zur Darstellung der Resultate. Auf dem Server
werden alle gemeinsam genutzten Funktionen, die sogenannte Geschäftslogik (Business Logic),
bereitgestellt. Sind nun beispielsweise Updates dieser Funktionen notwendig, müssen diese nur
zentral auf dem Server aktualisiert werden (bei gleichbleibenden Schnittstellen), anstatt auf
vielen Tausend Clients.

Durch die Kapselung von SQL-Anweisungen und Verarbeitungsschritten in einzelne Prozeduren


wird zusätzlich die Wartung der Programmcodes vereinfacht. Für den Anwender sind nur der
Aufruf einer Stored Procedure und deren Rückgabewerte von Bedeutung. Die eigentlichen
Anweisungen können unabhängig davon optimiert und verändert werden.

188 Schulversion © HERDT-Verlag


Stored Procedures 16

Ausführbare und selektierbare Prozeduren


Die Implementation der Stored Procedures ist bei jedem Datenbanksystem verschieden. Manche
Datenbanksysteme unterstützen neben den ausführbaren Prozeduren als Besonderheit selektier-
bare Prozeduren.

Ausführbare Prozeduren Sie werden aufgerufen, um Änderungen an den Datenbeständen


(CALL-Prozedur) vorzunehmen. In der Regel erfolgt die Rückgabe eines Status-
wertes, der über Erfolg oder Misserfolg der Aktion informiert.
Es können auch mehrere Werte zurückgeliefert werden, um z. B.
die Ergebnisse einer Berechnung zu übermitteln.
Selektierbare Prozeduren Diese Prozeduren liefern eine Ergebnismenge als Resultat und
(SELECT-Prozedur) können in einer SELECT-Abfrage wie eine Tabelle verwendet
werden. Sie können auch mit Tabellen, Views oder anderen Stored
Procedures verknüpft werden.

 Das Datenbanksystem PostgreSQL unterstützt keine Stored Procedures im klassischen Sinne.


Es bietet jedoch eine breite Unterstützung zur Programmierung von benutzerdefinierten
Funktionen. Dazu stellt PostgreSQL in der Standardimplementierung vier prozedurale
Sprachen bereit: PL/pgSQL, PL/Tcl, PL/Perl und PL/Python. Sie können in diesen Sprachen
mit der Anweisung CREATE FUNCTION in PostgreSQL Prozeduren entsprechend um-
schreiben. Weitere Informationen finden Sie im Handbuch von PostgreSQL.
 Jedes Datenbanksystem, das Stored Procedures unterstützt, besitzt eine eigene Implemen-
tierung von Stored Procedures, die sich in der Deklaration und Verwendung der Anweisun-
gen unterscheidet. Die grundsätzliche Arbeitsweise und Verwendung ist jedoch bei allen
gleich.
 Im Folgenden werden Stored Procedures mit MariaDB erstellt und verwendet.

16.2 Stored Procedures erstellen und bearbeiten

Prozedur definieren
Bevor Sie eine Stored Procedure verwenden können, muss sie in einer Datenbank definiert
werden. Dies geschieht nach dem Verbinden mit der Datenbank mit der Anweisung CREATE
PROCEDURE. Bei der Deklaration werden neben einem Prozedurnamen und den eigentlichen
Anweisungen auch die Übergabe- und Rückgabeparameter festgelegt.

Zur besseren Unterscheidung von anderen Elementen der Datenbank kann dem Namen der
Prozedur das Präfix p_ vorangestellt werden.

Beispiel: EinfacheProzedur.sql
Es sollen alle Artikelnamen mit den Namen der dazugehörigen Lieferanten ausgewählt werden.
Hierzu müssen die Artikelnamen aus der Tabelle t_artikel und die Lieferantennamen aus der
Tabelle t_liefer ermittelt und verknüpft werden.

© HERDT-Verlag Schulversion 189


16 Stored Procedures

 DELIMITER //
 CREATE PROCEDURE p_artikel_liefer ()
 BEGIN
 SELECT t_artikel.name , t_liefer.name
FROM t_artikel INNER JOIN t_liefer ON
t_artikel.lieferant=t_liefer.id;
 END //
 DELIMITER ;
 CALL p_artikel_liefer ();

 Innerhalb der Prozedur werden SQL-Anweisungen wie üblich mit einem Semikolon abge-
schlossen. Damit die Eingabe an dieser Stelle aber nicht fälschlicherweise abgebrochen wird,
muss mit dem Befehl DELIMITER ein neues Endekennzeichen für SQL-Anweisungen defi-
niert werden. Hier ist es das Zeichen //.
 An dieser Stelle beginnt die Definition der Stored Procedure mit dem Namen p_artikel_
liefer. Danach werden in runden Klammern die Namen der Übergabeparameter und deren
Datentypen angegeben. Unter diesen Namen können die übergebenen Werte im Verlauf der
Prozedur angesprochen werden. Im Beispiel sind keine Übergabeparameter notwendig.
 Einzelne Blöcke werden stets durch das Schlüsselwort BEGIN eingeleitet und mit END
abgeschlossen.
 Hier beginnt der Anweisungsblock der Prozedur. Mithilfe einer SELECT-Abfrage werden
die Artikel und die dazugehörigen Lieferantennamen aus den entsprechenden Tabellen
ausgewählt.
 Die Deklaration der Prozedur endet mit END. Die Anweisung muss entsprechend der
Neudefinition des Endekennzeichens () mit dem Zeichen // abgeschlossen werden.
 Nun kann als Endekennzeichen wieder das Semikolon definiert werden. Achten Sie dabei
auf das Leerzeichen zwischen dem Befehl DELIMITER und dem Semikolon.
 Mit der Anweisung CALL wird die Prozedur ausgeführt.

Syntax einfacher Prozeduren


CREATE PROCEDURE prozedurname ([ IN | OUT | INOUT] parameter1
datentyp1, ...)
BEGIN
anweisungsblock
END;

 Die Anweisung beginnt mit den Schlüsselwörtern CREATE PROCEDURE. Danach folgt der
Prozedurname.
 In runden Klammern werden die einzelnen Übergabeparameter der Prozedur angegeben.
Bei mehreren Parametern müssen diese durch Kommata getrennt werden. Für jeden
Parameter muss der gewünschte Datentyp angegeben werden.
 Der Vorgabewert für Parameter ist der Eingabeparameter IN. Das bedeutet, die Daten
können von der Prozedur nur ausgelesen werden. Der Ausgabeparameter OUT übergibt
Werte an die CALL-Anweisung. Der INOUT-Parameter kann beides. Um den Vorgabewert
zu ändern, setzen Sie das Schlüsselwort OUT oder INOUT vor den Parameternamen.
 In einem durch BEGIN und END eingeschlossenen Anweisungsblock folgt die Liste der
Anweisungen, die von der Prozedur ausgeführt werden sollen.

190 Schulversion © HERDT-Verlag


Stored Procedures 16

Endekennzeichen festlegen
Die einzelnen Anweisungen der Stored Procedure müssen, wie alle SQL-Anweisungen, mit einem
Semikolon als Endekennzeichen abgeschlossen werden. Erfolgt die Eingabe der Prozedur unter
MariaDB mit einem Standard-Client, wird das Semikolon jedoch fälschlich als Ende der gesamten
Prozedurdefinition interpretiert. Um dies zu vermeiden, können Sie mit der Anweisung
DELIMITER endekennzeichen temporär ein anderes Zeichen als Endekennzeichen (als
sogenannten Terminator) festlegen.

Verwenden Sie als Endekennzeichen ein Zeichen, das im Normalfall in keiner SQL-Anweisung
vorkommt.

Damit das Semikolon wieder als Endekennzeichen interpretiert wird, müssen Sie die Anweisung
DELIMITER ';' nach der Definition der Stored Procedure erneut aufrufen.

Syntax
DELIMITER endekennzeichen

 Die Anweisung beginnt mit dem Schlüsselwort DELIMITER. Danach folgt das gewünschte
Zeichen, das ab diesem Zeitpunkt als Endekennzeichen verwendet werden soll.
 Beim Beenden der Anweisung muss stets das aktuelle Endekennzeichen verwendet werden,
standardmäßig das Semikolon.

Anweisungsblöcke definieren
Bei der Definition der Stored Procedure wird mit den Anweisungen BEGIN und END ein
Anweisungsblock definiert. Die Anweisungen werden auch im Verlauf der Prozedur benötigt,
um zusammengehörige Anweisungen zu einem Block zusammenzufassen.

 In allen Anweisungen, die der Programmsteuerung dienen, beispielsweise einer Alternative


(IF... THEN... ELSE...), können eine oder mehrere SQL-Anweisungen ausgeführt
werden. Sind mehrere Anweisungen erforderlich, müssen diese durch die Schlüsselwörter
BEGIN und END eingeschlossen werden. Es wird dann von einem Anweisungsblock
gesprochen.
 Anweisungsblöcke können beliebig ineinander verschachtelt werden.

Syntax
BEGIN
anweisung1;
...
END

 Ein Anweisungsblock wird mit dem Schlüsselwort BEGIN eingeleitet und mit END
abgeschlossen. Dazwischen können beliebige Anweisungen angegeben werden.

© HERDT-Verlag Schulversion 191


16 Stored Procedures

Vorhandene Prozeduren anzeigen


Mit der Anweisung SHOW PROCEDURE STATUS erhalten Sie eine Auflistung der vorhandenen
Stored Procedures der Datenbank in Tabellenform. Da die Tabellenform für diese Anzeige etwas
unübersichtlich ist, können Sie auch die Listenform wählen, indem Sie SHOW PROCEDURE
STATUS \G; eingeben. Zusätzlich können Sie die Anzeige durch eine WHERE-Klausel auf eine
Datenbank beschränken.

Anzeige der definierten Stored Procedures in Listenform

Syntax
SHOW PROCEDURE STATUS;

 Die Anweisung besteht aus den Schlüsselwörtern SHOW PROCEDURE STATUS. Als Resultat
liefert sie eine Liste der definierten Prozeduren.

Mit der Anweisung SHOW CREATE PROCEDURE prozedurname können Sie sich den Code
einer bestimmten Prozedur anzeigen lassen.

Prozeduren löschen
Wenn eine Prozedur nicht wunschgemäß arbeitet oder wenn sie nicht mehr benötigt wird,
können Sie die Prozedur löschen. Dies geschieht mit der Anweisung DROP PROCEDURE.

Eine Prozedur kann nur dann gelöscht werden, wenn Sie momentan nicht ausgeführt wird und
andere Stored Procedures nicht darauf aufbauen.

Syntax
DROP PROCEDURE prozedurname;

 Die Anweisung beginnt mit den Schlüsselwörtern DROP PROCEDURE. Danach folgt der
Name der zu löschenden Prozedur.

Prozeduren bearbeiten
Eine umfangreiche Stored Procedure arbeitet selten von Anfang an ohne Fehler. Statt eine
Prozedur im Falle eines Fehlers zu löschen und neu zu erstellen, können Sie die Prozedur mit der
Anweisung ALTER PROCEDURE bearbeiten. Auf diese Weise können Sie eine Prozedur schritt-
weise weiterentwickeln.

192 Schulversion © HERDT-Verlag


Stored Procedures 16

Mithilfe der Anweisung ALTER PROCEDURE können Sie den Anweisungsteil der Prozedur
bearbeiten, ohne Übergabe- und Rückgabeparameter zu verändern. Die Syntax entspricht dabei
der Anweisung CREATE PROCEDURE.

Syntax
ALTER PROCEDURE prozedurname ([ IN | OUT | INOUT] parameter1
datentyp1, ...)
BEGIN
anweisungsblock
END;

 Die Anweisung beginnt mit den Schlüsselwörtern ALTER PROCEDURE. Danach folgt der
Prozedurname.
 In runden Klammern werden die einzelnen Übergabeparameter der Prozedur angegeben.
 In einem durch BEGIN und END eingeschlossenen Anweisungsblock folgt die Liste der
Anweisungen, die von der Prozedur ausgeführt werden sollen.

Um bei umfangreicheren Prozeduren den Überblick nicht zu verlieren, ist es praktischer, diese
mithilfe eines Editors zu erstellen und dann über die Zwischenablage zu kopieren.

16.3 Beispielanwendung für Stored Procedures

Eine komplexe Prozedur erstellen


In einer Stored Procedure können Sie die SQL-Anweisungen SELECT, INSERT, DELETE und
UPDATE verwenden. Zusätzlich existieren noch Anweisungen zur Steuerung des Programm-
ablaufs, die nur innerhalb einer Prozedur erlaubt sind. Auch Variablen können für den internen
Gebrauch in einer Prozedur definiert werden. Hier ein Beispiel:

Beispiel: CreateProcedure.sql
Es soll ein neuer Mitarbeiter in die Tabelle t_ma eingefügt werden. Dieser Mitarbeiter wird
gleichzeitig einem Projekt zugeordnet. Dieses Projekt ist entweder bereits in der Tabelle t_proj
enthalten oder die Prozedur erstellt einen neuen Eintrag. Danach soll die Prozedur in der Tabelle
t_ma_pro einen neuen Eintrag mit dem Mitarbeiter und dem zugehörigen Projekt erstellen.

 DELIMITER //
 CREATE PROCEDURE p_neuer_ma
(name VARCHAR(50), vorname VARCHAR(50), strasse VARCHAR(150),
hnr VARCHAR(5), plz VARCHAR(5), ort VARCHAR(50), land
VARCHAR(4),
projektname VARCHAR(50))
 BEGIN

© HERDT-Verlag Schulversion 193


16 Stored Procedures

 DECLARE mid INTEGER;


DECLARE pid INTEGER;
 SELECT MAX(id) + 1 FROM t_ma INTO mid;
 INSERT INTO t_ma (id, name, vname, str, hnr, plz, ort, land)
VALUES(mid, name, vorname, strasse, hnr, plz, ort, land);
 SELECT COUNT(id) FROM t_proj WHERE t_proj.name = projektname
INTO pid;
 IF (pid = 0) THEN
SELECT MAX(id) + 1 FROM t_proj INTO pid;
INSERT INTO t_proj (id, name) VALUES(pid, projektname);
ELSE
SELECT id FROM t_proj WHERE t_proj.name = projektname
INTO pid;
END IF;
 INSERT INTO t_ma_proj (ma_id, proj_id)
VALUES(mid, pid);
 END //
 DELIMITER ;
 CALL p_neuer_ma
('Herold', 'Frank', 'Waldstr.', '24', '10115', 'Berlin', 'D',
Kundenumfrage');
 CALL p_neuer_ma
('Teschau', 'Ines', '', '', '1210', 'Wien', 'AT',
'Kundenumfrage');

 Innerhalb der Prozedur werden SQL-Anweisungen wie üblich mit einem Semikolon abge-
schlossen. Damit die Eingabe an dieser Stelle aber nicht fälschlicherweise abgebrochen wird,
muss mit dem Befehl DELIMITER ein neues Endekennzeichen für SQL-Anweisungen
definiert werden. Hier ist es das Zeichen //.
 An dieser Stelle beginnt die Definition der Stored Procedure mit dem Namen p_neuer_ma.
Danach werden in runden Klammern die Namen der Übergabeparameter und deren Daten-
typen angegeben. Unter diesen Namen können die übergebenen Werte im Verlauf der
Prozedur angesprochen werden.
 Einzelne Blöcke werden stets durch das Schlüsselwort BEGIN eingeleitet und mit END
abgeschlossen. Hier beginnt der Anweisungsblock der Prozedur.
 Zuerst werden die lokalen Variablen mid und pid für den Gebrauch innerhalb der Prozedur
definiert.
 Mithilfe einer SELECT-Abfrage wird die größte Mitarbeiter-ID ermittelt und um den Wert 1
erhöht. Das Ergebnis wird mithilfe des Schlüsselwortes INTO in der Variablen mid
gespeichert.
 Die eben ermittelte Mitarbeiter-ID wird verwendet, um einen neuen Datensatz in der
Tabelle t_ma zu erzeugen. Dabei werden zusätzlich die Übergabeparameter der Prozedur
verwendet.
 Die Abfrage ermittelt, ob es für das Projekt projektname einen Datensatz in der Tabelle
t_proj gibt. Der Spaltenname name muss in der WHERE-Klausel mit dem Tabellennamen
t_proj qualifiziert werden, damit ihn das System vom gleichnamigen Parameter name
unterscheidet. Das Ergebnis der Abfrage wird in der Variablen pid gespeichert. Wird ein
Datensatz gefunden, ist der Wert von pid gleich 1, sonst 0.

194 Schulversion © HERDT-Verlag


Stored Procedures 16

 Mit einer IF-Anweisung wird an dieser Stelle überprüft, ob pid den Wert 0 enthält. In
diesem Fall muss ein neuer Datensatz erzeugt werden. Dafür wird mit einer Abfrage eine
neue Projekt-ID ermittelt und der Datensatz wird eingefügt. Existiert schon ein passender
Datensatz, wird im ELSE-Zweig die entsprechende Projekt-ID in einer Abfrage ausgelesen
und in der Variablen pid gespeichert.
 Mit einer INSERT-Anweisung für die Tabelle t_ma_proj wird der Mitarbeiter mit dem
entsprechenden Projekt in Bezug gesetzt. Dafür werden die entsprechenden ID-Nummern
in den Variablen pid und mid verwendet.
 Die Deklaration der Prozedur endet mit END. Die Anweisung muss entsprechend der Neu-
definition des Endekennzeichens () mit dem Zeichen // abgeschlossen werden.
 Nun kann als Endekennzeichen wieder das Semikolon definiert werden.
 Mit der Anweisung CALL wird die Prozedur ausgeführt. Hier wird ein neuer Mitarbeiter
eingefügt, der am Projekt Kundenumfrage beteiligt ist. Da dieses Projekt noch nicht existiert,
wird ein neuer Datensatz in der Tabelle t_proj erzeugt.
 Da das Projekt Kundenumfrage bereits existiert, wird kein neuer Datensatz für dieses Projekt
angelegt.

Variablen in Stored Procedures


Variablen dienen zur Zwischenspeicherung von Werten, die Sie der Variablen zuweisen und
später wieder auslesen können. In einer Prozedur sind verschiedene Variablentypen möglich.

Achten Sie bei der Definition von Variablen darauf, dass der Name, den Sie für die Variable
wählen, nicht schon für eine Spalte, mit der Sie arbeiten möchten, vergeben ist. Eine Namens-
gleichheit kann zu Fehlfunktionen führen.

Eine häufig verwendete Form von Variablen sind die lokalen Variablen (im Beispiel Create-
Procedure.sql Schritt ). Sie werden zu Beginn der Prozedurdefinition nach dem Schlüsselwort
BEGIN mit der Anweisung DECLARE deklariert. Sie sind nur innerhalb der Prozedur gültig.

Syntax
DECLARE name datentyp [DEFAULT wert];

 Die Deklaration der Variablen erfolgt in der Prozedurdefinition direkt nach dem Schlüssel-
wort BEGIN.
 Die Anweisung beginnt mit dem Schlüsselwort DECLARE. Danach folgt der gewünschte
Name der Variablen.
 Anschließend muss ein Datentyp angegeben werden, der für die zu speichernden Daten
passend ist. Hier sind alle Datentypen des Datenbanksystems erlaubt. Ein Standardwert
kann über die DEFAULT-Anweisung angegeben werden.
 Lokale Variable gelten immer nur innerhalb des BEGIN … END-Blocks, in dem sie deklariert
wurden.
 Variablen können auch in verschachtelten Blöcken verwendet werden.

© HERDT-Verlag Schulversion 195


16 Stored Procedures

Ergebnisse einer Abfrage mit SELECT INTO in Variablen speichern


Um die Ergebnisse einer Abfrage in Variablen speichern zu können, wird die SELECT-Abfrage um
das Schlüsselwort INTO erweitert (im Beispiel CreateProcedure.sql Schritt ). Danach können
Sie für jedes Datenfeld eine Variable angeben, in der der entsprechende Wert gespeichert
werden soll.

Syntax
SELECT ... INTO variable1, ...;

 Die Anweisung beginnt mit dem Schlüsselwort SELECT. Danach folgen die für die Abfrage
benötigten Angaben.
 Am Ende der Abfrage werden das Schlüsselwort INTO und die Liste der Variablen angefügt.
Für jedes Datenfeld der Ergebnismenge muss eine passende Variable angegeben werden.
Die einzelnen Variablen werden durch Kommata getrennt.

IF-THEN-ELSE-Verzweigung
Im Ablauf einer Prozedur kann es oft notwendig sein, dass aufgrund einer Bedingung
bestimmte Anweisungen ausgeführt oder auch nicht ausgeführt werden sollen (im Beispiel
CreateProcedure.sql Schritt ). Dieses Verhalten erreichen Sie mit der Alternative IF... THEN
...ELSE. Der Anweisungsblock im THEN-Zweig wird immer ausgeführt, wenn die Bedingung
erfüllt ist. Ist sie falsch, werden die Anweisungen im optionalen ELSE-Zweig ausgeführt.

Bei dieser Alternative wird stets ein Anweisungsblock ausgeführt. Es ist nicht möglich, dass beide
Blöcke oder keiner von beiden ausgeführt wird.

Syntax der IF-THEN-ELSE-Anweisung


IF (bedingung) THEN
anweisungsblock1
[ELSE
anweisungsblock2]
END IF

 Die Anweisung beginnt mit dem Schlüsselwort IF. Danach folgt in runden Klammern die
gewünschte Bedingung.
 Nach dem Schlüsselwort THEN folgt der erste Anweisungsblock. Er wird ausgeführt, wenn
die Bedingung erfüllt ist.
 Optional kann mithilfe des Schlüsselworts ELSE ein zweiter Anweisungsblock angegeben
werden, der ausgeführt wird, wenn die Bedingung nicht erfüllt ist.
 Die Anweisung muss mit den Schlüsselwörtern END IF abgeschlossen werden.

Die meisten Datenbanksysteme bieten viele weitere Möglichkeiten, Prozeduren zu steuern.


MariaDB unterstützt z. B. zusätzlich zu den Befehlen im Beispiel folgende Anweisungen: CASE,
LOOP, LEAVE, ITERATE, REPEAT und WHILE in Prozeduren. Nähere Informationen finden Sie
in den jeweiligen Handbüchern.

196 Schulversion © HERDT-Verlag


Stored Procedures 16

Prozedur ausführen
Möchten Sie eine Prozedur ausführen, verwenden Sie die Anweisung CALL (im Beispiel
CreateProcedure.sql Schritt  und ).

Syntax
CALL prozedurname (parameter1, ...);

 Die Anweisung beginnt mit dem Schlüsselwort CALL. Danach folgt der Name der aus-
zuführenden Prozedur.
 Falls die Prozedur Übergabeparameter erwartet, müssen diese in der richtigen Reihenfolge
und durch Kommata getrennt aufgeführt werden. Die runden Klammern sind dabei optional.

Selektierbare Prozedur starten


Datenbanksysteme, die selektierbare Prozeduren unterstützen, ermöglichen es, Prozeduren wie
Tabellen in einer SELECT-Anweisung zu verwenden. Sie liefern eine Ergebnismenge zurück.
Falls die Prozedur Übergabeparameter erwartet, müssen diese in runden Klammern angegeben
werden. MariaDB unterstützt keine selektierbaren Prozeduren.

16.4 Übung

Prozeduren in MariaDB erstellen


Übungsdatei: -- Ergebnisdatei: Uebung.sql

1. Erstellen Sie in der Datenbank Uebungen eine Prozedur p_artikel_hinzufuegen, die dem
Lagerbestand
in der Tabelle t_lager neue Artikel hinzufügt.
2. Die Prozedur soll als Parameter die Artikelnummer, die Stückzahl und den Preis erhalten.
Verwenden Sie geeignete Namen und Datentypen.
3. Deklarieren Sie eine lokale Variable aid mit dem Datentyp INTEGER.
4. Prüfen Sie mit einer SELECT-Abfrage, ob der einzufügende Artikel bereits vorhanden ist,
und speichern Sie das Abfrageergebnis auf der Variablen aid.
5. Wenn der Artikel schon im Lagerbestand ist, sollen Preis und Stückzahl des vorhandenen
Artikels mit den neuen Werten aktualisiert werden.
6. Handelt es sich um einen neuen Artikel, soll er dem Lagerbestand hinzugefügt werden.
7. Testen Sie die Prozedur mit geeigneten Werten.

© HERDT-Verlag Schulversion 197


17 Trigger

17
17. Trigger

17.1 Prozeduren automatisch ausführen


Ein Trigger ist eine besondere Form der Stored Procedures, bei der die Prozedur nicht durch den
Anwender, sondern durch das Datenbanksystem selbst gestartet wird. Auf diese Weise können
Sie einen Datenbestand überwachen und automatisch Aktionen ausführen, wenn Datensätze in
Tabellen eingefügt, geändert oder gelöscht werden. Trigger bestehen aus drei wesentlichen
Bestandteilen:

 Name des Triggers,


 Bedingung, die besagt, wann der Trigger aktiv wird,
 Ausführungsteil, ähnlich dem der Stored Procedures.

In der Bedingung eines Triggers kann festgelegt werden, ob die Anweisungen im Ausführungsteil
bei einer INSERT-, einer UPDATE- oder einer DELETE-Anweisung aktiv werden. Der Ausfüh-
rungsteil umfasst in der Regel mehrere SQL-Anweisungen, bei denen, wie bei Stored Procedures
auch, Variablen und Kontrollstrukturen (WHILE, IF usw.) verwendet werden können.

Ein Trigger bezieht sich stets auf eine bestimmte Tabelle oder eine bestimmte Sicht. Es ist nicht
möglich, Trigger zu definieren, die gleichzeitig Änderungen in verschiedenen Tabellen über-
wachen. Sie können jedoch für eine Tabelle mehrere Trigger erstellen, die verschiedene Ereig-
nisse überwachen.

Nicht alle Integritätsregeln lassen sich deklarativ in der Datendefinition der Tabelle definieren.
Mithilfe von Triggern ist es möglich, Integritätsregeln prozedural zu überprüfen und somit einen
weiteren Beitrag zur Sicherung der referenziellen Integrität zu leisten. Beispielsweise kann das
Einfügen ungültiger Datensätze bezüglich bestimmter Werte verhindert werden.

Zusätzlich zum SQL-Standard kann unter MariaDB und PostgreSQL festgelegt werden, ob der
Trigger vor oder nach dem auslösenden Ereignis ausgeführt wird.

198 Schulversion © HERDT-Verlag


Trigger 17

17.2 Trigger erstellen


Trigger mit MariaDB erstellen
Trigger werden mit der Anweisung CREATE TRIGGER erstellt. Die Syntax ist dabei dem
Definieren einer Stored Procedure ähnlich.

Beispiel MariaDB: CreateTrigger.sql


Mithilfe eines Triggers soll die Arbeit mit einem großen Datenbestand beschleunigt werden.

Die Anwender benötigen häufig die Summe der Stückzahlen und Preise aller Artikel des Lager-
bestandes in der Tabelle t_lager. Die Werte berechnen Sie mit der Aggregatfunktion SUMME. Bei
jedem Aufruf der Funktion werden alle Datensätze durchlaufen und die Werte zeitaufwendig und
rechenintensiv addiert. Mit einem Trigger kann die Summe automatisch bei jedem Einfügen eines
Datensatzes berechnet und in der zusätzlichen Tabelle t_summe_ lager gespeichert werden. Die
Summe ist dort stets aktuell und schnell abrufbar.

CREATE TABLE t_summe_lager


(summe_stueck INTEGER,
summe_preis FLOAT);
DELIMITER //
CREATE TRIGGER trig_summe_artikel AFTER INSERT
 ON t_lager FOR EACH ROW BEGIN
 DECLARE summe_stueck INTEGER;
DECLARE summe_preis FLOAT;
 SELECT SUM(stueck), SUM(preis) FROM t_lager
INTO summe_stueck, summe_preis;
 DELETE FROM t_summe_lager;
 INSERT INTO t_summe_lager
VALUES(summe_stueck, summe_preis);
END //
DELIMITER ;
SELECT * FROM t_summe_lager;
INSERT INTO t_lager (id, stueck, preis)
VALUES(56,10, 200);
SELECT * FROM t_summe_lager;

 Zuerst wird eine neue Tabelle t_summe_lager erstellt, die für jede der benötigten Summen
ein Datenfeld erhält.
 Wie bei Stored Procedures muss auch bei der Definition eines Triggers durch DELIMITER
ein Endekennzeichen benannt werden, da sonst die Eingabe des Triggers im Datenbank-
Client nicht möglich ist.
 Hier beginnt die Definition des Triggers trig_summe_artikel mit der Anweisung CREATE
TRIGGER. Die Angabe der Schlüsselwörter AFTER INSERT bewirkt, dass der Trigger stets
nach dem Einfügen eines neuen Datensatzes aktiv wird.

© HERDT-Verlag
Schulversion 199
17 Trigger

 Der Trigger soll die Tabelle t_lager überwachen. Dies wird mit dem Schlüsselwort ON erreicht.
Ab dem Schlüsselwort BEGIN erfolgt die Angabe des Anweisungsteils. Dieser entspricht dem
einer Stored Procedure.
 Zuerst werden dazu zwei lokale Variablen deklariert.
 Die Summe der Datenfelder wird mit einer Anweisung SELECT INTO ermittelt und in den
Variablen gespeichert.
 Danach wird der möglicherweise vorhandene alte Datensatz der Tabelle t_summe_lager
gelöscht.
 Die neu berechneten Summen werden
mittels der Variablen in die Tabelle
t_summe_lager eingefügt.
 Die Deklaration der Prozedur endet mit END.
Die Anweisung muss entsprechend der
Neudefinition des Endekennzeichens () mit
dem Zeichen // abgeschlossen werden.
 Nun kann als Endekennzeichen wieder
Der Trigger hat die neuen Summen berechnet
das Semikolon definiert werden.
und eingefügt
 Zur Überprüfung wird der Inhalt der Tabelle
t_summe_ lager abgefragt, danach wird ein
neuer Artikel eingefügt und damit die Arbeit
des Triggers überprüft.

Syntax
CREATE TRIGGER triggername { BEFORE | AFTER } {INSERT|UPDATE|DELETE}
ON tabellenname FOR EACH ROW BEGIN
anweisungsblock
END;

 Die Anweisung beginnt mit den Schlüsselwörtern CREATE TRIGGER. Danach folgt der
Name des Triggers.
 Eines der Schlüsselwörter BEFORE oder AFTER wird verwendet, um festzulegen, ob der
Trigger vor (BEFORE) oder nach (AFTER) der angegebenen Aktion aktiv werden soll.
 Mit einem der Schlüsselwörter INSERT, UPDATE oder DELETE wird die Art der Daten-
modifikation benannt, bei der der Anweisungsteil des Triggers ausgeführt werden soll.
 Mit dem Schlüsselwort ON wird der Name der Tabelle bzw. der Sicht angegeben, für die der
Trigger gelten soll.
 Die Schlüsselwörter FOR EACH ROW bedeuten, dass der Trigger nicht nur ein einziges Mal
auf die gesamte Tabelle angewendet wird, sondern jeden einzelnen Datensatz anspricht, der
von der Anweisung betroffen ist.
 Nach dem Schlüsselwort BEGIN werden, falls benötigt, lokale Variablen deklariert.
 Zwischen BEGIN und END steht der eigentliche Anweisungsteil des Triggers.
 Bei der Eingabe im Datenbank-Client muss die Anweisung mit einem Endekennzeichen,
standardmäßig dem Semikolon, beendet werden.

Bei SQL dürfen keine zwei Trigger einer Tabelle dieselbe Aktionszeit und dasselbe Trigger-Ereignis
haben. Zum Beispiel können Sie keine zwei BEFORE UPDATE-Trigger für eine Tabelle

200 Schulversion © HERDT-Verlag


Trigger 17

definieren. Sie können jedoch einen BEFORE UPDATE- und einen BEFORE INSERT-Trigger
oder einen BEFORE UPDATE- und einen AFTER UPDATE-Trigger definieren.

Trigger mit PostgreSQL erstellen


Auch PostgreSQL unterstützt Trigger. Dabei ist jedoch zu beachten, dass hier kein einfacher
Anweisungsblock übergeben werden kann, sondern eine benutzerdefinierte Funktion mit dem
Rückgabewert trigger angegeben werden muss, die bereits zuvor programmiert wurde.

Seit der Version 9.3 unterstützt PostgreSQL sogenannte Event Trigger, die in Abhängigkeit von
DDL-Befehlen (CREATE, ALTER, DROP) ausgeführt werden. Diese Funktionalität ist eine
PostgreSQL-Besonderheit, welche nicht auf dem SQL-Standard basiert.

Syntax
CREATE TRIGGER triggername { BEFORE | AFTER } {INSERT|UPDATE|DELETE}
ON tabellenname [ OF spaltenname ] FOR EACH ROW
WHEN bedingung
EXECUTE PROCEDURE funktion ( [ argument [, ...] ] )

 Die Anweisung beginnt mit den Schlüsselwörtern CREATE TRIGGER. Danach folgt der
Name des Triggers.
 Eines der Schlüsselwörter BEFORE oder AFTER wird verwendet, um festzulegen, ob der
Trigger vor (BEFORE) oder nach (AFTER) der angegebenen Aktion aktiv werden soll.
 Mit einem der Schlüsselwörter INSERT, UPDATE oder DELETE wird die Art der Daten-
modifikation benannt, bei der der Anweisungsteil des Triggers ausgeführt werden soll.
 Mit dem Schlüsselwort ON wird der Name der Tabelle bzw. der Sicht angegeben, für die
der Trigger gelten soll.
 Optional kann eine Spalte angegeben werden. Ist dies der Fall, wird der Trigger nur aus-
geführt, wenn der Wert in der betreffenden Spalte aktualisiert wird.
 Die Schlüsselwörter FOR EACH ROW bedeuten, dass der Trigger nicht nur ein einziges Mal auf
die gesamte Tabelle angewendet wird, sondern jeden einzelnen Datensatz anspricht, der von
der Anweisung betroffen ist.
 Es kann eine zusätzliche Bedingung angegeben werden, um die Ausführungshäufigkeit des
Triggers weiter einzuschränken. Nur wenn die Bedingung erfüllt ist, wird der Trigger
ausgeführt.
 Nach dem Schlüsselwort EXECUTE PROCEDURE und dem betreffenden Funktionsnamen
wird eine Funktion aufgerufen.
 Die Argumente, die der Funktion übergeben werden sollen, werden anschließend in Klam-
mern angegeben. Dabei hängt die Art und Weise, wie die Triggerargumente in der Funktion
ermittelt werden können, von der jeweiligen Implementierungssprache der Funktion ab.

Informationen zur Programmierung von Funktionen mit PostgreSQL finden Sie in dem
betreffenden Handbuch.

© HERDT-Verlag
Schulversion 201
17 Trigger

Bisherige und neue Datenfeldinhalte in Triggern auslesen


Beim Einfügen neuer Werte oder dem Aktualisieren bestehender Werte im Anweisungsteil eines
Triggers kann es notwendig sein, auf den neuen oder den alten Inhalt eines bestimmten Daten-
felds zuzugreifen. Dafür können Sie unter MariaDB und PostgreSQL die Transitionsvariablen NEW
bzw. OLD in Kombination mit einem Datenfeldnamen verwenden.

NEW.datenfeldname Liefert den neuen oder zu ändernden Wert eines Datenfeldes in


einem Trigger für die INSERT- oder UPDATE-Aktion
OLD.datenfeldname Liefert den bisherigen Wert eines Datenfeldes in einem Trigger für
die UPDATE- und DELETE-Aktion

Beispiel für MariaDB: CreateTriggerNew.sql


Beim Einfügen von Datensätzen in die Tabelle t_liefer muss eine eindeutige Zahl als Lieferanten-
nummer angegeben werden. Mithilfe eines Triggers soll erreicht werden, dass eine neue Num-
mer erzeugt wird, falls bei einer INSERT-Anweisung keine Angabe erfolgt.

 DELIMITER //
CREATE TRIGGER trig_liefer_nr BEFORE INSERT
ON t_liefer FOR EACH ROW BEGIN
DECLARE lid INTEGER;
 IF (NEW.id = 0) THEN
 SELECT MAX(id)+1 FROM t_liefer INTO lid;
 SET NEW.id = lid;
END IF;
END //
DELIMITER ;
INSERT INTO t_liefer (name, str, hnr, plz, ort)
VALUES ("Walter", "Hauptstr.", "6", "60320", "Frankfurt");
SELECT * FROM t_liefer;

 Der Trigger wird mit der CREATE TRIGGER-Anweisung für die Tabelle t_liefer erstellt.
Da das Feld id nicht den Wert NULL enthalten soll, muss die Überprüfung durch den Trigger
noch vor dem tatsächlichen Einfügen erfolgen. Dies wird durch die Angabe der Schlüssel-
wörter BEFORE INSERT erreicht.
 In einer IF THEN-Anweisung erfolgt mithilfe der Transitionsvariable NEW die Prüfung, ob für
das Feld id eine Eingabe erfolgt ist. Ist das nicht der Fall, wird der folgende Anweisungsblock
ausgeführt.
 In einer SELECT-Anweisung wird der maximale Wert für das Feld id ermittelt, um den Wert
1 erhöht und in der Variablen lid gespeichert.
 Über die Transitionsvariable NEW wird dem Feld id der Wert der Variablen lid zugewiesen.
 Um den Trigger zu testen, wird ein Datensatz ohne Eintrag für die id eingegeben.
Anschließend wird geprüft, ob die fehlende id ergänzt wurde.

202 Schulversion © HERDT-Verlag


Trigger 17

17.3 Trigger bearbeiten und löschen

Trigger ändern
Mit der Anweisung ALTER TRIGGER können Sie in einigen Datenbanksystemen einen be-
stehenden Trigger bearbeiten. Dabei ist es möglich, einen neuen Anweisungsteil anzugeben, die
Positionsnummer oder die auslösende Aktion zu ändern. Sie können Kopf- und Anweisungsteil
des Triggers gleichzeitig oder einzeln bearbeiten.

 Mit der ALTER TRIGGER-Anweisung können Sie nicht die Tabelle tauschen, an die der
Trigger gebunden ist. Dies ist nur möglich, indem Sie den Trigger löschen und vollständig
neu erstellen.
 Um einen Trigger zu bearbeiten, müssen Sie der Besitzer des Triggers sein, ihn erstellt haben
oder Datenbankadministrator sein.
 MariaDB unterstützt diese Anweisung nicht. Wenn Sie einen Trigger in MariaDB ändern
wollen, müssen Sie ihn löschen und neu erstellen.

Syntax MariaDB
ALTER TRIGGER triggername [{BEFORE|AFTER} {INSERT|UPDATE|DELETE}]
Die anschließende Syntax richtet sich nach dem jeweiligen Datenbanksystem.

 Die Anweisung beginnt mit den Schlüsselwörtern ALTER TRIGGER, gefolgt vom Namen
des zu bearbeitenden Triggers.
 Optional kann danach die auslösende Aktion des Triggers neu angegeben werden. Dafür
wird eines der Schlüsselwörter BEFORE oder AFTER verwendet, um den Zeitpunkt fest-
zulegen, und eine der Angaben INSERT, UPDATE oder DELETE für die Art der zu über-
wachenden Datenmodifikation.
 Nach dem Schlüsselwort BEGIN folgt optional ein neuer Anweisungsblock.

Verwenden Sie zur Definition eines Triggers einen separaten Editor, besitzen Sie mehr Möglich-
keiten zur Texteingabe und Änderung. Nach der Fertigstellung der Triggerdefinition kopieren Sie
diese in das entsprechende Programm, um den Trigger zu erstellen. Für geringe Änderungen ist
die Anweisung ALTER TRIGGER geeignet.

Bei PostgreSQL können Sie zusätzlich zu den beschriebenen Änderungen mit der Anweisung
RENAME TO auch den Namen des Triggers ändern.

Syntax PostgreSQL
ALTER TRIGGER triggername ON tabelle RENAME TO neuername

© HERDT-Verlag
Schulversion 203
17 Trigger

Trigger löschen
Falls ein Trigger nicht mehr benötigt wird oder Sie ihn vollständig neu erstellen wollen, können
Sie ihn mit der DROP TRIGGER-Anweisung aus dem System löschen.

Um einen Trigger zu löschen, müssen Sie der Besitzer des Triggers sein, ihn erstellt haben oder
der Datenbankadministrator sein.

Syntax MariaDB
DROP TRIGGER [tabellenname] triggername ;

 Die Anweisung beginnt mit den Schlüsselwörtern DROP TRIGGER. Optional kann der Name
der Tabelle genannt werden, für die der Trigger erstellt wurde. Danach folgt der Name des
zu löschenden Triggers.

Syntax PostgreSQL
DROP TRIGGER triggername ON tabellenname [ CASCADE | RESTRICT ];

 Die Anweisung beginnt mit den Schlüsselwörtern DROP TRIGGER, gefolgt von dem Namen
des Triggers.
 Bei PostgreSQL ist die Angabe des Tabellennamens, für die der Trigger erstellt wurde,
verpflichtend. Er wird eingeleitet durch das Schlüsselwort ON.
 Mit der Angabe CASCADE werden alle Objekte, die von dem betreffenden Trigger
abhängen, gelöscht. Wenn Sie verhindern möchten, dass der Trigger gelöscht wird,
solange noch Objekte von dem Trigger abhängen, geben Sie die Option RESTRICT an.

17.4 Übung

Trigger erstellen
Übungsdatei: -- Ergebnisdatei: Uebung.sql

1. Erstellen Sie in der Datenbank Uebungen einen neuen Trigger trig_summe_artikel_update.


2. Der Trigger soll die Summe der Stückzahlen und Preise aller Artikel am Lager berechnen,
wenn ein Daten-satz in der Tabelle t_lager aktualisiert wird.
3. Berechnen Sie die Summen mithilfe einer Aggregatfunktion.
4. Speichern Sie die Werte in der Tabelle t_summe_lager. Löschen Sie gegebenenfalls alte
Einträge in der Tabelle.
5. Prüfen Sie die Funktionsfähigkeit, indem Sie einige Stückzahlen und Preise in der Tabelle
verändern.
6. Berechnen Sie die Summen mit einer SELECT-Abfrage und vergleichen Sie das Ergebnis
mit den Werten in der Tabelle t_summe_lager.
7. Erstellen Sie den gleichen Trigger für die DELETE-Aktion.

204 Schulversion © HERDT-Verlag


Schulversion
I Index

Bottom-up 37 Datenbank-Lebenszyklus 26
1 Boyce-Codd-Normalform 58 Datenbankmanagementsystem
1:1-Beziehung 33, 48 (DBMS) 7, 17
1:c-Beziehung 36 C Datenbanknamen, MariaDB 70
1:m-Beziehung 36 Datenbanknamen, PostgreSQL 71
CHECK 82 Datenbankobjekte,
1:mc-Beziehungen 36
Chen-Notation 30 GRANT-Anweisung 174
1:n-Beziehung 33, 48
Client/Server-Konzept 23 Datenbanksysteme (DBS) 7
CLOSE-Anweisung 166 Datenbanktypen 8
3
COMMIT-Anweisung 184 Datenbestände 138
3-Ebenen-Modell 15 CONSTRAINT 81 Datenlexikon 19
Constraints 80 Datenmanipulationssprache 44
A COUNT() 130 Datenmodell, relationales 44, 138
CREATE DATABASE 69 Datenmodell,
Abfragen verbinden 152 textuelle Beschreibung 40
CREATE DOMAIN 83
Abfragen, einfache 92 Datenpuffer 163
CREATE INDEX 125
Abfragen, vordefinierte 156 Datenredundanz 6
CREATE PROCEDURE-
Abstraktionskonzepte 29 Anweisung 189 Datensätze 45
Aggregatfunktionen 129 CREATE TABLE 74 Datensätze einfügen 90
Aggregatfunktionen, CREATE TRIGGER 199 Datensätze sequentiell lesen 163
Bedingungen 132 Datensätze, Anzahl beschränken 104
CREATE VIEW 157
Aggregatfunktionen, Filter 132 Datensätze, doppelte 104
Cursor 163
Aggregation 29, 34 Datensätze, mehrere einfügen 92
Cursor erstellen 164
ALTER DOMAIN 85 Datenschutzprobleme 6
Cursor schließen 166
ALTER-PROCEDURE- Datensicherung 18
Cursor, Datenzugriff 165
Anweisung 193
Cursor, serverseitiger 163 Datentypen, Datumswerte 78
ALTER TABLE 87
Datentypen, Festkommazahlen 78
ALTER-TRIGGER-Anweisung 203
Änderungen zurücknehmen 185
D Datentypen, Fließkommazahlen 77
Datentypen, numerische 77
Anomalien 52 Data Dictionary 19 Datentypen, Texte 79
ANSI-SQL-Standard 129 Daten abfragen 100 Datenunabhängigkeit 7, 15
Anweisungsblock 191 Daten aktualisieren 94 Datenunabhängigkeit, logische 15
Anzahl Datensätze 104 Daten einfügen 90 Datenunabhängigkeit, physische 15
Architekturtypen, parallele DBS 24 Daten gruppieren 111 Datumswerte 78
Assoziation 29, 32 Daten löschen 97 DBMS, Komponenten 19
Attribute 31, 32, 45 Datenbank 7 DBS 7
Attribute umbenennen 61, 62 Datenbank anzeigen 71 DBS, paralle 24
AUTO_INCREMENT 75 Datenbank auswählen, MariaDB 72 DBS, verteilte 21
Datenbank erstellen 68 DBS, zentralisierte 20
B Datenbank erstellen, MariaDB 69 DECLARE CURSOR 164
Datenbank erstellen, PostgreSQL 70 DEFAULT 76
Bedingungen 106
Datenbank löschen 73 DELETE-Anweisung 97
Benutzer anlegen 171
Datenbank wechseln, PostgreSQL 72 Differenz 61
Benutzer verwalten 170, 172
Datenbank, dokumentorientierte 11 DISTINCT 102, 104
Benutzer, MariaDB 171
Datenbank, Eigenschaften 7 Dokumentorientierte Datenbank 11
Benutzer, PostgreSQL 168
Datenbank, Graphen 14 Domänen 30, 31, 83
Benutzerrechte einsehen 175
Datenbank, hierarchische 8 Domänen ändern 84
Benutzerverwaltung 167
Datenbank, Key/Value 14 Domänen definieren 83
Berechnungen ausführen 105
Datenbank, NoSQL 14 Domänen löschen 85
Bereichsprüfung 106, 108
Datenbank, objektorientierte 12 Domänen verwenden 84
BETWEEN-Operator 108
Datenbank, objektrelationale 13 DROP DATABASE 73
Beziehungen 32
Datenbank, relationale 10 DROP-PROCEDURE-Anweisung 192
Beziehungen zwischen Relationen 10
Datenbank, spaltenorientierte 11 DROP TABLE 88
Beziehungsmenge 32
Datenbankadministrator 173 DROP VIEW 159
Beziehungstypen 33
Datenbankentwurf 26, 27 Durchschnitt 61

206 Schulversion © HERDT-Verlag


Index I

Hierarchische Datenbanken 8 Mehrbenutzerbetrieb,


E eingeschränkter 6
Homogene Verteilung 22
EERM 30 Mengenoperationen 138
Elementprüfung 106, 108 I Mengenschreibweise 45
Endekennzeichen 191 MERGE-Anweisung 96
Entität 30 Identifikation 29 MIN() 130
Entitätsmenge 30, 48 Identifizierendes Attribut 32 (min, max) Notation 36
Entities 30 IF EXISTS 73 Mustervergleich 106, 109
Entity-Relationship-Modell IF NOT EXISTS 70
(ER, ERM) 30 IF-THEN-ELSE-Verzweigung 196 N
Entity-Set 30 Index 47, 115
Entity-Typ 30 Indizes 115, 116 n:m-Beziehung 33
Entwurfsphasen 28 Indizes erstellen 125 Natural Join 62, 63
Equi-Join 63, 141 Indizes löschen 127 Natürlicher Verbund 62, 63
ER-Modell 30 Indizes, Richtlinien 126 Netzwerkdatenbanken 9
ER-Modell, Darstellung 35 Inkonsistenzen 6 Normalform, Boyce-Codd 58
Ersatznamen 157 Inner-Join, mehrere Tabellen 147 Normalform, dritte 56
Ersatznamen, Tabellen 144 IN-Operator 108 Normalform, erste 54
Erweitertes Entity-Relationship- INSERT-INTO-Anweisung 90 Normalform, fünfte 58
Modell (EERM) 30 Integrität 18 Normalform, vierte 58
Existenzbedingungen 106 Integrität, referenzielle 121 Normalform, zweite 55
EXISTS 154 Integritätsbedingungen 18 Normalformen 53
Exportschemen 23 Interne Ebene 16 Normalisierung 51
Externe Ebene 16 Internes Schema 17 Normalisierungsprozess 53
Is-a-Beziehung 30, 34, 50 NoSQL Datenbank 14
F ISOLATION LEVEL 182 NOT VALID 88
Nullwerte 45
Felder 45
K Nullwertprüfung 106
Festkommazahlen 78
FETCH-Anweisung 165 Kardinalität 33 O
FILTER 132 Key/Value-Datenbank 14
Fließkommazahlen 77 Klassifikation 29 Objektorientierte Datenbank 12
Fremdschlüssel 47, 116 Klausel HAVING 132 Objektrelationale
Fremdschlüsselverletzungen 123 Klausel WHERE 132 Datenbanksysteme 13
Full-Join 141 Konsistenz 178 ON-Klausel 146
Funktionale Abhängigkeit 53 Konzeptionelle Ebene 16 OPEN-Anweisung 165
Funktionen 129 Konzeptioneller Entwurf 27 Operatoren, logische 106, 111
Funktionen verwenden 133 Konzeptionelles Schema 16 Outer-Join 63, 149
Funktionen, mathematische 134 Krähenfuss-Notation 37 OWNER 70
Funktionen, Zeichenketten 136 Künstliches Attribut 38
P
G L Paralle DBS 24
Generalisierung 29, 34 LIKE-Operator 109 Part-of-Beziehung 30, 34
GRANT CREATE TABLE 74 LIMIT 104 PASSWORD 70
GRANT-Anweisung 173 Logbuch 18, 19 Physische Datenbankarchitektur 20
Graphen-Datenbanken 14 Logische Gesamtsicht 16 Physische Struktur 26
GROUP-BY-Anweisung 111 Logische Operatoren 111 Physischer Entwurf 27
Gültigkeitsprüfung 80 Logische Struktur 26 Planungsprozess 26
Logischer Entwurf 27 Platzhalterzeichen 109
Primärschlüssel 32, 47, 115
H PRIMARY KEY 117
M Projektion 60
HAVING-Klausel 132 Prozeduren 187
Heterogene Verteilung 23 m:n-Beziehungen 49 Prozeduren anzeigen 192
Martin-Notation 37

© HERDT-Verlag Schulversion 207


I Index

Prozeduren automatisch Shared-Memory-Architektur 24 Tupel 32, 44, 45


ausführen 198 Shared-Nothing-Architektur 25 Typumwandlung 80
Prozeduren bearbeiten 192 SHOW DATABASES 71
Prozeduren definieren 189 SHOW-PROCEDURES- U
Prozeduren löschen 192 Anweisung 192
Prozeduren, selektierbare 197 SHOW TABLES 86 UML, Unified Modelling
Prozedursprache 193 Language 35, 37
Sicherheitskonzepte 167
Prozesse, warten auf 182 Unified Modelling Language 37
Sicht 15
psql (Datenbank-Client) 70 UNIQUE 119
Sichten 156
Spalten 44 Unterabfragen 153
R Spalten benennen 102 Unterprogramme 187
Spaltenorientierte Datenbank 11 UPDATE-Anweisung 94
Rechte vergeben 174 USE 72
Spezialisierung 34
Recordsets 9
SQL 8
Recovery 18
SQL-Server 24 V
Redundanzen 6
Stored Procedures 187, 198
Rekursive Beziehungen 34 VALIDATE CONSTRAINT 88
Stored Procedures definieren 189
Relation 44 Variablen verwenden 195
Sub-Select 153
Relationale Datenbank 10 Verbund 62
Symmetrischer Outer-Join 63
Relationales Datenmodell 44 Vereinigung 61
Synchronisation 18
Relationen 10 Vergleichsoperatoren 106, 107
Systemadministrator 167
Relationenalgebra 60 Verknüpfen, Tabellen 141
Systemsicherheit 188
Relationenkalkül 64 Verknüpfung, Möglichkeiten 138
Relationenschemata 45 Verteilte DBS 21
Relationships 30
T Views 156
Reorganisation 27 Tabellen 10, 44 Views erstellen 157
Repositories 19 Tabellen ändern 86 Views löschen 159
Retrieval 59 Tabellen anzeigen 86 Views, Abfragen für 157
REVOKE-Anweisung 176 Tabellen erstellen 74 Views, Daten ändern 160
ROLLBACK-Anweisung 185 Tabellen löschen 88 Views, Datenfelder benennen 158
Tabellen sperren 181 Views, Einfügedaten überprüfen 161
S Tabellen, gefilterte 156 Views, mehrere Tabellen 158
Tabellen, Struktur 45
Schlüssel 46, 115 Tabellenstruktur anzeigen 88 W
Schlüsselfelder 57, 117 Theta-Join 63, 143
Schlüsselkandidaten 46 Wasserfallmodell 29
Top-Down 37
Sekundärindizes 47 WHERE-Klausel 106, 132
Transaktionen 178
Sekundärschlüssel 47, 116 Transaktionen abschließen 184
Sekundärschlüssel löschen 120 Transaktionen erstellen 180
Z
SELECT-Anweisung 100 Transformation, ER-Modell Zeilen 44
Selektion 60 in relationales Modell 48 Zentralisierte DBS 20
Self-Join 63, 151 Transformationsregeln 16 Zugriffrechte entziehen 176
Semi-Join 63 Transitive Abhängigkeit 53, 56 Zugriffsrechte 173, 176
SET-TERM-Anweisung 191 Trigger 198
Sets 9 Trigger ändern 203
Shared-Disk-Architektur 25 Trigger erstellen 199
Shared-Everything-Architektur 24 Trigger löschen 204

208 Schulversion © HERDT-Verlag


Impressum

Matchcode: SQL

Autor: Elmar Fuchs

Fachlektorat: Maren van Kessel

Produziert im HERDT-Digitaldruck

5. Ausgabe, April 2018

HERDT-Verlag für Bildungsmedien GmbH


Am Kümmerling 21-25
55294 Bodenheim
Internet: www.herdt.com
E-Mail: info@herdt.com

© HERDT-Verlag für Bildungsmedien GmbH, Bodenheim

Alle Rechte vorbehalten. Kein Teil des Werkes darf in irgendeiner Form (Druck, Fotokopie, Mikrofilm oder einem
anderen Verfahren) ohne schriftliche Genehmigung des Verlags reproduziert oder unter Verwendung elektronischer
Systeme verarbeitet, vervielfältigt oder verbreitet werden.

Dieses Buch wurde mit großer Sorgfalt erstellt und geprüft. Trotzdem können Fehler nicht vollkommen ausgeschlossen
werden. Verlag, Herausgeber und Autoren können für fehlerhafte Angaben und deren Folgen weder eine juristische
Verantwortung noch irgendeine Haftung übernehmen.

Wenn nicht explizit an anderer Stelle des Werkes aufgeführt, liegen die Copyrights an allen Screenshots beim HERDT-
Verlag. Sollte es trotz intensiver Recherche nicht gelungen sein, alle weiteren Rechteinhaber der verwendeten
Quellen und Abbildungen zu finden, bitten wir um kurze Nachricht an die Redaktion.

Die in diesem Buch und in den abgebildeten bzw. zum Download angebotenen Dateien genannten Personen und
Organisationen, Adress- und Telekommunikationsangaben, Bankverbindungen etc. sind frei erfunden. Eventuelle
Übereinstimmungen oder Ähnlichkeiten sind unbeabsichtigt und rein zufällig.

Die Bildungsmedien des HERDT-Verlags enthalten Verweise auf Webseiten Dritter. Diese Webseiten unterliegen der
Haftung der jeweiligen Betreiber, wir haben keinerlei Einfluss auf die Gestaltung und die Inhalte dieser Webseiten.
Bei der Bucherstellung haben wir die fremden Inhalte daraufhin überprüft, ob etwaige Rechtsverstöße bestehen.
Zu diesem Zeitpunkt waren keine Rechtsverstöße ersichtlich. Wir werden bei Kenntnis von Rechtsverstößen jedoch
umgehend die entsprechenden Internetadressen aus dem Buch entfernen.

Die in den Bildungsmedien des HERDT-Verlags vorhandenen Internetadressen, Screenshots, Bezeichnungen bzw.
Beschreibungen und Funktionen waren zum Zeitpunkt der Erstellung der jeweiligen Produkte aktuell und gültig. Sollten
Sie die Webseiten nicht mehr unter den angegebenen Adressen finden, sind diese eventuell inzwischen komplett aus dem
Internet genommen worden oder unter einer neuen Adresse zu finden. Sollten im vorliegenden Produkt vorhandene
Screenshots, Bezeichnungen bzw. Beschreibungen und Funktionen nicht mehr der beschriebenen Software entsprechen,
hat der Hersteller der jeweiligen Software nach Drucklegung Änderungen vorgenommen oder vorhandene Funktionen
geändert oder entfernt.

Schulversion
Schnellübersichten
SQL – Grundlagen und Datenbankdesign

5 Datenbanken 2
6 Tabellen erstellen und verwalten 3
7 Daten einfügen, aktualisieren, löschen 4
8 Einfache Datenabfragen 5
9 Schlüsselfelder und Indizes 6
11 Datenabfragen für mehrere Tabellen 7
12 Sichten 8
13 Cursor 9
14 Zugriffsrechte und Benutzer verwalten 10
15 Transaktionsverwaltung 11
16 Stored Procedures 12
17 Trigger 13
SQL – Grundlagen und Datenbankdesign: Schnellübersicht

5 Datenbanken

Sie möchten …
eine Datenbank erstellen CREATE DATABASE datenbankname;
eine Datenbank löschen DROP DATABASE datenbankname;
die aktuelle Datenbank in MariaDB USE datenbankname;
wechseln
die aktuelle Datenbank in PostgreSQL \c datenbankname;
wechseln

2 © HERDT-Verlag
SQL – Grundlagen und Datenbankdesign: Schnellübersicht

6 Tabellen erstellen und verwalten

Sie möchten …
eine Tabelle erstellen CREATE TABLE tabellenname
(datenfelddefinition);
die Eingabe eines Werts für ein Datenfeld NOT NULL
erzwingen/NULL-Wert verhindern
einen Standardwert festlegen DEFAULT wert
eine Gültigkeitsbedingung definieren CONSTRAINT name CHECK (bedingung)
einen Primärschlüssel definieren PRIMARY KEY (datenfeld)
die Werte in einem Feld automatisch AUTO_INCREMENT (MariaDB) bzw.
erhöhen lassen SERIAL (PostgreSQL)

eine Tabelle ändern ALTER TABLE tabellenname;


eine Tabelle löschen DROP TABLE tabellenname;
eine Domäne erstellen CREATE DOMAIN domänenname;
eine Domäne ändern ALTER DOMAIN domänenname;
eine Domäne löschen DROP DOMAIN domänenname;
einen Datentyp ändern CAST (Wert AS Datentyp)

© HERDT-Verlag 3
SQL – Grundlagen und Datenbankdesign: Schnellübersicht

7 Daten einfügen, aktualisieren, löschen

Sie möchten …
einen Datensatz einfügen INSERT INTO tabellenname (datenfeldliste)
VALUES(werteliste);
eine einfache Datenabfrage SELECT * FROM tabellenname;
ausführen, die alle
Datensätze einer Tabelle
liefert
mehrere Datensätze mit INSERT INTO tabellenname1 (datenfelder)
einer Unterabfrage einfügen SELECT datenfelder FROM tabellenname2
WHERE bedingung;
Datensätze aktualisieren
(MariaDB) UPDATE tabellenname SET feld = wert,.
WHERE bedingung;
(PostgreSQL) UPDATE [ONLY] tabellenname
SET feld = wert, WHERE bedingung;
Datensätze bedingt
einfügen/aktualisieren
(MariaDB) INSERT INTO tabellenname (datenfeldliste)
VALUES(werteliste) ON DUPLICATE KEY
UPDATE datenfeld = wert
(PostgreSQL) INSERT INTO tabellenname (datenfeldliste)
VALUES (werteliste)
ON CONFLICT DO NOTHING | datenfeld DO
UPDATE SET datenfeld = wert;
Datensätze löschen
(MariaDB) DELETE FROM tabellenname WHERE bedingung;
(PostgreSQL) DELETE FROM [ONLY] tabellenname
WHERE bedingung;

4 © HERDT-Verlag
SQL – Grundlagen und Datenbankdesign: Schnellübersicht

8 Einfache Datenabfragen

Sie möchten …
eine einfache Datenabfrage SELECT * FROM Tabellenname;
ausführen
eine Suchbedingung SELECT * FROM Tabellenname WHERE Bedingung;
definieren
einen Mustervergleich SELECT ... WHERE Datenfeld LIKE "Muster";
durchführen
auf einen Wertebereich SELECT ... WHERE Datenfeld
prüfen BETWEEN Untergrenze AND Obergrenze;
auf Vorkommen in einer SELECT ... WHERE Datenfeld IN (Werteliste);
Werteliste prüfen
Bedingungen logisch SELECT ...
verknüpfen WHERE Bedingung1 AND|OR Bedingung2 ...;
eine Bedingung negieren SELECT ... WHERE NOT Bedingung;
Daten einer Abfrage SELECT ... ORDER BY Datenfeldname;
sortieren
Daten einer Abfrage SELECT ... GROUP BY Datenfeldname;
gruppieren
eine gruppierte Abfrage mit SELECT ... GROUP BY Datenfeldname
einer Bedingung definieren HAVING Bedingung;

© HERDT-Verlag 5
SQL – Grundlagen und Datenbankdesign: Schnellübersicht

9 Schlüsselfelder und Indizes

Sie möchten …
einen Primärschlüssel
erstellen
Spaltenconstraint CREATE TABLE (
datenfeld1 datentyp1 PRIMARY KEY ... );
Tabellenconstraint CREATE TABLE (...
PRIMARY KEY (datenfeldname));

einen Primärschlüssel ALTER TABLE tabellenname


nachträglich hinzufügen ADD PRIMARY KEY (datenfeldname);

einen Primärschlüssel ALTER TABLE tabellenname DROP PRIMARY KEY;


löschen
einen Sekundärschlüssel
erstellen
Spaltenconstraint CREATE TABLE (datenfeld1 datentyp1
[schlüsselname] UNIQUE... );
Tabellenconstraint CREATE TABLE (... UNIQUE [schlüsselname]
(datenfeldname,...));
einen Sekundärschlüssel ALTER TABLE tabellenname
nachträglich hinzufügen ADD UNIQUE schlüsselname (datenfeld,...);
einen Sekundärschlüssel ALTER TABLE tabellenname
löschen DROP INDEX schlüsselname;
einen Fremdschlüssel
erstellen
Spaltenconstraint CREATE TABLE (datenfeld1 datentyp1
REFERENCES tabellenname (datenfeldname)...);

Tabellenconstraint CREATE TABLE (...


FOREIGN KEY (datenfeldname)
REFERENCES tabellenname (datenfeldname));
referenzierte Datensätze FOREIGN KEY (datenfeldname)
beim Löschen einschließen REFERENCES tabellenname (datenfeldname)
ON DELETE CASCADE;
einen Fremdschlüssel ALTER TABLE tabellenname
nachträglich hinzufügen ADD FOREIGN KEY ...;

einen Index erstellen CREATE INDEX indexname ON tabellenname


(datenfeldname);
einen Index löschen DROP INDEX indexname [ON tabellenname];

6 © HERDT-Verlag
SQL – Grundlagen und Datenbankdesign: Schnellübersicht

11 Datenabfragen für mehrere Tabellen

Sie möchten …
einen Cross-Join erstellen SELECT datenfelder FROM tabelle1, tabell2;
SELECT datenfelder FROM tabelle1
CROSS JOIN tabell2;
einen Inner-Join bzw. SELECT datenfelder FROM tabelle1, tabelle2
Equi-Join erstellen WHERE tabelle1.datenfeld =
tabelle2.datenfeld;
SELECT datenfelder FROM tabelle1 INNER JOIN
tabelle2 ON tabelle1.datenfeld =
tabelle2.datenfeld;
einen Natural-Join SELECT datenfelder FROM tabelle1
erstellen NATURAL JOIN tabelle2;

einen Theta-Join erstellen SELECT datenfelder FROM tabelle1, tabelle2


WHERE tabelle1.datenfeld logOperator
tabelle2.datenfeld;
SELECT datenfelder FROM tabelle1 INNER JOIN
tabelle2 ON tabelle1.datenfeld logOperator
tabelle2.datenfeld;
logOperator: <, >, >=, <=, <>
einen Outer-Join von SELECT datenfelder FROM tabelle1
links erstellen LEFT OUTER JOIN tabelle2
ON tabelle1.datenfeld = tabelle2.datenfeld;
einen Outer-Join von SELECT datenfelder FROM tabelle1
rechts erstellen RIGHT OUTER JOIN tabelle2
ON tabelle1.datenfeld = tabelle2.datenfeld;
einen Ersatznamen für eine tabellenname AS ersatzname oder
Tabelle definieren tabellenname ersatzname
eine Tabelle mit sich selbst SELECT datenfelder FROM tabelle AS name1
verknüpfen (Self-Join) INNER JOIN tabelle AS name2
ON name1.datenfeld = name2.datenfeld
WHERE bedingung;
zwei Abfragen vereinigen SELECT-Abfrage1 UNION SELECT-Abfrage2
eine Schnittmenge SELECT datenfelder FROM tabelle1 INTERSECT
ausgeben SELECT datenfelder FROM tabelle2;

eine Differenzmenge SELECT datenfelder FROM tabelle1 EXCEPT


ausgeben SELECT datenfelder FROM tabelle2;

eine einfache Unter- SELECT datenfelder FROM tabelle1


abfrage verwenden WHERE datenfeld = (SELECT datenfeld FROM
tabelle2 WHERE datenfeld = Bedingung);
Daten in Abhängigkeit der SELECT datenfelder FROM tabelle1
Existenz bestimmter Werte WHERE EXISTS (SELECT * FROM tabelle2
in einer zweiten Tabelle WHERE tabelle2.datenfeld =
selektieren tabelle1.datenfeld);

© HERDT-Verlag 7
SQL – Grundlagen und Datenbankdesign: Schnellübersicht

12 Sichten

Sie möchten …
eine Sicht erstellen CREATE VIEW viewname AS SELECT ...;
eine Sicht mit Datenüberprüfung CREATE VIEW viewname AS SELECT ...
erstellen WITH CHECK OPTION;
Datenfelder in der Sicht benennen CREATE VIEW viewname (feldname1,...) AS
SELECT ...;
eine Sicht löschen DROP VIEW viewname;
Datensätze über eine Sicht INSERT INTO viewname ...;
einfügen
Datensätze über eine Sicht ändern UPDATE viewname SET ...;
Datensätze über eine Sicht DELETE FROM viewname ...;
löschen

8 © HERDT-Verlag
SQL – Grundlagen und Datenbankdesign: Schnellübersicht

13 Cursor

Sie möchten …
einen Cursor definieren DECLARE cursorname CURSOR FOR SELECT ...;
einen Cursor öffnen OPEN cursorname;
einen einzelnen Datensatz FETCH cursorname
abrufen INTO|USING :hostvariable1, …;

einen Cursor schließen CLOSE cursorname;

© HERDT-Verlag 9
SQL – Grundlagen und Datenbankdesign: Schnellübersicht

14 Zugriffsrechte und Benutzer verwalten

Sie möchten …
einen neuen Benutzer CREATE ROLE rollenname LOGIN
unter PostgreSQL anlegen [[WITH] option ( …)];

einen neuen Benutzer CREATE USER 'username'@'hostname'


unter MariaDB anlegen IDENTIFIED BY 'passwort';

einem Benutzer bestimmte GRANT rechteliste ON datenbankobjekt


Rechte gewähren TO benutzer;

einem Benutzer alle Rechte GRANT ALL ON datenbankobjekt TO benutzer;


gewähren
Benutzerrechte für einzelne GRANT benutzerrecht (datenfeldliste)
Datenfelder definieren ON ...;

die Weitergabe von Benutzer- GRANT rechteliste ON datenbankobjekt


rechten ermöglichen TO benutzer WITH GRANT OPTION;
Benutzerrechte entziehen REVOKE rechteliste ON datenbankobjekt
FROM benutzer;
alle Benutzerrechte entziehen REVOKE ALL ON datenbankobjekt
FROM benutzer;

10 © HERDT-Verlag
SQL – Grundlagen und Datenbankdesign: Schnellübersicht

15 Transaktionsverwaltung

Sie möchten …
eine Transaktion starten SET TRANSACTION ...;
eine Transaktion mit lesendem SET TRANSACTION READ WRITE ...;
und schreibendem Zugriff starten
eine Transaktion mit nur lesen- SET TRANSACTION READ ONLY ...;
dem Zugriff starten
eine einfache Transaktion in BEGIN;
MariaDB oder PostgreSQL starten
den Isolation Level der Trans- SET TRANSACTION ... ISOLATION LEVEL ...;
aktion festlegen
eine Transaktion abschließen und COMMIT ...;
die Änderungen dauerhaft in der
Datenbank speichern
eine Transaktion abschließen und ROLLBACK ...;
die Änderungen, die während der
Transaktion durchgeführt wurden,
verwerfen

© HERDT-Verlag 11
SQL – Grundlagen und Datenbankdesign: Schnellübersicht

16 Stored Procedures

Sie möchten …
eine Prozedur erstellen CREATE PROCEDURE prozedurname
(parameterliste)
BEGIN anweisungsblock
END
das Endekennzeichen festlegen DELIMITER endekennzeichen
einen Anweisungsblock bilden BEGIN
anweisung1;
...
END
eine Prozedur bearbeiten ALTER PROCEDURE prozedurname
(parameterliste)
BEGIN anweisungsblock
END
vorhandene Prozeduren anzeigen SHOW PROCEDURE STATUS;
Code einer Prozedur anzeigen SHOW CREATE PROCEDURE prozedurname;
eine Prozedur löschen DROP PROCEDURE prozedurname;
eine Variable innerhalb eines DECLARE variablenname datentyp;
Anweisungsblocks deklarieren
Anweisungen anhand einer IF (bedingung) THEN
Bedingung ausführen anweisungsblock1
ELSE
anweisungsblock2
END IF
eine ausführbare Prozedur starten CALL prozedurname (parameterliste);
eine selektierbare Prozedur starten SELECT ... FROM prozedurname
(parameterliste);

12 © HERDT-Verlag
SQL – Grundlagen und Datenbankdesign: Schnellübersicht

17 Trigger

Sie möchten …
einen Trigger mit MariaDB CREATE TRIGGER triggername { BEFORE | AFTER }
erstellen {INSERT|UPDATE|DELETE}
ON tabellenname FOR EACH ROW BEGIN
anweisungsblock
END;
einen Trigger mit CREATE TRIGGER triggername { BEFORE | AFTER }
PostgreSQL erstellen {INSERT|UPDATE|DELETE}
ON tabellenname FOR EACH ROW
EXECUTE PROCEDURE
funktion ( [ argument [, ...] ] )
auf einen alten Datenfeld- OLD.datenfeldname
inhalt zugreifen
auf einen neuen Datenfeld- NEW.datenfeldname
inhalt zugreifen
einen Trigger bearbeiten ALTER TRIGGER triggername [{BEFORE|AFTER}
{INSERT|UPDATE|DELETE}]
Die anschließende Syntax richtet sich nach dem jeweiligen
Datenbanksystem.
einen Trigger in MariaDB DROP TRIGGER [tabellenname] triggername
löschen
einen Trigger in DROP TRIGGER triggername
PostgreSQL löschen ON tabellenname [ CASCADE | RESTRICT ]

© HERDT-Verlag 13
INSYS MySQL / Datenbanken

MySQL / MariaDB & SQL-Befehle


5 Unterricht von der 2. bis zur 4. Klasse
Fachschule für Informationstechnologie

Seite 1 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken

Inhaltsverzeichnis
1 MySQL / MariaDB – Befehle..............................................................................................4

1.1 Installation und in Betrieb nehmen..............................................................................4

1.1.1 Installation:.......................................................................................................... 4

1.1.2 Inbetriebnahme:..................................................................................................4

1.2 Create User................................................................................................................ 4

1.3 Benutzer in MySQL erstellen......................................................................................4

1.3.1 Benutzer anzeigen lassen...................................................................................5

1.4 Benutzer in MySQL Rechte zuweisen.........................................................................5

1.4.1 Weitere Privilegien in MySQL..............................................................................6

1.5 Benutzer in MySQL löschen........................................................................................7

1.6 Anzeigen von Objekten...............................................................................................7

1.7 Fazit............................................................................................................................ 8

2 SQL - Befehle..................................................................................................................... 9

2.1 SQL-Dateiskript aufrufen............................................................................................9

2.2 CREATE DATABASE..................................................................................................9

2.3 DROP DATABASE....................................................................................................10

2.4 Tabellen.................................................................................................................... 10

2.4.1 Spaltentypen und ihre Attribute.........................................................................10

2.4.2 Spaltennamen...................................................................................................11

2.4.2.1 Erklärung für (m, n) bei Datentyp-Beschreibung:.......................................11

2.4.3 Datentypen........................................................................................................11

2.4.3.1 Allgemeine Attribute...................................................................................11

2.4.3.2 Numerische Datentypen.............................................................................11

2.4.3.3 Zeichenketten (Strings)..............................................................................12

2.4.3.4 Binärdaten BLOB = Binary Large Object...................................................12

Seite 2 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
2.4.3.5 Datum / Zeit...............................................................................................12

2.4.3.6 Aufzählungen.............................................................................................13

2.4.4 Tabellen erzeugen.............................................................................................13

2.4.4.1 Beispiel 1...................................................................................................14

2.4.4.2 Beispiel 2...................................................................................................14

2.4.5 Tabelleneigenschaften anzeigen.......................................................................14

2.4.6 Tabelle löschen..................................................................................................15

2.4.7 Tabelleneigenschaften ändern...........................................................................15

2.4.8 Index erzeugen.................................................................................................17

2.4.9 Tabelleneigenschaften – weitere Beispiele........................................................17

3 Benutzer verwalten in MySQL/MariaDB...........................................................................18

4 Externer Zugriff in MySQL/MariaDB.................................................................................19

4.1 Externen MySQL Zugriff in der my.cnf aktivieren:.....................................................19

4.2 User für den externen Zugriff auf die MySQL Datenbank erlauben...........................19

4.3 MySQL Zugriff für bestimmte IP Adressen erlauben (MySQL IP Restriction) via ipta-
bles................................................................................................................................... 20

4.3.1 Informationen:...................................................................................................20

10

Seite 3 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken

1 MySQL / MariaDB – Befehle

1.1 Installation und in Betrieb nehmen

1.1.1 Installation:
Die Installation auf den einzelnen Plattformen ist sehr einfach und im Internet genau defi-
15 niert. Unter Windows verwenden wir XAMP (alte Bezeichnung „WAMP“). Unter Linux gibt es
oft ein LAMP-Paket, anderenfalls installiert man die Pakete apache2, mysql oder mariadb
und php.

1.1.2 Inbetriebnahme:
Unter Windows öffnen wir das Programm XAMP und starten die Dienste Apache und My-
20 SQL. Daraufhin öffnen wir die integrierte Shell und können als root ohne Passwort einstei-
gen.

Unter Linux laufen die Dienste Apache und MySQL standardmäßig. Der Einstieg erfolgt
über mysql so wie unter Windows, aber mit dem Parameter -p für ein Passwort, das schon
beim Installieren festgelegt wurde.

25 Bei MariaDB unter Linux beginnt der Einstieg folgendermaßen:

sudo mysql -u root (Systempasswort eingeben

update mysql.user set password=password('geheim') where user='root';

flush privileges; (Aktualisiert die Berechtigungen)

select user,host,password,plugin from mysql.user;


30 /** Ergebnis:

+------------+-----------+-------------------------------------------+-------------+

| user       | host      | password                                  | plugin      |

+------------+-----------+-------------------------------------------+-------------+

| root       | localhost | *34814BF1AAA36BCF2C113CDB7C3B69FF72CF1617 | unix_socket |

35 | phpmyadmin | localhost | *34814BF1AAA36BCF2C113CDB7C3B69FF72CF1617 |             |

+------------+-----------+-------------------------------------------+-------------+

Inhalt bei Plugin löschen!


update mysql.user set plugin='' where user='root';
Initialisierung der Berechtigungseinträge
40 flush privileges;

Seite 4 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
Installation

1.2 Create User


Wie erstelle ich einen Benutzer und weise diesem Rechte zu?
45 MySQL und MariaDB sind die wohl populärsten OpenSource Datenbank Management Sys-
teme. Mithilfe dieser Datenbanken kannst du dynamisch große Mengen an Daten speichern
und verwalten. Ein sehr fein unterteiltes Rechtesytem hilft dir dabei, die Zugriffsberechtigun-
gen von unterschiedlichen Benutzern zu steuern.

In diesem Artikel gehen wir die einzelnen Schritte durch, die du brauchst um einen neuen
50 Benutzer zu erstellen und ihm Rechte für eine Datenbank zu geben. Zwar behandeln wir in
diesem Artikel MySQL, aber es lassen sich alle Kommandos 1:1 auf MariaDB übertragen.

1.3 Benutzer in MySQL erstellen


Zunächst startest du die MySQL Konsole. Dazu öffnest du ein Terminal und verbindest dich
auf dem Server mit deiner MySQL Installation. Wir benutzen den Benutzer ‚root‘ um MySQL
55 aufzurufen. Hast du den Benutzer mit einem Kennwort versehen, benutze folgendes Kom-
mando:
mysql -u root -p

Du wirst dann nach einem Kennwort gefragt. Hast du kein Kennwort gesetzt, verzichtest du
einfach auf den Parameter ‚-p‘ und du wirst nicht mehr nach einem Kennwort gefragt. Nach
60 der Eingabe solltest du den MySQL Prompt sehen.

Abb 1: MySQL
Prompt

Seite 5 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
Das Erstellen eines neuen Benutzers ist vergleichsweise einfach. Ersetze in dem nachfol-
gendem Befehl einfach die Werte „benutzer“ und „passwort“:
CREATE USER 'benutzer'@'localhost' IDENTIFIED BY 'passwort';

65 Damit hast du einen Benutzer erstellt. Dieser hat allerdings noch keine Berechtigungen auf
irgendeine Datenbank oder Tabelle.

1.3.1 Benutzer anzeigen lassen


Solltest du mal nicht wissen wie viele Benutzer du hast oder welche Namen schon vergeben
sind, kannst du dir mit dem Befehl:
70 select * from mysql.user;
alle Benutzer anzeigen lassen.

1.4 Benutzer in MySQL Rechte zuweisen


Zu Testzwecken erstellen wir erstmal eine neue Datenbank, auf die der Benutzer später zu-
greifen darf.
75 CREATE DATABASE meineTestDB;

Wenn du mehr über das erstellen einer Datenbak mithilfe von MySQL erfahren willst, könnte
unser Artikel MySQL Datenbank erstellen und löschen interessant für dich sein.

Jetzt kannst du deinem neuen Benutzer Rechte zuweisen. Wir haben ihm erst einmal alle
Rechte zugewiesen.

80 Ersetze wieder den Wert „benutzer“ durch deinen Benutzernamen:


GRANT ALL PRIVILEGES ON meineDB . * TO 'benutzer'@'localhost';

Kurz zur Erklärung des Kommandos:

• GRANT ALL PRIVILEGES : Es werden alle verfügbaren Privilegien (Rechte) zugewie-


sen. Es gibt auch eingeschränkte Privilegien, dazu später mehr.

85 • ON ‚meineDB‘ . * : Hiermit wird genauer spezifiziert, auf welche Bereiche die Rechte
zugewiesen werden sollen. Möglich ist auch ‚* . *‘, um einem Benutzer zum Beispiel
alle Rechte einzuräumen oder die Einschränkung auf einzelne Tabellen einer Daten-
bank, wie z.B. “meineDB‘ . ‚meineTabelle’’.

• TO ‚benutzer’@’localhost‘ : Hierbei handelt es sich um den Benutzer, der diese Rech-


90 te erhalten soll.

Seite 6 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
MySQL hält die Rechte normalerweise im Speicher vor, damit nicht jedes Mal, wenn sich ein
Benutzer an der Datenbank anmeldet (was im Zweifel sehr oft sein kann), langsame I/O
Operationen durchgeführt werden müssen. Um diese Kopie der Privilegien im Arbeitsspei-
cher zu updaten, solltest du nach jeder Änderung einmal das Kommando:
95 FLUSH PRIVILEGES;

ausführen. Vergisst du das Kommando, kann es sein das du dich mit den neuen (oder geän-
derten) Zugangsdaten noch nicht an dem Datenbankserver anmelden kannst.

1.4.1 Weitere Privilegien in MySQL


Neben dem oben genutzten ‚ALL PRIVILEGES‘ kannst du einem Benutzer auch andere Sets
100 an Privilegien in deinem MySQL Server zuweisen. Da sind beispielsweise folgende:

• ALL PRIVILEGES : Ein Wildcard für alle Rechte auf das gewählte Datenbankobjekt,
mit einem *.* auf alle Datenbanken.

• CREATE : Erlaubt einem Benutzer, neue Datenbanken zu erstellen

105 • DROP : Erlaubt einem Benutzer, Datenbanken zu löschen

• DELETE : Erlaubt einem Benutzer, einzelne Zeilen in einer Tabelle zu löschen

• INSERT : Erlaubt einem Benutzer, neue Zeilen in eine Tabelle zu schreiben

• SELECT : Leseberechtigungen auf eine Datenbank oder Tabelle

• UPDATE : Erlaubnis, eine Zeile zu aktualisieren

110 • GRANT OPTION : Erlaubt einem Benutzer, die Rechte anderer Benutzer zu setzen
oder zu widerrufen

Die genaue Syntax ist in der Dokumentation von MySQL sehr gut beschrieben. Du findest sie
hier (https://dev.mysql.com/doc/refman/5.5/en/grant.html).

Solltest du mal die Rechte deiner Benutzer anzeigen lassen wollen, kannst du diesen Befehl
115 benutzen.
SHOW GRANTS FOR 'benutzer'@'localhost';

1.5 Benutzer in MySQL löschen


Einen Benutzer kannst du genauso einfach löschen, wie anlegen. Nutze dazu folgenden Be-
fehl (wie immer den Wert “benutzer” durch deinen Benutzernamen ersetzen):
120 DROP USER 'benutzer'@'localhost';

Seite 7 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
Versichere dich, dass du die Privilegien neu geladen hast, nach jeder Änderung an den
Rechtetabellen. Zur Erinnerung:
FLUSH PRIVILEGES;

1.6 Anzeigen von Objekten


125 Zum Anzeigen von Datenbanken verwenden wir den Befehl SHOW:

mysql> SHOW DATABASES;


+--------------------+

| Database |

+--------------------+

130 | information_schema |

| fb_schueler |

| mysql |

| performance_schema |

| sys |

135 +--------------------+

Nun wählen wir eine Datenbank aus, zum Beispiel fb_schueler, um damit zu arbeiten. Der
Befehl dafür lautet: USE

mysql> USE db_schueler;

Jetzt können wir uns die Tabellen der Datenbank fb_schueler ansehen:

140 +-----------------------+

| Tables_in_fb_schueler |

+-----------------------+

| spielorte |

| teams |

145 +-----------------------+

Um die Struktur einer Tabelle anzusehen brauchen wir noch einen Befehl der uns die Struk-
tur beschreibt. Dafür kann der Begriff DESCRIBE oder die Kurzform DESC verwendet wer-
den

mysql> DESCRIBE teams;

150 +-------------+-------------+------+-----+---------+----------------+

| Field | Type | Null | Key | Default | Extra |

Seite 8 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
+-------------+-------------+------+-----+---------+----------------+

| idx | int(11) | NO | PRI | NULL | auto_increment |

| team | varchar(45) | NO | | NULL | |

155 | spiele | int(11) | YES | | NULL | |

| siege | int(11) | YES | | NULL | |

| remis | int(11) | YES | | NULL | |

| niederlagen | int(11) | YES | | NULL | |

| torep | int(11) | YES | | NULL | |

160 | torem | int(11) | YES | | NULL | |

| tordiff | int(11) | YES | | NULL | |

| punkte | int(11) | YES | | NULL | |

| trikot1 | varchar(45) | YES | | NULL | |

| trikot2 | varchar(45) | YES | | NULL | |

165 | sponsor | varchar(45) | YES | | NULL | |

+-------------+-------------+------+-----+---------+----------------+

1.7 Fazit
In MySQL und MariaDB kann man schnell und einfach neue Benutzer anlegen und ihnen
Rechte zuweisen. Wichtig ist, dass du den Überblick über die Rechte deiner Benutzer be-
170 hälst. Benutzern alle Rechte zuzuweisen ist eher unüblich. Stattdessen solltest du versuchen
Benutzern nur die Rechte zuzuweisen, die sie wirklich brauchen.

Seite 9 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken

2 SQL - Befehle
CREATE DATABASE.........................................Erzeugen einer neuen Datenbank

175 CREATE TABLE...............................................Erzeugen einer neuen Tabelle

CREATE INDEX...............................................Erzeugen eines neuen Index für die Tabelle

ALTER TABLE.................................................Ändern von Spalten-Attributen einer Tabelle

ADD..................................................................Spalte, Index oder Key hinzufügen

CHANGE............................................................Spaltennamen und/oder Spaltentyp ändern

180 MODIFY............................................................Spaltentyp ändern

DROP................................................................Spalte, Index oder Key entfernen

RENAME............................................................Tabellenname ändern

RENAME TABLE...............................................Tabelle umbenennen

DROP DATABASE.............................................Datenbank löschen

185 DROP TABLE...................................................Tabelle löschen

DROP INDEX...................................................Tabellenindex löschen

2.1 SQL-Dateiskript aufrufen


Der Aufruf der Datei folgt über zwei Möglichkeiten:

mysql> source NeueDatenbank.sql;

190 oder

mysql> \. NeueDatenbank.sql;

falls die Scriptdatei nicht im mysql-Verzeichnis liegt, dann muss der gesamte Verzeichnispfad
angegeben werden.

2.2 CREATE DATABASE


195 CREATE DATABASE datenbankname;

Erzeugt eine neue Datenbank mit Namen datenbankname

Falls die Datenbank bereits existiert, dann wird eine Fehlermeldung ausgegeben.

Seite 10 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
Soll trotzdem eine neue Datenbank erzeugt werden, dann ist die bestehende DB vorher zu
löschen (siehe Befehl DROP)

200 Beispiel:

CREATE DATABASE Lagerbestand;

Es wird ein Verzeichnis ...mysql\data\Lagerbestand mit folgenden Dateien angelegt:

tabelle.frm

Beschreibung von Spalten und Typen


205 tabelle.MYD enthält Tabellendaten
tabelle.MYI enthält Tabellenindizes

2.3 DROP DATABASE


DROP DATABASE datenbankname; Löscht die angegebene Datenbank

Falls die Datenbank nicht existiert, dann wird eine Fehlermeldung ausgegeben.

210 Soll die Fehlermeldung unterdrückt werden, dann lautet der Befehl:

DROP DATABASE IF EXISTS datenbankname;

Beispiel:

DROP DATABASE IF EXISTS Lagerbestand;

Falls die Datenbank Lagerbestand existiert, dann wird sie gelöscht, andernfalls passiert
215 nichts.

2.4 Tabellen

2.4.1 Spaltentypen und ihre Attribute


Ehe Daten in einer Tabelle gespeichert werden können, muss deren Struktur festgelegt wer-
den.

220 Merkmale für die Struktur:


► Spaltennamen
► Datentypen
► Spaltenattribute
MySQL unterscheidet zwischen:
225 ► numerisch
► Text

Seite 11 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
► Datum/Zeit

2.4.2 Spaltennamen
Diese sollten den Inhalt einer Spalte charakterisieren oder eindeutige Abkürzungen enthal-
230 ten; z.B:
► vorname
► plz (für Postleitzahl)
► nettogewicht
Namen sollten nicht durch Leerzeichen getrennt sein (erleichtert das Editieren)

235 2.4.2.1 Erklärung für (m, n) bei Datentyp-Beschreibung:


m Anzahl Ganzzahlstellen;

schränkt nicht die Speichergröße ein, sondern dient zur Angabe der maximalen Anzeigegrö-
ße;

n Anzal der Nachkommastellen - die Angabe ist optional; bei Fehlen wird ein Standardwert
240 verwendet

2.4.3 Datentypen

2.4.3.1 Allgemeine Attribute


NULL die Spalte darf den Wert NULL enthalten (ist Default) NULL
bedeutet: keine Angabe (Achtung: NULL != 0)
245 NOT NULL die Spalte darf nicht den Wert NULL enthalten
es muss ein Wert enthalten sein;
DEFULT x der Wert x wird eingetragen, wenn beim INSERT kein Wert
angegeben wird;
AUTO_INREMENT erzeugt automatisch die nächst-höhere Zahl dieser Spalte;
250 nur bei PRIMARY KEY oder UNIQUE;
UNSIGNED es sind keine negativen Werte zugelassen
ZEROFILL anzeigen von führenden Nullen z.B: SMALLINT(4)
Wert 3 wird angezeigt mit 0003
PRIMARY KEY Festlegung als eindeutiger Schlüsselbegriff

255 2.4.3.2 Numerische Datentypen


Typ Wertebereich Attribut
TINYINT(m) -127 bis +127
0 bis 255 wenn UNSIGNED
SMALLINT(m) -32768 bis 32767
260 0 bis 65535 wenn UNSIGNED

Seite 12 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
MEDIUMINT(m) -8388608 bis 8388607
0 bis 16777215 wenn UNSIGNED
INT(m), INTEGER(m) -2147683648 bis +2147683647
0 bis 4294967295 wenn UNSIGNED
265 BIGINT(m) -2 63 bis +2 63
0 bis 2 64 -1 wenn UNSIGNED
FLOAT(m,n) Gleitpunkt, einfache Genauigkeit
DOUBLE(m,n) Gleitpunkt, doppelte Genauigkeit
DECIMAL(m,n) Gleitpunkt mit Speicherung als Zeichen;
270 m und n müsssen angegeben werden
NUMERIC(m,n) ... wie DECIMAL ....

2.4.3.3 Zeichenketten (Strings)


Typ maximale Länge Bemerkung
CHAR(m) 255 fixe Länge m
275 es werden m Stellen belegt, auch wenn der String kürzer ist
VARCHAR(m) 255 variable Länge max m
TINYTEXT 255 variable Länge
TEXT 2^16 -1 (=65.535) variable Länge
MEDIUMTEXT 2 24 -1 (=16.777.215) variable Länge
280 LONGTEXT 2 32 -1 (=4.294.967.295) variable Länge

2.4.3.4 Binärdaten BLOB = Binary Large Object


Dienen zur Speicherung von binären Objekten, wie z.B. Bilddateien.

Vorteil: Die Bilddaten werden gemeinsam mit der Datenbank verwaltet (z.B. bei Backup)

Nachteil: Zugriff zur DB wird langsamer; es ist kein Zugriff auf Teile eines BLOB-Typs mög-
285 lich;
Typ maximale Länge Bemerkung
TINYBLOB 255 variable Länge
BLOB 2^16 -1 (=65.535) 64 kB variable Länge
MEDIUMBLOB 2^24 -1 (=16.777.215) 16 MB variable Länge
290 LONGBLOB 2^32 -1 (=4.294.967.295) 4 GB variable Länge

2.4.3.5 Datum / Zeit


Dienen zur Speicherung von Datums- und Zeitangaben. Es erfolgt keine Prüfung auf voll-
stängige Gültigkeit der Angaben (0 bis 12 für Monat und 0 bis 31 für Tag ist erlaubt)
Typ Bereich Format
295 DATE 1000-01-01 bis 9999-12-31 '2003-12-31'
TIME -838:59:59 bis +838:59:59 '23:59:59'
DATETIME Kombination aus DATE u. TIME '2003-12-31 23:59:59'
YEAR 1900 bis 2155 '2003'

Seite 13 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
TIMESTAMP(m) Zeiten zw. 1970 und 2038 20031231235959
300 Aktualisierung erfolgt durch MySQL bei jeder Datensatzän
derung (User sollte diesen Wert nicht ändern)

2.4.3.6 Aufzählungen
Dienen zur Definition von Begriffen einer Liste. Jeder Eintrag der Liste erhält eine Nummer.
Bei der Spaltendefinition wird die Liste festgelegt, beim Insert von Daten kann nur ein Begriff
305 aus der Liste angegeben werden und dessen Nummer wird gespeichert.

Typ Bemerkung

ENUM Auswahl einer aus max. 65535 Zeichenketten


CREATE TABLE test_enum (farbe ENUM ('rot','gelb','blau','weiss'));
INSERT test_enum VALUES ('rot');
310 SELECT * FROM test_enum WHERE farbe='rot';
SET Kombination von maximal 64 Zeichenketten
CREATE TABLE test_set (font SET ('bold',italic','underlined'));
INSERT test_set VALUES ('bold,italic');

2.4.4 Tabellen erzeugen


315 CREATE TABLE tabellenname (. . . .);

Die Tabelle tabellenname wird neu angelegt mit den in der Klammer angegebenen Spalten-
namen und deren Eigenschaften.

Syntax:
CREATE TABLE [IF NOT EXISTS] tabellenname
320 ( spaltenname1 spaltentyp1 attribut1-1 ...... attribut1-n,
spaltenname2 spaltentyp2 attribut2-1 ...... attribut2-n,
. . . . . );
Attribute:
NOT NULL / NULL

DEFAULT nnn // nnn ein Defaultwert


AUTO_INCREMENT

PRIMARY KEY

COMMENT = 'Kommentartext'

IF NOT EXISTS: Tabelle wird neu angelegt, wenn sie nicht existiert;

325 ansonsten passiert nichts.

falls Angabe fehlt → Fehlermeldung, wenn Tabelle existiert;

Seite 14 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
2.4.4.1 Beispiel 1
CREATE TABLE Mitarbeiter (
vorname VARCHAR(20),
330 nachname VARCHAR(20) NOT NULL,
personalNr INT(6) NOT NULL PRIMARY KEY AUTO_INCREMENT,
gehalt FLOAT(4,2) DEFAULT 0.0,
geschlecht ENUM ('w','m')
);
335 • Die Tabelle Mitarbeiter enthält 5 Spalten.
• Falls die Tabelle bereits existiert, wird eine Fehlermeldung ausgegeben.
• Personalnummer ist ein eindeutiger Schlüsselbegriff und wird bei jedem neuen Ein-
trag automatisch um 1 hochgezählt.
• Gehalt wird mit dem Wert 0 vorbelegt.
340 • Für Geschlecht können nur Werte 'm' oder 'w' eingetragen werden.

2.4.4.2 Beispiel 2
CREATE TABLE Bestellung (
name CHAR(30) NOT NULL,
adresse CHAR(50) NOT NULL,
345 menu SET
('Aperitif','Vorspeise','Hauptspeise','Nachspeise'),
PRIMARY KEY (name, adresse)
);
• Die Tabelle Bestellung enthält 3 Spalten.
350 • Für name und adresse werden 30 bzw. 50 Stellen belegt unabhängig davon, wie lan-
ge die Werte tatsächlich sind.
• Für menu können 1 oder mehrere Einträge der Liste gewählt werden.
• Als eindeutiger Schlüssel dient die Kombination aus den Spalten name und adresse.
Hinweis: wenn mehr als 1 Spalte den Primary Key bilden, dann ist eine separate Zeile zu
355 dessen Definition erforderlich (siehe Beispiel).

2.4.5 Tabelleneigenschaften anzeigen


DESC tabellenname;

Um die Eigenschaften einer vorhandenen Tabelle anzuzeigen.

Beispiel:

Seite 15 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken

360 2.4.6 Tabelle löschen


DROP TABLE [IF EXISTS] tabellenname;

Löscht die angegebene Tabelle.

IF EXISTS unterdrückt Fehlermeldungen, wenn die Tabelle nicht vorhanden ist.

Beispiele:

365 Fehler, da Tabelle Abteilungen nicht vorhanden ist

Keine Fehlermeldung wegen IF EXISTS (aber Warnung)

Keine Fehlermeldung da Tabelle vorhanden

2.4.7 Tabelleneigenschaften ändern


ALTER TABLE tabellenname
370 ADD / CHANGE / DROP / MODIFY / RENAME ;

Neue Spalte in Tabelle hinzufügen:


ALTER TABLE Mitarbeiter ADD geburtsDatum DATE NOT NULL;

neue Tabel-
375 leneigen-
schaften

Seite 16 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
Eigenschaft bestehender Spalte in Tabelle ändern:
380 ALTER TABLE Mitarbeiter DROP vorname;

neue Tabel-
leneigen-
schaften

385
Spaltentyp ändern:
ALTER TABLE Mitarbeiter MODIFY gehalt SMALLINT;

neue Tabel-
390 leneigen-
schaften

Spaltenname und Typ ändern:


ALTER TABLE Mitarbeiter CHANGE nachname name TEXT;

395
neue Tabel-
leneigen-
schaften

400 Tabellenname ändern:


ALTER TABLE Mitarbeiter RENAME Angestellte;

Tabellen vorher Tabellen nachher

Seite 17 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
Primary Key löschen und für andere Spalte neu definieren:
ALTER TABLE Angestellte DROP pesonalNr;
405 ALTER TABLE Angestellte ADD PRIMARY KEY (name(10));

neue Tabel-
leneigen-
schaften

410

2.4.8 Index erzeugen


CREATE INDEX indexname ON tabellenname (spaltenname);

Ein Index auf einer bestimmten Tabellenspalte erhöht die Zugriffsperformance beim Lesen –
allerdings werden Schreiboperationen langsamer.

415 Syntax:
CREATE [UNIQUE|FULLTEXT] INDEX indexname
ON tabellenname (spaltenname1, spaltenname2,....);
UNIQUE nur eindeutige Spaltenwerte werden aufgenommen

FULLTEXT für alle Wörter eines Textes wird ein Index angelegt

420 Erlaubt für Spalten mit NOT NULL und PRIMARY KEY oder UNIQUE

Beispiel:

neue Tabel-
leneigen-
schaften

425

2.4.9 Tabelleneigenschaften – weitere Beispiele


Die Tabelle angestellte wird für die nachfolgenden Beispiele auf bestimmte Ausgangsstruktur
gebracht:
ALTER TABLE angestellte DROP PRIMARY KEY;
430 ALTER TABLE angestellte CHANGE name nachname VARCHAR(20) NOT NULL;
ALTER TABLE angestellte ADD vorname VARCHAR(15) FIRST;
ALTER TABLE angestellte MODIFY gehalt MEDIUMINT(6);
ALTER TABLE angestellte MODIFY geschlecht ENUM('w','m') NOT NULL
AUTO_INCREMENT;

Seite 18 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
435 ALTER TABLE angestellte ADD personalNr INT(6) PRIMARY KEY FIRST;
CREATE INDEX geburtsDatum ON angestellte (geburtsDatum);
ALTER TABLE angestellte RENAME mitarbeiter;

3 Benutzer verwalten in MySQL/MariaDB

Seite 19 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken

4 Externer Zugriff in MySQL/MariaDB

4.1 Externen MySQL Zugriff in der my.cnf aktivieren:


Der MySQL Server lauscht standardmäßig nur auf der localhost IP Adresse (127.0.0.1). Fol-
gender Eintrag in der my.cnf ist dafür verantwortlich (/etc/my.cnf oder /etc/mysql/my.cnf):
445 1 bind-address = 127.0.0.1

Um nun auch von anderen Rechnern auf den MySQL Server zugreifen zu können, wird der
„bind-address“ Eintrag geändert. 0.0.0.0 weist an, dass der MySQL Server auf alle, für ihn
verfügbaren, IP Adressen lauscht:
1 bind-address = 0.0.0.0

450 Mit „bind-address = 192.168.200.1“ kann der Server zB. auch konfiguriert werden, dass er
nur über eine bestimmte IP Adresse verfügbar ist.

MySQL Server neu starten, damit die Konfiguration übernommen wird:


1 /etc/init.d/mysql restart

Verbindung überprüfen (mit einem telnet auf die IP Adresse/Hostname des Server und den
455 MySQL Port 3306 kann überprüft werden ob der MySQL Server korrekt antwortet):
1 telnet 192.168.200.1 3306

4.2 User für den externen Zugriff auf die MySQL Da-
tenbank erlauben
Der MySQL Server lässt nun grundsätzlich Verbindungen von anderen (externen) IP Adres-
460 sen zu, aber die Datenbank User müssen noch die entsprechende Berechtigung erhalten.

Auf die MySQL Konsole verbinden:


1 mysql -u root -p

folgende Befehle geben dem User (dein_user) die Berechtigung von jedem Host aus (%) auf
die Datenbank zuzugreifen:

465 Neuen MySQL Benutzer anlegen, damit externer Zugriff besteht (hier wird ebenfalls das „%“
statt „localhost“ verwendet:
1 create user 'dein_user'@'%';

Seite 20 / 21 H.Peceny / M.Schmida 13.02.19


INSYS MySQL / Datenbanken
4.3 MySQL Zugriff für bestimmte IP Adressen erlau-
ben (MySQL IP Restriction) via iptables
470 Den MySQL Zugriff kann man auch für bestimmte IP Adressen erlauben oder sperren. Hierzu
behelfen wir uns anhand der Linux Firewall iptables. Unter Debian und den meisten Linux
Distributionen ist iptables bereits vorinstalliert.

In folgender Regel wird definiert, dass auch der localhost weiterhin auf den MySQL Dienst
zugreifen darf:
475 1 iptables -A INPUT -i lo -p tcp --dport 3306 -j ACCEPT

Mit folgenden Regeln wird der Zugriff (Port 3306) für die IP Adressen 10.27.0.80 und
192.168.0.90 erlaubt und für alle anderen gesperrt:

Wer sich nun fragt warum beim Sperrbefehl der Einsatz von REJECT angewandt wird und
nicht von DROP: Das hat den Grund, dass mit dem REJECT die Verbindung schneller abge-
480 lehnt wird. Bei DROP wird die Verbindung abgelehnt und der Client muss auf einen Timeout
warten.

Die iptables Regeln müssen nun noch dauerhaft gespeichert werden, das sie sonst nach ei-
nem Reboot wieder vom System entfernt werden. Anleitung zu: Iptables dauerhaft speichern

Am einfachsten funktioniert das über das Programm „iptables-persistent“


485 1 apt-get install iptables-persistent

Bei der Installation wird gefragt ob die Regel gleich in die Konfigurationsdateien übernom-
men werden sollen. Das kann gleich gemacht werden. Ansonsten befinden sich die Configfi-
les unter /etc/iptables.

4.3.1 Informationen:
Kerninformationen

490 http://www.sysadminslife.com/linux/quicktipp-mysql-externer-zugriff-erlauben-bind-address/

http://www.huschi.net/12_123_de-mysql-fuer-externen-zugriff-konfigurieren.html

PHP spezifische Informationen

https://www.php-kurs.com/mysql-datenbank-verbindung-herstellen.htm

Seite 21 / 21 H.Peceny / M.Schmida 13.02.19


Datenbanken INSYS-DBS

Harald Peceny BEd

Schuljahr 2019/20
HTBLA-Traun
INSYS -DBS In diesem Dokument wird ein groben Überblick gegeben, worum es

im Gegenstand INSYS-DBS (Datenbanksysteme) geht. Im Fokus steht dabei das relationale


Datenbankmodell. Über andere DBS wie zu Beispiel die hierarchischen- und Netzdatenbank-
modelle genügt ein grober Überblick. Zusätzlich gibt dieses Dokument eine Übersicht über
das lokale DBMS LibreOffice-Base. Werkzeuge (Tools) zur Verwaltung relationaler Daten-
banken werden am Beispiel MySQL und MariaDB erklärt. PHPmyAdmin eignet sich zum
administrieren lokaler- und im Netzwerk befindlicher Datenbanken. Dazu gibt es viele Be-
schreibungen im Internet und einige Tipps in diesem Dokument.
Die Unterlage ist in Abschnitten nach Semester geordnet.
Inhaltsverzeichnis

1. Lehrpläne für INSYS-DBS 7


1.1. Semester 3 in DBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2. Semester 4 in DBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3. Semester 5 in DBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.1. Bildungs- und Lehraufgabe: . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.3.2. Lehrstoff (5) im Bereich Grundlagen der Informatik: . . . . . . . . . . . . . 8
1.4. Semester 6 in DBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.1. Bildungs- und Lehraufgabe: . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.2. Lehrstoff (6) im Bereich Grundlagen der Informatik: . . . . . . . . . . . . . 8
1.5. Semester 7 in DBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5.1. Bildungs- und Lehraufgabe: . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5.2. Lehrstoff (7) im Bereich Grundlagen der Informatik: . . . . . . . . . . . . . 9

I. Lehrstoff Fachschule 2.Klasse 10

2. Die Planung einer Datenbank 11


2.1. Welche Felder werden benötigt? . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2. Welche Tabellen sind nötig? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3. Welche Felder umfassen die Tabellen? . . . . . . . . . . . . . . . . . . . . . . . . 13

3. Datenbanken mit LibreOffice-Base 14


3.1. Eine Datenbank erstellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
3.1.1. Tabelle erstellen (Table) . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2. Einfache Abfragen, Formulare und Berichte erstellen . . . . . . . . . . . . . . . . . 16
3.2.1. Abfragen erstellen (Query) . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.2.2. Formulare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.3. Berichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.3. Strukturierte Datenbankabfragen erstellen . . . . . . . . . . . . . . . . . . . . . . 20

4. Primärschlüssel und Fremdschlüssel 25


4.1. Primärschlüssel (Primary Key) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.1. Eindeutiger Primärschlüssel: . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.1.2. Zusammengesetzter Primärschlüssel: . . . . . . . . . . . . . . . . . . . . . 25
4.1.3. Künstlicher Primärschlüssel: . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2. Fremdschlüssel (Foreign Key - FK) . . . . . . . . . . . . . . . . . . . . . . . . . . 25

3
5. MusterDB in MariaDB mit SQL erstellen 26
5.1. Geany Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2. Datenbank erstellen mit strukturierten Definitionsabfragen . . . . . . . . . . . . . 27
5.2.1. Tabellen in der Datenbank erstellen . . . . . . . . . . . . . . . . . . . . . 27
5.2.2. Schrittweise Herangehensweise: . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2.3. Daten in die Tabellen einfügen (Einfache DML) . . . . . . . . . . . . . . . 29
5.3. Strukturierte Manipulationsabfragen (DML) erstellen . . . . . . . . . . . . . . . . 30
5.4. Funktionen in Datenbanken anwenden . . . . . . . . . . . . . . . . . . . . . . . . 31
5.5. Fragen zu den Kapiteln 4 und 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

II. Lehrstoff Fachschule 3.Klasse 33

6. Vertiefende Kofiguration und Administration eines DB-Systems 34


6.1. Architektur eines Datenbanksystems erläutern . . . . . . . . . . . . . . . . . . . . 34
6.2. Konzeptionelle Datenmodelle erstellen . . . . . . . . . . . . . . . . . . . . . . . . 34
6.3. Notationen von Beziehungen und Kardinalitätstypen interpretieren und anwenden . 34
6.4. Strukturierte Datenbankabfragen erstellen . . . . . . . . . . . . . . . . . . . . . . 35
6.5. Strukturierte Definitions- und Manipulationsabfragen erstellen . . . . . . . . . . . 35
6.6. Datenstrukturen in Normalformen überführen . . . . . . . . . . . . . . . . . . . . 36
6.7. Konzeptionelles Datenmodell in physisches Datenmodell überführen . . . . . . . . 37
6.8. Abfragenkonstrukte erstellen und ausführen . . . . . . . . . . . . . . . . . . . . . 37
6.9. Praktische Anwendung von Datenbanksystemen konfigurieren und parametrisieren . 37

III. Lehrstoff Fachschule 4.Klasse 38

7. Datenbanksysteme administrieren 39
7.1. DBS parametrisieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.2. DBS konfigurieren . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
7.3. Backup und Restore von Datenbanksystemen durchführen . . . . . . . . . . . . . . 40

IV. Anhang
Datenbanksysteme der IT-Fachschule 41

8. Grundlagen zum Thema Datenbanken 42


8.1. Einführung in das Thema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.2. Geschichte - Zusatzinformation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
8.3. Bedeutung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
8.4. Komponenten eines Datenbanksystems . . . . . . . . . . . . . . . . . . . . . . . . 45
8.4.1. DBMS+Datenbank=Datenbanksystem . . . . . . . . . . . . . . . . . . . . 45
8.4.2. Datenbankmanagementsystem . . . . . . . . . . . . . . . . . . . . . . . . 45

4
8.4.3. Datenbank . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
8.5. Verschiedene Formen von Datenbanksystemen . . . . . . . . . . . . . . . . . . . . 46
8.5.1. Datenbankmodell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
8.6. Funktionen eines DBMS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
8.6.1. Datensicherheit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
8.6.2. Transaktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
8.6.3. Datenintegrität . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
8.6.4. Abfrageoptimierung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
8.6.5. Anwendungsunterstützung . . . . . . . . . . . . . . . . . . . . . . . . . . 50
8.6.6. Sprachen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
8.6.7. Mehrbenutzerfähigkeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

9. SQL - Structered Query Language 52


9.1. Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
9.1.1. DDL = Data Definition Language . . . . . . . . . . . . . . . . . . . . . . 52
9.1.2. DML = Data Manipulation Language . . . . . . . . . . . . . . . . . . . . 52
9.2. SQL - DDL - Anweisungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
9.2.1. Datenbank erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
9.2.2. Datenbank löschen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
9.3. Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
9.3.1. Datentypen und Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
9.3.2. Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
9.3.3. Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
9.3.4. Tabellen erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
9.3.5. Tabelleneigenschaften anzeigen . . . . . . . . . . . . . . . . . . . . . . . . 59

10.MySQL und MariaDB 63


10.1. Einführung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.1.1. MySQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.1.2. MariaDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
10.1.3. MariaDB/MySQL - Aufruf von der Console . . . . . . . . . . . . . . . . . 64
10.1.4. Erstellung und Verwendung von Script-Files . . . . . . . . . . . . . . . . . 64
10.2. Installation und in Betrieb nehmen . . . . . . . . . . . . . . . . . . . . . . . . . . 65
10.2.1. Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
10.2.2. Inbetriebnahme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
10.2.3. Anzeigen von Objekten . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
10.2.4. Beschreibung der Tabellenstruktur anzeigen . . . . . . . . . . . . . . . . . 66
10.3. Benutzer verwalten in MySQL/MariaDB . . . . . . . . . . . . . . . . . . . . . . . 68
10.3.1. User anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
10.3.2. Benutzer in MySQL Rechte zuweisen . . . . . . . . . . . . . . . . . . . . . 69
10.3.3. Weitere Privilegien in MySQL/MariaDB . . . . . . . . . . . . . . . . . . . 70
10.3.4. Benutzer in MySQL löschen . . . . . . . . . . . . . . . . . . . . . . . . . 71

5
10.3.5. Fazit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
10.4. Externer Zugriff in MySQL/MariaDB . . . . . . . . . . . . . . . . . . . . . . . . . 71
10.4.1. Externen MySQL Zugriff in der my.cnf aktivieren: . . . . . . . . . . . . . . 71
10.4.2. User für den externen Zugriff auf die MySQL Datenbank erlauben . . . . . 71
10.4.3. MySQL Zugriff für bestimmte IP Adressen erlauben . . . . . . . . . . . . . 72

11.Tool zur Datenbankadministrierung 74


11.1. phpMyAdmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
11.1.1. Geschichte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

6
1. Lehrpläne für INSYS-DBS

1.1. Lehrstoff von Semester 3 in DBS

Bildungs- und Lehraufgabe:

Die Schülerinnen und Schüler können im Bereich Datenbanksysteme


• einfache Datenbanken mit einer marktüblichen Datenbanksoftware erstellen;
• Formulare, einfache Abfragen und Berichte erstellen;
• einfache strukturierte Datenbankabfragen erstellen.

Lehrstoff (3) im Bereich Grundlagen der Informatik:

Tabellen, Abfragen, Formulare, Berichte, strukturierte Abfragesprache.

******************************************************************************

1.2. Lehrstoff von Semester 4 in DBS

Bildungs- und Lehraufgabe:

Die Schülerinnen und Schüler können im Bereich Datenbanksysteme


• Konzept der Primär- und Fremdschlüssel verstehen und anwenden
• Tabellen in Beziehungen stellen und Tabellenübergreifende Abfragen erstellen
• einfache Funktionen in Datenbanken anwenden
• einfache strukturierte Definitions- und Manipulationsabfragen erstellen

Lehrstoff (4) im Bereich Grundlagen der Informatik:

Primärschlüssel, Fremdschlüssel, Beziehungen, Funktionen, Datendefinitions- und Manipulations-


abfragen.

******************************************************************************

7
******************************************************************************

1.3. Lehrstoff von Semester 5 in DBS

1.3.1. Bildungs- und Lehraufgabe:

Die Schülerinnen und Schüler können im Bereich Datenbanksysteme


• Architektur eines Datenbanksystems erläutern
• konzeptionelle Datenmodelle erstellen
• verschiedenste Notationen von Beziehungen und Kardinalitätstypen interpretieren und an-
wenden
• komplexe strukturierte Datenbankabfragen erstellen
• komplexe strukturierte Definitions- und Manipulationsabfragen erstellen

1.3.2. Lehrstoff (5) im Bereich Grundlagen der Informatik:

Drei-Schichten-Modell, ER-Modellierung, strukturierte Abfragesprache.

*************************************************************************

1.4. Lehrstoff von Semester 6 in DBS

1.4.1. Bildungs- und Lehraufgabe:

Die Schülerinnen und Schüler können im Bereich Datenbanksysteme


• Datenstrukturen in Normalformen überführen
• konzeptionelles Datenmodell in physisches Datenmodell überführen;
• vertiefte Abfragenkonstrukte erstellen und ausführen
• praktische Anwendung von Datenbanksystemen konfigurieren und parametrisieren

1.4.2. Lehrstoff (6) im Bereich Grundlagen der Informatik:

Referentielle Integrität, Normalisierung, physisches Datenmodell, strukturierte Abfragesprache, Con-


tent Management Systeme (MEDT)

*************************************************************************

8
*************************************************************************

1.5. Lehrstoff von Semester 7 in DBS

1.5.1. Bildungs- und Lehraufgabe:

Die Schülerinnen und Schüler können im Bereich Datenbanksysteme


• vertiefte Anwendung von Datenbanksystemen konfigurieren und parametrisieren
• Backup und Restore von Datenbanksystemen durchführen.

1.5.2. Lehrstoff (7) im Bereich Grundlagen der Informatik:

Anwendung von Datenbanksystemen, Backup, Content Management Systeme

*************************************************************************

9
Teil I.

Lehrstoff Fachschule 2.Klasse

10
2. Die Planung einer Datenbank

Es ist einfacher, eine Datenbank zu erstellen als eine bestehende und mit Daten gefüllte Datenbank
im laufenden Betrieb zu ändern.
Aus diesem Grund ist der erste Schritt beim Erstellen einer Datenbank, diese zu planen und mit
dem Auftraggeber (AG) dazu gezielt Fragen zu erörtern. Schreibe dir diese Fragen immer auf
und lasse etwas Platz zwischen den Fragen, damit du später dort die Antworten einfügen kannst.
Die Antworten sollten möglichst deutlich ausformuliert werden, nachdem du gemeinsam mit dem
AG über die Problemstellung nachgedacht hast.
Dieser Prozess muss meistens ein paar Mal wiederholt werden, bevor alles gedanklich und auf
dem Papier geordnet ist. Indem das Erstellen in einem elektronischen Dokument erfolgt, das diese
Fragen und Antworten enthält, ist es anschließend leichter möglich, die Reihenfolge der Fragen
und entsprechenden Antworten zu ändern oder weitere Fragen anzuhängen. Außerdem wird dieses
Dokument am Ende des Prozesses vom AG und Dir als Auftragnehmer (AN) unterschrieben.
Alle Punkte in diesem Dokument sind für beide Seiten bindend. Änderungen nur in beiderseitigem
Einvernehmen möglich.
Am einfachsten ist das zu verstehen, wenn wir uns an die Aufgabe zur Erstellung einer Datenbank
im nächsten Kapitel machen.

2.1. Welche Felder werden benötigt?

Der Lehrer ist in unserem Fallbeispiel der AG und du bist der AN. Der AG muss dir sagen welche
Daten er braucht. Die grundlegenden Felder müssen herausgefunden werden, indem du fragst,
’welche Daten sind notwendig und erwünscht?’.
Wir nehmen an, dass der AG dir mitteilt, dass er alle Schüler der HTBLA-Traun erfasst haben
möchte, mit ihrem vollständigen Namen, ihrer Klasse, einer e-Mail-Adresse, einer Telefonnummer
und ihrer jeweiligen Anschrift. Er möchte wissen wie viele Schüler in die HTL und wie viele Schüler
in die Fachschule gehen. Es soll auch wenn möglich ersichtlich sein wer über 18 Jahre alt ist und
welcher Klassenvorstand für welche Klasse zuständig ist.
Standardmäßig erhält jede Tabelle ein Feld, das von Datensatz zu Datensatz unterschiedlich sein
muss. Dieses Feld wird als Primärschlüssel bezeichnet und erhält in jeder der folgenden Tabellen
die Bezeichnung „idx“.

11
2.2. Welche Tabellen sind nötig?

Würden alle Felder in eine Tabelle zusammengefasst so würden sich einige Felder sehr häufig
wiederholen. Diese Felder gilt es ausfindig zu machen und in Tabellen zusammenzufassen. Wir
versuchen einmal Felder die wir brauchen einfach aneinander zu reihen:
Sammlung
• Familienname
• Vorname
• Klasse
• e-Mail-Adresse
• Telefonnummer
• Anschrift
• Schultyp
• Geburtsdatum
• Klassenvorstand
Diese Felder gruppieren wir nach logischen Einheiten. Das heißt: Daten die zu den Personen
gehören, dann Daten die zu Klassen - und Daten die zu Wohnadressen gehören werden entsprechend
logisch aneinander gereiht.

Schüler
1. Familienname
2. Vorname
3. Geburtsdatum
4. e-Mail-Adresse
5. Telefonnummer
Klasse
6. Klasse
7. Schultyp
8. Klassenvorstand
Anschrift
9. Strasse
10. Postleitzahl
11. Ort

Mit dem aneinanderreihen der Felder nach Bereichen, können wir bereits Tabellen planen, die
bei unserem Beispiel mit Kursivschrift dazwischen geschrieben wurden. Von den 11 Feldern der
Sammlung fallen fünf auf die Schüler und je drei Felder auf Klassen und Anschriften.

12
2.3. Welche Felder umfassen die Tabellen?

Wir haben zwar oben bereits Felder für drei Tabellen festgelegt, vollständig ist das Ganze aber
noch nicht. Starten wir mit Planung der Tabelle Klassen:
idx klasse schultyp klassenvorstand
1 2BFITT FS Harald Peceny
2 3AFITT FS Thomas Oelz

Da ist das Feld idx als Primärschlüssel dazugekommen. Damit haben wir bei der Tabelle Klas-
sen jetzt vier Felder. Auch bei den Adressen benötigen wir einen Primärschlüssel (PK) und werden
auch da ein Feld idx als Primärschlüssel hinzufügen.
idx strasse plz ort
1 Bahnhofstraße 52 4050 Traun
2 Wiener Bundesstraße 152 4030 Linz an der Donau

Zuletzt haben wir noch die Tabelle Schüler. Auch hier erstellen wir so wie in den beiden ers-
ten Tabellen einen Primärschlüssel hinzu.
idx Name Vorname Geburtsdatum e-Mail Telefon
1 Mayer Mustafa 17.12.2000 m.mayer@aol.org 0712345645
2 Artak Johannes 12.05.2001 johannes@gsm.com 0664 1235689

Jetzt haben wir drei Tabellen eingeplant, aber wir haben noch ein Problem zu lösen. Die Fra-
ge lautet: wie können wir die Tabellen zusammenhängen, wie stehen sie zueinander in Beziehung?
Dafür wenden wir die semantische Methode an und das funktioniert so: Du musst wissen wel-
che Objekte (Tabellen) stehen zueinander in Beziehung. In unserem Fall Schüler mit Klassen und
Schüler mit Anschriften. Die Klassen und Anschriften stehen nicht zueinander in Beziehung!
Objekt1 Aktion Objekt2
1 Schüler gehört zu 1 Klasse
1 Klasse hat viele Schüler
1 Schüler hat 1 Anschrift
1 Adresse hat 1 oder mehrere Schüler

Wir könne jetzt sehen dass 1 Schüler nur eine Klasse und eine Anschrift hat, eine Klasse aber
mehrere Schüler hat und an einer Adresse mehrere Schüler wohnen können. Daher bekommt die
Tabelle Schüler noch zwei Fremdschlüsselfelder.
idx Name Vorname Geburtsdatum e-Mail Telefon klasse adr
1 Mayer Mustafa 17.12.2000 m.mayer@aol.org 0712345645 1 2
2 Atak Johannes 12.05.2001 johannes@gsm.com 0664 1235689 2 1
Nun sind unsere drei Tabellen fertig geplant und wir können eine Datenbank in BASE mit diesen
drei Tabellen erstellen.

13
3. Datenbanken mit LibreOffice-Base

Um mit LibreOffice-Base, Kurzbezeichnung: Base, eine Datenbank erstellen zu können, musst Du


vorher verstanden haben was eine Datenbank ist, wie sie geplant wird und viele andere Dinge
mehr. Eine LibreOffice-Datenbank besteht aus den Objekten Tabellen, , Abfragen, Formularen
und Berichten. Die Daten werden in den Tabellen gespeichert.
1. In einer Datenbank werden Informationen in Tabellen abgespeichert. Eine Datenbank enthält
nur in Ausnahmefällen eine, in der Regel jedoch mehrere Tabellen um unterschiedliche Daten
zu speichern.
2. Eine Abfrage erstellt definierte (festgelegte) Ansichten auf die Daten aus einer oder mehreren
der vorhandenen Tabellen – darauf basierend, wie die Abfrage erstellt wird.
3. Formulare dienen zum Anzeigen von Feldern, überwiegend jedoch zur Dateneingabe. Dem
Formular liegen dabei eine oder mehrere Tabellen in Form von Abfragen zugrunde.
4. Ein Bericht organisiert die Informationen der einzelnen Felder einer Abfrage in einem Doku-
ment, entsprechend von Wünschen und Vorgaben, zu einer sinnvollen Übersicht.
Die Datenbank in LibreOffice benötigt eine Java Runtime Environment (JRE). Wenn kei-
ne JRE auf dem Computer installiert ist, kann diese von http://www.java.com herunterladen
und entsprechend den Anweisungen der Webseite installiert werden. http://www.oracle.com/
technetwork/java/archive-139210.html

Um zu zeigen, wie man eine Datenbank plant und benutzt, beziehungsweise wie eine Datenbank
funktioniert, wird zuerst eine einfache Datenbank für Schüler geplant und ohne den Datenbankas-
sistenten erstellt.

3.1. Eine Datenbank erstellen

Dazu öffnen wir LibreOffice-Base und erhal-


ten den rechts abgebildeten Startbildschirm:
Wir wollen eine neue Datenbank erstellen.
Diese Datenbank bekommt das eingebette-
te HSQLDB als DBMS. Jetzt auf Weiter
drücken und das nächste Bild erscheint.

14
Die beiden Punkte Ja, die Datenbank soll angemel-
det werden und Die Datenbank zum Bearbeiten
öffnen sind aktiviert und es kann mit dem Button
Fertigstellen quittiert werden.

Jetzt erscheint der Dialog Speichern unter. Der Name der Datenbank wird eingegeben, der Pfad
berichtigt und auf speichern gedrückt. Die Endung .odb hängt das System selbsttätig an.

Tabelle 3.1.. Datenbank speichern und Tabelle anlegen

3.1.1. Tabelle erstellen (Table)

Wir starten mit Tabelle in der Entwurfs-


ansicht erstellen wie in Abbildung 3.1 zu
sehen ist. Nach dem Start erscheinen drei
Spalten in der Entwurfsansicht (3.1.1). In die
linke Spalte kommt der Tabellenname, in die
mittlere Spalte der Datentyp und rechts kann
das Feld näher beschrieben werden.

15
In der Abbildung rechts haben wir die Auswahl des Datentyps gesehen
und darunter können wir sehen, wie durch die Auswahl Autowert das
Feld idx zum Primärschlüssel wird.

Wichtig! Tabellen und Felder können in Base grundsätzlich frei


benannt werden. Sonderzeichen und Umlaute sind möglich. Für
manche Abfrage ist das aber später möglicherweise eine
unbeabsichtigte Fehlerquelle. Aus gelebter Praxis als DB-Administrator
und aus Sicherheitsgründen habe ich in unserem Fall die Wahl von
Sonderzeichen vermieden. Neben den in allen Sprachen üblichen
Buchstaben (ASCII-Zeichen) wurde lediglich der Unterstrich verwendet.

So wie in Abb: ?? kann man die fertige Tabelle klassen aussehen. Die Tabellen anschriften und
schueler sind nach dem gleichen Muster zu erstellen. Die fertige Datenbank sieht wie in Abb: 3.1
aus.

Tabelle 3.2.. Datenbank speichern und Tabelle anlegen

3.2. Einfache Abfragen, Formulare und Berichte erstellen

3.2.1. Abfragen erstellen (Query)

Im Datenbankentwurf haben wir schon einige Vorarbeit geleistet, um jetzt nach dem Erstellen der
Tabellen entsprechende Abfragen zu machen.
Zuerst erstellen wir eine Abfrage je Tabelle, ohne die anderen Tabellen miteinander zu verbin-
den. Das wirkt auf den ersten Blick eigenartig, hat aber den Grund, dass Formulare und Berichte
auf Abfragen basieren. Diese sind leichter änderbar, ohne dabei auf Änderungen an den Tabellen
angewiesen zu sein.
Die Abfragen benennen wir wie die Tabellen, damit sofort ersichtlich ist, woher die Datenergebnisse
stammen. Bei den Tabellen hatten wir ein t mit Unterstrich vor den Namen gesetzt (t_tabelle),
bei den Abfragen verwenden wir ein q mit Unterstrich vor dem Namen (q_abfrage).
Die vierte Abfrage erstellen wir als Gesamtabfrage in der alle drei Tabellen miteinander ver-
bunden werden. Diese vier Abfragen sehen wir in Abb: 3.2. Die Gesamtabfrage zu erstellen ist sehr
einfach. Zuerst starten wir wieder mit dem Punkt “Abfragen in der Entwurfsansicht erstellen".

16
Abbildung 3.1.. Datenbank Schüler mit allen 3 Tabellen

Dabei werden, wie in Abb. 3.3 zu sehen, die Primärschlüssel (PK) von klassen und anschriften mit
den Fremdschlüsseln (FK) in der Tabelle schueler verbunden.

Abbildung 3.2.. Datenbank Schüler mit den 4 Abfragen

Abbildung 3.3.. Tabellen in eine Abfrage einfügen

Die für die Gesamtabfrage benötigten Felder werden nun doppelt angeklickt und damit der Abfrage
hinzugefügt. In Abb. 3.4 siehst Du wie so eine Abfrage aussehen kann. Es wurden nur jene Felder
ausgewählt die wir benötigen, um z.B. einen Schulausflug zu veranstalten.
Um die Feldnamen sprechender- und die Schreibweise sinnvoll zu gestalten, trägst Du einfach unter
dem Feldnamen den für dich besseren Namen ein Abb: 3.5. Beim Ausführen der Abfrage erscheint,
wie in Abb. 3.6 zu sehen, das Ergebnis mit den gewünschten Namen auf.

17
Abbildung 3.4.. Abfrage Gesamt mit 3 Tabellen und Feldern

Abbildung 3.5.. Abfrage Gesamt mit Alias-Feldern

Der Assistent wird im Unterricht gezeigt und ist hier nicht beschrieben. Assistenten gibt es für alle
vier Objekte des Datenbanksystems Base.

Abbildung 3.6.. Abfrage Gesamt mit 3 Tabellen ausgeführt

3.2.2. Formulare

Datenbanken werden benutzt, um Daten zu speichern und zu verwalten. Um die Datensammlung


zu erleichtern, werden Formulare zur Eingabe verwendet. In der Fachsprache ist das Formular die
Maske, mit der Daten eingegeben und verändert werden können. Ein Formular besteht aus Feldern
einer Tabelle oder Abfrage. In dem unten abgebildeten Formular finden sich alle bisher erstellten

18
Tabellen wieder: Die Haupttabelle schueler ist offensichtlich verknüpft mit den Formularfeldern
„klassen“ und „anschriften“.

Abbildung 3.7.. Formular aus der Abfrage Gesamt mit Assistenten erstellt

Die Beschriftung der Felder kann im Formular ohne weiteres anders sein als in der zugrundeliegenden
Tabelle. So wird in dem Beispiel aus „gebdat“ „Geburtsdatum“. Unterhalb der Eingabefelder ist
die Navigationsleiste abgebildet, mit der die Bewegung durch die Datensätze bewerkstelligt wird.
Auch Sortier- und Suchfunktionen sind hier eingebunden.

3.2.3. Berichte

Mit dem Report Builder können recht komplexe Berichte erstellt werden. Die Berichte werden
standardmäßig als Textdokument (*.odt) erstellt. Eine Erstellung als Tabellenkalkulationsdokument
(*.ods) ist ebenfalls möglich. Im Folgenden wird schrittweise die Erstellung eines Berichtes für die
Datenbank schueler erklärt.
Der Bericht kann mittels Assistent erstellt und wenn gewünscht später nachbearbeitet werden.
Anderenfalls kann der Bericht auch manuell erstellt werden.

3.2.3.1. Manuelles Erstellen von Berichten:

Nach dem starten zum Erstellen eines Reports erscheint ein Dialog und Tabellen sind vorausgewählt
Abb. 3.8. Jetzt wählst du statt der vorgegebenen Tabellen den Menüpunkt Abfragen aus und
im darunter befindlichen Dialogfeld die gewünschte Abfrage, in unserem Fall die Gesamtabfrage
q_gesamt. Abb. 3.9. Nun erscheinen auch die auswählbaren Felder der Abfrage, Abb. 3.10 und
der Bericht kann entsprechend zusammengesetzt werden. Dazu ist es notwendig, im Report alle
benötigten Felder hinzuzufügen, so wie auf Abb. 3.9.
Nachdem jetzt alle Felder ausgewählt wurden drücke den Button NEXT und bestätige oder ändere die
angeführten Feldbeschreibungen (Label) wieder mit NEXT (Abb. 3.13). Danach wird noch festgelegt,
nach welchen Feldern Gruppiert werden soll (Abb. 3.14) und danach kann noch bestimmt werden,
nach welchen Feldern außer dem Gruppierfeld sortiert werden soll (Abb. 3.15).

19
Abbildung 3.8.. Bild nach dem Starten zum Erstellen eines Reports

Abbildung 3.9.. Auswählen der Basis für den zu Erstellenden Report

In den Abbildungen der folgenden Seiten wird gezeigt wie du das Aussehen festlegst (Abb. 3.16),
den Namen des Berichtes eingibst und Eigenschaften wie dynamischer oder statischer Bericht,
festlegen kannst (Abb. 3.17). Damit schließen wir das Kapitel Base ab.

3.3. Strukturierte Datenbankabfragen erstellen

In diesem Kapitel lernst Du Abfragen so zu strukturieren, dass im Formular, dem die Abfrage
zugrunde liegt, Geburtstage aufscheinen oder in Berichten die jüngsten und ältesten Schüler her-
ausgefunden werden können.
Als Beispiel dient folgender Aufgabenstellung:

• Welche Schüler sind in der 3BFITT (3BFIT) Abb.: 3.18


• Wer hat sein Geburtsdatum angegeben Abb.: 3.19
• Welche Anzahl Schüler mit Geburtsdatum in einzelnen Klassen gibt es Abb.: 3.20
Wir werden mit SQL die gleichen oder weitere Abfragen dieser Art erstellen.
Aufgabe: Lass Dir jetzt 5-10 weitere Abfragen einfallen und speichere sie ab.

20
Abbildung 3.10.. Ansicht aller Felder der zugrunde liegenden Abfrage

Abbildung 3.11.. Ansicht aller Felder für den Bericht

Abbildung 3.12.. Auswahl aller Felder für den Bericht

Abbildung 3.13.. Feldbeschreibungen ändern oder bestätigen

Abbildung 3.14.. Nach welchen Feldern soll gruppiert werden

21
Abbildung 3.15.. Weitere Felder die sortiert werden sollen

Abbildung 3.16.. Aussehen des Report festlegen

Abbildung 3.17.. Abspeichern des Report und festlegen eines Namen

22
Abbildung 3.18.. 3BFIT-abfragen

Abbildung 3.19.. Geburtsdatum angegeben

23
Abbildung 3.20.. Abfrage Funktionen

24
4. Primärschlüssel und Fremdschlüssel

4.1. Primärschlüssel (Primary Key)

Der Primärschlüssel dient zur eindeutigen Identifizierung eines Datensatzes in einer Tabelle. Es gibt
verschiedene Arten von Primärschlüsseln:

4.1.1. Eindeutiger Primärschlüssel:

Es wird ein eindeutiges Attribut einer Tabelle als Schlüssel verwendet, z.B. die Personalausweis-
nummer

4.1.2. Zusammengesetzter Primärschlüssel:

Mehrere Attribute einer Tabelle werden kombiniert und als Schlüssel definiert, z.B. Nachname, Ort
und Geburtstag. Hierbei muss sichergestellt werden, dass jede Kombination nur einmal vorhanden
ist.

4.1.3. Künstlicher Primärschlüssel:

Gibt es in einer Tabelle keine eindeutigen Schlüssel, so kann man einen künstlichen Schlüssel
definieren. Hierzu wird meist eine fortlaufende Nummer als ID verwendet, um einen Datensatz ein-
deutig zu identifizieren. Der sogenannte surrogate primary key wird in der Praxis am häufigsten
verwendet.

4.2. Fremdschlüssel (Foreign Key - FK)

Ein Fremdschlüssel verweist auf einen Primärschlüssel einer anderen oder der gleichen Tabelle und
dient dazu, Verbindungen zwischen verschiedenen Tabellen herstellen zu können. Der Fremdschlüs-
sel muss die referentielle Integrität der Daten sicherstellen, d.h. er darf nur Werte annehmen, die
in der Referenztabelle mit entsprechendem Wert im Primärschlüssel vorhanden sind.

Bevor wir uns mit dem Kapitel 5 (MusterDB erstellen)


befassen, gehen wir zu Kapitel ?? (SQL-Grundlagen),
um entsprechendes Wissen zu erwerben, das wir brauchen,
um Abfragen richtig zu erstellen.

25
5. MusterDB in MariaDB mit SQL erstellen

In diesem Kapitel geht es erstmals darum, die in Base erstellte Datenbank mittels SQL zu erstellen
und in das DBS zu implementieren (einzufügen).
Als Editor verwenden wir GEANY, da wir uns in diesem Dokument auch nur auf diesen Editor
beziehen werden. Andere Editoren wie Notepad++, Atom, und Ähnliche können auch verwendet
werden, haben aber möglicherweise andere Konfigurationsoptionen. Geany gibt es für alle drei
gängigen Betriebssysteme (Windows, Apple und Linux).

5.1. Geany Editor

Geany hier genau zu beschreiben ist in unserem Dokument nicht möglich. Geany besitzt eine
umfangreiche Hilfe auf der Website https://www.geany.org/ und ein Wiki auf
https://wiki.geany.org/config/start.
Die Kommentare sind wie in jeder Programmiersprache ein wichtiges Hilfsmittel. Jeder Schüler
muss seinen Sourcecode sorgfältig kommentieren. Das heißt, Du schreibst zu den einzelnen Ab-
schnitten oder Zeilen dazu, was Du damit machst. Viele Schüler vergessen später, wozu sie diese
Zeile geschrieben haben. Deine MusterDB und alle anderen Datenbanken die im Unterricht erstellt
wurden, brachst Du bis zur Abschlussklasse. Daher ist sorgfältiges Mitarbeiten ein wichtiger Schritt
zum erfolgreichen Abschluss der Fachschule.

Abbildung 5.1.. Geany-Kommentare

26
5.2. Datenbank erstellen mit strukturierten Definitionsabfragen

Wir erstellen jetzt, so wie zu Beginn des 3.Semesters, eine Datenbank schule. Dazu brauchen wir
nur unseren Editor und ein laufendes MySQL/MariaDB DBS. In Abbildung 5.2 sehen wir drei

Abbildung 5.2.. Datenbank anlegen

Zeilen. In der zweiten Zeile steht die Anweisung CREATE DATABASE schule; , eingefügt und mit
ENTER bestätigt ist diese Datenbank bereits erstellt und scheint im DBS auf.
Um die erstellte Datenbank jetzt auch bearbeiten zu können, muss man den Befehl in Zeile 3 von
Abb. 5.2 ausführen: USE schule;
In Zeile 1 steht noch eine Anweisung, die wir scheinbar nicht brauchen, da ja jetzt alles funktioniert.
Doch Zeile 1 ist sehr wichtig! Wenn bereits eine Datenbank mit dem Namen schule existiert, würden
wir eine Fehlermeldung bekommen. Löschen wir vorher eine Tabelle auf Verdacht und sie existiert
nicht, bekommen wir auch eine Fehlermeldung und das System bricht ab.
Daher prüfen wir mit der Zeile DROP DATABASE IF EXISTS schule; ob es eine Datenbank mit
dem Namen schule bereits gibt (IF EXISTS) und löscht sie nur wenn diese existiert. Anderenfalls
passiert nichts.

5.2.1. Tabellen in der Datenbank erstellen

Abbildung 5.3.. Tabelle erstellen - Übersicht

27
5.2.2. Schrittweise Herangehensweise:

Zuerst starten wir die Shell.


• Unter Windows öffnest du XAMP, startest den Apache und den MySQL Server und zuletzt
die Shell auf XAMP.
• Einstieg: mysql -u root
• Unter Linux öffnest du eine Systemshell (Terminal)
• Einstieg: mysql -u root -p
Unter Windows ist der root-user ohne Passwort eingerichtet, daher entfällt der Parameter -p. Wir
geben die drei Anweisungen aus Abb. 5.2 ein und sollten als letzte Ausgabe etwa so ein Bild wie
in Abb. 5.4 vor uns haben. Danach kopieren wir aus unserem Editor die Tabellen (Abb.: 5.3) und

Abbildung 5.4.. Linux Datenbankeinstieg

fügen die Daten in die Shell ein. Um zu überprüfen, ob alles funktioniert hat, schreiben wir die
DBMS-Anweisung show tables; in die Shell und bestätigen die Eingabe. Nun sollten uns
drei Tabellen angezeigt werden. Wenn alles passt sollte das Ergebnis so wie unterhalb angezeigt
aussehen und wir wenden uns dem nächsten Kapitel zu.

+------------------+
| Tables_in_schule |
+------------------+
| anschriften |
| klassen |
| schueler |
+------------------+

28
5.2.3. Daten in die Tabellen einfügen (Einfache DML)

Jetzt sind alle Tabellen vorhanden und wir können Daten einfügen. So wie in der konzeptionellen
Phase mit dem semantischen Modell erklärt (Kapitel 2), fügen wir die Daten in einer bestimmten
Reihenfolge ein.
In der Tabelle schueler sind zwei Fremdschlüssel (FK). Die Tabellen klassen und anschriften haben
keinen FK. Wir beginne also mit den beiden Tabellen ohne FK und danach erst wird Tabelle schueler
mit Daten befüllt.

Abbildung 5.5.. Klassen und Anschriften

Beim Daten einfügen in den Tabellen klassen und anschriften lautet die Anweisung:
INSERT INTO klassen VALUES und danach in Klammer und mit Beistrichen getrennt der
Inhalt jedes einzelnen Feldes (Abb.: 5.5) in der Reihenfolge wie beim Erstellen angegeben. (Abb.:
5.3) Werden nicht alle Felder befüllt, oder wurde die Reihenfolge der Felder verändert, so ist die

Abbildung 5.6.. Schüler Tabelle befüllen

Anweisung wie in Abb.: 5.6 zu sehen so anzuschreiben:


INSERT INTO schueler (fname,vname,gebdat,geschlecht,klasse,adresse,hausnr) VALUES
(’Marko’,’Klemens’,NULL,1,1,’14b’); In dieser Anweisung gebe ich in Klammer alle Felder, wo
Werte einzutragen sind, an. Lass ich trotzdem ein Feld leer, so ist als Wert das Attribut NULL
einzusetzen.
Jetzt haben wir unsere erste Datenbank erstellt und ein Muster welches wir für weitere Aufgaben
verwenden werden.

29
5.3. Strukturierte Manipulationsabfragen (DML) erstellen

In Kapitel ?? wurde erklärt welche Funktion ein Primärschlüssel (PK) hat und wozu ein Fremd-
schlüssel (FK) dient. Abbildung 5.7 zeigt wie die beiden Tabellen t_klassen und t_anschriften mit
ihrem PK mit der Tabelle t_schueler und dessen beiden FK’s (klasse, anschrift) verbunden werden.

Abbildung 5.7.. Beziehungen mit Hilfe von PK und FK

Base hat uns bisher gute Dienste erwiesen. Es ist aber, so wie auch MS Access, ein lokales
DBS und daher nur zu Test- und Lehrzwecken geeignet. In einer kommerziellen Umgebung, wo
Ausfallsicherheit, Redundanzen und Sicherungskonzepte gefragt sind, brauchen wir ein DBS auf
Basis von Client-Server-Systemen. Außerdem benötigen wir neben SQL-Kenntnissen auch Wissen
in HTML, CSS, JavaScript und PHP. Diese Kenntnisse erwirbst Du in Medientechnik (MEDT).
Wir haben im Abschnitt 5.2.2 eine Musterdatenbank erstellt. Diese DB verwenden wir um so wie
in Base eine abfrage zu erstellen. Die Funktion einer Gesamtabfrage ist die gleiche, aber der Weg
dahin ist anders. In Base haben wir mit der Maus die Verbindungen hergestellt. Wir konnten visuell
die Verbindungen untersuchen.
Wir erstellen jetzt Abfragen, indem wir diese in den Editor schreiben und in die Shell kopieren oder
direkt in die Shell eingeben.
SELECT * FROM klassen;

+----+------+--------+------------------+
| id | typ | klasse | kv |
+----+------+--------+------------------+
| 1 | FS | 1AFIT | Hofbauer Susanne |
| 2 | FS | 1BFIT | Zoister Martin |
| 3 | FS | 2AFIT | Schmida Michael |
| 4 | FS | 2BFIT | Grömer Stefan |
| 5 | FS | 3AFIT | Riha Christian |
| 6 | FS | 3BFIT | Peceny Harald |
+----+------+--------+------------------+

30
Die Abfrage liefert uns aufgrund der SELECT-Anweisung Daten. Der Stern (*) ist ein Parameter
und Joker. Er bedeutet, dass alle Felder ausgewählt werden. Möchte ich nur die Klasse und den
Klassenvorstand angezeigt bekommen, muss ich die Felder statt dem Parameter * einzeln nennen
und mit einem Komma ’,’ trennen.
SELECT klasse,kv FROM klassen;

+--------+------------------+
| klasse | kv |
+--------+------------------+
| 1AFIT | Hofbauer Susanne |
| 1BFIT | Zoister Martin |
| 2AFIT | Schmida Michael |
| 2BFIT | Grömer Stefan |
| 3AFIT | Riha Christian |
| 3BFIT | Peceny Harald |
+--------+------------------+

Das Ergebnis sieht schon ganz gut aus, aber die Überschriften sind noch eigenartig. Wir ändern
die Abfrage noch einmal, damit die Überschriften vernünftige Namen haben. Dazu verwenden wir
das Schlüsselwort AS und erzeugen damit einen ALIAS.
SELECT klasse AS ’Klasse’,kv AS ’Klassenvorstand’ FROM klassen;

+--------+------------------+
| Klasse | Klassenvorstand |
+--------+------------------+
| 1AFIT | Hofbauer Susanne |
| 1BFIT | Zoister Martin |
| 2AFIT | Schmida Michael |
| 2BFIT | Grömer Stefan |
| 3AFIT | Riha Christian |
| 3BFIT | Peceny Harald |
+--------+------------------+

Diese Ausgabe sieht vernünftig aus. Die Datenausgabe wurde eingeschränkt und die Überschriften
haben lesbare Bezeichnungen.

5.4. Funktionen in Datenbanken anwenden

5.5. Fragen zu den Kapiteln 4 und 5

Du solltest nun in der Lage sein folgende Fragen zu beantworten:

31
1. Was ist ein ALIAS
2. Womit kann ich Datenbanken abfragen (Anweisung)
3. Was ist ein Primärschlüssel (PK) und welche Funktion hat er
4. Welche Arten von PK kennst Du
5. Was ist ein Fremdschlüssel (FK)
6. Wie lautet die Anweisung zum Erstellen einer DB
7. Was passiert, wenn die Datenbank nicht existiert und du sie aber löscht
8. Womit kannst Du beim DB-erstellen Fehlermeldungen vermeiden
9. Welche zwei Arten von INSERT-Befehlen kennst du
10. Wie wird das Datum bei INSERT eingetragen
11. Wie wird ein Text (Name,Straße, etc.) bei INSERT eingetragen
12. Wie wird ein Ganzzahlwert bei INSERT eingetragen

32
Teil II.

Lehrstoff Fachschule 3.Klasse

33
6. Vertiefende Kofiguration und
Administration eines DB-Systems

6.1. Architektur eines Datenbanksystems erläutern

3 Schichten Modell einfügen

6.2. Konzeptionelle Datenmodelle erstellen

Abbildung 6.1.. konzeptionelles DB-Modell

6.3. Notationen von Beziehungen und Kardinalitätstypen


interpretieren und anwenden

Die Kardinalität einer Menge ist die Anzahl der Elemente in dieser Menge. Im Zusammenhang mit
relationaler Datenbanken wird der Begriff häufig verwendet, da eine Datenbanktabelle auch als eine
Menge von Datensätzen (Zeilen) aufgefasst werden kann.
Spalten und Zeilen einer Datenbanktabelle können auch als eine Menge von Attributwerten auf-
gefasst werden. Die Kardinalität einer Datenbanktabelle (Relation) ist die Anzahl der Zeilen in
dieser Tabelle. Die Kardinalität einer Spalte (Attribut) einer Datenbanktabelle ist die Anzahl der
verschiedenen Attributwerte in dieser Spalte.
Kardinalitäten sind Mengenangaben, mit denen in der Datenmodellierung für Entity-Relationship-
Diagramme (ER-Diagramme) für jeden Beziehungstyp festgelegt wird, wie viele Entitäten eines
Entitätstyps mit genau einer Entität des anderen am Beziehungstyp beteiligten Entitätstyps (und
umgekehrt) in Beziehung stehen können oder müssen.

34
6.4. Strukturierte Datenbankabfragen erstellen

6.5. Strukturierte Definitions- und Manipulationsabfragen erstellen

35
6.6. Datenstrukturen in Normalformen überführen

Wir bekommen eine Tabelle einer Firma als grundlgenden Datenbestand. Die Aufgabe ist, diese
Tabelle aus der 0.Normalform für eine neu zu erstellende Datenbank bis zur 3. Normalform zu
bereinigen, um die Daten in eine neue relationale Datenbank zu importieren.

Eine Tabelle ist in der 0.Normalform, wenn sie


nicht in eine Normalform gebracht wurde.

Und so kann eine Tabelle in der 0.Normalform aussehen:

PersNr Name Vorname AbtNr Abteilung ProjektNr Beschreibung Zeit


1 Krall Anna 1 Personal 2 Verkaufspromotion 83
1 Kundenumfrage 26
2 Drescher Susanne 2 Einkauf 3 Konkurenzanalyse 29
3 Wildberger Johann 1 Personal 1,2,3 Kundenumfrage 140,
Verkaufspromotion 92,
Konkurenzanalyse 110
4 Reiter Hubert 3 Verkauf 2 Verkaufspromotion 67
5 Cerny Peter 2 Einkauf 1 Kundenumfrage 160

1. Normalform

Eine Tabelle befindet sich in der ersten Normalform,


wenn alle Informationen atomar vorliegen.
PersNr Name Vorname AbtNr Abteilung ProjektNr Beschreibung Zeit
1 Krall Anna 1 Personal 1 Kundenumfrage 83
1 Krall Anna 1 Personal 2 Verkaufspromotion 26
2 Drescher Susanne 2 Einkauf 3 Konkurenzanalyse 29
3 Wildberger Johann 1 Personal 1 Kundenumfrage 140,
3 Wildberger Johann 1 Personal 2 Verkaufspromotion 92,
3 Wildberger Johann 1 Personal 3 Konkurenzanalyse 110
4 Reiter Hubert 3 Verkauf 2 Verkaufspromotion 67
5 Cerny Peter 2 Einkauf 1 Kundenumfrage 160

2. Normalform

Eine Tabelle befindet sich in der zweiten Normalform, wenn sie in der ersten
Normalform ist und wenn jedes Nichtschlüsselattribut vom Primärschlüssel
voll funktional abhängig ist.

Drei Tabellen (Mitarbeiter, Projekte und Zeit mit 2 FK’s) liegen vor

36
3. Normalform

Eine Tabelle befindet sich in der dritten Normalform, wenn bereits die
zweite Normalform vorliegt und jedes Nichtschlüsselattribut nicht transitiv
vom Primärschlüssel abhängig ist. Keinem Nichtschlüsselattribut folgt
kein anderes Nichtschlüsselattribut.

Vier Tabellen: + Abteilungen

6.7. Konzeptionelles Datenmodell in physisches Datenmodell


überführen

In der konzeptionellen Phase –> Logischen Phase –> physischen Phase

6.8. Abfragenkonstrukte erstellen und ausführen

Select mit Join ....

6.9. Praktische Anwendung von Datenbanksystemen konfigurieren


und parametrisieren

DBS konfigurieren
parametrisieren

37
Teil III.

Lehrstoff Fachschule 4.Klasse

38
7. Datenbanksysteme administrieren

https://www.php-einfach.de/mysql-tutorial/

7.1. DBS parametrisieren

Parameter bedeutet Übergabewert. Damit sind Variablen gemeint. Begrifflich wird unterschieden
zwischen formalen Parametern (Teil der Funktionsdefinition im Programmcode; Bsp: Funktions-
name (Par1, Par2)) und tatsächlichen Parametern, auch Argumente genannt. Dabei handelt es
sich um den jeweilige Wert für Par1 oder Par2 beim jeweiligen Funktionsaufruf. Wird beim Aufruf
des Programms oder Unterprogramms nicht für jeden Parameter ein Argument übergeben, kann
dieses eine beim Erstellen des Programms festgelegte Standardannahme verwenden oder die Ver-
arbeitung wegen fehlender Parameter abbrechen. In SQL hilft der Parameter IF EXISTS oder IF
NOT EXISTS eine DDL-Anweisung wie CREATE oder DROP entsprechend näher zu definieren.

7.2. DBS konfigurieren


show privileges;
+-------------------------+---------------------------------------+-------------------------------------------------------+
| Privilege | Context | Comment |
+-------------------------+---------------------------------------+-------------------------------------------------------+
| Alter | Tables | To alter the table |
| Alter routine | Functions,Procedures | To alter or drop stored functions/procedures |
| Create | Databases,Tables,Indexes | To create new databases and tables |
| Create routine | Databases | To use CREATE FUNCTION/PROCEDURE |
| Create temporary tables | Databases | To use CREATE TEMPORARY TABLE |
| Create view | Tables | To create new views |
| Create user | Server Admin | To create new users |
| Delete | Tables | To delete existing rows |
| Drop | Databases,Tables | To drop databases, tables, and views |
| Event | Server Admin | To create, alter, drop and execute events |
| Execute | Functions,Procedures | To execute stored routines |
| File | File access on server | To read and write files on the server |
| Grant option | Databases,Tables,Functions,Procedures | To give to other users those privileges you possess |
| Index | Tables | To create or drop indexes |
| Insert | Tables | To insert data into tables |
| Lock tables | Databases | To use LOCK TABLES (together with SELECT privilege) |
| Process | Server Admin | To view the plain text of currently executing queries |
| Proxy | Server Admin | To make proxy user possible |
| References | Databases,Tables | To have references on tables |
| Reload | Server Admin | To reload or refresh tables, logs and privileges |
| Replication client | Server Admin | To ask where the slave or master servers are |
| Replication slave | Server Admin | To read binary log events from the master |
| Select | Tables | To retrieve rows from table |
| Show databases | Server Admin | To see all databases with SHOW DATABASES |
| Show view | Tables | To see views with SHOW CREATE VIEW |
| Shutdown | Server Admin | To shut down the server |
| Super | Server Admin | To use KILL thread, SET GLOBAL, CHANGE MASTER, etc. |
| Trigger | Tables | To use triggers |
| Create tablespace | Server Admin | To create/alter/drop tablespaces |
| Update | Tables | To update existing rows |
| Usage | Server Admin | No privileges - allow connect only |
+-------------------------+---------------------------------------+-------------------------------------------------------+

39
Systemkonfiguration in MariaDB findest Du unter https://mariadb.org/. Mit dem Befehl SHOW
PRIVILEGES kannst du sehen, welche Rechte auf deinem System möglich sind.

7.3. Backup und Restore von Datenbanksystemen durchführen

Datenbank mit Bandsicherung wegsichern und mit einem RAID5-System inklusive HotPlug zu
betreiben.

40
Teil IV.

Anhang
Datenbanksysteme der IT-Fachschule

41
8. Grundlagen zum Thema Datenbanken

8.1. Einführung in das Thema

Eine Datenbank, damit ist ein Datenbanksystem (DBS) gemeint, ist ein System zur elektroni-
schen Datenverwaltung. Die wesentliche Aufgabe eines DBS ist es, große Datenmengen effizient
und dauerhaft zu speichern. Benötigte Teilmengen sind in unterschiedlichen, bedarfsgerechten Dar-
stellungsformen für Benutzer und Anwendungsprogramme bereitzustellen. Dazu werden Abfragen
(Query’s) oder Sichten (View’s) verwendet.
Ein DBS besteht aus zwei Teilen:
• eine Verwaltungssoftware, genannt Datenbankmanagementsystem(DBMS). Die Menge
der zu verwaltenden Daten befindet sich in der Datenbank (DB), auch „Datenbasis“ ge-
nannt. Die Verwaltungssoftware organisiert intern die strukturierte Speicherung der Daten
und kontrolliert alle lesenden und schreibenden Zugriffe auf die Datenbank.
• Zur Abfrage und Verwaltung der Daten bietet ein Datenbanksystem eine Datenbanksprache
an. In unserem Fall SQL (ANSI 92).
Datenbanksysteme gibt es in verschiedenen Formen. Die Art und Weise, wie ein solches System
Daten speichert und verwaltet, wird durch das Datenbankmodell festgelegt. Die derzeit gebräuch-
lichste Form eines Datenbanksystems ist das relationale Datenbanksystem.
Zu unterscheiden ist der hier beschriebene Begriff der Datenbank (bestehend aus DBMS und Da-
ten) von Datenbankanwendungen. Letztere sind Computerprogramme, die ihre jeweils individuell
erforderlichen Daten unter Nutzung eines DBS verwalten und speichern.
Beispiele: Auftragsverwaltung und Bestellwesen, Kunden- und Adressverwaltung, Rechnungser-
stellung.

Das Datenbanksystem (DBS) enthält eine Datenbank (DB) und ein Datenbankma-
nagementsystem (DBMS). Die Datenbank enthält Daten. Das DBMS stellt Werkzeu-
ge zum Bearbeiten der Daten bereit. Beide zusammen ergeben ein DBS wie MySQL,
MariaDB, Oracle, MSSQL, PostgreSQL, Base, ACCESS uvam. (Pkt 1.3).

8.2. Geschichte - Zusatzinformation

Ausgehend von Problemen bei der Verarbeitung von Daten in einfachen Dateien wur-
de in den 1960er Jahren das Konzept eingeführt, Daten durch eine separate Softwa-
reschicht zwischen Betriebssystem (Dateiverwaltung) und Anwendungsprogramm zu

42
verwalten. Dieses Konzept hatte den Nachteil, dass der Datenspeicher in Form von
Dateien in der Regel für eine jeweils spezielle Anwendung konzipiert wurde und ein
erheblicher Teil des Tagesgeschäfts mit Umkopieren, Mischen und Restrukturieren der
Dateien belastet war.
Eines der ersten großen DBMS war IMS mit der Sprache DL/I (Data Language One).
Die damit verwalteten Datenbanken waren hierarchisch strukturiert. Parallel dazu de-
finierte CODASYL ein Modell für netzwerkartig strukturierte Datenbanken.
Ein wesentlicher Fortschritt wurde in den 1960er und 1970er Jahren erzielt. IBM entwi-
ckelte die Grundlagen des ersten experimentellen relationalen Datenbanksystems Sys-
tem R. Die Berkeley Group folgte mit Ingres und der Abfragesprache QUEL.
Oracle (damals noch unter den Firmennamen SDL und RSI) verwertete die Ergebnisse
des System R und führte SQL zum kommerziellen Erfolg. IBM folgte mit SQL/DS
und DB2. Die relationalen Datenbanksysteme verdrängten in den 1980er Jahren die
hierarchischen und netzwerkartigen Systeme und ein Großteil der Behörden, Konzerne,
Institute und mittelständischen Unternehmen stellte seine IT auf Datenbanksysteme
um.
Während in den 1990er Jahren wenige kommerzielle Hersteller von Datenbank-Software
faktisch den Markt beherrschten (namentlich IBM, Informix, dBASE, Microsoft SQL
Server und Oracle), erlangten in den 2000ern die Open - Source - Datenbankmana-
gementsysteme eine immer größere Bedeutung. Vor allem MySQL und PostgreSQL
erzielten signifikante Marktanteile. Als Reaktion begannen die führenden kommerziel-
len Hersteller, gebührenfreie Versionen ihrer Datenbank-Software anzubieten. Ab der
Wende 2000 ist aufgrund mangelnder Skalierbarkeit relationaler Datenbanken die Be-
deutung der NoSQL-Systeme gewachsen.

Einen Stammbaum der Datenbanksysteme findet man als „Genealogy of Relational Database Ma-
nagement Systems“ beim Hasso-Plattner-Institut.

8.3. Bedeutung

Datenbanksysteme sind heute ein zentraler Bestandteil der Unternehmenssoftware. Damit stellen sie
einen kritischen Teil vieler Unternehmen und Behörden dar. Von der Verfügbarkeit, Vollständigkeit
und Richtigkeit der Daten hängt die Aktionsfähigkeit eines Unternehmens ab. Die Datensicherheit
ist daher ein wichtiger und gesetzlich vorgeschriebener Bestandteil der IT eines Unternehmens oder
einer Behörde.

43
Darstellung der Entwicklung der Datenbanksysteme

Abbildung 8.1.. RDBMS-Genealogy - HPI

44
8.4. Komponenten eines Datenbanksystems

8.4.1. DBMS+Datenbank=Datenbanksystem

Das Datenbanksystem ist das ausgeführte DBMS zusammen mit den zu verwaltenden Daten der
Datenbank. Ein Datenbank gewährleistet die persistente Speicherung sowie die Konsistenz der
Nutzdaten einer Institution und bietet für die benutzenden Datenbankanwendungen mit dem DBMS
Schnittstellen zur Abfrage, Auswertung, Veränderung und Verwaltung dieser Daten.

8.4.2. Datenbankmanagementsystem

Das Datenbankmanagementsystem (DBMS) ist die eingesetzte Software, die für das Datenbanksys-
tem installiert und konfiguriert wird. Das DBMS legt das Datenbankmodell fest, hat einen Großteil
der unten angeführten Anforderungen zu sichern und entscheidet maßgeblich über Funktionali-
tät und Geschwindigkeit des Systems. Datenbankmanagementsysteme selbst sind hochkomplexe
Softwaresysteme.
Für Datenbankmanagementsystem wird sehr selten der Begriff Datenbankverwaltungssystem (DBVS)
verwendet.
Gängig ist die Abkürzung RDBMS für ein relationales Datenbankmanagementsystem.

8.4.3. Datenbank

In der Theorie versteht man unter Datenbank (engl. database) einen logisch zusammengehörigen
Datenbestand. Dieser Datenbestand wird von einem laufenden DBMS verwaltet und für Anwen-
dungssysteme und Benutzer unsichtbar auf nichtflüchtigen Speichermedien abgelegt. Um einen
effizienten Zugriff auf die Datenbank zu gewährleisten, verwaltet das DBMS in der Regel eine
Speicherhierarchie, die insbesondere auch einen schnellen Zwischenspeicher (Pufferpool) umfasst.
Zur Wahrung der Konsistenz des Datenbestandes müssen sich alle Anwendungssysteme an das
DBMS wenden, um die Datenbank nutzen zu können. Allein administrativen Tätigkeiten, wie zum
Beispiel der Datensicherung, ist der direkte Zugriff auf den Speicher erlaubt. Die logische Struk-
tur der zu speichernden Daten wird bei der Datenmodellierung als Datenmodell erarbeitet und
festgelegt und in ihrer finalen Form im und nach den Syntaxregeln des DBMS gespeichert.
Einzelne DBMS-Hersteller verwenden geringfügig voneinander abweichende Begrifflichkeiten dafür,
was man genau unter einer Datenbank versteht: entweder alle Daten, die von einem laufenden
DBMS bzw. der Instanz verwaltet werden, oder nur die jeweils inhaltlich zusammengehörigen Daten.
Bei verteilten Datenbanken gibt es auch im Modell mehrere Datenbanken auf unterschiedlichen
Systemen, die miteinander verbunden sind.

45
8.5. Verschiedene Formen von Datenbanksystemen

8.5.1. Datenbankmodell

Grundlage für die Strukturierung der Daten und ihrer Beziehungen zueinander ist das Daten-
bankmodell, das durch den DBMS-Hersteller festgelegt wird. Je nach Datenbankmodell muss das
Datenbankschema an bestimmte Strukturierungsmöglichkeiten angepasst werden:

hierarchisch: Die Datenobjekte können ausschließlich in einer Eltern-Kind-Beziehung zueinander


stehen. Sie haben eine Ordner - Unterordner-Struktur.

Abbildung 8.2.. Hierarchisches Modell

netzwerkartig: Die Datenobjekte werden miteinander in Netzen verbunden.


In unserem Beispiel vergibt Kunde 1 den Auftrag 2 und 3 und Auftrag 2 besteht aus den Artikeln
1, 2 und 3.

relational: Die Daten werden zeilenweise in Tabellen verwaltet. Es kann beliebige Beziehungen
zwischen Daten geben. Sie werden durch Werte bestimmter Tabellenspalten festgelegt.

objektorientiert: Die Beziehungen zwischen Datenobjekten werden vom Datenbanksystem selbst


verwaltet. Objekte können Eigenschaften und Daten von anderen Objekten erben.

46
Abbildung 8.3.. Netzwerkdatenbank

dokumentenorientiert: Die zu speichernden Objekte werden als Dokumente mit möglicherweise


verschiedenen Attributen, d. h. ohne die Voraussetzung der Strukturgleichheit, gespeichert.

Mischformen: Es existiert eine Vielzahl von Misch- und Nebenformen, wie zum Beispiel das
objektrelationale Modell.

47
Abbildung 8.4.. relationales Modell

Abbildung 8.5.. Objektorientiertes Datenbankmodell

8.6. Funktionen eines DBMS

Die wesentlichen Funktionen von heutigen Datenbankmanagementsystemen sind:

1. Speicherung, Überschreibung und Löschung von Daten


2. Verwaltung der Metadaten
3. Vorkehrungen zur Datensicherheit
4. Vorkehrungen zum Datenschutz
5. Vorkehrungen zur Datenintegrität
6. Ermöglichung des Mehrbenutzerbetriebs durch das Transaktionskonzept
7. Optimierung von Abfragen
8. Ermöglichung von Triggern und Stored Procedures

48
Abbildung 8.6.. Dokumentorientierte DB

9. Bereitstellung von Kennzahlen über Technik und Betrieb des DBMS

8.6.1. Datensicherheit

Das RDBMS speichert die relationalen Daten auf einem Speichermedium. Neben den eigentlichen
Daten werden ebenfalls Informationen über die Datenschemata und Zugriffsrechte von Benutzern
gespeichert. Letztere sind wichtig, um die Datensicherheit zu garantieren. Dazu gehört sowohl
Schutz gegen Datenverlust sowie Schutz gegen unerlaubten Zugriff. Die Metadaten eines DBMS
werden auch als das data dictionary oder Katalog des Systems bezeichnet.
Ein weiterer wichtiger Aspekt von Datenbanken ist das Sichern des Datenbestandes durch Backups.
In der Praxis ist dies oft ein nicht zu vernachlässigendes Performance-Problem, da während eines
Backups Daten nur sehr eingeschränkt modifiziert werden dürfen.

8.6.2. Transaktionen

Ein weiterer wichtiger Teil der Datensicherheit ist das Transaktionskonzept, das Daten gegen Race
Conditions durch den parallelen Zugriff mehrerer Benutzer schützt. Andernfalls könnten Daten von
verschiedenen Benutzern gleichzeitig geändert werden. Das Ergebnis der Änderungen würde dann
vom Zufall abhängen oder Daten könnten inkonsistent werden. Vereinfacht dargestellt, sperren
Transaktionen Daten vorübergehend für den Zugriff durch andere Benutzer, bis eine Transaktion
durch einen Commit beendet wird oder erfolgte Änderungen durch einen Rollback unwirksam
gemacht werden. Danach sind die Daten wieder für andere Transaktionen frei.

8.6.3. Datenintegrität

Die Integrität der Daten kann durch Constraints sichergestellt werden. Dies sind Regeln im Ma-
nagementsystem, die beschreiben, wie Daten verändert werden dürfen. Der wichtigste Vertreter
bei relationalen Datenbanksystemen ist der Foreign Key Constraint. Dieser verhindert, dass Daten
gelöscht werden können, die von einer anderen Tabelle noch benötigt, d. h. über einen Foreign Key
referenziert werden. Siehe Hauptartikel referentielle Integrität.

49
Andere Integritätsbedingungen regeln zum Beispiel, ob Duplikate erlaubt sind oder
welche Inhalte einzelne Datenfelder enthalten dürfen („Bereichsintegrität“, inkl. Prü-
fung auf erlaubte Leerinhalte).

8.6.4. Abfrageoptimierung

8.6.4.1. Auswertungsplan in Form eines Operatorbaums

Damit Daten abgefragt und verändert werden können, stellt das DBMS eine Datenbanksprache zur
Verfügung. Eine Abfrage an das Datenbanksystem wird dabei zunächst in die logischen Operationen
der relationalen Algebra übersetzt. Danach werden sogenannte Datenbankoperatoren ausgewählt,
die dann logische Operation tatsächlich auf den Daten ausführt. Die Wahl der Operatoren und
die Reihenfolge ihrer Ausführung nennt man das Erstellen eines Ausführungsplans durch den Ab-
frageoptimierer. Der Optimierer ist ein besonders komplexer Teil der Datenbanksoftware und hat
wesentlichen Einfluss auf die Effizienz des Gesamtsystems (rasche Abfrageergebnisse bekommen).

Bei der Abfrageoptimierung spielen Indizes eine wichtige Rolle. Sie dienen dazu,
schnell einen bestimmten Datensatz zu finden. Welche Daten einen Index erhalten,
wird mit dem Datenbankschema festgelegt, kann aber später von einem Datenbankad-
ministrator angepasst werden.

8.6.5. Anwendungsunterstützung

Zur Unterstützung von Datenbankapplikationen bieten Datenbanksysteme Trigger und Stored Pro-
cedures an. Ein Trigger löst eine Aktion in der Datenbank aus, wenn ein bestimmtes Ereignis
eingetreten ist, häufig bei Einfüge- oder Änderungsoperationen. Stored Procedures dienen dem
Ausführen von Scripten in der Datenbank. Da Stored Procedures innerhalb des Datenbanksystems
ausgeführt werden, sind sie oft der effizienteste Weg, Daten zu manipulieren. Datenbanken, die
Trigger und Stored Procedures unterstützen, heißen auch aktive Datenbanken.

8.6.6. Sprachen

Eine Datenbank stellt als Schnittstelle eine Datenbanksprache für die folgenden Zwecke zur Verfü-
gung:

• Verwaltung der Datenbank und Definition der Datenstrukturen (DDL)


• Datenabfrage und -manipulation (DML)
• Data Control Language Berechtigungssteuerung (DCL)
• Transaction Control Language (TCL)

Bei den relationalen DBMS sind diese Kategorien in einer Sprache (SQL) vereint, bei anderen
Systemen existiert aber durchaus eine Trennung in Form unterschiedlicher Sprachen.

50
8.6.7. Mehrbenutzerfähigkeit

Für den Zugriff auf die Daten werden Berechtigungen verwaltet. Ohne Berechtigung kann die
entsprechende Operation nicht durchgeführt werden.
Für den (pseudo-)gleichzeitigen Zugriff mehrerer Anwendungen bzw. Anwender regelt das DBMS
Konkurrenzsituationen.

• Es werden Sperren (engl. locks) verwaltet.


• Es werden Systemprotokolle (engl. logs bzw. log files) verwaltet.
• Die Datenbank arbeitet transaktionsorientiert.
• Diese Gruppe von Anforderungen zeichnet Datenbanksysteme im engeren Sinne gegenüber
funktional erweiterten Dateisystemen aus.

Fehler in einer Datenbank, die durch unzulässigen parallelen Datenbankzugriff auftreten, werden
Anomalien im Mehrbenutzerbetrieb genannt.

51
9. SQL - Structered Query Language

9.1. Einführung

Dies ist ein Kapitel über die wichtigsten Grundlagen der Sprache SQL. Als Nachschlagewerk für
den Unterricht dient vor allem der LINK \color{blue}https://www.w3schools.com/sql/. Auf
dieser Seite sind alle gängigen Befehle Aufgelistet und beschrieben.

In der Datenbanksprache SQL unterscheidet man zwischen drei Arten von SQL-Kommandos:
• DML-Kommandos (Data Manipulation Language)
• DDL-Kommandos (Data Definition Language)
• DCL-Kommandos (Data Control Language)
Neben diesen Kommandos existieren noch weitere Bestandteile, wie die Data Query Language bzw.
Transaction Control Language.

9.1.1. DDL = Data Definition Language

DDL heisst auf deutsch Datendefinitionssprache und dient zum


• erstellen von Tabellen
• um Definitionsmerkmale bestehender Tabellen zu ändern
• um Berechtigungen festzulegen
Grundsätzlich findet DDL nur durch Datenbankentwickler Verwendung. Sie ist unabhängig von
integrierten Entwicklungsumgebungen und nimmt Einfluss auf die DB-Struktur.

Beispiele

CREATE DATABASE Erzeugen einer neuen Datenbank CREATE TABLE Erzeugen einer neuen Tabelle

9.1.2. DML = Data Manipulation Language

DML heisst auf deutsch Datenmanipulationssprache und dient zum


• Bearbeiten von Daten vorhandener Tabellen
• Tabelleninhalte abzufragen
• Daten eintragen und Löschen
Verwendung findet DML durch Datenbankentwickler und Webdatenbankentwickler.

52
Beispiele

SELECT * FROM Daten einer Tabelle abfragen INSERT INTO Daten in eine Tabelle eintragen

9.2. SQL - DDL - Anweisungen

Befehl Erklärung
CREATE DATABASE Erzeugen einer neuen Datenbank
CREATE TABLE Erzeugen einer neuen Tabelle
CREATE INDEX Erzeugen eines neuen Index für die Tabelle
ALTER TABLE Ändern von Spalten-Attributen einer Tabelle
& ADD Spalte, Index oder Key hinzufügen
& CHANGE Spaltennamen und/oder Spaltentyp ändern
& MODIFY Spaltentyp ändern
& DROP Spalte, Index oder Key entfernen
& RENAME Tabellenname ändern
RENAME TABLE Tabelle umbenennen
DROP DATABASE Datenbank löschen
DROP TABLE Tabelle löschen
DROP INDEX Tabellenindex löschen

Tabelle 9.1.. SQL-Befehle

9.2.1. Datenbank erzeugen

CREATE DATABASE datenbankname; erzeugt eine neue Datenbank mit dem Namen datenban-
kname. Falls die Datenbank bereits existiert, wird eine Fehlermeldung ausgegeben. Soll trotzdem
eine neue Datenbank erzeugt werden, dann ist die bestehende DB vorher zu löschen (siehe Befehl
DROP).

9.2.1.1. SQL-Dateiskript aufrufen

Der Aufruf der Datei folgt über zwei Möglichkeiten:


SOURCE NeueDatenbank.sql;
oder
\. NeueDatenbank.sql;.
Liegt die Scriptdatei nicht im mysql-Verzeichnis, dann muss der gesamte Verzeichnispfad angegeben
werden.

CREATE DATABASE

Beispiel: CREATE DATABASE Lagerbestand;


Damit wird ein Verzeichnis mit folgenden Dateien angelegt:

53
tabelle.frm Beschreibung von Spalten und Typen
tabelle.MYD enthält Tabellendaten
tabelle.MYI enthält Tabellenindizes

Tabelle 9.2.. Systemtabellen

9.2.2. Datenbank löschen

DROP DATABASE

DROP DATABASE datenbankname; Löscht die angegebene Datenbank. Falls die Datenbank nicht
existiert, wird eine Fehlermeldung ausgegeben. Soll die Fehlermeldung unterdrückt werden, lautet
der Befehl:
DROP DATABASE IF EXISTS datenbankname;
Beispiel: DROP DATABASE IF EXISTS Lagerbestand;
Falls die Datenbank Lagerbestand existiert, wird sie gelöscht, andernfalls passiert nichts.

9.3. Tabellen

Tabellen sind die Elemente einer Datenbank und haben einen einfachen und speziellen Aufbau.

9.3.1. Datentypen und Attribute

9.3.1.1. Allgemeine Attribute

Attribut Bedeutung
NULL die Spalte darf den Wert NULL enthalten (ist Default)
NULL bedeutet: keine Angabe (Achtung: NULL != 0)
NOT NULL die Spalte darf nicht den Wert NULL enthalten, es muss
ein Wert enthalten sein;
DEFULT x der Wert x wird eingetragen, wenn beim INSERT kein
Wert angegeben wird;
AUTO_INCREMENT erzeugt automatisch die nächst höhere Zahl dieser Spal-
te; nur bei PRIMARY KEY oder UNIQUE;
UNSIGNED es sind keine negativen Werte zugelassen
ZEROFILL anzeigen von führenden Nullen (z.B: SMALLINT(4)
Wert 3 wird angezeigt mit 0003)
PRIMARY KEY Festlegung als eindeutiger Schlüsselbegriff

Tabelle 9.3.. Attribute von Datentypen

54
9.3.1.2. Datentypen

Numerische Datentypen
Typ Wertebereich Attribut
TINYINT(m) -128 bis +127 0 bis 255 wenn UNSI-
GNED
SMALLINT(m) -32.768 bis 32.767 0 bis 65.535 wenn
UNSIGNED
MEDIUMINT(m) -8.388.608 bis 8.388.607 0 bis 16.777.215 wenn
UNSIGNED
INT(m), INTEGER(m) -2.147.683.648 bis 0 bis 4.294.967.295
+2.147.683.647 wenn UNSIGNED
BIGINT(m) −263 bis 263 0 bis 264 -1 wenn UN-
SIGNED
FLOAT(m,n) Gleitpunkt, einfache Genauigkeit -
DOUBLE(m,n) Gleitpunkt, doppelte Genauigkeit -
DECIMAL(m,n) Gleitpunkt mit Speicherung als m und n müsssen an-
Zeichen gegeben werden
NUMERIC(m,n) ... wie DECIMAL ....

Tabelle 9.4.. Datentypen numerisch

Zeichenketten (Strings)
Typ Wertebereich Bemerkung
CHAR(m) maximale Länge 255 fixe Länge m; es werden
m Stellen belegt, auch
wenn der String kürzer
ist.
VARCHAR(m) 255 variable Länge max m
TINYTEXT 255 variable Länge
TEXT 216 -1 (=65.535) variable Länge
MEDIUMTEXT 224 -1 (=16.777.215) variable Länge
LONGTEXT 232 -1 (=4.294.967.295) variable Länge

Tabelle 9.5.. Datentyp STRINGs

Binärdaten (BLOB = Binary Large Object): dienen zur Speicherung von binären Objekten,
wie z.B. Bilddateien.
Vorteil: Die Bilddaten werden gemeinsam mit der Datenbank verwaltet
(z.B. bei einem Backup)
Nachteil: Der Zugriff zur DB wird langsamer und es ist kein Zugriff auf Teile eines BLOB-Typs
möglich.

55
Typ Wertebereich Bemerkung
TINYBLOB 255 variable Länge
BLOB 216 -1 (=65.535) 64 kB variable Länge
MEDIUMBLOB 224 -1 (=16.777.215) 16 MB variable Länge
LONGBLOB 232 -1 (=4.294.967.295) 4 GB variable Länge

Tabelle 9.6.. Datentyp BLOB

Datum / Zeit - Datentyp: dieser Datentyp dient zur Speicherung von Datums- und Zeitanga-
ben. Es erfolgt keine Prüfung auf vollständige Gültigkeit der Angaben
(0 bis 12 für Monat und 0 bis 31 für Tag ist erlaubt).

Typ Bereich Format


DATE 1000-01-01 bis 9999-12-31 ’2003-12-31’
TIME -838:59:59 bis +838:59:59 ’23:59:59’
DATETIME Kombination aus DATE u. TIME ’2003-12-31 23:59:59’
YEAR 1900 bis 2155 ’2003’
TIMESTAMP(m) Zeiten zw. 1970 und 2038 Aktualisierung ’20031231235959’
erfolgt durch MySQL bei jeder Datensat-
zänderung (User sollte diesen Wert nicht
ändern!)

Tabelle 9.7.. Datentypen Datum Zeit

Aufzählungen: dienen zur Definition von Begriffen einer Liste. Jeder Eintrag der Liste erhält eine
Nummer. Bei der Spaltendefinition wird die Liste festgelegt, beim Insert von Daten kann nur ein
Begriff aus der Liste angegeben werden und dessen Nummer wird gespeichert.

Typ Beschreibung
ENUM Auswahl einer aus max. 65535 Zeichenketten
SET Kombination von maximal 64 Zeichenketten

Tabelle 9.8.. ELEMENTE der Aufzählungen

Beispiel ENUM
CREATE TABLE test (farbe ENUM (’rot’,’gelb’,’blau’,’weiss’));
INSERT test VALUES (’rot’);
SELECT * FROM test WHERE farbe=’rot’;

56
Beispiel SET
CREATE TABLE test (font SET (’bold’,italic’,’underlined’));
INSERT test VALUES (’bold,italic’);

9.3.2. Tabellen

9.3.2.1. Spaltentypen und ihre Attribute

Ehe Daten in einer Tabelle gespeichert werden können, muss deren Struktur festgelegt werden.
Merkmale für die Struktur:
• Spaltennamen
• Datentypen
• Spaltenattribute

MySQL unterscheidet zwischen:


• numerisch
• Text
• Datum/Zeit

9.3.2.2. Spaltennamen

Diese sollten den Inhalt einer Spalte charakterisieren oder eindeutige Abkürzungen enthalten wie
z.B:
• vorname
• plz (für Postleitzahl)
• nettogewicht
Namen dürfen nicht durch Leerzeichen getrennt sein!

9.3.2.3. Erklärung für (m, n) bei Datentyp-Beschreibung:

m = Anzahl Ganzzahlstellen, schränkt aber nicht die Speichergröße ein, sondern dient zur Angabe
der maximalen Anzeigegröße;
n = Anzahl der Nachkommastellen, diese Angabe ist optional. Beim Fehlen dieser Angabe wird ein
Standardwert verwendet.

9.3.3. Datentypen

9.3.4. Tabellen erzeugen

CREATE TABLE tabellenname (. . . .);


Die Tabelle tabellenname wird neu angelegt mit den in der Klammer angegebenen Spaltennamen

57
und deren Eigenschaften.
Syntax:

CREATE TABLE [IF NOT EXISTS] tabellenname


(spaltenname1 spaltentyp1 attribut1-1 ...... attribut1-n,
spaltenname2 spaltentyp2 attribut2-1 ...... attribut2-n,
. . . . . );

Attribute:

Attribut Erklärung
NOT NULL Es muss ein Wert eingegeben werden
NULL Das Feld darf leer gelassen werden
DEFAULT nnn nnn ein Defaultwert
AUTO_INCREMENT Zählanweisung
PRIMARY KEY Primärschlüssel
FOREIGN KEY Fremdschlüssel und sicherstellen der ref. Integrität
COMMENT = ’Kommentartext’ Kommentar der hinzugefügt wird

Tabelle 9.9.. Attribute

IF NOT EXISTS: Die Tabelle wird neu angelegt, wenn sie nicht existiert, sonst passiert nichts.
Falls diese Angabe fehlt kommt eine Fehlermeldung, wenn die Tabelle existiert.

Beispiel 1
CREATE TABLE Mitarbeiter (
vorname VARCHAR(20),
nachname VARCHAR(20) NOT NULL,
personalNr INT(6) NOT NULL PRIMARY KEY AUTO_INCREMENT,
gehalt FLOAT(4,2) DEFAULT 0.0,
geschlecht ENUM (’w’,’m’)
);
• Die Tabelle Mitarbeiter enthält 5 Spalten.
• Falls die Tabelle bereits existiert, wird eine Fehlermeldung ausgegeben.
• Personalnummer ist ein eindeutiger Schlüsselbegriff und wird bei jedem neuen Eintrag auto-
matisch um 1 hochgezählt.
• Gehalt wird mit dem Wert 0 vorbelegt.
• Für Geschlecht können nur Werte ’m’ oder ’w’ eingetragen werden.

Beispiel 2
CREATE TABLE Bestellung (

58
name CHAR(30) NOT NULL,
adresse CHAR(50) NOT NULL,
menu SET (’Aperitif’,’Vorspeise’,’Hauptspeise’,’Nachspeise’),
PRIMARY KEY (name, adresse)
);
• Die Tabelle Bestellung enthält 3 Spalten.
• Für name und adresse werden 30 bzw. 50 Stellen belegt unabhängig davon, wie lange die
Werte tatsächlich sind.
• Für menu können 1 oder mehrere Einträge der Liste gewählt werden.
• Als eindeutiger Schlüssel (PK) dient die Kombination aus den Spalten name und adresse.
Hinweis: wenn mehr als 1 Spalte den Primary Key bilden, dann ist eine separate Zeile zu dessen
Definition erforderlich (siehe Beispiel).

9.3.5. Tabelleneigenschaften anzeigen

DESC tabellenname;
Um die Eigenschaften einer vorhandenen Tabelle anzuzeigen.
Beispiel:

Abbildung 9.1.. DESC Mitarbeiter

59
9.3.5.1. Tabelle löschen

DROP TABLE [IF EXISTS] tabellenname;


Löscht die angegebene Tabelle. IF EXISTS unterdrückt Fehlermeldungen, wenn die Tabelle nicht
vorhanden ist. Beispiele:

Abbildung 9.2.. DROP Table1

Abbildung 9.3.. DROP Table2

Abbildung 9.4.. DROP Table3

1. Fehler, da Tabelle Abteilungen nicht vorhanden ist


2. Keine Fehlermeldung wegen IF EXISTS (aber Warnung)
3. Keine Fehlermeldung da Tabelle vorhanden

9.3.5.2. Tabelleneigenschaften ändern

ALTER TABLE tabellenname (ADD / CHANGE / DROP / MODIFY / RENAME) ;

Neue Spalte in Tabelle hinzufü-


gen:
ALTER TABLE Mitarbeiter ADD
geburtsDatum DATE NOT NULL;

Eigenschaft bestehender Spalte


in Tabelle ändern: ALTER TABLE
Mitarbeiter DROP vorname;

60
Spaltentyp ändern: Um den Spaltentyp zu ändern muss nachfolgende Anweisung eingegeben werden:
ALTER TABLE Mitarbeiter MODIFY gehalt SMALLINT;

Abbildung 9.5.. Spaltentyp ändern

Spaltenname und Typ ändern: ALTER TABLE Mitarbeiter CHANGE nachname name TEXT;

Abbildung 9.6.. Spaltennamen und Typ ändern

Tabellenname ändern: ALTER TABLE Mitarbeiter RENAME Angestellte;

Tabellen vorher Tabellen nachher


Tabelle xyz Tabelle xyz
felder ... felder ...
Mitarbeiter Angestellte
felder ... felder ...

Tabelle 9.10.. RENAME für ALTER TABLE

Primary Key löschen und für andere Spalte neu definieren:


ALTER TABLE Angestellte DROP pesonalNr;
ALTER TABLE Angestellte ADD PRIMARY KEY (name(10));

Abbildung 9.7.. PRIMARY KEY löschen und definieren

61
9.3.5.3. Index erzeugen

CREATE INDEX indexname ON tabellenname (spaltenname);


Ein Index auf einer bestimmten Tabellenspalte erhöht die Zugriffsperformance beim Lesen – aller-
dings werden Schreiboperationen langsamer.

Syntax:
CREATE [UNIQUE|FULLTEXT] INDEX indexname ON tabellenname (spaltenname1, spaltenname2,....);
UNIQUE nur eindeutige Spaltenwerte werden aufgenommen
FULLTEXT für alle Wörter eines Textes wird ein Index angelegt
Erlaubt für Spalten mit NOT NULL und PRIMARY KEY oder UNIQUE
Beispiel:

Abbildung 9.8.. INDEX erzeugen

9.3.5.4. Tabelleneigenschaften – weitere Beispiele

Die Tabelle angestellte wird für die nachfolgenden Beispiele auf bestimmte Ausgangsstruktur ge-
bracht:
ALTER TABLE angestellte DROP PRIMARY KEY;
ALTER TABLE angestellte CHANGE name nachname VARCHAR(20) NOT NULL;
ALTER TABLE angestellte ADD vorname VARCHAR(15) FIRST;
ALTER TABLE angestellte MODIFY gehalt MEDIUMINT(6);
ALTER TABLE angestellte MODIFY geschlecht ENUM(’w’,’m’) NOT NULL AUTO_INCREMENT;
ALTER TABLE angestellte ADD personalNr INT(6) PRIMARY KEY FIRST;
CREATE INDEX geburtsDatum ON angestellte (geburtsDatum);
ALTER TABLE angestellte RENAME mitarbeiter;

62
10. MySQL und MariaDB

10.1. Einführung

10.1.1. MySQL

MySQL ist eines der weltweit verbreitetsten relationalen Datenbankverwaltungssysteme. Es ist als
Open-Source-Software sowie als kommerzielle Enterpriseversion für verschiedene Betriebssysteme
verfügbar und bildet die Grundlage für viele dynamische Webauftritte.
MySQL wurde seit 1994 vom schwedischen Unternehmen MySQL AB entwickelt. Im Februar
2008 wurde MySQL AB von Sun Microsystems übernommen, das seinerseits im Januar 2010 von
Oracle gekauft wurde. Der Name MySQL setzt sich zusammen aus dem Vornamen My, den die
Tochter des MySQL-AB-Mitbegründers Michael Widenius trägt, und SQL.

10.1.2. MariaDB

MariaDB ist ein freies, relationales Open-Source-Datenbankverwaltungssystem, das durch eine


Abspaltung (Fork) aus MySQL entstanden ist. Das Projekt wurde von MySQL’s früherem Haupt-
entwickler Michael Widenius initiiert, der auch die Storage-Engine Aria entwickelte, auf welcher
MariaDB aufbaut (Aria ist diejenige Software-Schicht, welche die Basisfunktionalität der Datenbank
enthält, d. h. das Erstellen, Lesen, Ändern, Löschen von Daten).

10.1.2.1. Namensgebung

Da Oracle die Markenrechte an MySQL hält, mussten neue Namen für das Datenbanksystem und
dessen Storage-Engines gefunden werden. Der Name MariaDB geht auf Widenius’ jüngere Tochter
Maria zurück. Seine andere Tochter My war bereits die Namensgeberin für MySQL.

10.1.2.2. Verbreitung

Seit Ende 2012 haben einige Linux-Distributionen MySQL durch MariaDB als Standard-Installation
ersetzt, dazu gehören Fedora, CentOS, openSUSE, Slackware und Arch Linux. Die Wikimedia
Foundation, die unter anderem auch die Server für Wikipedia bereitstellt, hat ihre Produktivsysteme
im April 2013 auf MariaDB umgestellt. Damit hat sich eine der weltweit größten Web-Plattformen
von MySQL verabschiedet.

63
10.1.3. MariaDB/MySQL - Aufruf von der Console

Um das Dokument mit nicht zu vielen Verweisen auf beide Systeme unlesbar zu machen, wird nur
der Name MySQL verwendet, auch wenn MariaDB gemeint ist. Bei Unterschieden wird explizit
darauf hingewiesen.
mysql –u root startet MySQL als User root ohne Passwortanforderung. Das ist nur unter Win-
dows mit dem Programm XAMP möglich. Unter normalen Linux/Unix Umgebungen lautet der
Befehl mysql –u root -p, danach ist das Passwort einzugeben und man befindet sich in der
Konsolenumgebung der Datenbank. In diesem Fall liegen Server und Client am selben Computer.

Abbildung 10.1.. MySQL nach erfolgreichem Einstieg unter Linux

Gibt man in den Prompt show databases; ein,


dann zeigt das System alle vorhandenen Datenbanken im Verzeichnis an.

10.1.3.1. Auswahl einer bestimmten Datenbank:

Mit use Datenbankname wechselt man ein in die zu bearbeitende Datenbank und kann darin
Änderungen vornehmen und Abfragen erstellen. Alle SQL-Anweisungen gelten für diese DB bis
zum nächsten USE Aufruf. Beendet wird MySQL mit quit;

10.1.4. Erstellung und Verwendung von Script-Files

Zweck der Erstellung von Script-Files ist die raschere Einsatzmethode von langen SQL-Files zum
wiederholten Verwenden von Befehlsabfolgen.

64
10.1.4.1. Vorgangsweise:

Die erforderliche SQL-Anweisungen werden in eine Textdatei geschrieben, die als Endung .sql ver-
wendet (z.B. NeueDatenbank.sql). Der Aufruf der Datei erfolgt mittels source NeueDatenbank.sql,
oder ṄeueDatenbank.sql. Falls die Scriptdatei nicht im mysql-Verzeichnis liegt, muss der gesamte
Verzeichnispfad angegeben werden.

10.2. Installation und in Betrieb nehmen

10.2.1. Installation

Die Installation auf den einzelnen Plattformen ist sehr einfach und im Internet genau definiert.
Unter Windows verwenden wir XAMP (Xtandet-Apache-MySQL-PHP)).
Unter Linux gibt es ein LAMP-Paket (Linux-Apache-MySQL-PHP) anderenfalls installiert man
die Pakete apache2, mysql oder mariadb und die aktuelle Version von php. XAMP und große
Linuxdistributionen wie Arch Linux, Debian, Fedora, Red Hat Enterprise, Ubuntu und Slackware
verwenden nur mehr MariaDB.

10.2.2. Inbetriebnahme

Unter Windows öffnen wir das Programm XAMP und starten die Dienste Apache und My-SQL.
Daraufhin öffnen wir die integrierte Shell und können als root ohne Passwort einsteigen.
Unter Linux laufen die Dienste Apache und MySQL standardmäßig. Der Einstieg erfolgt über
mysql so wie unter Windows, aber mit dem Parameter -p für ein Passwort, das schon beim Instal-
lieren festgelegt wurde.
Bei MariaDB unter Linux beginnt der Einstieg folgendermaßen:
sudo mysql -u root (Systempasswort/root-Passwort eingeben)
update mysql.user set password=password(’geheim’) where user=’root’;
flush privileges; (Aktualisiert die Berechtigungen)
select user,host,password,plugin from mysql.user; Ergebnis:

+------------+-----------+-------------------------------------------+-------------+
| user | host | password | plugin |
+------------+-----------+-------------------------------------------+-------------+
| root | localhost | *34814BF1AAA36BCF2C113CDB7C3B69FF72CF1617 | unix_socket |
| phpmyadmin | localhost | *34814BF1AAA36BCF2C113CDB7C3B69FF72CF1617 | |
+------------+-----------+-------------------------------------------+-------------+

Inhalt bei Plugin löschen: update mysql.user set plugin=” where user=’root’;
Initialisierung der Berechtigungseinträge = flush privileges;

65
10.2.3. Anzeigen von Objekten

Zum Anzeigen von Datenbanken verwenden wir den Befehl SHOW:


SHOW DATABASES;

+---------------------+
| Database |
+---------------------+
| information_schema |
| fb_schueler |
| mysql |
| performance_schema |
| sys |
+---------------------+

Wir wählen eine Datenbank aus, zum Beispiel fb_schueler, um damit zu arbeiten. Der Befehl
dafür lautet: USE – USE fb_schueler;

Nun können wir uns die Tabellen der Datenbank fb_schueler mit dem Kommando
SHOW TABLES; ansehen:

+-----------------------+
| Tables_in_fb_schueler |
+-----------------------+
| spielorte |
| teams |
+-----------------------+

10.2.4. Beschreibung der Tabellenstruktur anzeigen

Um die Struktur einer Tabelle anzusehen brauchen wir noch einen Befehl der uns die Struktur
beschreibt. Dafür kann der Begriff DESCRIBE oder die Kurzform DESC verwendet werden.
Beispiel: DESCRIBE teams;
Wir sehen die Tabellen der Datenbank fb_schueler:

+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| idx | int(11) | NO | PRI | NULL | auto_increment |
| team | varchar(45) | NO | | NULL | |
| spiele | int(11) | YES | | NULL | |
| siege | int(11) | YES | | NULL | |
| remis | int(11) | YES | | NULL | |
| niederlagen | int(11) | YES | | NULL | |
| torep | int(11) | YES | | NULL | |

66
| torem | int(11) | YES | | NULL | |
| tordiff | int(11) | YES | | NULL | |
| punkte | int(11) | YES | | NULL | |
| trikot1 | varchar(45) | YES | | NULL | |
| trikot2 | varchar(45) | YES | | NULL | |
| sponsor | varchar(45) | YES | | NULL | |
+-------------+-------------+------+-----+---------+----------------+

*********************************************************************************
---------------------------------------------------------------------------------
*********************************************************************************

67
10.3. Benutzer verwalten in MySQL/MariaDB

Die Struktur der Tabelle User verrät uns welche Daten wo gespeichert werden.
Die für uns wichtigsten Felder in dieser Tabelle sind:
• user
• host
• plugin
• password

Abbildung 10.2.. Tabelle USER - Einträge

10.3.1. CREATE USER

Wie erstelle ich einen Benutzer und weise diesem Rechte zu?

MySQL und MariaDB sind die bekanntesten Datenbank Management Systeme (DBMS). Mithilfe
dieser Datenbanken kannst du dynamisch große Mengen an Daten speichern und verwalten.
Ein sehr fein unterteiltes Berechtigungssystem hilft dabei, die Zugriffsberechtigungen
von unterschiedlichen Benutzern zu steuern.

68
In diesem Abschnitt gehen wir die einzelnen Schritte durch, die man braucht um
einen neuen Benutzer zu erstellen und ihm Rechte für eine Datenbank zu geben. Zwar
behandeln wir in diesem Artikel MySQL, aber es lassen sich alle Kommandos 1:1 auf
MariaDB übertragen.

10.3.1.1. Benutzer in MySQL/MariaDB erstellen

Zunächst startest du die MySQL Konsole. Dazu öffnest du ein Terminal und verbindest
dich auf dem Server mit deiner MySQL Installation. Wir benutzen den Benutzer root
um MySQL aufzurufen. Hast du den Benutzer mit einem Kennwort versehen, dann benutze
folgendes Kommando:
mysql -u root -p
Du wirst dann nach einem Kennwort gefragt. Hast du kein Kennwort gesetzt, musst
du auf den Parameter ‚-p‘ verzichten und du wirst nicht nach einem Kennwort gefragt.
Nach der Eingabe solltest du den MySQL Prompt sehen.
Das Erstellen eines neuen Benutzers ist vergleichsweise einfach. Ersetze in dem
nachfolgendem Befehl einfach die Werte benutzer und passwort:
CREATE USER ’benutzer’@’localhost’ IDENTIFIED BY ’passwort’;
Damit hast du einen Benutzer erstellt. Dieser hat allerdings noch keine Berechtigungen
auf irgendeine Datenbank oder Tabelle.

10.3.1.2. Benutzer anzeigen lassen

Solltest du mal nicht wissen wie viele Benutzer du hast oder welche Namen schon
vergeben sind, kannst du dir mit dem Befehl:
SELECT * FROM mysql.user;
alle Benutzer anzeigen lassen.

10.3.2. Benutzer in MySQL Rechte zuweisen

Zu Testzwecken erstellen wir zuerst eine neue Datenbank, auf die der Benutzer später
zugreifen darf.
CREATE DATABASE meineTestDB;
Wenn du mehr über das erstellen einer Datenbak mithilfe von MySQL erfahren willst,
schau Dir den Abschnitt MySQL Datenbank erstellen und löschen an.
Nun kannst du deinem neuen Benutzer Rechte zuweisen. Wir haben ihm erst einmal
alle Rechte zugewiesen. Ersetze wieder den Wert „benutzer“ durch deinen Benutzernamen:
GRANT ALL PRIVILEGES ON meineDB . * TO ’benutzer’@’localhost’;
Kurz zur Erklärung des Kommandos:
• GRANT ALL PRIVILEGES : Es werden alle verfügbaren Privilegien (Rechte) zugewiesen.
Es gibt auch eingeschränkte Privilegien, dazu später mehr.

69
• ON ‚meineDB‘ . * : Hiermit wird genauer spezifiziert, auf welche Bereiche
die Rechte zugewiesen werden sollen. Möglich ist auch ‚* . *‘, um einem Benutzer
zum Beispiel alle Rechte einzuräumen oder die Einschränkung auf einzelne Tabellen
einer Datenbank, wie z.B. “meineDB‘ . ‚meineTabelle”.
• TO ‚benutzer’@’localhost‘ : Hierbei handelt es sich um den Benutzer, der diese
Rechte erhalten soll.
MySQL hält die Rechte normalerweise im Speicher vor, damit nicht jedes Mal, wenn
sich ein Benutzer an der Datenbank anmeldet (was im Zweifel sehr oft sein kann),
langsame I/O Operationen durchgeführt werden müssen. Um diese Kopie der Privilegien
im Arbeitsspeicher zu updaten, solltest du nach jeder Änderung einmal das Kommando:
FLUSH PRIVILEGES;
ausführen. Vergisst du das Kommando, kann es sein das du dich mit den neuen (oder
geänderten) Zugangsdaten noch nicht an dem Datenbankserver anmelden kannst.

10.3.3. Weitere Privilegien in MySQL/MariaDB

Neben dem oben genutzten ‚ALL PRIVILEGES‘ kannst du einem Benutzer auch andere
Sets an Privilegien in deinem MySQL Server zuweisen. Da sind beispielsweise folgende:

• ALL PRIVILEGES : Ein Wildcard für alle Rechte auf das gewählte Datenbankobjekt,
mit einem *.* auf alle Datenbanken.
• CREATE : Erlaubt einem Benutzer, neue Datenbanken zu erstellen
• DROP : Erlaubt einem Benutzer, Datenbanken zu löschen
• DELETE : Erlaubt einem Benutzer, einzelne Zeilen in einer Tabelle zu löschen
• INSERT : Erlaubt einem Benutzer, neue Zeilen in eine Tabelle zu schreiben
• SELECT : Leseberechtigungen auf eine Datenbank oder Tabelle
• UPDATE : Erlaubnis, eine Zeile zu aktualisieren
• GRANT OPTION : Erlaubt einem Benutzer, die Rechte anderer Benutzer zu setzen
oder zu widerrufen

Die genaue Syntax ist in der Dokumentation von MySQL sehr gut beschrieben. Du findest
sie hier (https://dev.mysql.com/doc/refman/5.5/en/grant.html). Solltest du mal
die Rechte deiner Benutzer anzeigen lassen wollen, kannst du diesen Befehl benutzen.
SHOW GRANTS FOR ’benutzer’@’localhost’;

+-----------------------------------------------------------------------------+
| Grants for ’schule’@’%’ |
+-----------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO ’schule’@’%’ IDENTIFIED BY PASSWORD ’*34814BF1AAA3...’|
+-----------------------------------------------------------------------------+

70
10.3.4. Benutzer in MySQL löschen

Einen Benutzer kannst du genauso einfach löschen, wie anlegen. Nutze dazu folgenden
Befehl und ersetze den Wert “benutzer ” durch den Benutzernamen den Du löschen möchtest
:
DROP USER ’benutzer’@’localhost’;
Versichere dich, dass du nach jeder Änderung an den Rechtetabellen die Privilegien
neu lädst. Zur Erinnerung:
FLUSH PRIVILEGES;

10.3.5. Fazit

In MySQL und MariaDB kann man schnell und einfach neue Benutzer anlegen und ihnen
Rechte zuweisen. Wichtig ist, dass du den Überblick über die Rechte deiner Benutzer
behälst. Benutzern alle Rechte zuzuweisen ist eher unüblich. Stattdessen solltest
du versuchen Benutzern nur die Rechte zuzuweisen, die sie wirklich brauchen.

10.4. Externer Zugriff in MySQL/MariaDB

10.4.1. Externen MySQL Zugriff in der my.cnf aktivieren:

Der MySQL Server lauscht standardmäßig nur auf der localhost IP Adresse (127.0.0.1).
Folgender Eintrag in der my.cnf ist dafür verantwortlich (/etc/my.cnf oder /etc/mysql/my.cnf
bind-address = 127.0.0.1
Um nun auch von anderen Rechnern auf den MySQL Server zugreifen zu können, wird
der „bind-address“ Eintrag geändert. 0.0.0.0 weist an, dass der MySQL Server auf
alle, für ihn verfügbaren, IP Adressen lauscht:
bind-address = 0.0.0.0
Mit „bind-address = 192.168.200.1“ kann der Server z.B. auch konfiguriert werden,
dass er nur über eine bestimmte IP Adresse verfügbar ist. MySQL Server neu starten,
damit die Konfiguration übernommen wird:
/etc/init.d/mysql restart
Verbindung überprüfen (mit einem telnet auf die IP Adresse/Hostname des Server
und den MySQL Port 3306 kann überprüft werden ob der MySQL Server korrekt antwortet):
telnet 192.168.200.1 3306

10.4.2. User für den externen Zugriff auf die MySQL Datenbank erlauben

Der MySQL Server lässt nun grundsätzlich Verbindungen von anderen (externen) IP
Adressen zu, aber die Datenbank User müssen noch die entsprechende Berechtigung
erhalten. Auf die MySQL Konsole verbinden: 1 mysql -u root -p folgende Befehle

71
geben dem User (dein_user) die Berechtigung von jedem Host aus (%) auf die Datenbank
zuzugreifen:

Abbildung 10.3.. externer Zugriff

Neuen MySQL Benutzer anlegen, damit externer Zugriff besteht (hier wird ebenfalls
das „%“ statt „localhost“ verwendet:
create user ’dein_user’@’%’;

10.4.3. MySQL Zugriff für bestimmte IP Adressen erlauben

(MySQL IP Restriction) via iptables


Den MySQL Zugriff kann man auch für bestimmte IP Adressen erlauben oder sperren.
Hierzu behelfen wir uns anhand der Linux Firewall iptables. Unter Debian und den
meisten Linux Distributionen ist iptables bereits vorinstalliert. In folgender
Regel wird definiert, dass auch der localhost weiterhin auf den MySQL Dienst zugreifen
darf:
iptables -A INPUT -i lo -p tcp –dport 3306 -j ACCEPT
Mit folgenden Regeln wird der Zugriff (Port 3306) für die IP Adressen 10.27.0.80
und 192.168.0.90 erlaubt und für alle anderen gesperrt:

Abbildung 10.4.. ip Zugriff verwalten

Warum wird beim Sperrbefehl der Einsatz von REJECT angewandt und nicht der von
DROP: Der Grund ist, dass mit dem REJECT die Verbindung schneller abgelehnt wird.
Bei DROP wird die Verbindung abgelehnt und der Client muss auf einen Timeout warten.
Die iptables Regeln müssen nun noch dauerhaft gespeichert werden, da sie sonst
nach einem Reboot wieder vom System entfernt werden. Anleitung zu: Iptables dauerhaft
speichern
Am einfachsten funktioniert das über das Programm „iptables-persistent“
apt-get install iptables-persistent
Bei der Installation wird gefragt ob die Regel gleich in die Konfigurationsdateien
übernommen werden sollen. Das kann gleich gemacht werden. Ansonsten befinden sich
die Configfiles unter /etc/iptables.

72
10.4.3.1. Kerninformationen:

http://www.sysadminslife.com/linux/quicktipp-mysql-externer-zugriff-erlauben-bind-address/
http://www.huschi.net/12_123_de-mysql-fuer-externen-zugriff-konfigurieren.html
PHP spezifische Informationen:
https://www.php-kurs.com/mysql-datenbank-verbindung-herstellen.htm

73
11. Tool zur Datenbankadministrierung

Es gibt einige Hilfsmittel, die das Arbeiten mit SQL-DB’s entscheidend erleichtern.
Natürlich bekommt man sowohl bei proffessionellen Datenbanken (Oracle, IBM, Microsoft,
usw ...), als auch im OpenSource-Bereich genügend Bordwerkzeuge mitgeliefert, aber
um die Aufgaben entsprechend bewältigen zu können, sind einige Werkzeuge und Hilfsmittel,
die außerhalb des Angebotes des DBMS-Anbieters liegen, sehr hilfreich und mehr
als nur Programme die man nicht unbedingt braucht.

11.1. phpMyAdmin

Aus diesem Grunde möchte ich das Programm phpMyAdmin in Kurzform beschreiben.
phpMyAdmin ist eine freie Webanwendung zur Administration von MySQL-Datenbanken.
Die Software ist in PHP implementiert; daher kommt der Name phpMyAdmin. Die meisten
Funktionen können ausgeführt werden, ohne selbst SQL-Anweisungen zu schreiben,
wie z. B. Datensätze auflisten, Tabellen anlegen und löschen, Spalten hinzufügen,
Datenbanken anlegen und löschen und Benutzer verwalten.

11.1.1. Geschichte

phpMyAdmin wurde von Tobias Ratschiller initiiert und basiert wie phpPgAdmin auf
Peter Kuppelwiesers MySQL-Webadmin aus dem Jahr 1997. Kuppelwiesers Idee war es,
eine web-basierte Applikation zur Administration von MySQL zu realisieren. Tobias
Ratschiller begann 1998 mit der Arbeit an einem PHP-basierten Web-Frontend für
MySQL. 2000 stellte er seine Arbeit aufgrund von Zeitmangel ein. Zu der Zeit gehörte
phpMyAdmin schon zu den populärsten PHP-Anwendungen und MySQL-Administrationswerkzeugen
und hatte eine große Nutzer- und Entwicklergemeinde. 2001 registrierten Olivier
Müller, Marc Delisle und Loic Chapeaux das phpMyAdmin-Projekt bei Sourceforge und
führten dort die Entwicklung fort.

74
Abbildungsverzeichnis

3.1. Datenbank Schüler mit allen 3 Tabellen . . . . . . . . . . . . . . . . . . . 17


3.2. Datenbank Schüler mit den 4 Abfragen . . . . . . . . . . . . . . . . . . . . 17
3.3. Tabellen in eine Abfrage einfügen . . . . . . . . . . . . . . . . . . . . . . 17
3.4. Abfrage Gesamt mit 3 Tabellen und Feldern . . . . . . . . . . . . . . . . . 18
3.5. Abfrage Gesamt mit Alias-Feldern . . . . . . . . . . . . . . . . . . . . . . . 18
3.6. Abfrage Gesamt mit 3 Tabellen ausgeführt . . . . . . . . . . . . . . . . . 18
3.7. Formular aus der Abfrage Gesamt mit Assistenten erstellt . . . . . . . 19
3.8. Bild nach dem Starten zum Erstellen eines Reports . . . . . . . . . . . 20
3.9. Auswählen der Basis für den zu Erstellenden Report . . . . . . . . . . . 20
3.10.Ansicht aller Felder der zugrunde liegenden Abfrage . . . . . . . . . . 21
3.11.Ansicht aller Felder für den Bericht . . . . . . . . . . . . . . . . . . . . 21
3.12.Auswahl aller Felder für den Bericht . . . . . . . . . . . . . . . . . . . . 21
3.13.Feldbeschreibungen ändern oder bestätigen . . . . . . . . . . . . . . . . . 21
3.14.Nach welchen Feldern soll gruppiert werden . . . . . . . . . . . . . . . . 21
3.15.Weitere Felder die sortiert werden sollen . . . . . . . . . . . . . . . . . 22
3.16.Aussehen des Report festlegen . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.17.Abspeichern des Report und festlegen eines Namen . . . . . . . . . . . . 22
3.18.3BFIT-abfragen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.19.Geburtsdatum angegeben . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.20.Abfrage Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

5.1. Geany-Kommentare . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
5.2. Datenbank anlegen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.3. Tabelle erstellen - Übersicht . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.4. Linux Datenbankeinstieg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
5.5. Klassen und Anschriften . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.6. Schüler Tabelle befüllen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
5.7. Beziehungen mit Hilfe von PK und FK . . . . . . . . . . . . . . . . . . . . . 30

6.1. konzeptionelles DB-Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

8.1. RDBMS-Genealogy - HPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44


8.2. Hierarchisches Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
8.3. NW-DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
8.4. rel Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

75
8.5. ObjektOrientModell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
8.6. MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

9.1. DESC Mitarbeiter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59


9.2. DROP Table1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
9.3. DROP Table2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
9.4. DROP Table3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
9.5. Spaltentyp ändern . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
9.6. Spaltennamen und Typ ändern . . . . . . . . . . . . . . . . . . . . . . . . . . 61
9.7. PRIMARY KEY löschen und definieren . . . . . . . . . . . . . . . . . . . . . 61
9.8. INDEX erzeugen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

10.1.MySQL nach erfolgreichem Einstieg unter Linux . . . . . . . . . . . . . . 64


10.2.Tabelle USER - Einträge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
10.3.externer Zugriff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
10.4.ip Zugriff verwalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

76
Tabellenverzeichnis

3.1. Datenbank speichern und Tabelle anlegen . . . . . . . . . . . . . . . . . . 15


3.2. Datenbank speichern und Tabelle anlegen . . . . . . . . . . . . . . . . . . 16

9.1. SQL-Befehle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
9.2. Systemtabellen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
9.3. Attribute von Datentypen . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
9.4. Datentypen numerisch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
9.5. Datentyp STRINGs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
9.6. Datentyp BLOB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
9.7. Datentypen Datum Zeit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
9.8. ELEMENTE der Aufzählungen . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
9.9. Attribute . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
9.10.RENAME für ALTER TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

77
Nr. Normalformen Bedeutung
1 0. NF Wenn eine Tabelle vorliegt die noch nicht in eine NF gebracht wurde

2 1. NF Wenn alle Informationen in einer Tabelle “atomar” vorliegen

3 2. NF wenn sie in der 1.NF ist und jedes Nichtschlüsselattribut vom Primärschlüssel voll funktional abhängig
ist

4 3. NF Wenn sie sich in der 2.NF befindet und jedes Nichtschlüsselattribut nicht transitiv vom PK abhängig
ist. Keinem Nichtschlüsselattribut folgt kein anderes Nichtschlüsselattribut.
Gesamttabelle
PersNr Name Vorname AbtNr Abteilung ProjektNr Beschreibung Zeit
1 Meier-Lorenz Sophia 1 Personal 2 Verkaufspromotion 83

2 Hohl Tatjana 2 Einkauf 3 Konkurenzanalyse 29

3 Müller Theodor 1 Personal 1,2,3 Kundenumfrage, 140,


Verkaufspromotion, 92,
Konkurenzanalyse 110

4 Richter Hans-Otto 3 Verkauf 2 Verkaufspromotion 67

5 Wiesenland Brunhilde 2 Einkauf 1 Kundenumfrage 160

Wenn eine Tabelle vorliegt die noch nicht in eine NF gebracht wurde
Gesamttabelle
PersNr Name Vorname AbtNr Abteilung ProjektNr Beschreibung Zeit

1 Meier-Lorenz Sophia 1 Personal 2 Verkaufspromotion 83

2 Hohl Tatjana 2 Einkauf 3 Konkurenzanalyse 29

3 Müller Theodor 1 Personal 1 Kundenumfrage 140

3 Müller Theodor 1 Personal 2 Verkaufspromotion 92

3 Müller Theodor 1 Personal 3 Konkurenzanalyse 110

4 Richter Hans-Otto 3 Verkauf 2 Verkaufspromotion 67

5 Wiesenland Brunhilde 2 Einkauf 1 Kundenumfrage 160

Wenn alle Informationen in einer Tabelle “atomar” vorliegen


Mitarbeiter Projekte
PersNr Name Vorname AbtNr Abteilung ProjektNr Beschreibung
1 Meier-Lorenz Sophia 1 Personal 2 Verkaufspromotion
2 Hohl Tatjana 2 Einkauf 3 Konkurenzanalyse
3 Müller Theodor 1 Personal 1 Kundenumfrage
3 Müller Theodor 1 Personal 2 Verkaufspromotion
3 Müller Theodor 1 Personal 3 Konkurenzanalyse
4 Richter Hans-Otto 3 Verkauf 2 Verkaufspromotion
5 Wiesenland Brunhilde 2 Einkauf 1 Kundenumfrage

Mitarbeiter in Projekten
PersNr ProjektNr Zeit
1 2 83
2 3 29
3 1 140
3 2 92
3 3 110
4 2 67
5 1 160

Eine Tabelle befindet sich in der 2. Normalform, wenn sie in der 1.NF ist und
jedes Nichtschlüsselattribut vom Primärschlüssel voll funktional abhängig ist
Mitarbeiter Projekte
PersNr Name Vorname AbtNr ProjektNr Beschreibung
1 Meier-Lorenz Sophia 1 2 Verkaufspromotion
2 Hohl Tatjana 2 3 Konkurenzanalyse
3 Müller Theodor 1 1 Kundenumfrage
3 Müller Theodor 1 2 Verkaufspromotion
3 Müller Theodor 1 3 Konkurenzanalyse
4 Richter Hans-Otto 3 2 Verkaufspromotion
5 Wiesenland Brunhilde 2 1 Kundenumfrage

Mitarbeiter in Projekten Abteilungen


PersNr ProjektNr Zeit AbtNr Abteilung
1 2 83 1 Personal
2 3 29 2 Einkauf
3 1 140 1 Personal
3 2 92 1 Personal
3 3 110 1 Personal
4 2 67 3 Verkauf
5 1 160 2 Einkauf

Wenn sie sich in der 2.NF befindet und jedes Nichtschlüsselattribut


nicht transitiv vom PK abhängig ist.

Keinem Nichtschlüsselattribut folgt kein anderes Nichtschlüsselattribut.


SQL
Basics und DDL

SQL-Basics/DDL 1
SQL
SQL = Structured Query Language
Was ist SQL ? Eine Sprache zur
► Definition und
► Manipulation

von relationalen Datenbanken

Geschichte ► Anfang der Siebziger-Jahre von IBM entwickelt.


► Seit 1982 unterliegt es der Standardisierung durch
ANSI
(American National Standards Institute).
► Ursprünglich entwickelt für Endbenutzer von
Datenbanken
► Heutzutage hauptsächlich von Datenbankentwicklern
benützt, da keine visuelle Oberfläche vorhanden und
dafür für Endbenutzer schwer zu erlernen.
SQL-Basics/DDL 2
SQL

Spracheigenschaften

Eine mächtige Sprache


 mit wenigen Schlüsselwörtern und Tabellennamen können
unterschiedliche Abfragen definiert werden.

SQL-Anweisungen werden in Textform erstellt


 mittels Textgenerator können die Anweisungen bearbeitet weren
 Verkettung von Zeichenfolgen und Befehlen ist möglich
 Bearbeitung der Befehle in Programmen ist möglich

SQL-Basics/DDL 3
Arten von SQL-Anweisungen

DDL = Data Definition Language


= Datendefinitionssprache
Dienen dazu
• Tabellen zu erstellen
• Definitionsmerkmale bestehender Tabellen zu ändern
• Berechtigungen festzulegen
Verwendung
grundsätzlich nur durch Datenbankentwickler,
um unabhängig von integrierten Entwicklungsumgebungen
Einfluss auf die DB-Struktur nehmen zu können.
Beispiele
CREATE DATABASE Erzeugen einer neuen Datenbank
CREATE TABLE Erzeugen einer neuen Tabelle
SQL-Basics/DDL 4
Arten von SQL-Anweisungen

DML = Data Manipulation Language


= Datenmanipulationssprache
Dienen dazu
► Daten vorhandener Tabellen zu bearbeiten

► Tabelleninhalte abzufragen

► Daten eintragen und Löschen

Verwendung
► durch Datenbankentwickler

► in Anwendungssystemen (Aufrufe in Programme eingebunden)

Beispiele
SELECT * FROM … Daten einer Tabelle abfragen
INSERT INTO … Daten in eine Tabelle eintragen

SQL-Basics/DDL 5
DDL

SQL-Basics/DDL 6
DDL-Anweisungen
Übersicht
CREATE DATABASE Erzeugen einer neuen Datenbank
CREATE TABLE Erzeugen einer neuen Tabelle
CREATE INDEX Erzeugen eines neuen Index für die Tabelle
ALTER TABLE Ändern von Spalten-Attributen einer Tabelle
ADD Spalte, Index oder Key hinzufügen
CHANGE Spaltennamen und/oder Spaltentyp ändern
MODIFY Spaltentyp ändern
DROP Spalte, Index oder Key entfernen
RENAME Tabellenname ändern
RENAME TABLE Tabelle umbenennen
DROP DATABASE Datenbank löschen
DROP TABLE Tabelle löschen
DROP INDEX Tabellenindex löschen

SQL-Basics/DDL 7
MySQL - Steueranweisungen
MySQL-Aufruf von der Console
mysql –u root
startet MySQL als User root ohne Passwortanforderung;
Server und Client liegen am selben Computer;

SQL meldet sich mit Prompt mysql>


mysql> show databases;
zeigt vorhandene Datenbanken im Verzeichnis datadir an
(datadir ist eine mysql-Variable und zeigt auf ein
bestimmtes Verzeichnis)
Auswahl einer bestimmten Datenbank:
mysql> use uebdb; …wenn uebdb eine existierende DB ist…
fortan gelten alle SQL-Anweisungen für DB uebdb bis zum
nächsten use-Aufruf;
Beenden: mysql> quit;
SQL-Basics/DDL 8
MySQL - Steueranweisungen

Erstellung und Verwendung von Script-Files


Zweck: zur wiederholten Verwendung von Befehlsabfolgen

Vorgangsweise:
erforderliche SQL-Anweisungen werden in eine Textdatei
geschrieben;
Dateiname z.B.: NeueDatenbank.sql
Aufruf der Datei:
mysql> source NeueDatenbank.sql;
oder
mysql> \. NeueDatenbank.sql;
falls die Scriptdatei nicht im mysql-Verzeichnis liegt, dann
muss der gesamte Verzeichnispfad angegeben werden.

SQL-Basics/DDL 9
Datenbank erzeugen
CREATE DATABASE datenbankname;

Erzeugt eine neue Datenbank mit Namen datenbankname

Falls die Datenbank bereits existiert, dann wird eine Fehlermeldung


ausgegeben.
Soll trotzdem eine neue Datenbank erzeugt werden, dann ist die
bestehende DB vorher zu löschen (siehe Befehl DROP)
Beispiel CREATE DATABASE Lagerbestand;
Es wird ein Verzeichnis
…mysql\data\Lagerbestand
mit folgenden Dateien angelegt:
tabelle.frm Beschreibung von Spalten und Typen
tabelle.MYD enthält Tabellendaten
tabelle.MYI enthält Tabellenindizes
SQL-Basics/DDL 10
Datenbank löschen
DROP DATABASE datenbankname;

Löscht die angegebene Datenbank

Falls die Datenbank nicht existiert, dann wird eine Fehlermeldung


ausgegeben.
Soll die Fehlermeldung unterdrückt werden, dann lautet der Befehl:
DROP DATABASE IF EXISTS datenbankname;

Beispiel DROP DATABASE IF EXISTS Lagerbestand;

Falls die Datenbank Lagerbestand existiert, dann wird sie


gelöscht, andernfalls passiert nichts.

SQL-Basics/DDL 11
Tabellen
Spaltentypen und ihre Attribute
Ehe Daten in einer Tabelle gespeichert werden können,
muss deren Struktur festgelegt werden.
Merkmale für die Struktur
► Spaltennamen
► Datentypen

► Spaltenattribute

MySQL unterscheidet zwischen


► numerisch

► Text
► Datum/Zeit

SQL-Basics/DDL 12
Tabellen
Spaltennamen
Diese sollten den Inhalt einer Spalte charakterisieren oder eindeutige
Abkürzungen enthalten; z.B:
► vorname
► plz (für Postleitzahl)
► nettogewicht

Namen sollten nicht durch Leerzeichen getrennt sein


(erleichtert das Editieren)
Erklärung für (m, n) bei Datentyp-Beschreibung:
m Anzahl Ganzzahlstellen;
schränkt nicht die Speichergröße ein, sondern dient zur Angabe der
maximalen Anzeigegröße;
n Anzal der Nachkommastellen
die Angabe ist optional; bei Fehlen wird ein Standardwert verwendet
SQL-Basics/DDL 13
Tabellen
Datentypen
Allgemeine Attribute
NULL die Spalte darf den Wert NULL enthalten (ist Default)
NULL bedeutet: keine Angabe (Achtung: NULL  0)
NOT NULL die Spalte darf nicht den Wert NULL enthalten
 es muss ein Wert enthalten sein;
DEFULT x der Wert x wird eingetragen, wenn beim INSERT kein
Wert angegeben wird;
AUTO_INREMENT erzeugt automatisch die nächst-höhere Zahl dieser
Spalte; nur bei PRIMARY KEY oder UNIQUE;
UNSIGNED es sind keine negativen Werte zugelassen
ZEROFILL anzeigen von führenden Nullen
z.B: SMALLINT(4)
Wert 3  wird angezeigt mit 0003
PRIMARY KEY Festlegung als eindeutiger Schlüsselbegriff
SQL-Basics/DDL 14
Tabellen
Datentypen
Numerische Datentypen
Typ Wertebereich Attribut
TINYINT(m) -127 bis +127
0 bis 255 wenn UNSIGNED
SMALLINT(m) -32768 bis 32767
0 bis 65535 wenn UNSIGNED
MEDIUMINT(m) -8388608 bis 8388607
0 bis 16777215 wenn UNSIGNED
INT(m), INTEGER(m) -2147683648 bis +2147683647
0 bis 4294967295 wenn UNSIGNED
BIGINT(m) -263 bis +263
0 bis 264-1 wenn UNSIGNED
FLOAT(m,n) Gleitpunkt, einfache Genauigkeit
DOUBLE(m,n) Gleitpunkt, doppelte Genauigkeit
DECIMAL(m,n) Gleitpunkt mit Speicherung als Zeichen;
m und n müsssen angegeben werden
NUMERIC(m,n) … wie DECIMAL ….
SQL-Basics/DDL 15
Tabellen
Datentypen
Zeichenketten (Strings)

Typ maximale Länge Bemerkung


CHAR(m) 255 fixe Länge m
es werden m Stellen belegt, auch wenn der String kürzer ist
VARCHAR(m) 255 variable Länge max m
TINYTEXT 255 variable Länge
TEXT 216-1 (=65.535) variable Länge
MEDIUMTEXT 224-1 (=16.777.215) variable Länge
LONGTEXT 232-1 (=4.294.967.295) variable Länge

SQL-Basics/DDL 16
Tabellen
Datentypen
Binärdaten BLOB = Binary Large Object
Dienen zur Speicherung von binären Objekten, wie z.B. Bilddateien.
Vorteil: Die Bilddaten werden gemeinsam mit der Datenbank
verwaltet (z.B. bei Backup)
Nachteil: Zugriff zur DB wird langsamer;
es ist kein Zugriff auf Teile eines BLOB-Typs möglich;

Typ maximale Länge Bemerkung


TINYBLOB 255 variable Länge
BLOB 216-1 (=65.535) 64 kB variable Länge
MEDIUMBLOB 224-1 (=16.777.215) 16 MB variable Länge
LONGBLOB 232-1 (=4.294.967.295) 4 GB variable Länge

SQL-Basics/DDL 17
Tabellen
Datentypen
Datum / Zeit
Dienen zur Speicherung von Datums- und Zeitangaben.
Es erfolgt keine Prüfung auf vollstängige Gültigkeit der Angaben
(0 bis 12 für Monat und 0 bis 31 für Tag ist erlaubt)
Typ Bereich Format
DATE 1000-01-01 bis 9999-12-31 '2003-12-31'
TIME -838:59:59 bis +838:59:59 '23:59:59'
DATETIME Kombination aus DATE u. TIME '2003-12-31 23:59:59'
YEAR 1900 bis 2155 '2003'
TIMESTAMP(m) Zeiten zw. 1970 und 2038 20031231235959
Aktualisierung erfolgt durch MySQL bei jeder
Datensatzänderung (User sollte diesen Wert nicht ändern)

SQL-Basics/DDL 18
Tabellen
Datentypen
Aufzählungen
Dienen zur Definition von Begriffen einer Liste.
Jeder Eintrag der Liste erhält eine Nummer.
Bei der Spaltendefinition wird die Liste festgelegt, beim Insert von
Daten kann nur ein Begriff aus der Liste angegeben werden und
dessen Nummer wird gespeichert.
Typ Bemerkung
ENUM Auswahl einer aus max. 65535 Zeichenketten
CREATE TABLE test_enum (farbe ENUM ('rot','gelb','blau','weiss'));
INSERT test_enum VALUES ('rot');
SELECT * FROM test_enum WHERE farbe='rot';

SET Kombination von maximal 64 Zeichenketten


CREATE TABLE test_set (font SET ('bold',italic','underlined'));
INSERT test_set VALUES ('bold,italic');

SQL-Basics/DDL 19
Tabellen erzeugen
CREATE TABLE tabellenname (. . . .);

Die Tabelle tabellenname wird neu angelegt mit den in der Klammer
angegebenen Spaltennamen und deren Eigenschaften.
Syntax
CREATE TABLE [IF NOT EXISTS] tabellenname
( spaltenname1 spaltentyp1 attribut1-1 …… attribut1-n,
spaltenname2 spaltentyp2 attribut2-1 …… attribut2-n,
. . . . . );
Attribute
NOT NULL / NULL
DEFAULT nnn // nnn ein Defaultwert
AUTO_INCREMENT
PRIMARY KEY
COMMENT = 'Kommentartext'
IF NOT EXISTS: Tabelle wird neu angelegt, wenn sie nicht existiert;
ansonsten passiert nichts.
falls Angabe fehlt  Fehlermeldung, wenn Tabelle existiert;
SQL-Basics/DDL 20
Tabellen erzeugen

Beispiel 1

CREATE TABLE Mitarbeiter


( vorname VARCHAR(20),
nachname VARCHAR(20) NOT NULL,
personalNr INT(6) NOT NULL PRIMARY KEY AUTO_INCREMENT,
gehalt FLOAT(4,2) DEFAULT 0.0,
geschlecht ENUM ('w','m')
);

• Die Tabelle Mitarbeiter enthält 5 Spalten.


• Falls die Tabelle bereits existiert, wird eine Fehlermeldung ausgegeben.
• Personalnummer ist ein eindeutiger Schlüsselbegriff und wird bei jedem
neuen Eintrag automatisch um 1 hochgezählt.
• Gehalt wird mit dem Wert 0 vorbelegt.
• Für Geschlecht können nur Werte 'm' oder 'w' eingetragen werden.

SQL-Basics/DDL 21
Tabellen erzeugen

Beispiel 2
CREATE TABLE Bestellung
( name CHAR(30) NOT NULL,
adresse CHAR(50) NOT NULL,
menu SET
('Aperitif','Vorspeise','Hauptspeise','Nachspeise'),
PRIMARY KEY (name, adresse)
);

• Die Tabelle Bestellung enthält 3 Spalten.


• Für name und adresse werden 30 bzw. 50 Stellen belegt unabhängig
davon, wie lange die Werte tatsächlich sind.
• Für menu können 1 oder mehrere Einträge der Liste gewählt werden.
• Als eindeutiger Schlüssel dient die Kombination aus den Spalten
name und adresse.

Hinweis: wenn mehr als 1 Spalte den Primary Key bilden, dann ist
eine separate Zeile zu dessen Definition erforderlich (siehe Beispiel).
SQL-Basics/DDL 22
Tabelleneigenschaften anzeigen
DESC tabellenname;

Um die Eigenschaften einer vorhandenen Tabelle anzuzeigen.


Beispiel

SQL-Basics/DDL 23
Tabelle löschen
DROP TABLE [IF EXISTS] tabellenname;

Löscht die angegebene Tabelle.


IF EXISTS unterdrückt Fehlermeldungen, wenn die Tabelle nicht
vorhanden ist.
Beispiele

Fehler, da Tabelle Abteilungen nicht vorhanden ist

Keine Fehlermeldung wegen IF EXISTS (aber Warnung)

Keine Fehlermeldung da Tabelle vorhanden

SQL-Basics/DDL 24
Tabelleneigenschaften ändern (1)
ALTER TABLE tabellenname
ADD / CHANGE / DROP / MODIFY / RENAME ;

Neue Spalte in Tabelle hinzufügen:


ALTER TABLE Mitarbeiter ADD geburtsDatum DATE NOT NULL;

neue
Tab.eig.

Eigenschaft bestehender Spalte in Tabelle ändern:


ALTER TABLE Mitarbeiter DROP vorname;

neue
Tab.eig.

SQL-Basics/DDL 25
Tabelleneigenschaften ändern (2)
Spaltentyp ändern:
ALTER TABLE Mitarbeiter MODIFY gehalt SMALLINT;

neue
Tab.eig.

Spaltenname und Typ ändern:


ALTER TABLE Mitarbeiter CHANGE nachname name TEXT;

neue
Tab.eig.

SQL-Basics/DDL 26
Tabelleneigenschaften ändern (3)
Tabellenname ändern:
ALTER TABLE Mitarbeiter RENAME Angestellte;

Tabellen vorher Tabellen nachher

Primary Key löschen und für andere Spalte neu definieren:


ALTER TABLE Angestellte DROP pesonalNr;
ALTER TABLE Angestellte ADD PRIMARY KEY (name(10));
neue
Tab.eig.

SQL-Basics/DDL 27
Index erzeugen
CREATE INDEX indexname ON tabellenname (spaltenname);
Ein Index auf einer bestimmten Tabellenspalte erhöht die
Zugriffsperformance beim Lesen – allerdings werden
Schreiboperationen langsamer.
Syntax
CREATE [UNIQUE|FULLTEXT] INDEX indexname
ON tabellenname (spaltenname1, spaltenname2,....);
UNIQUE nur eindeutige Spaltenwerte werden aufgenommen
FULLTEXT für alle Wörter eines Textes wird ein Index angelegt

Erlaubt für Spalten mit NOT NULL und PRIMARY KEY oder UNIQUE

Beispiel

neue
Tab.eig.

SQL-Basics/DDL 28
Tabelleneigenschaften – weitere Beispiele
Die Tabelle angestellte wird für die nachfolgenden Beispiele auf
bestimmte Ausgangsstruktur gebracht:
ALTER TABLE angestellte DROP PRIMARY KEY;
ALTER TABLE angestellte CHANGE name nachname VARCHAR(20) NOT NULL;
ALTER TABLE angestellte ADD vorname VARCHAR(15) FIRST;
ALTER TABLE angestellte MODIFY gehalt MEDIUMINT(6);
ALTER TABLE angestellte MODIFY geschlecht ENUM('w','m') NOT NULL
AUTO_INCREMENT;
ALTER TABLE angestellte ADD personalNr INT(6) PRIMARY KEY FIRST;
CREATE INDEX geburtsDatum ON angestellte (geburtsDatum);
ALTER TABLE angestellte RENAME mitarbeiter;

neue
Tab.eig.

SQL-Basics/DDL 29
SQL

Aggregat – Funktionen

A. Mayr, BADV SQL-Aggr&Datum&Zeit 1


Aggregats-Funktionen

Aggregats-Funktionen fassen alle oder bestimmte Zeilen zu einer


Gruppe zusammen und ermitteln aus den Werten einer einzelnen
Tabellenspalte diverse übergreifende Werte wie
Summe, Minimum, Maximum, Anzahl, Zeilenzahl

Regel
Eine Abfrage mit Aggregats-Funktion kann sich immer nur
auf eine einzige Spalte beziehen.
Wird z.B. die Summe über eine Tabellenspalte abgefragt,
dann darf nicht gleichzeitig der Inhalt einer anderen Spalte für
einen bestimmten Datensatz abgefragt werde.

Sind nur bestimmte Tabellenzeilen auszuwerten, so ist eine


Gruppierungsanweisung erforderlich (wird später behandelt).

A. Mayr, BADV SQL-Aggr&Datum&Zeit 2


Wichtige Aggregats-Funktionen
MIN(spalte) Minimum aller Werte von spalte
MAX(spalte) Maximum aller Werte von spalte
SUM(spalte) Summe über alle Werte von spalte
AVG(spalte) Mittelwert aller Werte von spalte
COUNT(*) Anzahl der vorhandenen Zeilen in der
Tabelle
COUNT(DISTINCT spalte) Anzahl der Zeilen mit unterschiedlichen
Werten

Einsatz
SUM und AVG nur bei numerischen Werten;
MIN, MAX und COUNT auch bei Datums- und Zeichenwerten;

A. Mayr, BADV SQL-Aggr&Datum&Zeit 3


Minimum-Funktion

Der kleinste Wert in der angegebenen Spalte wird ausgegeben.


Mit WHERE-Klausel  über Zeilen, welche die Bedingung erfüllen.

Syntax SELECT MIN(spalte) FROM tabellenname WHERE Bedingung;

Beispiel Bestimme das niedrigste Gehalt aller Mitarbeiter:

Ergebnis

Ungültig wäre: Bestimme das Gehalt des Mitarbeiters Koller


und das Mindestgehalt aller Mitarbeiter:

A. Mayr, BADV SQL-Aggr&Datum&Zeit 4


Maximum-Funktion

Der größte Wert in der angegebenen Spalte wird ausgegeben.


Mit WHERE-Klausel  über Zeilen, welche die Bedingung erfüllen.

Syntax SELECT MAX(spalte) FROM tabellenname WHERE Bedingung;

Beispiel Bestimme das Datum des jüngsten Mitarbeiters:

Ergebnis

mit schönerer Überschrift:

A. Mayr, BADV SQL-Aggr&Datum&Zeit 5


Summen-Funktion
Die Summe aller Werte der angegebenen Spalte wird ausgegeben.
Mit WHERE-Klausel  über Zeilen, welche die Bedingung erfüllen.

Syntax SELECT SUM(spalte) FROM tabellenname WHERE Bedingung;


Beispiel 1 Bestimme Gesamt-Gehaltssumme aller Mitarbeiter:

Ergebnis

Beispiel 2 Bestimme Gesamt-Gehaltssumme aller weiblichen Mitarbeiter:

Ergebnis

A. Mayr, BADV SQL-Aggr&Datum&Zeit 6


Mittelwert-Funktion
Der Mittelwert der angegebenen Spalte wird ausgegeben.
Mit WHERE-Klausel  über Zeilen, welche die Bedingung erfüllen.

Syntax SELECT AVG(spalte) FROM tabellenname WHERE Bedingung;


Beispiel 1 Bestimme das Durchschnittsgehalt aller Mitarbeiter:

Ergebnis

Beispiel 2 Ermittle das Durchschnittsgehalt aller nach 1980 geborenen


Mitarbeiter:

Ergebnis

A. Mayr, BADV SQL-Aggr&Datum&Zeit 7


Zählen-Funktion
Die Anzahl der Zeilen wird ausgegeben.
Mit WHERE-Klausel  über Zeilen, welche die Bedingung erfüllen.

Syntax SELECT COUNT(*) FROM tabellenname WHERE Bedingung;

Beispiel 1 Wie viele Zeilen enthält die Tabelle mitarbeiter ?:

Ergebnis

Beispiel 2 Wie viele Mitarbeiter haben ein Gehalt über oder gleich 2000 €?

Ergebnis

A. Mayr, BADV SQL-Aggr&Datum&Zeit 8


Zählen-Funktion für unterschiedliche Inhalte

Die Anzahl der Zeilen mit unterschiedlichem Inhalt wird ausgegeben.


Mit WHERE-Klausel  über Zeilen, welche die Bedingung erfüllen.

Syntax SELECT COUNT(DISTINCT spalte) FROM tabellenname;

Beispiel Wie viele unterschiedliche Vornamen haben die mitarbeiter ?

Ergebnis

A. Mayr, BADV SQL-Aggr&Datum&Zeit 9


Mehrfachauswahl mit CASE
Mit CASE können Spalteninhalten Ersatzwerte zugewiesen werden
(z.B. um Abkürzungen lesbarer zu machen).
Syntax SELECT spalte1,
CASE spalte2
WHEN wert1 THEN ersatzwert1
WHEN wert2 THEN ersatzwert2
................
ELSE 'ersatzwert für restliche Werte'
END
AS überschrift
FROM tabellenname;

Beispiel Gib das Geschlecht jeden Mitarbeiters mit vollem Wort an:

A. Mayr, BADV SQL-Aggr&Datum&Zeit 10


Datums- und Zeitwerte

A. Mayr, BADV SQL-Aggr&Datum&Zeit 11


Verwendungszweck von Datums- und Zeitfunktionen

Datums- und Zeitfunktionen werden verwendet um


► Datums- und Zeit-Informationen zu erhalten

► bestimmte Teile aus Datums- oder Zeitwerten zu filtern


► mit Datums- und/oder Zeitwerten zu rechnen

Um mit Datums-/Zeitangaben Berechnungen durchzuführen,


müssen Funktionen verwendet werden.

Einige Beispiele
► aktuelles Datum bestimmen
► aktuelle Zeit bestimmen
► Datum um Tage verändern
► Zeit um Stunden verändern

A. Mayr, BADV SQL-Aggr&Datum&Zeit 12


Systemdatum und Systemzeit lesen
Beide können ohne Bezugnahme auf eine Datenbank gelesen werden.
Jeweils mehrere Varianten stehen zur Verfügung:
SELECT CURDATE(); Systemdatum im Format jjjj-mm-tt
SELECT CURDATE() + 0; Systemdatum im Format jjjjmmtt
SELECT CURRENT_DATE; Systemdatum im Format jjjj-mm-tt

SELECT CURTIME(); Systemzeit im Format hh:mm:ss


SELECT CURTIME() + 0; Systemzeit im Format hhmmss
SELECT CURRENT_TIME; Systemzeit im Format hh:mm:ss

SELECT NOW(); Systemdatum und -zeit im Format


SELECT SYSDATE(); jjjj-mm-tt hh:mm:ss

SELECT NOW() + 0; Datum und Zeit im Format jjjjmmtthhmmss


A. Mayr, BADV SQL-Aggr&Datum&Zeit 13
Teilwerte aus einem Datum

WEEKDAY(datum) 0 bis 6 für Montag bis Sonntag


DAYofWEEK(datum) 1 bis 7 für Sonntag bis Samstag
DAYNAME(datum) Sunday bis Monday
WEEK(datum) Kalenderwoche, Wochenbeginn mit Sonntag
WEEK(datum,1) Kalenderwoche, Wochenbeginn mit Montag
WEEK(datum,2) Kalenderwoche, Wochenbeginn mit Dienstag
DAYofMONTH(datum) Tageswert des Datums
MONTH(datum) Monatswert des Datums
MONTHNAME(datum) Monatsname des Datums
DAYofYEAR(datum) Tage des Datums seit 1.1. des Jahres
QUARTER(datum) Quartal 1 bis 4 des Datums
YEAR(datum) Jahreswert des Datums

A. Mayr, BADV SQL-Aggr&Datum&Zeit 14


Teilwerte aus einem Datum
Sonderform für Lesen von Datumsbestandteilen:
SELECT EXTRACT (type FROM datumzeit);

Der mit type gekennzeichnete Teil des DatumZeit-Wertes


wird ausgegeben (zu type … siehe unten)
Beispiel Geburtsjahr aller Mitarbeiter mit Vornamen Franz

Einige type-Angaben für EXTRACT:


DAY MONTH YEAR
SECOND MINUTE HOUR
DAY_HOUR DAY_MINUTE DAY_SECOND YEAR_MONTH

Besprechung der Ausgabeformate in den Übungen!


A. Mayr, BADV SQL-Aggr&Datum&Zeit 15
Beispiele für Datumsbestimmung
► An welchem Wochentag ist der Mitarbeiter mit Personalnummer 5
geboren ?

► Wer ist im Jahr 1980 geboren ?

► Welcher Wochentag war heuer der 1.Januar ?

► In welchem Monat wurde Mitarbeiter Beckenbauer geboren?

A. Mayr, BADV SQL-Aggr&Datum&Zeit 16


Teilwerte aus einer Uhrzeit

Teile der Uhrzeit werden mit folgenden Funktionen gelesen:


HOUR(zeit) Stundenwert aus der Zeit
MINUTE(zeit) Minutenwert aus der Zeit
SECOND(zeit) Sekundenwert aus der Zeit

► Zeige die Einzelwerte der Systemzeit!

► Zeige Tage + Stunden von Systemdatum und -zeit!

A. Mayr, BADV SQL-Aggr&Datum&Zeit 17


Datum-/Zeitrechnung – Addition, Subtraktion
Folgende Berechnungen sind möglich:
► Datums-/Zeitwerte zu Anfangswert addieren oder subtrahieren
SELECT DATE_ADD (anfangswert, INTERVAL wert type);

anfangswert ist ein Datum


wert (positiv oder negativ) wird zu anfangswert addiert
type gibt die Einheit von wert an
(z.B. DAY, MONTH, HOUR, etc….. siehe Type-
Angaben einige Seiten vorher)
Beispiel
Zeige das Datum, welches auf den 28.Feb.2000 folgt!

A. Mayr, BADV SQL-Aggr&Datum&Zeit 18


Datum-/Zeitrechnung – Addition, Subtraktion

Die Subtraktion von Werten kann alternativ zu DATE_ADD mit der


Funktion DATE_SUB und Angabe eines positiven Wertes erfolgen:

SELECT DATE_SUB (anfangswert, INTERVAL wert type);

Beispiel

Zeige das heutige und das gestrige Datum:

A. Mayr, BADV SQL-Aggr&Datum&Zeit 19


Datum-/Zeitrechnung – Addition, Subtraktion

Beispiel Welcher Wochentag war genau vor 5 Jahren ?

A. Mayr, BADV SQL-Aggr&Datum&Zeit 20


Datum-/Zeitrechnung -- Datumsdifferenz

► Differenzen von Datumswerten bilden

Um die Anzahl der Tage zwischen 2 Datumsangaben zu berechnen,


wird für beide Datumswerte die Anzahl der Tage seit 1.1.0000
berechnet.
Aus der Differenz der beiden Ergebniswerte wird die Tagesdifferenz
berechnet.

Syntax für Anzahl der Tage seit 1.1.000:


SELECT TO_DAYS (datum);

Syntax für Datumsermittlung für Tageszahl seit 1.1.000:


SELECT FROM_DAYS (TO_DAYS(datum));

A. Mayr, BADV SQL-Aggr&Datum&Zeit 21


Datum-/Zeitrechnung -- Datumsdifferenz

Beispiel Vor wievielen Tagen wurde Mitarbeiter Weber geboren ?

Beispiel Gib eine Altersliste aller Mitarbeiter aus !

Hinweis:
Wenn erstes Monat niedriger ist als zweites
Monat, dann wird ein falsches Alter ausgegeben
► Warum ?

► Wie könnte man den Fehler umgehen ?

A. Mayr, BADV SQL-Aggr&Datum&Zeit 22


Datum-/Zeitrechnung -- Datumsdifferenz

Erstes Beispiel von Vorseite mit Tausender-Trennstrich:

Syntax für FORMAT:


FORMAT(wert,nachkommastellen)

Der Inhalt von wert wird mit Tausenderpunkt (Komma) angezeigt.


Falls nachkommastellen > 0, dann wird ein Dezimalpunkt und die
angegebenen Stellenzahl nach dem Dez.punkt angezeigt.

A. Mayr, BADV SQL-Aggr&Datum&Zeit 23


Datum-/Zeitrechnung -- Zeitdifferenz

Um die Differenz zwischen 2 Zeitangaben zu berechnen, wird für


beide Zeitwerte die Anzahl der Sekunden seit Mitternacht berechnet.
Deren Differenz wird in ein Format hh:mm:ss umgerechnet.

Syntax für Anzahl der Sekunden seit Mitternacht:


SELECT TIME_TO_SEC (zeit);

Syntax für Zeitermittlung für Sekunden seit Mitternacht:


SELECT SEC_TO_TIME (TIME_TO_SEC(zeit));

A. Mayr, BADV SQL-Aggr&Datum&Zeit 24


Datum-/Zeitrechnung -- Zeitdifferenz
Beispiel
Bestimme die Anzahl der Sekunden zwischen 10:10:15 und 17:40:20:

Zeige die Zeit zwischen 10:10:15 und 17:40:20 im hh:mm:ss Format:

A. Mayr, BADV SQL-Aggr&Datum&Zeit 25


Datum-/Zeitwerte formatieren
Datums- und Zeitwerte können mit bestimmtem Format ausgegeben
werden. Damit sind auch Teile dieser Angaben auswählbar.
Syntax für Datumsformatierung:
SELECT DATE_FORMAT (datum, format);

Syntax für Zeitformatierung:


SELECT TIME_FORMAT (zeit, format);

einige Datumsformate: einige Zeitformate:


Fmt Inhalt Beispiel Fmt Inhalt Beispiel
%Y Jahr 2002 %T Uhrzeit 14:23:55
%y Jahr 02 %k Stunde 15,23 (24h)
%m Monat 11 %l Stunde 3,11 (12h)
%M Monat November %i Minute 00…59
%b Monat Nov %s Sekunde 00…59
%d Tag 01
A. Mayr, BADV SQL-Aggr&Datum&Zeit 26
Datum-/Zeitwerte formatieren
Beispiel Gib die Geburtsdaten der Mitarbeiter
im Format "geboren am tag.monatsname.jahr" aus

Beispiel Gib die aktuelle Uhrzeit im Format


"es ist hh Uhr, mm Minuten und ss Sekunden" aus

A. Mayr, BADV SQL-Aggr&Datum&Zeit 27


Exkurs: Variablen

Für viele Abfragen sind geschachtelte Select-Anweisungen erforderlich.


Da zurzeit die Benützung geschachtelter Selects noch nicht behandelt
wurde, bzw. nicht für alle Fälle von MySQL die Syntax unterstützt wird,
kann das Problem mit Variablen umgangen werden.
► Variablen sind temporär
(nach Beendigung der Verbindung nicht mehr verfügbar).
► Variablennamen beginnen mit '@'

► Veriablennamen sind CASE-sensitiv

3 Arten der Wertzuweisung:


SET @varname = 3;
SELECT @varname := 3;
SELECT @varname := MIN(spalte) FROM tabelle;

@varname kann dann in weiteren SQL-Anweisungen verwendet werden.


A. Mayr, BADV SQL-Aggr&Datum&Zeit 28
Exkurs: Variablen

Beispiel Gib die Differenz aus höchstem und niedrigsten Gehalt der
Mitarbeiter aus!
1.Schritt: SELECT
@kleinstesGehalt := MIN(gehalt) AS kleinstes,
@groesstesGehalt := MAX(gehalt) AS groesstes
FROM personal;

2.Schritt: SELECT @groesstesGehalt - @kleinstesGehalt


AS 'Maximale Gehalts-Differenz';

A. Mayr, BADV SQL-Aggr&Datum&Zeit 29


Exkurs: Temporäre Tabellen
Temporäre Tabellen können angelegt werden, um Zwischenergebnisse
zu speichern. Temporäre Tabellen werden nach Sitzungsende
automatisch gelöscht.
Beispiel Der Personalleiter möchte wissen, welcher Mitarbeiter das
niedrigste Gehalt hat.
1.Schritt: CREATE TEMPORARY TABLE mingehalt
SELECT MIN(gehalt) AS minimum FROM mitarbeiter;

SELECT nachname, minimum


2.Schritt: FROM mitarbeiter, mingehalt
WHERE gehalt = minimum;

MIN ist eine Aggregatfunktion und erlaubt nicht gleichzeitig eine


andere Spalte auszuwählen.
Das Problem wird hier mit der temporären Tabelle umgangen .
Im Schritt 2 wird die JOIN-Technik angewendet – Besprechung später
A. Mayr, BADV SQL-Aggr&Datum&Zeit 30
SQL

Aggregat – Funktionen

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 1


Aggregats-Funktionen

Aggregats-Funktionen fassen alle oder bestimmte Zeilen zu einer


Gruppe zusammen und ermitteln aus den Werten einer einzelnen
Tabellenspalte diverse übergreifende Werte wie
Summe, Minimum, Maximum, Anzahl, Zeilenzahl

Regel
Eine Abfrage mit Aggregats-Funktion kann sich immer nur
auf eine einzige Spalte beziehen.
Wird z.B. die Summe über eine Tabellenspalte abgefragt,
dann darf nicht gleichzeitig der Inhalt einer anderen Spalte für
einen bestimmten Datensatz abgefragt werde.

Sind nur bestimmte Tabellenzeilen auszuwerten, so ist eine


Gruppierungsanweisung erforderlich (wird später behandelt).

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 2


Wichtige Aggregats-Funktionen
MIN(spalte) Minimum aller Werte von spalte
MAX(spalte) Maximum aller Werte von spalte
SUM(spalte) Summe über alle Werte von spalte
AVG(spalte) Mittelwert aller Werte von spalte
COUNT(*) Anzahl der vorhandenen Zeilen in der
Tabelle
COUNT(DISTINCT spalte) Anzahl der Zeilen mit unterschiedlichen
Werten

Einsatz
SUM und AVG nur bei numerischen Werten;
MIN, MAX und COUNT auch bei Datums- und Zeichenwerten;

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 3


Minimum-Funktion

Der kleinste Wert in der angegebenen Spalte wird ausgegeben.


Mit WHERE-Klausel über Zeilen, welche die Bedingung erfüllen.

Syntax SELECT MIN(spalte) FROM tabellenname WHERE Bedingung;

Beispiel Bestimme das niedrigste Gehalt aller Mitarbeiter:

Ergebnis

Ungültig wäre: Bestimme das Gehalt des Mitarbeiters Koller


und das Mindestgehalt aller Mitarbeiter:

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 4


Maximum-Funktion

Der größte Wert in der angegebenen Spalte wird ausgegeben.


Mit WHERE-Klausel über Zeilen, welche die Bedingung erfüllen.

Syntax SELECT MAX(spalte) FROM tabellenname WHERE Bedingung;

Beispiel Bestimme das Datum des jüngsten Mitarbeiters:

Ergebnis

mit schönerer Überschrift:

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 5


Summen-Funktion
Die Summe aller Werte der angegebenen Spalte wird ausgegeben.
Mit WHERE-Klausel über Zeilen, welche die Bedingung erfüllen.

Syntax SELECT SUM(spalte) FROM tabellenname WHERE Bedingung;


Beispiel 1 Bestimme Gesamt-Gehaltssumme aller Mitarbeiter:

Ergebnis

Beispiel 2 Bestimme Gesamt-Gehaltssumme aller weiblichen Mitarbeiter:

Ergebnis

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 6


Mittelwert-Funktion
Der Mittelwert der angegebenen Spalte wird ausgegeben.
Mit WHERE-Klausel über Zeilen, welche die Bedingung erfüllen.

Syntax SELECT AVG(spalte) FROM tabellenname WHERE Bedingung;


Beispiel 1 Bestimme das Durchschnittsgehalt aller Mitarbeiter:

Ergebnis

Beispiel 2 Ermittle das Durchschnittsgehalt aller nach 1980 geborenen


Mitarbeiter:

Ergebnis

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 7


Zählen-Funktion
Die Anzahl der Zeilen wird ausgegeben.
Mit WHERE-Klausel über Zeilen, welche die Bedingung erfüllen.

Syntax SELECT COUNT(*) FROM tabellenname WHERE Bedingung;

Beispiel 1 Wie viele Zeilen enthält die Tabelle mitarbeiter ?:

Ergebnis

Beispiel 2 Wie viele Mitarbeiter haben ein Gehalt über oder gleich 2000 ?

Ergebnis

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 8


Zählen-Funktion für unterschiedliche Inhalte

Die Anzahl der Zeilen mit unterschiedlichem Inhalt wird ausgegeben.


Mit WHERE-Klausel über Zeilen, welche die Bedingung erfüllen.

Syntax SELECT COUNT(DISTINCT spalte) FROM tabellenname;

Beispiel Wie viele unterschiedliche Vornamen haben die mitarbeiter ?

Ergebnis

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 9


Mehrfachauswahl mit CASE
Mit CASE können Spalteninhalten Ersatzwerte zugewiesen werden
(z.B. um Abkürzungen lesbarer zu machen).
Syntax SELECT spalte1,
CASE spalte2
WHEN wert1 THEN ersatzwert1
WHEN wert2 THEN ersatzwert2
................
ELSE 'ersatzwert für restliche Werte'
END
AS überschrift
FROM tabellenname;

Beispiel Gib das Geschlecht jeden Mitarbeiters mit vollem Wort an:

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 10


Datums- und Zeitwerte

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 11


Verwendungszweck von Datums- und Zeitfunktionen

Datums- und Zeitfunktionen werden verwendet um


Datums- und Zeit-Informationen zu erhalten
bestimmte Teile aus Datums- oder Zeitwerten zu filtern
mit Datums- und/oder Zeitwerten zu rechnen

Um mit Datums-/Zeitangaben Berechnungen durchzuführen,


müssen Funktionen verwendet werden.

Einige Beispiele
aktuelles Datum bestimmen
aktuelle Zeit bestimmen
Datum um Tage verändern
Zeit um Stunden verändern

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 12


Systemdatum und Systemzeit lesen
Beide können ohne Bezugnahme auf eine Datenbank gelesen werden.
Jeweils mehrere Varianten stehen zur Verfügung:
SELECT CURDATE(); Systemdatum im Format jjjj-mm-tt
SELECT CURDATE() + 0; Systemdatum im Format jjjjmmtt
SELECT CURRENT_DATE; Systemdatum im Format jjjj-mm-tt

SELECT CURTIME(); Systemzeit im Format hh:mm:ss


SELECT CURTIME() + 0; Systemzeit im Format hhmmss
SELECT CURRENT_TIME; Systemzeit im Format hh:mm:ss

SELECT NOW(); Systemdatum und -zeit im Format


SELECT SYSDATE(); jjjj-mm-tt hh:mm:ss

SELECT NOW() + 0; Datum und Zeit im Format jjjjmmtthhmmss


A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 13
Teilwerte aus einem Datum

WEEKDAY(datum) 0 bis 6 für Montag bis Sonntag


DAYofWEEK(datum) 1 bis 7 für Sonntag bis Samstag
DAYNAME(datum) Sunday bis Monday
WEEK(datum) Kalenderwoche, Wochenbeginn mit Sonntag
WEEK(datum,1) Kalenderwoche, Wochenbeginn mit Montag
WEEK(datum,2) Kalenderwoche, Wochenbeginn mit Dienstag
DAYofMONTH(datum) Tageswert des Datums
MONTH(datum) Monatswert des Datums
MONTHNAME(datum) Monatsname des Datums
DAYofYEAR(datum) Tage des Datums seit 1.1. des Jahres
QUARTER(datum) Quartal 1 bis 4 des Datums
YEAR(datum) Jahreswert des Datums

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 14


Teilwerte aus einem Datum
Sonderform für Lesen von Datumsbestandteilen:
SELECT EXTRACT (type FROM datumzeit);

Der mit type gekennzeichnete Teil des DatumZeit-Wertes


wird ausgegeben (zu type … siehe unten)
Beispiel Geburtsjahr aller Mitarbeiter mit Vornamen Franz

Einige type-Angaben für EXTRACT:


DAY MONTH YEAR
SECOND MINUTE HOUR
DAY_HOUR DAY_MINUTE DAY_SECOND YEAR_MONTH

Besprechung der Ausgabeformate in den Übungen!


A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 15
Beispiele für Datumsbestimmung
An welchem Wochentag ist der Mitarbeiter mit Personalnummer 5
geboren ?

Wer ist im Jahr 1980 geboren ?

Welcher Wochentag war heuer der 1.Januar ?

In welchem Monat wurde Mitarbeiter Beckenbauer geboren?

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 16


Teilwerte aus einer Uhrzeit

Teile der Uhrzeit werden mit folgenden Funktionen gelesen:


HOUR(zeit) Stundenwert aus der Zeit
MINUTE(zeit) Minutenwert aus der Zeit
SECOND(zeit) Sekundenwert aus der Zeit

Zeige die Einzelwerte der Systemzeit!

Zeige Tage + Stunden von Systemdatum und -zeit!

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 17


Datum-/Zeitrechnung – Addition, Subtraktion
Folgende Berechnungen sind möglich:
Datums-/Zeitwerte zu Anfangswert addieren oder subtrahieren
SELECT DATE_ADD (anfangswert, INTERVAL wert type);

anfangswert ist ein Datum


wert (positiv oder negativ) wird zu anfangswert addiert
type gibt die Einheit von wert an
(z.B. DAY, MONTH, HOUR, etc….. siehe Type-
Angaben einige Seiten vorher)
Beispiel
Zeige das Datum, welches auf den 28.Feb.2000 folgt!

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 18


Datum-/Zeitrechnung – Addition, Subtraktion

Die Subtraktion von Werten kann alternativ zu DATE_ADD mit der


Funktion DATE_SUB und Angabe eines positiven Wertes erfolgen:

SELECT DATE_SUB (anfangswert, INTERVAL wert type);

Beispiel

Zeige das heutige und das gestrige Datum:

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 19


Datum-/Zeitrechnung – Addition, Subtraktion

Beispiel Welcher Wochentag war genau vor 5 Jahren ?

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 20


Datum-/Zeitrechnung -- Datumsdifferenz

Differenzen von Datumswerten bilden

Um die Anzahl der Tage zwischen 2 Datumsangaben zu berechnen,


wird für beide Datumswerte die Anzahl der Tage seit 1.1.0000
berechnet.
Aus der Differenz der beiden Ergebniswerte wird die Tagesdifferenz
berechnet.

Syntax für Anzahl der Tage seit 1.1.000:


SELECT TO_DAYS (datum);

Syntax für Datumsermittlung für Tageszahl seit 1.1.000:


SELECT FROM_DAYS (TO_DAYS(datum));

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 21


Datum-/Zeitrechnung -- Datumsdifferenz

Beispiel Vor wievielen Tagen wurde Mitarbeiter Weber geboren ?

Beispiel Gib eine Altersliste aller Mitarbeiter aus !

Hinweis:
Wenn erstes Monat niedriger ist als zweites
Monat, dann wird ein falsches Alter ausgegeben
Warum ?
Wie könnte man den Fehler umgehen ?
A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 22
Datum-/Zeitrechnung -- Datumsdifferenz

Erstes Beispiel von Vorseite mit Tausender-Trennstrich:

Syntax für FORMAT:


FORMAT(wert,nachkommastellen)

Der Inhalt von wert wird mit Tausenderpunkt (Komma) angezeigt.


Falls nachkommastellen > 0, dann wird ein Dezimalpunkt und die
angegebenen Stellenzahl nach dem Dez.punkt angezeigt.

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 23


Datum-/Zeitrechnung -- Zeitdifferenz

Um die Differenz zwischen 2 Zeitangaben zu berechnen, wird für


beide Zeitwerte die Anzahl der Sekunden seit Mitternacht berechnet.
Deren Differenz wird in ein Format hh:mm:ss umgerechnet.

Syntax für Anzahl der Sekunden seit Mitternacht:


SELECT TIME_TO_SEC (zeit);

Syntax für Zeitermittlung für Sekunden seit Mitternacht:


SELECT SEC_TO_TIME (TIME_TO_SEC(zeit));

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 24


Datum-/Zeitrechnung -- Zeitdifferenz
Beispiel
Bestimme die Anzahl der Sekunden zwischen 10:10:15 und 17:40:20:

Zeige die Zeit zwischen 10:10:15 und 17:40:20 im hh:mm:ss Format:

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 25


Datum-/Zeitwerte formatieren
Datums- und Zeitwerte können mit bestimmtem Format ausgegeben
werden. Damit sind auch Teile dieser Angaben auswählbar.
Syntax für Datumsformatierung:
SELECT DATE_FORMAT (datum, format);

Syntax für Zeitformatierung:


SELECT TIME_FORMAT (zeit, format);

einige Datumsformate: einige Zeitformate:


Fmt Inhalt Beispiel Fmt Inhalt Beispiel
%Y Jahr 2002 %T Uhrzeit 14:23:55
%y Jahr 02 %k Stunde 15,23 (24h)
%m Monat 11 %l Stunde 3,11 (12h)
%M Monat November %i Minute 00…59
%b Monat Nov %s Sekunde 00…59
%d Tag 01
A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 26
Datum-/Zeitwerte formatieren
Beispiel Gib die Geburtsdaten der Mitarbeiter
im Format "geboren am tag.monatsname.jahr" aus

Beispiel Gib die aktuelle Uhrzeit im Format


"es ist hh Uhr, mm Minuten und ss Sekunden" aus

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 27


Exkurs: Variablen

Für viele Abfragen sind geschachtelte Select-Anweisungen erforderlich.


Da zurzeit die Benützung geschachtelter Selects noch nicht behandelt
wurde, bzw. nicht für alle Fälle von MySQL die Syntax unterstützt wird,
kann das Problem mit Variablen umgangen werden.
Variablen sind temporär
(nach Beendigung der Verbindung nicht mehr verfügbar).
Variablennamen beginnen mit '@'
Veriablennamen sind CASE-sensitiv

3 Arten der Wertzuweisung:


SET @varname = 3;
SELECT @varname := 3;
SELECT @varname := MIN(spalte) FROM tabelle;

@varname kann dann in weiteren SQL-Anweisungen verwendet werden.


A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 28
Exkurs: Variablen

Beispiel Gib die Differenz aus höchstem und niedrigsten Gehalt der
Mitarbeiter aus!
1.Schritt: SELECT
@kleinstesGehalt := MIN(gehalt) AS kleinstes,
@groesstesGehalt := MAX(gehalt) AS groesstes
FROM personal;

2.Schritt: SELECT @groesstesGehalt - @kleinstesGehalt


AS 'Maximale Gehalts-Differenz';

A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 29


Exkurs: Temporäre Tabellen
Temporäre Tabellen können angelegt werden, um Zwischenergebnisse
zu speichern. Temporäre Tabellen werden nach Sitzungsende
automatisch gelöscht.
Beispiel Der Personalleiter möchte wissen, welcher Mitarbeiter das
niedrigste Gehalt hat.
1.Schritt: CREATE TEMPORARY TABLE mingehalt
SELECT MIN(gehalt) AS minimum FROM mitarbeiter;

SELECT nachname, minimum


2.Schritt: FROM mitarbeiter, mingehalt
WHERE gehalt = minimum;

MIN ist eine Aggregatfunktion und erlaubt nicht gleichzeitig eine


andere Spalte auszuwählen.
Das Problem wird hier mit der temporären Tabelle umgangen .
Im Schritt 2 wird die JOIN-Technik angewendet – Besprechung später
A. Mayr, BADV, 2005/06 SQL-Aggr&Datum&Zeit 30
SQL

Funktionen

A. Mayr, BADV, 2005/06 SQL-Funktionen 1


Überblick

Zusätzlich zu den Aggregat-Funktionen und Datums-/Zeit-Funktionen


stellt SQL weitere Funktionen zur Bearbeitung von
Abfrageergebnissen zur Verfügung:

Zeichenstring-Bearbeitung
(Verketten, Suchen, Teilstrings, Verändern)
Mathematische Berechnungen
Vergleiche

A. Mayr, BADV, 2005/06 SQL-Funktionen 2


Zeichenstring - Länge

Syntax LENGTH(string)

liefert die Anzahl der Zeichen von string.


string kann der Inhalt einer Tabellenspalte sein oder eine
Textkonstante oder das Ergebnis einer anderen Funktion.

Beispiel Wieviele Buchstaben hat der Nachname von Mitarbeiter 8 ?


SELECT nachname,
LENGTH(nachname) AS Stellenzahl
FROM mitarbeiter
WHERE personalNr = 8;

Liste alle Mitarbeiter mit Namenslänge 6 !


SELECT nachname FROM mitarbeiter
WHERE LENGTH(nachname) = 6;

A. Mayr, BADV, 2005/06 SQL-Funktionen 3


Zeichenstring - Verketten

Syntax CONCAT(string1, string2, ...)

Erzeugt einen neuen String aus den angegebenen Strings.


Damit können z.B. die Inhalte mehrerer Spalten zu
1 Ausgabefeld zusammengefügt werden.

Beispiel Gib Vor- und Nachnamen aller Mitarbeiter in 1 Spalte aus !

SELECT
CONCAT(vorname,' ',nachname)
AS Name FROM mitarbeiter;

A. Mayr, BADV, 2005/06 SQL-Funktionen 4


Zeichenstring - Teilstrings

Syntax SUBSTRING(string,position[,länge])

Erzeugt einen neuen String aus string ab position mit länge


Zeichen (das erste Zeichen hat Position 1).
SUBSTRING('Klause',2,4) liefert 'laus'

Beispiel Erzeuge die Initialen der Mitarbeiter !


SELECT
CONCAT
(SUBSTRING(vorname,1,1),
SUBSTRING(nachname,1,1))
AS Initialen
FROM mitarbeiter;

A. Mayr, BADV, 2005/06 SQL-Funktionen 5


Zeichenstring - Teilstrings
Alternativen zu SUBSTRING:
LEFT(string,länge) länge-Zeichen aus string von links gezählt
RIGHT(string,länge) länge-Zeichen aus string von rechts gezählt
MID(string,pos,länge) wie SUBSTRING (siehe Vorseite)

Beispiel Setze 2 Anfangs- und 2 Endbuchstaben aus dem Vornamen


der Mitarbeiter zu einem String zusammen !
SELECT CONCAT
(LEFT(vorname,2),RIGHT(vorname,2))
AS aaee
FROM mitarbeiter;

A. Mayr, BADV, 2005/06 SQL-Funktionen 6


Zeichenstring - Einfügen

Syntax INSERT(string,position,länge,ersatz)

In string werden ab position länge-Zeichen durch neustring


ersetzt.
INSERT('Automobil',5,5,'bus') liefert 'Autobus'

Beispiel Ersetze den Anfangsbuchstaben des Nachnamens der


Mitarbeiter durch 'Ober' !

SELECT nachname,
INSERT(nachname,1,1,'Ober')
AS xxx FROM mitarbeiter;

A. Mayr, BADV, 2005/06 SQL-Funktionen 7


Zeichenstring – String suchen

Syntax INSTR(string,suchstring)

Die Anfangsposition von suchstring in string wird geliefert.


0, wenn der suchstring nicht in string enthalten ist.
INSTR('Automobil','mobil') liefert 5

Beispiel Gib die Liste der Mitarbeiter mit einem 'o' im Namen aus !

SELECT nachname,
FROM mitarbeiter
WHERE INSTR(nachname,'o')>0;

A. Mayr, BADV, 2005/06 SQL-Funktionen 8


Zeichenstring – Groß- und Kleinschreibung

Syntax LOWER(string) liefert string in Kleinbuchstaben


UPPER(string) liefert string in Großbuchstaben

LOWER('UNO') ergibt 'uno'

Wird z.B. verwendet in CASE-sensitiven Funktionen, wenn die


Schreibweise des gespeicherten Stings unbekannt ist

Beispiel Gib Namen der Mitarbeiter in Großbuchstaben, das


Geschlecht als Kleinbuchstabe aus !

SELECT UPPER(nachname) AS Nachname,


LOWER(geschlecht) AS Geschlecht
FROM mitarbeiter;

A. Mayr, BADV, 2005/06 SQL-Funktionen 9


Zeichenstring - Teilstrings

Weitere Zeichenkettenfunktionen sind bei Bedarf diversen


Manuals zu entnehmen, z.B:

FIND_IN_SET
LOCATE
LPAD
REPEAT
Bearbeitung von
REPLACE
Strings
REVERSE
SPACE
SUBSTRING_INDEX
TRIM
u.a.

A. Mayr, BADV, 2005/06 SQL-Funktionen 10


Zahlenkonvertierung
Zahlenwerte werden von einem Basissystem in ein anderes
Basissystem konvertiert:
CONV(zahl, basisIn, basisOut)

basisIn: Exponentenbasis der vorliegenden zahl (z.B. 10)


basisOut: Exponentenbasis der Ausgabe (z.B. 16)
CONV(28,10,16) ergibt 1C
Alternativen: HEX(zahl), OCT(zahl), BIN(zahl)
Beispiel Gib das Gehalt der Mitarbeiter hexadezimal, oktal und binär aus !
SELECT nachname,gehalt,
HEX(gehalt) AS HEX,
OCT(gehalt) AS OCT,
BIN(gehalt) AS BIN
FROM mitarbeiter;

A. Mayr, BADV, 2005/06 SQL-Funktionen 11


Mathematische
Funktionen

A. Mayr, BADV, 2005/06 SQL-Funktionen 12


Arithmetische Operatoren
Es stehen die Operatoren +, -, * und / zurVergügung.
Mit diesen Operatoren können numerische Konstanten und numerische
Ergebnisse anderer Funktionen verknüpft werden.
Klammern erzwingen die Abarbeitungsreihenfolge.

Beispiel Berechne das Durchschnittsgehalt !


SELECT SUM(gehalt) / COUNT(*) AS Durchschnittsgehalt
FROM mitarbeiter;

Hinweis
Dieses Beispiel führt fast dasselbe aus wie die Funktion AVG.
'fast' deshalb, weil COUNT(*) alle Zeilen zählt, auch wenn bei
gehalt NULL enthalten ist
(AVG zählt diese Zeilen nicht mit).
A. Mayr, BADV, 2005/06 SQL-Funktionen 13
Mathematische Funktionen
Einige Beispiele
MOD(zahl,divisor) Divisionsrest aus zahl/divisor
POW(zahl, exponent) zahl hoch exponent
SQRT(zahl) Wurzel aus zahl
ROUND(zahl,n) runden ab n-ter Stelle ab Dez.punkt
TRUNCATE(zahl,n) schneidet zahl ab der n-ten Stelle ab
ABS(zahl) positiver Wert von zahl
PI() liefert den Wert von Pi
SIGN(zahl) 1: positiv, -1: negativ, 0: null
CEILING(zahl) nächsthöhere ganze Zahl zu zahl
FLOOR(zahl) nächstkleinere ganze Zahl zu zahl
COS(zahl) cosinus von zahl
SINUS(zahl) sinus von zahl
RAND() Zufallszahl zwischen 0 und 0.999;
neue Zahl bei jedem Aufruf;
RAND(zahl) Zufallszahl zwischen 0 und 0.999;
Mit zahl wird eine wiederholbare Zahlenfolge
erzwungen.
A. Mayr, BADV, 2005/06 SQL-Funktionen 14
Mathematische Funktionen
Anwendungsbeispiele

POW(5,3) 53 = 125
ROUND(123.4567, 3) = 123.457

TRUNCATE(543.21, 1) = 543.2
CEILING(543.21) = 544

FLOOR(543.21) = 543

SELECT RAND(5); 0.406139


SELECT RAND(5)*100; 40.6135
SELECT FLOOR(RAND(5)*100); 40
SELECT TRUNCATE(RAND(5)*100, 0); 40

A. Mayr, BADV, 2005/06 SQL-Funktionen 15


IF Anweisung

Mittels IF kann einer von 2 Ausdrücken zur Ausführung ausgewählt


werden.
IF(ausdruck, dannAusdruck, sonstAusdruck)
wenn ausdruck wahr ist, dann verwende dannAusdruck,
ansonsten verwende sonstAusdruck
SELECT IF(12,'!0','=0'); ergibt !0

IFNULL(ausdruck, dannAusdruck)
wenn ausdruck gleich NULL ist, dann verwende dannAusdruck,
ansonsten verwende ausdruck
SELECT IFNULL(null, 1); ergibt 1,
da ausdruck = null

A. Mayr, BADV, 2005/06 SQL-Funktionen 16


SQL

Sortieren, Gruppieren

A. Mayr, BADV, 2005/06 SQL-Sortieren, Gruppieren 1


Überblick

Daten lassen sich leichter auswerten, wenn sie sortiert oder in


Gruppen zusammengefasst werden.
Sortieren
Im Zusatz ORDER BY wird angegeben nach welcher Spalte
die Datenausgabe sortiert werden soll.
Zusätzlich kann die Sortierrichtung angegeben werden.

Gruppieren
Im Zusatz GROUP BY wird angegeben nach welcher Spalte
Datensätze zusammengefasst werden sollen.
Gruppierung erlaubt die Ausgabe von Informationen für ein
Gruppe zusammengehörender Datensätze
(z.B. Arbeitsstunden-Summe je Auftragsnummer).

A. Mayr, BADV, 2005/06 SQL-Sortieren, Gruppieren 2


Sortieren
Syntax SELECT spalte1, ...., spalteN
FROM tabelle
WHERE bedingung
ORDER BY spalteI [DESC|ASC];

Die Werte jeder Spalte können als Sortierkriterium verwendet werden.


Sortiert wird nach dem ascii-Code:
Ziffern < Großbuchstaben < Kleinbuchstaben < Sonderzeichen
DESC: absteigend; ASC: aufsteigend (Standard)
ORDER BY muss immer die letzte Klausel innerhalb SELECT sein.

Beispiel Erstelle eine Liste der Mitarbeiter aufsteigend nach


Personalnummer sortiert.
SELECT persnr, pname, pvname
FROM personal
ORDER BY persnr ASC

A. Mayr, BADV, 2005/06 SQL-Sortieren, Gruppieren 3


Sortieren

Mehrere Sortierkriterien schachteln

Beispiel Erstelle eine Liste der Mitarbeiter aufsteigend nach


Geschlecht, innerhalb des Geschlechts nach Eintrittsdatum
sortiert.
SELECT pname, pvname, geschlecht, eintritt
FROM personal
ORDER BY geschlecht ASC,
eintritt DESC;

A. Mayr, BADV, 2005/06 SQL-Sortieren, Gruppieren 4


Sortieren
Sortierspalten mit Nummer angeben

Anstatt der Spaltennamen, nach denen sortiert werden soll, kann die
Nummer der Auflistung nach dem Select angegeben werden:

Beispiel Gib Personalnummer, Nachname und Vorname der


Mitarbeiter sortiert nach Nachnamen aus.

SELECT persnr, pname, pvname


FROM personal
ORDER BY 2;

2 zeigt auf den zweiten


Spaltennamen nach Select
(= pname)
A. Mayr, BADV, 2005/06 SQL-Sortieren, Gruppieren 5
Sortieren
Beschränkte Zeilenzahl einer sortierten Liste ausgeben

Wenn nur eine kleinere Anzahl der sortierten Zeilen ausgegeben


werden soll, kann die Ausgabelänge angegeben werden:

Beispiel Gib Nachname, Geschlecht und Gehalt der 3 Mitarbeiter mit


dem höchsten Gehalt aus, absteigend sortiert nach Gehalt.
SELECT pname,geschlecht,gehalt
FROM personal
ORDER BY gehalt DESC
LIMIT 3;

Mit LIMIT kann auch ein Bereich innerhalb der Liste ausgewählt
werden:
LIMIT anfang, laenge anfang: Zeilennummer gezählt ab 0
laenge: Anzahl Zeilen ab anfang
A. Mayr, BADV, 2005/06 SQL-Sortieren, Gruppieren 6
Gruppieren
Syntax SELECT spalte1, ...., spalteN
FROM tabelle
WHERE bedingung
GROUP BY spalteI;
Jede Spalte einer Tabelle kann Gruppierkriterium sein,
falls sie hinter Select genannt wird;
Alle Zeilen werden zu einer Einheit zusammengefasst, welche in der
Gruppierspalte gleiche Werte haben;
Der wesentliche Anwendungsbereich für Gruppierung ist die
Anwendung von Aggregatfunktionen auf Gruppen;
Beispiel Gib die Gehaltssumme der Mitarbeiter aus, gruppiert nach
Geschlecht!
SELECT geschlecht,SUM(gehalt)
FROM personal
GROUP BY geschlecht;

A. Mayr, BADV, 2005/06 SQL-Sortieren, Gruppieren 7


Gruppieren

Gruppieren mit mehreren Spalten

Innerhalb einer Gruppe kann eine weitere Gruppierung erfolgen.


Beispiel Wieviele männliche und wieviele weibliche Mitarbeiter sind
an verschiedenen Tagen in die Firma eingetreten?
SELECT geschlecht,eintritt COUNT(*)
FROM personal
GROUP BY geschlecht, eintritt;

Alle Zeilen gleichen Geschlechts werden zu einer Gruppe


zusammengefasst.
Innerhalb dieser Gruppe werden die Mitarbeiter zu einer Gruppe
zusammengefasst, welche am gleichen Tag eingetreten sind.
A. Mayr, BADV, 2005/06 SQL-Sortieren, Gruppieren 8
Gruppieren
Gruppen mit bestimmten Eigenschaften auswählen
Nach der GROUP BY Klausel kann die HAVING-Klausel eingesetzt
werden, um Bedingungen für die Auswahl einer Gruppe festzulegen.
Die Bedingung wird gleichartig wie die WHERE-Bedingung formuliert.

Beispiel Wieviele männliche und wieviele weibliche Mitarbeiter sind


an verschiedenen Tagen seit 1982 in die Firma eingetreten?
SELECT geschlecht,eintritt COUNT(*)
FROM personal
GROUP BY geschlecht, eintritt
HAVING YEAR(eintritt)>= 1982;

Die Gruppen für die Eintrittstage vor 1982 werden nicht ausgewertet.

A. Mayr, BADV, 2005/06 SQL-Sortieren, Gruppieren 9


SQL

Joins

A. Mayr, BADV, 2005/06 SQL-Joins 1


Überblick
Joins ermöglichen Datenabfragen aus mehreren Tagellen, welche
miteinander in einem logischen Zusammenhang stehen.
Werden Tabellen ohne eine Verknüpfungsvorschrift in einer Abfrage
verbunden, so wird bei der Ausführung der Abfrage das kartesische
Produkt gebildet (=Full Join oder Cross Join).
+--------+-------+------------+
SELECT persnr,pname,abtname | persnr | pname | abtname |
FROM personal,abteilungen +--------+-------+------------+
| 4 | Strom | Leitung |
WHERE persnr < 5;
| 4 | Strom | Verwaltung |
| 4 | Strom | Steuerung |
In diesem Beispiel wird zu jeder | 4 | Strom | Transport |
ausgewählten Personalnummer die |
|
3 | Meyer | Leitung |
3 | Meyer | Verwaltung |
gesamte Liste der Abteilungsnamen | 3 | Meyer | Steuerung |
| 3 | Meyer | Transport |
ausgegeben. | 1 | Eifer | Leitung |
| 1 | Eifer | Verwaltung |
3 Zeilen aus Tabelle A und | 1 | Eifer | Steuerung |
4 Zeilen aus Tabelle B ergeben also | 1 | Eifer | Transport |
+--------+-------+------------+
3 x 4 = 12 Ausgabezeilen
A. Mayr, BADV, 2005/06 SQL-Joins 2
Equi-Join
Equi-Join entspricht der Übersetzung Gleichheits-Verknüpfung

Bei Equi-Join wird eine Spalte einer Tabelle mit einer Spalte einer
anderen Tabelle in der WHERE-Klausel mit Operator '=' verknüpft.

Syntax: SELECT tabelle1.spalteA, tabelle2.spalteB


FROM tabelle1, tabelle2
WHERE tabelle1.spalteX = tabelle2.spalteY;

Es werden nur Daten jener Zeilen aus tabelle1 bzw.


tabelle2 ausgegeben, bei denen die Inhalte der Spalten
spalteX und spalteY übereinstimmen.
Bei FROM müssen jene Tabellen angegeben werden,
aus welchen Daten für die Anzeige bzw. für die
WHERE-Klausel entnommen werden sollen.

A. Mayr, BADV, 2005/06 SQL-Joins 3


Equi-Join (Forts)
Beispiel Erstelle eine Aufstellung mit den Namen der Mitarbeiter aus
Abteilung 4 und den zugehörigen Abteilungsnamen.

SELECT pname, abtname


FROM personal, abteilungen
WHERE personal.abtnr = 4 AND
abteilungen.abtnr = 4;

Namen der Mitarbeiter: inTabelle personal


Namen der Abteilungen: in Tabelle abteilungen
Die logische Zuordnung zwischen den Tabellenzeilen
erfolgt über identische Schlüsselwerte in Spalte abtnr.
A. Mayr, BADV, 2005/06 SQL-Joins 4
Tabellenspalten qualifizieren
Wenn die anzuzeigende Spalte in 2 Tabellen vorkommt
dann ist dem System mitzuteilen, aus welcher Tabelle die Spalte
zu entnehmen ist.
Dies erfolgt mittels folgender

Syntax: SELECT tabelle1.spalteX, tabelle2.spalteY


FROM tabelle1, tabelle2;
Beispiel Zeige die Namen des Mitarbeiters mit Personalnummer
10 und die Vornamen seiner Familienmitglieder:
Mitarbeiter: Familienmitglieder:

A. Mayr, BADV, 2005/06 SQL-Joins 5


Tabellenspalten qualifizieren
Beispiel (Fortsetzung)
Namen der Mitarbeiter: in Tabelle personal
Vornamen der Familienmitglieder: in Tabelle familienmitglieder
Die Spalte persnr ist in beiden Tab. vorhanden
angeben, aus welcher Tabelle persnr zu entnehmen ist.
SELECT personal.persnr, pname, vorname
FROM personal, familienmitglieder
WHERE personal.persnr=familienmitglieder.persnr
AND personal.persnr = 10;

Für die Anzeigedaten ist anzugeben, aus welcher


Tabelle persnr entnommen werden soll.
In der WHERE-Klausel wird für den Join
angegeben, dass jene Daten der beiden Tabellen
auszugeben sind, bei denen die persnr
übereinstimmt.
A. Mayr, BADV, 2005/06 SQL-Joins 6
ALIAS - Bezeichner für Tabellennamen
Wenn häufig Tabellennamen mit Spaltennamen anzugeben sind, dann
ist die Vereinbarung eines Kurznamens für die Tabelle nützlich.
Syntax SELECT t1.spalteX, t2.spalteY
FROM tabelle1 t1, tabelle t2
WHERE ........
Anstelle tabelle1 bzw. tabelle2 kann
fortan t1 bzw. t2 eingesetzt werden.

Beispiel Zeige die Namen des Mitarbeiters mit Personalnummer 10


und die Vornamen seiner Familienmitglieder
– jetzt mit Alias-Bezeichnern:
SELECT p.persnr, pname, vorname
FROM personal p,
familienmitglieder f
WHERE p.persnr = f.persnr
AND p.persnr = 10;
A. Mayr, BADV, 2005/06 SQL-Joins 7
Inner – Equi-Joins
Aus jeder Tabelle werden nur jene Datensätze angesprochen, bei
denen die WHERE-Klausel auf die Schlüsselbegriffe der beiden
Tabellen zutrifft.

Beispiel Die bisherigen Beispiele fallen in diese Kategorie.

Nachteil Es können nur Daten von Tabellenzeilen angezeigt werden,


zu dessen Schlüsselbegriff in beiden Tabellen vorkommt.
Im vorangehenden Beispiel können keine Namen von
Mitarbeitern angezeigt werden, welche keine
Familienmitglieder haben, weil es für diese keinen Eintrag
in Tabelle familienmitglieder gibt.

Abhilfe …siehe Left-Join (nächste Seiten)

A. Mayr, BADV, 2005/06 SQL-Joins 8


Left-Joins
Verwendung Wenn zu einer Tabelle alle Datensätze angezeigt
werden sollen, auch wenn sie zur anderen Tabelle
keine übereinstimmenden Schlüsselwerte besitzt.
Syntax
SELECT haupttabelle1.spalteX, nebentabelle.spalteY
FROM haupttabelle LEFT JOIN nebentabelle
ON/USING bedingung

Aus der Tabelle, die links von LEFT JOIN steht, werden
alle Datensätze angezeigt (deshalb auch der Name).

Statt WHERE wird


ON für verschiedene Vergleichsspaltennamen
USING für gleiche Vergleichsspaltennamen
vewendet.

A. Mayr, BADV, 2005/06 SQL-Joins 9


Left-Joins
Beispiel Die Personalleiterin will eine Liste der Namen aller
Mitarbeiter. Zusätzlich sollen die Namen der
Familienmitglieder aufgelistet werden (sofern vorhanden).

Left-Join, weil in Tab.


? familienmitglieder nicht
für alle Mitarbeiter
Einträge vorhanden.

SELECT p.persnr,pname,vorname,vwgrad
FROM personal p LEFT JOIN
familienmitglieder f
USING(persnr);

A. Mayr, BADV, 2005/06 SQL-Joins 10


Self-Joins (Auto-Join)
Self-Joins sind Verknüpfungen innerhalb derselben Tabelle.
Zu diesem Zweck wird die Tabelle 2-mal mit unterschiedlichen Alias-
Namen angegeben.
Damit können Datensätze einer Tabelle selektiert werden, welche
zueinander in einer bestimmten Beziehung stehen.
Syntax SELECT t1.spalteA, t2.spalteB
FROM tabelle t1, tabelle t2
WHERE t1.spalteX...bedingung...t2.spalteY

spalteA und spalteB werden nur für jene Zeilen angezeigt,


für welche spalteX und spalteY die angegebene Bedingung
erfüllen (z.B. gleich sind).

A. Mayr, BADV, 2005/06 SQL-Joins 11


Self-Joins
Beispiel Welche männlichen Mitarbeiter beziehen das gleiche Gehalt
wie weibliche Mitarbeiter?

Left-Join, weil Tabellenzeilen innerhalb derselben Tabelle zu


vergleichen sind.
SELECT m.gehalt,m.pname,m.geschlecht
f.pname,f.geschlecht
FROM personal m, personal f
WHERE m.geschlecht = 'M' AND
f.geschlecht = 'W' AND
m.gehalt = f.gehalt;

A. Mayr, BADV, 2005/06 SQL-Joins 12


DB Modelle
Am Beispiel einer „Muster - Datenbank“
1. Hierarchisches Datenbankmodell Hierarchische Datenbanken findet
2. Netzwerkdatenbankmodell man bei älteren Datenbanken vor.
3. Relationales Datenbankmodell Relationale Datenbanken beherrschen
4. Objektrelationales Datenbankmodell heute den Markt.
5. Objektorientiertes Datenbankmodell
Über alle anderen Modelle gibt es einen
6. Dokumentenorientiertes Datenbankmodell Überblick, sie spielen aber nur eine
untergeordnete Rolle. Sie kommen in
speziellen Bereichen zum Einsatz.
DB Modelle
Am Beispiel einer „Muster - Datenbank“
1. Hierarchisches DB Modell
Geschäftsdatenbank „Muster“
nur 1:1
und 1:n
Beziehungen
Kunde 1 möglich Kunde 2

Bestellung 1 Bestellung 1
Pos 1
Pos 2
Bestellung 2
Pos 1
Pos 2
Pos 3
Pos …..n

Bestellung 3
1 .Hierarchisches DB Modell
Geschäftsdatenbank der Firma „Muster“
2. Netzwerkdatenbankmodell
Geschäftsdatenbank „Muster“
2. Netzwerkdatenbankmodell
Geschäftsdatenbank „Muster“
Eine Netzwerkdatenbank besteht aus
Datensätzen (Record), welche aus
verschiedenen Feldern bestehen. Ein Die Erde als Netzwerkdatenbank
Feld hat einen Namen und einen
Wert. Jeder Satz beschreibt eine
Person, ein Objekt oder ein Ereignis
(event).

Ein Netzwerk-Datenbankmanage-
mentsystem (DBMS) bearbeitet
Datensätze. Ein Satz kann als
Ganzes in die Datenbank
gespeichert (STORE), verändert
(MODIFY) und wieder gelöscht
(DELETE) werden.
3. Relationales DB Modell
Geschäftsdatenbank „Muster“
Eine relationale Datenbank (RDB) besteht aus Tabellen.
Aus einer „flachen“ Grundtabelle können durch logische Schritte (Normalisierungen 1-3)
einzelne Tabellen entstehen, die in weiteren Schritten in eine Datenbank
(MySQL, PostgreSQL, Oracle, …) überführt werden können.
3. Relationales DB Modell
Geschäftsdatenbank „Muster“
Schritt 1: Tabelle logisch gliedern und jedem Bereich einen Schlüssel zuweisen

Schritt 2: Tabelle auf mehrere Tabellen aufteilen


4. Objektrelationales Datenbankmodell
Geschäftsdatenbank „Muster“

Eine Objektrelationale Datenbank (ORDB), auch


objektrelationales Datenbankmanagementsystem (ORDBMS)
genannt,

stellt das Bindeglied zwischen klassischen


relationalen Datenbanken
und Objektdatenbanken dar.

Sie kommen überall dort zum Einsatz, wo Mengen von Objekten in


Beziehung zu anderen Daten oder Objekten gebracht werden
müssen.
5. Objektorientiertes Datenbankmodell
Geschäftsdatenbank „Muster“
Im Unterschied zur relationalen Datenbank werden Daten hier als Objekte im Sinne der
Objektorientierung verwaltet. Das zugehörige Datenbankmanagementsystem wird als das
objektorientierte Datenbankmanagementsystem bezeichnet.
Objektdatenbank und Objektdatenbankmanagementsystem bilden gemeinsam das Objekt-
datenbanksystem.
Ein Objekt modelliert normalerweise einen Gegenstand oder Begriff und enthält insbesondere
dazugehörige Attribute; so gehört zum Beispiel die Farbe und das Gewicht eines Autos zu dem
Objekt Auto. Attribute beschreiben ein Objekt näher. Daten und Methoden (die Funktionen zum
Zugriff auf die Daten) werden in den Objekten zusammen abgelegt.
5. Objektorientiertes Datenbankmodell
Geschäftsdatenbank „Muster“
Links:
Prozessablauf und
Beziehungen als
Modell

Rechts:
Datenbankmodell

Die Prozesse werden im


DB-Modell abgebildet.
3. Relationales DB Modell
Geschäftsdatenbank „Muster“
Eine relationale Datenbank (RDB) besteht aus Tabellen.
Aus einer „flachen“ Grundtabelle können durch logische Schritte (Normalisierungen 1-3)
einzelne Tabellen entstehen, die in weiteren Schritten in eine Datenbank
(MySQL, PostgreSQL, Oracle, …) überführt werden können.
Dokumentenorientiertes Datenbankmodell
Geschäftsdatenbank „Muster“
Eine dokumentenorientierte Datenbank (DDB) ist eine Während eine RDB aus Datenbank-
Datenbank, bei der Dokumente die Grundeinheit zur tabellen besteht, die einem festen
Datenbankschema unterliegen, enthält
Speicherung der Daten bilden. Als das am weitesten eine DDB einzelne Dokumente. Diese
verbreitete Datenbanksystem mit einer DDB gilt Lotus Notes. Dokumente können strukturierte
Dateien mit einem Standarddatei-
format sein (wie eine Office-Datei),
aber auch Binary Large Objects sind
möglich, die im Sinne eines Daten-
bankzugriffs nicht weiter strukturiert
sind (wie ein Videofilm im mpeg-
Format). Strukturierte Dateien mit
einem frei festlegbaren Schema
bestehen aus einer Reihe von
Datenfeldern, die aus je einem
Schlüssel-Wert-Paar bestehen können.
Weitere Datenformate sind beispiels-
weise JSON-Objekte, YAML-Doku-
mente oder XML-Dokumente (siehe
auch: XML Schema).
Jedes Dokument innerhalb der
Datenbank wird über einen eindeutigen
Identifikator angesprochen.
INSYS-DBS
Harald Peceny BEd

Schuljahr 2020/21
HTBLA-Traun

Normalformen und Datenbankentwurf

1
Inhaltsverzeichnis

1 Normalformen 3
1.1 Normalform 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.1 Spalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1.2 Zeilen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1.3 Eindeutiger Primärschlüssel . . . . . . . . . . . . . . . . . . . . . . 6
1.2 Normalform 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.2.1 Analyse der Nichtschlüsselattribute mit dem 1. Schlüsselattribut (ID) 7
1.2.2 Analyse der Nichtschlüsselattribute mit dem 2. Schlüsselattribut (GNR) 8
1.3 Normalform 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2 Datenbankentwurf 11
2.1 Externe Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Konzeptionelle Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Logische Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 Physische Phase . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3 Lehrstoff in den Lehrplänen für INSYS-DBS 15


3.1 Semester 3 in DBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.2 Semester 4 in DBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.3 Semester 5 in DBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.3.1 Bildungs- und Lehraufgabe: . . . . . . . . . . . . . . . . . . . . . . 16
3.3.2 Lehrstoff (5) im Bereich Grundlagen der Informatik: . . . . . . . . . 16
3.4 Semester 6 in DBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.4.1 Bildungs- und Lehraufgabe: . . . . . . . . . . . . . . . . . . . . . . 16
3.4.2 Lehrstoff (6) im Bereich Grundlagen der Informatik: . . . . . . . . . 16
3.5 Semester 7 in DBS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.5.1 Bildungs- und Lehraufgabe: . . . . . . . . . . . . . . . . . . . . . . 17
3.5.2 Lehrstoff (7) im Bereich Grundlagen der Informatik: . . . . . . . . . 17

2
1 Normalformen

Zuerst liegt einem eine Rohtabelle vor. Diese ist entsprechend zu analysieren.
1
ID NAME KLASSENINFORMATION GNR GEGENSTAND UE
1 Müller, Clara 3AHIT, Zi. 2.6, JV:Bauer 2 App-Programmierung 1
2 Fischer, Maximilian 1AFITT, Zi. 1.6, KV:Überwimmer 3 Ballorganisation, Deutsch T,2
3 Jäger, Clemens 2BHIT, Zi. 2.4, JV:Pohley 1,2,3 Hausmodell, App-Programmierung, Ballorganisation 2,3,T
4 Schmidt, Olaf 3AHIT, Zi. 2.6, JV:Bauer 2,1 App-Programmierung, Hausmodell 1, 1
5 Bauer, Sara 1BFITT, Zi. 1.9, KV:Überwimmer 1 Hausmodell 3

Tabelle 1. Rohtabelle oder Normalform 0

Diese Tabelle müssen wir bereinigen. Es sind zu viele Daten pro Zeile (Tupel oder Datensatz)
und Spalte (Attribute) vorhanden. Dieser Vorgang wird Normalisierung genannt. Unsere
Tabelle befindet sich in Normalform 0 und soll in die 3. Normalform gebracht werden.

1.1 Normalform 1

Definition Erste Normalform

Eine Tabelle ist in der 1. Normalform, wenn alle zugrunde liegende Attribute
atomare Werte (elementare Informationen) enthalten und ein
eindeutiger Primärschlüssel gegeben ist.

Zu diesem Zweck versuchen wir einmal alle Spalten (Attribute) auf ihren elementaren Inhalt
zu prüfen.

1.1.1 Spalten

Spalte ID
In jeder Zeile steht eine Zahl (Schüler-ID), diese hat in unserem Fall einen Datentyp und
sonst nichts, deshalb müssen die Werte dieser Spalte nicht mehr aufgeteilt werden.
Spalte NAME
In der Spalte steht der Familienname und der Vorname, getrennt durch ein Komma (Bei-
strich). Diese Spalte muss auf zwei Spalten aufgeteilt werden. Dazu markierst du Spalte C,
klickst auf die rechte Maustaste und fügst links davon eine Spalte ein so wie in Abb.: 1.

Abbildung 1. Spalte links einfügen

1
Unterrichtseinheiten

3
Zuerst markierst du die Zellen B2 bis B6 , gehst zum Menüpunkt Daten und wählst
Text in Spalten... aus (Abbildung 2). Jetzt legst Du in dieser Maske (Abbildung 3) unter
Trennoptionen das Komma fest und siehst nun in der Vorschau die Spalten im unteren
Abschnitt der Maske getrennt dargestellt.

Abbildung 2. Text in Spalten

Abbildung 3. Trennoptionen

Spalte KLASSENINFORMATION
Hier steht die Klasse, der Raum und der Name des Klassen- oder Jahrgangsvorstandes.
Letztere sind durch einen Doppelpunkt getrennt. Aus dieser Spalte müssen wir vier Spalten
machen. Dazu markierst du die Spalten E,F und G, klickst mit der rechten Maustaste auf
eines der markierten grauen Felder und wählst Spalten davor einfügen aus.
Markiere nun die Zellen D2 bis D6 , wähle im Menü Text in Spalten... aus und aktiviere
bei den Trennoptionen neben dem Komma auch Andere und gib in das Feld daneben
einen Doppelpunkt (:) ein (Abbildung 4).

4
Abbildung 4. Textoptionen Komma und Doppelpunkt

Spalten GNR, GEGENSTAND und NOTEN


In diesen Spalten stehen Werte, die nicht mehr aus verschiedenen Attributen bestehen. Sie
müssen nicht aufgeteilt werden!
Der erste Schritt in die erste Normalform ist getan und wir gehen nun zu den Zeilen um
auch diese atomar zu machen.

Abbildung 5. Spalten fertig normalisiert

5
1.1.2 Zeilen

In Abbildung 5 sehen wir in einigen Zeilen noch mehrfache Einträge, die zwar zum gleichen
Attribut gehören, aber in einer eigenen Zeile stehen müssen um als elementare Informa-
tionen (atomar) zu gelten.
Dazu fügen wir ober- oder unterhalb der betreffenden Datensätze die notwendige Anzahl
an Zeilen ein und kopieren die Zeileninhalte mit Mehrfacheinträgen in die neu eingefügten
Zeilen ein.
In unserem Beispiel benötigen wir sechs zusätzliche Zeilen (ID 3 und 8 bestehen aus drei,
ID 4 und 9 aus zwei Datensätzen)
Wir löschen aus den Datensätzen die Mehrfacheinträge und sollten zum Schluss die in
Abbildung 6 haben.

Abbildung 6. Tabelle in der ersten NF

1.1.3 Eindeutiger Primärschlüssel

Zuletzt brauchen wir noch einen eindeutigen Primärschlüssel um die Bedingungen der ers-
ten Normalform zu erfüllen. Die Spalte ID alleine eignet sich nicht mehr dafür, aber der
gemeinsame Wert aus ID und GNR ist eindeutig. Man nennt dies einen zusammenge-
setzten Primärschlüssel .
Damit hat unsere Tabelle die erste Normalform erreicht und wir gehen weiter zur zweiten
Normalform im Abschnitt 1.2.

6
1.2 Normalform 2

Definition Zweite Normalform

Eine Tabelle ist in der 2. Normalform, wenn sie die Bedingungen


der 1. Normalform erfüllt sind und jedes Nichtschlüsselattribut vom
gesamten Primärschlüssel voll funktional abhängig ist.

ID NAME VORNAME KLASSE RAUM TYP KV GNR FACH UE


3 Jäger Clemens 2BHIT 2.4 HTL Pohley 1 Hausmodell 9
3 Jäger Clemens 2BHIT 2.4 HTL Pohley 2 App-Progr. 10
3 Jäger Clemens 2BHIT 2.4 HTL Pohley 3 Ballorg. 14

Tabelle 2. Tabellenauszug von Abbildung 6

Die Schlüsselattribute (zusammengesetzter Primärschlüssel) sind in Tabelle 2 fett darge-


stellt. Wir untersuchen jetzt jedes einzelne Nichtschlüsselattribut und prüfen ob es von
einem einzelnen Schlüsselattribut abhängig ist.
Wir wissen: Spalte=Attribut!

1.2.1 Analyse der Nichtschlüsselattribute mit dem 1. Schlüsselattribut (ID)

• NAME ist von ID abhängig


• VORNAME ist von ID abhängig
• KLASSE ist von ID abhängig
• RAUM ist von ID abhängig
• TYP ist von ID abhängig
• KV ist von ID abhängig
• GEGENSTAND ist von ID nicht abhängig
• UE ist von ID nicht abhängig

ID NAME VORNAME KLASSE RAUM TYP KV


1 Müller Clara 3AHIT 2.6 HTL Bauer
2 Fischer Maximilian 1AFITT 1.6 FS Überwimmer
3 Jäger Clemens 2BHIT 2.4 HTL Pohley
3 Jäger Clemens 2BHIT 2.4 HTL Pohley
3 Jäger Clemens 2BHIT 2.4 HTL Pohley

Tabelle 3. Ergebnis der Analyse mit dem ersten Schlüsselattribut

7
1.2.2 Analyse der Nichtschlüsselattribute mit dem 2. Schlüsselattribut (GNR)

• GEGENSTAND ist von GNR abhängig


• UE ist von GNR nicht abhängig, weil UE von GNR und ID abhängig ist!

Im ersten Schritt gruppiere ich die Daten nach Zugehörigkeit und kopiere die Felder ID und
GNR zum Feld UE, so wie in Abbildung 7.

Abbildung 7. Gruppierung oder Clusterung

Jetzt machen wir aus den 3 Gruppen 3 Tabellen (schueler, faecher, ue). Lösche überall
doppelte Werte (Redundanzen) heraus. Danach muss die Tabelle schueler 10 Datensätze,
die Tabelle faecher 3 Datensätze und die Tabelle UE weiterhin 16 Datensätze haben.
Achtung: UE muss die ID (von schueler) und GNR (von faecher) als Primärschlüs-
sel unbedingt mit bekommen, sonst können die Unterrichtseinheiten nicht mehr dem
richtigen Schüler und dem von ihm belegten Fach zugeordnet werden!

Abbildung 8. 2. Normalform der Tabelle(n) / Relationen

8
Wir haben in den Tabellen schueler und faecher einen einzelnen Primärschlüssel , in der
Tabelle ue aber weiterhin einen zusammengesetzten Primärschlüssel (ID und GNR).
In der Tabelle schueler kommt jeder Schüler nur einmal vor, in der Tabelle ue jedoch
mehrmals (1:n). In der Tabelle faecher kommt jeder Gegenstand nur einmal vor, in der
Tabelle ue jedoch mehrmals. Eine direkte Verbindung der Tabellen faecher und schueler ist
nicht möglich, da jeder Schüler mehrere Fächer belegen wird und jedes Fach von mehreren
Schülern belegt wird. Das ist eine n:m Beziehung und muss in jedem Fall mit der Tabelle
ue aufgelöst werden.
Zuletzt machen wir noch den Feinschliff und gehen über zur dritten Normalform.

1.3 Normalform 3

Definition Dritte Normalform

Eine Relation ist in der 3. Normalform, wenn sie

• Bedingungen der zweiten Normalform erfüllt und


• kein Nichtschlüsselattribut transitiv abhängig ist,
oder anders ausgedrückt: kein Nichtschlüsselattribut
von einem anderen Nichtschlüsselattribut abhängig ist.

In unserem Fallbeispiel brauchen wir dazu nur die Tabelle schueler ansehen.
Die Tabelle ue hat so wie die Tabelle faecher nur ein Nichtschlüsselattribut. Die beiden
Tabellen sind fertig normalisiert.
Die Tabelle schueler enthält mehrere Nichtschlüsselattribute und wird daher, so wie im
Merksatz beschrieben, für die 3. Normalform untersucht.

Abbildung 9. Tabelle schueler mit Attributen

9
Wir gehen wieder von der ID als Schlüsselattribut aus. Wenn ich den Datensatz 1 betrachte
so ist klar, dass der Name und Vorname gemeinsam von der ID abhängig sind. Müller Clara
ist die Schülerin mit der ID 1. Bei der Klasse ist das nicht mehr der Fall. Zwar gehört
eine Klasse zu jedem Schüler, so wie bei Müller Clara die 3AHIT, aber die Raumnummer,
der Klassenvorstand und der Schultyp hängen von der Klasse und nicht vom Schüler ab.
Schmidt Olaf geht in die gleiche Klasse, alle anderen von der Klasse abhängigen Daten
müsste ich aber redundant führen und das wollen wir ja grundsätzlich vermeiden. Daher
gehören die Klasse mit Raum, der Schultyp und der KV in eine eigene Tabelle.

Im nächsten Schritt erstellen wir eine Datenbank und die vier Tabellen. Wenn wir nun eine
Abfrage, z.B. in MariaDB erstellen, sollten wir ein Ergebnis wie in Abbildung 10 erhalten:

Abbildung 10. Abfrageergebnis ohne Schlüsselfelder

Wir haben nun alles erledigt und aus einer Gesamttabelle eine vernünftige Datenbank er-
stellt.
Nachdem wir die Normalisierung verstanden haben und aus einem vorliegenden Datenbe-
stand eine Datenbank erstellen konnten, sehen wir uns das Entwerfen und die Entwicklung
von Datenbanken genauer an (Kapitel 2).

10
2 Datenbankentwurf

Phasen der Datenbankplanung

Bevor wir mit Datenbanken entsprechend arbeiten, müssen wir wissen, wie wir eine solche
entsprechend einem bestimmten Bedarf (Kundenwunsch, Auftrag) planen.

2.1 Externe Phase

Auftragssituation

Im Stadium der externen Phase stehen die Ermittlung von Informationen über Bestand
und Ziele des Benutzers oder Kunden.
Zuerst ist eine Bestandsaufnahme (Ist-Aufnahme und Analyse) durchzuführen. Dem zu-
grunde gelegt stehen die Wünsche des Auftraggebers. Ein Soll-Konzept wird gemeinsam
erarbeitet.
Am Ende werden alle Informationen protokolliert und eine strukturierte schriftliche Auf-
zeichnung durchgeführt. Diese Aufzeichnungen heißen Pflichtenheft und dieses wird von
beiden Seiten (AG und AN) unterschrieben.
Existieren bereits Daten in Form einer Gesamttabelle, so behandeln wir diesen Fall im
Kapitel 1 (Normalisierungen).

Auftraggeber (AG) ist in unserem Übungsbeispiel eine Lehrperson und Auf-


tragnehmer (AN) ist eine Schülerin/ ein Schüler. Die Lehrperson möchte alle
Schülerinnen und Schüler in der Datenbank erfasst haben. Außerdem sollen
Nutzer/innen der Datenbank die Schüler/innen nach Schultyp, Klasse, Alter
und Geschlecht auseinanderhalten können. Die Noten und Stunden (UE) in den
einzelnen Gegenständen werden erfasst. Später soll jeder Lernende einem Leis-
tungscluster zugeordnet werden.
Die Datenbank braucht vier Tabellen: schueler, klassen, faecher und ue/noten.
Erfasst werden müssen in den Tabellen folgende Daten:
Name, Vorname, Geburtsdatum, Klasse, Schultyp, Geschlecht,
e-Mail-Adresse, Telefonnummer, Gegenstände, Noten oder UE;

Als Ergebnis dieser schriftlichen Arbeit entsteht ein Pflichtenheft mit einem fachlichen
Konzept zur Umsetzung.

11
2.2 Konzeptionelle Phase

Formale und strukturierte Darstellung aller relevanten Objekte und deren Beziehungen un-
tereinander.

In unserem Fall geht es um die Beziehung Klasse zu Schüler (in einer Klasse
sind mehrere Schüler) und um die Beziehung der Schüler zu Klassen, Fächer
und Unterrichtseinheiten (UE). Jeder Schüler kann nur einer Klasse angehören,
jeder Schüler hat mehrere Gegenstände, jede Klasse hat mehrere Schüler, usw.
....

Das Ergebnis nach der konzeptionellen Phase ist ein Entity-Relationship-Diagramm (ERD)
oder Klassendiagramm (UML). Zu diesem Zweck brauchen wir das

Semantische Modell

Mit Hilfe des semantischen Modells stellt der DB-Designer (Datenbankdesigner) dar, welche
Objekte über welche Handlungen in Beziehung zueinander stehen.

Objekt Handlung Objekt


1 1 Schüler geht in 1 Klasse
2 1 Klasse enthält viele Schüler
3 1 Schüler belegt mehrere Gegenstände (Fächer)
4 1 Fach wird belegt von mehreren Schülern
5 1 UE wird geleistet von mehreren Schülern
und abgehalten in mehreren Gegenständen
6 1 Schüler leistet mehrere UE in mehreren Gegenständen
7 1 Gegenstand verbraucht mehrere UE für mehrere Schüler

Tabelle 4. Semantisches Modell

12
2.3 Logische Phase

Umsetzung des semantischen Modells in ein Relationelles Datenbankmodell. Wir legen den
Datenbanktyp fest, entscheiden uns vier Tabellen anzulegen (Siehe Kapitel 1) und diese in
Beziehung (Relation) zueinander zu setzen. Aus der externen Phase haben wir noch die

Abbildung 11. 4 Tabellen nach der 3. Normalform

Erhebung aller bestehenden Daten in Erinnerung und hoffentlich auch schriftlich erfasst.
Der Kunde hatte bestimmte Anforderungen, wie seine Daten beschaffen sein müssen und
welche Daten er braucht. Das ist jetzt in ein Sichtenmodell zu übertragen (Abbildung 12).

Abbildung 12. Sichten im Modell

In der oberen Ebene schreibst du die Sicht des Kunden um festzulegen was herauskom-
men muss. In der unteren Ebene trägst du die technische Sicht, z.B. eine DB mit den
vier Tabellen ein. Zuletzt überlegst du, welche Abfragen du brauchst um die Kundensicht
nach den Anforderungen entsprechend aufzubauen.

13
2.4 Physische Phase

Umsetzung des aus der logischen Phase entwickelten Datenbankmodells in ein DBMS (Base,
Access, MariaDB/MySQL, etc....)
• Erstelle in Base oder MariaDB eine neue Datenbank (DB) mit dem Namen
base: familiennameDB.odb mariadb: schule202010
• die DB enthält vier Tabellen (schueler, klassen, faecher und ue) mit den dazugehö-
renden Feldern wie in Abbildung 11 zu sehen.
• Erstelle mit den Tabellen schueler und klassen eine query in der alle Daten nicht
redundant vorhanden sind.
Ergebnis: Datenorganisation und Zugriffsstrukturen, also die Implementierung der
Datenbank.
Bei der Umsetzung ist darauf zu achten, dass bestimmte Konventionen eingehalten wer-
den. Der Datenbankname muss bei allen Schülern gleich aufgebaut sein. Die Vorgabe ist
2 familiennameDB.odb. Die Datenbank müsste in meinem Fall pecenyDB.ods, oder schmi-

daDB.ods heißen.
Feldnamen und Objektnamen schreiben wir grundsätzlich klein,
sowie ohne Sonderzeichen und Umlaute.

Abbildung 13. ER Modell aller 4 Tabellen

2
LibreOffice Base

14
3 Lehrstoff in den Lehrplänen für INSYS-DBS

3.1 Lehrstoff von Semester 3 in DBS

Bildungs- und Lehraufgabe:

Die Schülerinnen und Schüler können im Bereich Datenbanksysteme


• einfache Datenbanken mit einer marktüblichen Datenbanksoftware erstellen;
• Formulare, einfache Abfragen und Berichte erstellen;
• einfache strukturierte Datenbankabfragen erstellen.

Lehrstoff (3) im Bereich Grundlagen der Informatik:

Tabellen, Abfragen, Formulare, Berichte, strukturierte Abfragesprache.

******************************************************************************

3.2 Lehrstoff von Semester 4 in DBS

Bildungs- und Lehraufgabe:

Die Schülerinnen und Schüler können im Bereich Datenbanksysteme


• Konzept der Primär- und Fremdschlüssel verstehen und anwenden
• Tabellen in Beziehungen stellen und Tabellenübergreifende Abfragen erstellen
• einfache Funktionen in Datenbanken anwenden
• einfache strukturierte Definitions- und Manipulationsabfragen erstellen

Lehrstoff (4) im Bereich Grundlagen der Informatik:

Primärschlüssel, Fremdschlüssel, Beziehungen, Funktionen,


Datendefinitions- und Manipulationsabfragen.

******************************************************************************

15
******************************************************************************

3.3 Lehrstoff der 3. Klasse von Semester 5 in DBS

3.3.1 Bildungs- und Lehraufgabe:

Die Schülerinnen und Schüler können im Bereich Datenbanksysteme


• Architektur eines Datenbanksystems erläutern
• konzeptionelle Datenmodelle erstellen
• verschiedenste Notationen von Beziehungen und Kardinalitätstypen interpretieren und
anwenden
• komplexe strukturierte Datenbankabfragen erstellen
• komplexe strukturierte Definitions- und Manipulationsabfragen erstellen

3.3.2 Lehrstoff (5) im Bereich Grundlagen der Informatik:

Drei-Schichten-Modell, ER-Modellierung, strukturierte Abfragesprache.

*************************************************************************

3.4 Lehrstoff von Semester 6 in DBS

3.4.1 Bildungs- und Lehraufgabe:

Die Schülerinnen und Schüler können im Bereich Datenbanksysteme


• Datenstrukturen in Normalformen überführen
• konzeptionelles Datenmodell in physisches Datenmodell überführen;
• vertiefte Abfragenkonstrukte erstellen und ausführen
• praktische Anwendung von Datenbanksystemen konfigurieren und parametrisieren

3.4.2 Lehrstoff (6) im Bereich Grundlagen der Informatik:

Referentielle Integrität, Normalisierung, physisches Datenmodell, strukturierte Abfragesprache,


Content Management Systeme (MEDT)

*************************************************************************

16
*************************************************************************

3.5 Lehrstoff von Semester 7 in DBS

3.5.1 Bildungs- und Lehraufgabe:

Die Schülerinnen und Schüler können im Bereich Datenbanksysteme


• vertiefte Anwendung von Datenbanksystemen konfigurieren und parametrisieren
• Backup und Restore von Datenbanksystemen durchführen.

3.5.2 Lehrstoff (7) im Bereich Grundlagen der Informatik:

Anwendung von Datenbanksystemen, Backup, Content Management Systeme

*************************************************************************

17
Abbildungsverzeichnis

1 Spalte links einfügen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3


2 Text in Spalten . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
3 Trennoptionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
4 Textoptionen Komma und Doppelpunkt . . . . . . . . . . . . . . . . . . . 5
5 Spalten fertig normalisiert . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
6 Tabelle in der ersten NF . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
7 Gruppierung oder Clusterung . . . . . . . . . . . . . . . . . . . . . . . . . 8
8 2. Normalform der Tabelle(n) / Relationen . . . . . . . . . . . . . . . . . . 8
9 Tabelle schueler mit Attributen . . . . . . . . . . . . . . . . . . . . . . . . 9
10 Abfrageergebnis ohne Schlüsselfelder . . . . . . . . . . . . . . . . . . . . . 10
11 4 Tabellen nach der 3. Normalform . . . . . . . . . . . . . . . . . . . . . . 13
12 Sichten im Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
13 ER Modell aller 4 Tabellen . . . . . . . . . . . . . . . . . . . . . . . . . . 14

Tabellenverzeichnis

1 Rohtabelle oder Normalform 0 . . . . . . . . . . . . . . . . . . . . . . . . 3


2 Tabellenauszug von Abbildung 6 . . . . . . . . . . . . . . . . . . . . . . . 7
3 Ergebnis der Analyse mit dem ersten Schlüsselattribut . . . . . . . . . . . . 7
4 Semantisches Modell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

18
Datenbankgrundlagen

Datenbankgrundlagen 1
Was ist ein Datenbankprogramm?
 Datenbankprogramm =
DBMS = Datenbankmanagementsystem
 Verwaltung kleiner bis größter Datenbestände über
Datenbanken
 Regelung des Zugriffs auf die Daten
 Werkzeuge zur
 Auswertung
 Analyse
 Bearbeitung
 Präsentation

von Daten

Datenbankgrundlagen 2
Wieviele Informationen weltweit?

• Um alle relevanten Informationen aufzuheben, genügt die Speicherung von


wenigen Tausend PBytes (1 Petabyte = 1000 Terabytes = 1000000 Gigabytes)
aus: www.lesk.com/mlesk/ksg97/ksg.html
• Es wird genug Platten- und Bandspeicher geben, um alles zu speichern, was
alle Menschen schreiben, sagen, tun oder photographieren.
• Für das Schreiben gilt dies bereits heute
• In einigen Jahren trifft das auch für die restlichen Informationen zu
• Rechner speichern und verwalten Informationen besser und effektiver als
Menschen
• Schlußfolgerungen für die künftige Entwicklung
• In wenigen Jahren sind wir in der Lage, „alles“ aufzuheben, d. h., keine
Information muß weggeworfen werden.
• Die „typischen“ Informationen werden nur noch von Rechnern aufbewahrt,
gesucht und aufbereitet; der Mensch sieht weder die Daten, noch kennt er den
Aufbewahrungsort und die genauen Ableitungsverfahren.
• Heute konzentriert man sich bei den „Digitalen Bibliotheken“ auf die Eingabe: auf
das Scanning, Komprimieren und OCR von Informationen.
• Morgen wird anstelle der Eingabe die „relevante Auswahl“ die wesentliche Rolle
spielen: Selektion, Suche und Qualitätsbewertung von Informationen.

Datenbankgrundlagen 3
Verteilung von DBMS und Dateien

Datenbankgrundlagen 4
Merkmale eines Datenbanksystems
 Komfortable Datenverwaltung
 Mehrbenutzer-Zugriffsmöglichkeit und -koordination
 Sortierung der Datensätze
 Filtermöglichkeit nach bestimmten Kriterien
 Gruppierungsmöglichkeit nach verschiedenen
Kategorien
 Nutzung von Auswertungswerkzeugen wie grafischer
Darstellung von Zahlenmaterial
 Weiterverarbeitung der Daten in anderen Programmen
z.B. für Word-Serienbriefe
 Replikations- und Verteilungsmechanismen
 Benutzerauthorisierung

Datenbankgrundlagen 5
Merkmale eines Datenbanksystems 2
 große Datenmengen:
 - auch, aber nicht immer entscheidend
 Datenunabhängigkeit (der Anwendungen):
 Benutzung der Daten, ohne Details der systemtechnischen
Realisierung zu kennen (abstraktes „Datenmodell“, z. B. Tabellen)
 einfache Handhabung der Daten, mächtige
Auswertungsoperationen (standardisierter Zugriff mit SQL)
 Offenheit der Daten für neue Anwendungen
(Anwendungsneutralität der Speicherung)
 symmetrische Organisationsformen (keine Bevorzugung einer
Verarbeitungs- und Auswertungsrichtung)
 explizite Darstellung der Annahmen (nicht in den
Anwendungsprogrammen verstecken)
 Redundanzfreiheit aus der Sicht der Anwendung: keine
wiederholte Speicherung in unterschiedlicher Form für
verschiedene Anwendungen
 Konsistenzüberwachung durch das Datenbanksystem,
Integritätsregeln stellen Korrektheit der Daten sicher

Datenbankgrundlagen 6
Merkmale eines Datenbanksystems 3
 Transaktionskonzept mit Garantie von ACID-
Eigenschaften
 Atomizität (atomicity) / Konsistenz (consistency)
 Isolation (isolated execution) / Dauerhaftigkeit (durability)
 Ausfallsicherheit
 Aufzeichnung redundanter Daten im Normalbetrieb
 Replikation von Datenstrukturen
 automatische Reparatur der Datenbestände nach Programm-System-
und Gerätefehlern
 Rückgängigmachen unvollständiger Transaktionen, so daß sie
wiederholt werden können
 Wiederherstellen der Ergebnisse vollständiger Transaktionen, so
daß sie nicht wiederholt werden müssen
 Mehrbenutzerbetrieb
 gleichzeitiger (zeitlich eng verzahnter) Zugriff verschiedener
Anwendungen und Benutzer auf gemeinsame Daten
 Synchronisation, d. h. Vermeidung von Fehlern in der wechselseitigen
Beeinflussung
 Kooperation über gemeinsame Daten mit hohem Aktualitätsgrad

Datenbankgrundlagen 7
Beispiele für Datenbankanwendungen

 Einnahmen-, Ausgabenverwaltung

 private Video- oder CD-Verwaltung

 Mitgliederverwaltung od. Kundenverwaltung

 unternehmensweite Informationssysteme (ERP)


Ressourcenplanung, Lagerverwaltung, Auftragsverarbeitung

 DB-Systeme bei Banken und Versicherungen

 DB-gestützte, dynamische Webanwendungen


(„Web 2.0“)
 ….

Datenbankgrundlagen 8
Betriebsarten DBMS

 Lokale Desktop-DBMS
 greifen direkt auf die Datenbankdatei zu
 Evtl. „File-Server-Architektur“ in Netzwerken
 Bsp.: MS Access, FoxPro, dBase
 DBMS in Netzwerken und Mehrbenutzerumgebungen
(Client-Server-Architektur)
 DBMS=Server Programm
 verwaltet mehrere DBs
 Kommunikation meist
über TCP/IP
 Bsp.: Oracle, MS SQL, MySQL,
PostgreSQL, IBM DB2,
Sybase Adaptive Server Enterprise

Datenbankgrundlagen 9
Datenbankentwurf/Datenmodellierung

Datenbankentwurf/Datenmodellierung 1
Allgemeines zu Datenbanken
 Ein Datenbankprogramm verwaltet große Mengen von
Daten und ermöglicht für diese Datensammlung
folgende Zugriffe:
 Lesen
 Ändern
 Löschen
 Hinzufügen

 Relationale Datenbanken
 Häufigster Datenbanktyp
 Access ist eine relationale Datenbank.
 Daten werden als Tabellen gespeichert.
 Zwischen den Tabellen bestehen Beziehungen.
 Die Daten werden mit SQL abgefragt.

Datenbankentwurf/Datenmodellierung 2
Datenbankmanagementsysteme

 Datenbankmanagementsystem DBMS =
Software zur Verwaltung der Daten
 Aufgaben
 Abbildung der Sichten auf die Daten

 Verarbeitung von Benutzeranfragen und Lieferung der


gewünschten Daten
 Verwaltung von Benutzerberechtigungen und des
Mehrbenutzerbetriebes
 Protokollierung von Datenänderungen

 Überprüfung von Dateneingaben und Löschvorgängen

Datenbankentwurf/Datenmodellierung 3
Problem

System-
Anforderungsdefinition
Analyse

Anforderungsdefinition

Datenbank- Datenbank- Anwendungs-


Prozess der Datenbank- Entwurf beschreibun
g
Entwurf

entwicklung
Datenbankbeschreibung Spezifikation

Datenbank- Anwendungs-
Datenbank
realisierung implementierung

Datenbank

Test und Programm


Korrektur

Endprodukt

Nutzung

neue Anforderungen
Datenbankentwurf/Datenmodellierung 4
Sichten auf eine Datenbank
Externe Sicht (Benutzersicht)

Europäische
Lagerbestand Umsätze
Top 10-Kunden
(Formular 1) (Formular 2)
(Bericht 1)

Logische Sicht

Umsatz Europäische
Lagerbestand Top 10-Kunden
pro Kunde Kunden
(Abfrage 1) (Abfrage 3)
(Abfrage 2) (Abfrage 4)

Interne Sicht

Artikeltabelle Kundentabelle Rechnungen Artikeltabelle


(Access-DB) (Access-DB) (Excel-Datei) (dBase-DB)

Datenbankentwurf/Datenmodellierung 5
Datenbankentwurf
 Logisch (Struktur der Daten und Bindungen untereinander)

 Art der Datenzusammenfassung (z.B. Tabellen)


 Art der Beziehungen zwischen den Daten
(z.B. referenzielle Integrität)
 Einfügen der Business-Logik: Gültigkeitsprüfungen, Eingabeformate
etc. (Gewährleistung der Konsistenz)
 Physisch (Speicherung der Daten)
 Verteilung der Daten auf dem Datenträger
 Zugriffsmöglichkeiten auf die Daten (Netzwerk, Internet, lokal...)
 Optimierung der Datenspeicherung für oft auftretende
Suchoperationen
 Automatische Sicherungsmechanismen

Datenbankentwurf/Datenmodellierung 6
3 Stufen der Modellierung

 Konzeptionelles Modell/Entwurf
 Benötigte Informationen und Zusammenhänge darstellen.
(Systemunabhängig)
 Wichtig: Übersichtlichkeit, informell. Werkzeug: Grafische
Notation nach UML/ER
 Formales Modell (=logisches Modell)
 Festlegung eines bestimmten Datenbanktyps (Relationale
DB) und Befriedigung von dessen Ansprüchen
(Normalisierung).
 Darstellung mit UML/ER oder tabellarisch.
 Physisches Modell
 Implementation des Datenmodelles (Tabellen mit SQL-
Befehlen erzeugen, Hilfsstrukturen aufbauen)
 Z.B. Indexe, Clustering, Trigger, etc. (Systemabhängig)

Datenbankentwurf/Datenmodellierung 7
Hilfsmittel und Methoden zum Datenbankentwurf
 Relationales Datenmodell bzw. Relationenmodell
 Darstellung der Daten in Tabellen, zwischen denen Beziehungen
bestehen können mittels Relationenalgebra
 Integritätsregeln
 Überprüfung der Daten bei Änderungen, Lösch- und
Einfügevorgängen
 Direkt in den Tabellen hinterlegt
 Normalisierungsprozess
 Methode zur redundanzfreien Speicherung von Daten
 Vermeidung fehlerhafter Datenerfassung beim Löschen, Ändern,
Hinzufügen von Daten
 Entity-Relationship-Modell bzw. Unified Modeling
Language
 Grafische Darstellung aller Tabellen und Beziehungen

Datenbankentwurf/Datenmodellierung 8
Begriffe in relationalen Datenbanken

Relation
Tabelle (Konstruktion aus Zeilen und Spalten) zum Speichern
der Daten
Attribute
Spalten der Tabelle (Felder)
Tupel
Zeilen der Tabelle (Datensätze)
Primärschlüssel
Feld, das die eindeutige Identifizierung eines Datensatzes
ermöglicht
Fremdschlüssel
Feld, über das auf den Primärschlüssel einer anderen Tabelle
verwiesen wird

Datenbankentwurf/Datenmodellierung 9
Entitiy-Relationship-Modell
 Entity-Relationship-Modell (ER-Modell) = Abbildung der
Elemente eines relationalen Datenbanksystems und deren
Beziehungen untereinander
 Entität: (engl. Entity): Objekt der realen oder der Vorstellungswelt,
über das Informationen zu speichern sind z.B. Gegenstand, Begriff,
Ereignis, Person, ...
 Durch Attribute gekennzeichnet
 Wird durch eine Tabelle implementiert

 Relation (Beziehung): Verknüpfung von Entitäten


 Beziehung zwischen Entities, z.B. eine Abteilung besteht aus mehreren
Mitarbeitern
 1:1
 1:n (eins zu viele)
 m:n (viele zu viele)

Datenbankentwurf/Datenmodellierung 10
Entitäten und Attribute (1 von 2)
 ABTEILUNG (AbteilungsNr, Bezeichnung)
Abteilung

AbteilungsNr Bezeichnung

 MITARBEITER (PersonalNr, Nachname, Vorname,


AbteilungsNr)
Mitarbeiter

PersonalNr Nachname Vorname AbteilungsNr

 PROJEKT (ProjektNr, Beschreibung)


Projekt

ProjektNr Beschreibung

Datenbankentwurf/Datenmodellierung 11
Entitäten und Attribute (2 von 2)

 Projektauswertung
(ProjektNr, PersonalNr, Stunden)

Projektauswertung
(arbeitet in)

ProjektNr PersonalNr Stunden

Datenbankentwurf/Datenmodellierung 12
Fertiges Entity-Relationship-Modell

 Die Entitäten, Attribute und Relationen des


Beispiels Unternehmenstruktur

1 n n m
ABTEILUNG besteht aus MITARBEITER arbeitet in PROJEKTE

AbteilungsNr Bezeichnung PersonalNr Nachname Vorname AbteilungsNr ProjektNr Beschreibung

ProjektNr PersonalNr

Datenbankentwurf/Datenmodellierung 13
Umsetzung in Tabellen, 1:n-Beziehungen

Abteilung

Mitarbeiter

Projekt

Datenbankentwurf/Datenmodellierung 14
Umsetzung in Tabellen, m:n-Beziehungen
 Für die m:n-Beziehung zwischen Mitarbeiter und
Projekte wird eine neue Tabelle erzeugt.

n m
MITARBEITER arbeitet in PROJEKTE

ProjektNr
ProjektNr PersonalNr

 Tabelle Projektauswertung

Datenbankentwurf/Datenmodellierung 15
Rekursive Beziehungen
 Hierarchische Zusammenhänge modellieren

Manager sein
von
1 betreut
werden von
MITARBEITER n

besteht aus
1
enthalten in
ORG.ELEMENT n

Name Typ

Datenbankentwurf/Datenmodellierung 16
Rekursive Beziehungen 2
 Netzwerkstrukturen/Stücklisten

SuperTeil besteht aus


ist enthalten in
4 1
m SubTeil
1 2
TEIL n

1 2 4

STRUKTUR

n n

besteht aus ist enthalten in


TEIL (Teil#, Teilbezeichnung)
1 1 STRUKTUR (SuperTeil#, SubTeil#, Anzahl)

TEIL

Datenbankentwurf/Datenmodellierung 17
INSYS DBS 2.Klasse

1 SQL-Code formatieren
Um Daten aus EXCEL oder Calc für SQL Gesamthaft übernehmen zu können
verwenden wir primär die Funktion VERKETTEN()

Beispiel: Tabelle schueler mit ca. 350 Personen

Aljebenawi Mustafa 04.06.02 1 1851


Astleitner Kevin 18.06.02 1 1866

B2=Familienname; C2=Vorname; D2=Geburtsdatum; E2=Klasse; F2=Adresse

Da wir das Geburtsdatum noch formatieren müssen und dazu eine eigene Spalte
brauchen, steht in unserer Formel H2.(2. Datum formatieren)

=VERKETTEN("('";B2;"','";C2;"','";H2;"',";E2;",";F2;"),")

Muster:

=VERKETTEN("Text1";"Text2";Zahl;"Text3")

Der Text muss unter Anführungszeichen (oberhalb der Zahl 2 auf der Tastatur)
eingegeben werden!

Die Zahl muss ohne Anführungszeichen hingeschrieben werden.

INSYS – DBS Seite 1/2 HTBLA-Traun (Peceny)


INSYS DBS 2.Klasse

2 Datum formatieren
Datum mit der Funktion TEXT() zum Import in unser SQL-File vorbereiten:

=TEXT(D2;"JJJJ-MM-TT") → Diese Formel schreiben wir in eine Spalte nebenan


hinein, in meinem Fall ist es die Spalte H2.

D2 bezeichnet die Zelle, in der das Datum steht. Dann erfolgt ein ; als
Listentrennzeichen. Jetzt wird unter Anführungszeichen das für SQL notwendige
Format eingegeben.

INSYS – DBS Seite 2/2 HTBLA-Traun (Peceny)

Das könnte Ihnen auch gefallen