1.1 Motivation

Methodenwissen erlangt man am besten, indem man die Methode anwendet. Dann entsteht nach einiger Zeit Methodenkompetenz. Dies gilt auch für die verschiedenen Methoden des Datenbankdesigns und des Umgangs mit Datenbanken.

Nach dem Erwerb des notwendigen Theoriewissens sollte diese Phase des Trainierens angestrebt werden. Im Kontext der Programmierung ist dies schon länger klar. Gute Lehrbücher für den Erwerb von Programmierkompetenz enthalten zahlreiche nachvollziehbare Beispiele, von einfach bis komplex. Der Verfasser hat es selbst erlebt. Vor Jahrzehnten beim Lernen von C++ mit dem legendären Buch von Stephen Prata und danach immer wieder beim Erlernen weiterer Programmiersprachen.

Dieser Text will ähnliches für die Datenmodellierung und das Datenbankdesign leisten. Anhand zahlreicher Beispiele soll das Theoriewissen zur Anwendung und zu einer bestimmten Exzellenz geführt werden. Dass außerdem auch einige wichtige Theoriefragen angesprochen (wiederholt) werden, stört dabei sicher nicht. Das Motto ist:

Festigung, Vertiefung und Verbreiterung der Methodenkompetenz (bzgl. Datenbankdesign) durch Anwenden der Methoden.

Sozusagen als Nebeneffekt ergibt sich, dass bei der Durcharbeitung der Aufgaben die verschiedenen Ansätze zur Modellierung von Daten verglichen werden können, was erfahrungsgemäß auch beim Erlernen von Methodenwissen hilft. Wer z.B. erstmal begriffen hat, dass alle diese Modellierungsansätze weitgehend attributgeprägt sind, wird das Attributkonzept nicht mehr so stiefmütterlich behandeln, wie es heute leider an vielen Stellen in der Lehre geschieht. Wer die gängigen Muster in einem Ansatz begriffen hat, tut sich leichter im nächsten.

Methoden­vergleich

Noch nicht vollständig gelungen ist, die Aufgaben in jedem Bereich nach Schwierigkeitsgrad zu ordnen. Dies soll aber im weiteren Ausbau geschehen. Gerne nehme ich hier Vorschläge und Wünsche entgegen.

1.2 Voraussetzungen

Voraussetzung für die erfolgreiche Arbeit mit dem Text sind Basiskenntnisse der folgenden Systeme und Methoden.

Den größten Anteil hat das relationale Datenbankdesign, die relationale Modellierung. Anwendungsbeispiele aus vielen Anwendungsbereichen, in denen in unterschiedlichen Schwierigkeitsgraden alle Aspekte des relationalen Datenbankdesigns thematisiert werden, sollten einen umfassenden Kompetenzerwerb ermöglichen.

Relationales Datenbank­design

Aber auch das Einrichten der Datenbanken, die Umsetzung relationaler Datenmodelle mittels SQL in konkrete relationale Datenbanken, wird trainiert. Mit mySQL unter XAMPP, einer hervorragenden und - das ist ja auch sehr wichtig - leicht und kostenlos verfügbaren Entwicklungsumgebung.

mySQL, XAMPP

Ein Kapitel enthält Aufgaben zu Abfragen und Auswertungen von Datenbanken mit SQL - ungefähr auf dem Niveau nach einer einführenden Lehrveranstaltung. Dabei wird phpMyAdmin unter XAMPP genutzt, eine leistungsstarke Bedienoberfläche für Relationale Datenbanken.

SQL

Für den hier letztendlich betrachteten Gesamtweg, . . .

Anforderungen - Datenmodell (Schema) - Datenbank - Web-Benutzeroberfläche

. . . fehlt jetzt nur noch der letzte Schritt, von der Datenbank zu einer Benutzeroberfläche ohne SQL. Dafür wird hier "das Web" genommen, da heutzutage die meisten Benutzeroberflächen für Datenbestände webbasiert sind. Die Methoden der Wahl sind dabei PHP, HTML und JavaScript. Deshalb sind hier in einem Kapitel auch Aufgaben, mit denen das Einrichten einfacher Web-Benutzeroberflächen für Datenbanken geübt wird.

PHP, HTML

Einige Aufgaben widmen sich auch wichtigen Aspekten der relationalen Theorie. Vor allem denen, die das Datenbankdesign unterstützen.

Relationale Theorie

Die semantische Modellierung gerät schon seit einiger Zeit etwas ins Vergessen, sehr zu unrecht. Sie hat weiterhin Bedeutung und ist deshalb auch hier mit einigen Aufgaben vertreten. Hauptsächlich in ihrer Ausprägung als Entity Relationship-Modellierung.

Semantische Modellierung

Ein weiteres Kapitel widmet sich der objektorientierten Modellierung nach der UML 2.5. Dabei geht es um die inhaltlichen und semantischen Aspekte des Anwendungsbereichs, nicht um die Klassenbildung im Rahmen der Programmentwicklung, die ja eher funktionsorientiert sein muss. Ziel ist das, was auch Objektmodell genannt wird.

Objekt- orientierte Modellierung

"Verschüttetes Wissen"

Um zu helfen, falls das Wissen um die jeweiligen Methoden etwas in Vergessenheit geraten ist, sind im Anhang drei Kapitel, die hier benötigte wesentliche Aspekte der jeweiligen Methoden für die Wiederholung anbieten:

  • Kapitel 10: Etwas relationale Theorie
  • Kapitel 11: Etwas HTML
  • Kapitel 12: Etwas PHP - Vom Web zur Datenbank

Ausgangspunkt

In diesem Text wird davon ausgegangen, dass bei der Leserin bzw. beim Leser Kenntnisse bezüglich Datenbankdesign (Datenmodellierung) vorhanden sind. Vor allem zu relationalen Datenbanken. Dazu gehört ein Verständnis von Attributen, Relationen und der elementaren Normalform (1NF). Diesbezügliche Lücken können mit Hilfe von [Staud 2021] beseitigt werden:

Staud, Josef Ludwig: Relationale Datenbanken. Grundlagen, Modellierung, Speicherung, Alternativen (2. Auflage). Hamburg 2021 (tredition)

Lücken bzgl. "inhaltlicher" objektorientierter Modellierung beseitigt [Staud 2019]:

Staud, Josef: Unternehmensmodellierung - Objektorientierte Theorie und Praxis mit UML 2.5. (2. Auflage). Berlin u.a. 2019 (Springer Gabler)

1.3 Attributbasiertheit

Für sehr viele Datenbanken und ihre Methoden gilt: sie sind attributbasiert. D.h. sie beruhen auf Attributen, wie sie von den Eigenschaften der Alltagswelt abgeleitet wurden. Vgl. [Staud 2021, Abschnitt 2.4]. Dies gilt für alle relationalen Datenbanken, aber auch für objektorientierte, genauso wie für die semantische Datenmodellierung. Umso überraschender, dass der Attributsbegriff in Informatikkreisen nur stiefmütterlich behandelt wird.

Bei den Modellierungsaufgaben wird mit einer Beschreibung des Anwendungsbereichs und der Anforderungen begonnen. Dabei liegen dann bereits die Attribute vor. Konzeptionelle Modellierung, der Weg von der Beschreibung des Anwendungsbereichs bis zu den Attributen und Datenmodellen, wird hier nicht betrachtet.

Aufgaben- gestaltung

Der Lösungsweg wird jeweils detailliert aufgezeigt. Die Vorgehensweise ist dabei unterschiedlich, um die möglichen unterschiedlichen Wege aufzuzeigen.

Obwohl es vielerorts beim relationalen Datenbankentwurf nicht üblich ist, werden, wie beim objektorientierten Entwurf, Beziehungswertigkeiten angegeben. Sie werden hier Min-/Max-Angaben genannt. "Min/Max" steht für minimalen und maximalen Wert der Teilnahme an der Beziehung. Sie zeigen nicht nur, ob eine Beziehung Pflicht ist oder optional, sondern auch, welchen Umfang die Wertigkeiten haben können.

Min/Max

1.4 Bezeichnung der Methodenelemente

Was die zu beschreibenden Elemente in der Datenmodellierung angeht, kann man einen Ausgangspunkt und drei Modellebenen unterscheiden. Der Ausgangspunkt ist der zu modellierende Anwendungsbereich, manchmal auch Weltausschnitt genannt. Die erste Modellebene ist die der Attribute, durch die Objekte und Beziehungen beschrieben werden. Die zweite die Ebene der Basiselemente im jeweiligen Ansatz (Relationen, Entitätstypen, Klassen). Die dritte Ebene ist die des gesamten Datenmodells. Um diesbezüglich im Text die Übersichtlichkeit zu erhöhen wird folgende typographische Festlegung getroffen:

Überblick durch Typographie

  • Bezeichnungen von Anwendungsbereichen werden etwas vergrößert, in Kapitälchen und in Arial gesetzt: Hochschule, Personalwesen, WebShop. In der Web-Version sind sie zusätzlich in roter Farbe gehalten.
  • Bezeichnungen von Datenmodellen und Datenbanken sind in normaler Größe, fett und in Arial gesetzt: Vertrieb, Zoo, WebShop, Datenbanksysteme (Markt für Datenbanksysteme). In der Web-Version zusätzlich in rot.
  • Bezeichnungen von Relationen, Entitätstypen und Klassen (Basiselemente) sind etwas verkleinert und in Arial gesetzt: Angestellte, Abteilungen, Projekte. In der Web-Version zusätzlich in rot.
  • Bezeichnungen von Attributen sind etwas verkleinert, fett und in Arial gesetzt: Gehalt, Name, Datum. Bei zusammengesetzten Benennungen wird der nachfolgende Begriff wieder groß begonnen: PersNr (Personalnummer), BezProj (Bezeichnung Projekt).
  • Für die kombinierte Angabe von Attributen und Relationen: Relationenbezeichnung.Attributsbezeichnung, also z.B. Angestellte.PersNr für das Attribut PersNr der Relation Angestellte.
  • Ausprägungen von Attributen werden in normaler Größe und in Courier gesetzt, z.B. Müller für das Attribut Name.

Für die Basiselemente (Relationen, Entitätstypen, Klassen) wird bei der Bezeichnung immer die Mehrzahl gewählt, da ja in der Regel mehrere Objekte bzw. Beziehungen erfasst sind.