Skip to content

đŸ—„ïž Thema 4: Datenbanken ​

Überblick ​

In diesem Themenbereich geht es darum, wie grĂ¶ĂŸere Datenmengen sinnvoll gespeichert, strukturiert, abgefragt, verĂ€ndert und kritisch ausgewertet werden können.

Datenbanken begegnen uns stÀndig:

  • in Schulverwaltungsprogrammen,
  • in Bibliotheken,
  • bei Online-Shops,
  • bei Streamingdiensten,
  • in Apps mit Benutzerkonten,
  • bei Buchungs- und Reservierungssystemen,
  • in KrankenhĂ€usern,
  • bei Banken, Versicherungen und Behörden.

Eine Datenbank speichert Daten nicht einfach „irgendwo“. Sie ordnet Daten nach einer klaren Struktur. Dadurch können Informationen zuverlĂ€ssig gesucht, miteinander verknĂŒpft, ausgewertet und kontrolliert verĂ€ndert werden.

Leitfrage

Wie lassen sich Daten so organisieren, dass sie eindeutig, widerspruchsarm, effizient und verantwortungsvoll genutzt werden können?

Daten, Datenbank, Datenbanksystem ​

Daten sind Zeichen, Werte oder Beschreibungen von Sachverhalten. Sie können Zahlen, Texte, Datumsangaben, Wahrheitswerte, Bilder oder andere gespeicherte Informationen sein.

Beispiele:

Datenwertmögliche Bedeutung
17Alter, Klassennummer, StĂŒckzahl oder Preis
2026-05-12Geburtsdatum, Ausleihdatum oder Termin
wienStadt, Suchbegriff oder Benutzername
trueZustimmung, VerfĂŒgbarkeit oder Status

Erst durch den Kontext wird aus einem Datenwert sinnvolle Information. Die Zahl 17 allein sagt noch wenig aus. Als Wert im Attribut Alter ist sie anders zu deuten als im Attribut Zimmernummer.

Eine Datenbank ist eine geordnete Sammlung zusammengehöriger Daten. Ein Datenbanksystem (DBS) umfasst zusÀtzlich die Software, mit der diese Daten verwaltet werden.

txt
Datenbanksystem = Datenbank + Datenbankmanagementsystem

Das Datenbankmanagementsystem (DBMS) ist die Software, die Daten speichert, sucht, verĂ€ndert, schĂŒtzt und fĂŒr verschiedene Programme bereitstellt.

Merke

Die Datenbank enthÀlt die Daten. Das DBMS verwaltet den Zugriff auf diese Daten.

Warum Datenbanken? ​

Kleine Listen lassen sich gut in einer Tabellenkalkulation verwalten. Sobald Daten aber grĂ¶ĂŸer, vernetzter oder gemeinschaftlich genutzt werden, entstehen typische Probleme:

  • dieselben Daten werden mehrfach gespeichert,
  • verschiedene Personen arbeiten mit unterschiedlichen Versionen,
  • Änderungen mĂŒssen an mehreren Stellen durchgefĂŒhrt werden,
  • mehrere Programme oder Nutzer·innen greifen gleichzeitig zu,
  • Zugriffsrechte mĂŒssen beachtet werden,
  • DatensĂ€tze sollen schnell gefiltert, sortiert und ausgewertet werden,
  • Daten sollen langfristig widerspruchsfrei bleiben.
Vergleich zwischen lokaler Datenverwaltung und zentraler Verwaltung mit einem Datenbanksystem.
Abb.: Vergleich zwischen mehreren lokalen Datenkopien und einer zentral verwalteten Datenbasis.

Tabellenkalkulation oder Datenbanksystem? ​

Tabellenkalkulationsprogramme und Datenbanksysteme können beide Daten tabellarisch darstellen. Sie haben aber unterschiedliche StÀrken.

TabellenkalkulationDatenbanksystem
gut fĂŒr Berechnungen, kleinere Listen, Diagrammegut fĂŒr große, strukturierte und verknĂŒpfte DatenbestĂ€nde
oft als einzelne Datei gespeicherthÀufig zentral auf einem Server gespeichert
sehr flexibel, aber leichter fehleranfÀlligstÀrker geregelt und kontrollierbar
gut fĂŒr Einzelpersonen oder kleine Gruppengut fĂŒr viele gleichzeitige Nutzer·innen
Formeln, ZellbezĂŒge und Auswertungen stehen im VordergrundTabellen, Beziehungen, SchlĂŒssel und Abfragen stehen im Vordergrund
Änderungen passieren direkt in ZellenÄnderungen laufen ĂŒber definierte Strukturen und Rechte

Wichtig

Eine Tabellenkalkulation ist nicht „schlechter“ als eine Datenbank. Beide Werkzeuge sind fĂŒr unterschiedliche Aufgaben geeignet.

Wann reicht eine Tabellenkalkulation? ​

Eine Tabellenkalkulation ist sinnvoll, wenn Daten ĂŒberschaubar sind und Berechnungen oder Diagramme im Vordergrund stehen.

Beispiele:

  • private Ausgabenliste,
  • NotenĂŒbersicht einer kleinen Lerngruppe,
  • einfache Projektplanung,
  • Diagramm zu Messwerten,
  • einmalige Auswertung.

Wann ist ein Datenbanksystem sinnvoller? ​

Ein Datenbanksystem ist sinnvoll, wenn Daten dauerhaft, gemeinsam und strukturiert verwaltet werden mĂŒssen.

Beispiele:

  • Schulverwaltung,
  • Bibliothekssystem,
  • Online-Shop,
  • Vereinsverwaltung,
  • Krankenhausinformationssystem,
  • Benutzerverwaltung einer App.

Kurz gesagt

Tabellenkalkulationen sind stark bei Berechnungen. Datenbanken sind stark bei strukturierter, vernetzter und langfristiger Datenverwaltung.

Anforderungen an Datenbanksysteme ​

Ein gutes Datenbanksystem soll nicht nur Daten speichern. Es soll auch sicherstellen, dass Daten zuverlÀssig und kontrolliert genutzt werden können.

Wichtige Anforderungen sind:

AnforderungBedeutung
IntegritÀtssicherungDaten sollen korrekt, vollstÀndig und widerspruchsfrei bleiben.
RedundanzarmutDieselbe Information soll nicht unnötig mehrfach gespeichert werden.
DatensicherheitDaten sollen vor Verlust, Manipulation und unberechtigtem Zugriff geschĂŒtzt werden.
DatenschutzPersonenbezogene Daten dĂŒrfen nur rechtmĂ€ĂŸig und zweckgebunden verarbeitet werden.
MehrbenutzerbetriebMehrere Personen oder Programme können gleichzeitig arbeiten.
DatenunabhÀngigkeitProgramme sollen möglichst unabhÀngig von der internen Speicherung bleiben.
zentrale KontrolleVerwaltung, Rechte und Sicherung können zentral organisiert werden.

Ansichten statt vollstĂ€ndiger Datenzugriff ​

Ein DBMS kann Daten je nach Aufgabe in unterschiedlichen Ansichten bereitstellen.

Eine Ansicht bedeutet: Ein Programm oder eine Person sieht nicht automatisch alle gespeicherten Daten, sondern nur jene Ausschnitte, die fĂŒr die jeweilige Aufgabe sinnvoll und erlaubt sind.

Beispiele:

  • Die Bibliothek sieht Ausleihdaten und Namen, aber keine medizinischen Informationen.
  • Eine Lehrperson sieht nur Daten der eigenen Kurse.
  • Ein Statistikmodul sieht zusammengefasste Zahlen, aber keine vollstĂ€ndigen personenbezogenen Details.
  • Ein Sekretariat kann Stammdaten bearbeiten, ein SchĂŒler·innenportal zeigt nur ausgewĂ€hlte Informationen an.

Merksatz

Ansichten sind passende Ausschnitte aus einer Datenbasis. Sie helfen, Daten ĂŒbersichtlich bereitzustellen und Zugriffe einzuschrĂ€nken.

Aufbau eines Datenbanksystems mit Programmen, DBMS, Datenbasis und Ansichten.
Abb.: GrundsÀtzlicher Aufbau eines Datenbanksystems mit DBMS, Datenbasis und Ansichten.

Relationale Datenbanken ​

Besonders verbreitet sind relationale Datenbanksysteme. Dabei werden Daten in Tabellen gespeichert.

Eine Tabelle beschreibt eine bestimmte Art von Dingen, Personen, VorgÀngen oder Objekten.

Beispiele:

txt
Schueler
Kurs
Buch
Ausleihe
Kunde
Bestellung
Produkt

Eine relationale Datenbank besteht meist aus mehreren Tabellen, die ĂŒber SchlĂŒssel miteinander verbunden sind.

Zentrale Begriffe ​

BegriffBedeutung
Tabelle / RelationSammlung gleichartiger DatensÀtze
Attribut / SpalteEigenschaft eines Datensatzes
Attributwertkonkreter Wert in einer Zelle
Datensatz / Tupel / Zeileein konkreter Eintrag in einer Tabelle
RelationenschemaKurzbeschreibung einer Tabelle mit ihren Attributen
PrimĂ€rschlĂŒsselAttribut oder Attributkombination zur eindeutigen Identifikation
FremdschlĂŒsselAttribut, das auf einen PrimĂ€rschlĂŒssel einer anderen Tabelle verweist
Beispieltabelle mit markierten Begriffen wie Tabellenname, Attribut, Datensatz und Attributwert.
Abb.: Wichtige Begriffe einer relationalen Tabelle an einem Beispiel.

Relationenschema ​

Ein Relationenschema beschreibt eine Tabelle kompakt. In dieser Lernunterlage wird dabei folgende Schreibweise verwendet:

  • PrimĂ€rschlĂŒssel werden unterstrichen.
  • FremdschlĂŒssel werden mit einem Pfeil nach oben und kursiv markiert: ↑ FremdschlĂŒssel.
  • Der Pfeil bedeutet: Dieses Attribut verweist auf den PrimĂ€rschlĂŒssel einer anderen Tabelle.

Beispiel:

Person(PNr, Name, Vorname, PLZ, Ort)

Dabei ist PNr ein möglicher PrimĂ€rschlĂŒssel.

Wenn eine Tabelle auf eine andere Tabelle verweist, wird der FremdschlĂŒssel so notiert:

Klasse(KlasseID, Klassenname, Raum)
Schueler(SchuelerID, Vorname, Nachname, ↑ KlasseID)

Hier ist ↑ KlasseID in der Tabelle Schueler ein FremdschlĂŒssel. Er verweist auf den PrimĂ€rschlĂŒssel KlasseID der Tabelle Klasse.

Merke

Im Relationenschema erkennt man dadurch sofort:

  • Was identifiziert einen Datensatz eindeutig?
  • Welche Tabelle verweist auf eine andere Tabelle?
  • Wo wurde eine Beziehung im relationalen Modell umgesetzt?

Mit Datentypen könnte man das Schema noch genauer notieren:

Person(PNr: INTEGER, Name: TEXT, Vorname: TEXT, PLZ: TEXT, Ort: TEXT)

Typische Datentypen sind:

DatentypBedeutungBeispiel
INTEGERganze Zahl17
TEXT / VARCHARTextWien
BOOLEANWahrheitswerttrue / false
DATEDatum2026-05-12
DATETIMEDatum und Uhrzeit2026-05-12 08:30
FLOAT / DOUBLEKommazahl19.95

Merksatz

Ein PrimĂ€rschlĂŒssel identifiziert einen Datensatz eindeutig. Ein FremdschlĂŒssel verbindet Tabellen miteinander.

SchlĂŒssel in relationalen Datenbanken ​

Namen sind selten eindeutig. Es kann mehrere Personen mit demselben Namen geben. Deshalb verwendet man in Datenbanken hĂ€ufig kĂŒnstliche IDs.

Beispiel:

Klasse(KlasseID, Klassenname)
Schueler(SchuelerID, Vorname, Nachname, ↑ KlasseID)

SchuelerID identifiziert SchĂŒler·innen eindeutig. ↑ KlasseID verweist in der Tabelle Schueler auf einen Eintrag in der Tabelle Klasse.

PrimĂ€rschlĂŒssel ​

Ein PrimĂ€rschlĂŒssel muss jeden Datensatz eindeutig identifizieren.

Geeignet:

txt
SchuelerID
BuchID
Bestellnummer
Matrikelnummer

Problematisch:

txt
Name
Vorname
Geburtsdatum allein
Adresse allein

Diese Werte können doppelt vorkommen oder sich Àndern.

FremdschlĂŒssel ​

Ein FremdschlĂŒssel verweist auf einen PrimĂ€rschlĂŒssel einer anderen Tabelle.

Beispiel:

Klasse(KlasseID, Klassenname)
Schueler(SchuelerID, Vorname, Nachname, ↑ KlasseID)

↑ KlasseID in Schueler ist ein FremdschlĂŒssel. Dadurch wird gespeichert, zu welcher Klasse eine SchĂŒler·in gehört.

Wichtig

FremdschlĂŒssel sorgen dafĂŒr, dass zusammengehörige Informationen nicht unkontrolliert mehrfach gespeichert werden mĂŒssen.

SQL ​

SQL steht fĂŒr Structured Query Language. SQL ist eine Sprache, mit der relationale Datenbanken abgefragt und verĂ€ndert werden können.

SQL kann unter anderem:

  • Spalten auswĂ€hlen,
  • Zeilen filtern,
  • Tabellen verknĂŒpfen,
  • Ergebnisse sortieren,
  • Werte zĂ€hlen oder berechnen,
  • Daten einfĂŒgen, Ă€ndern oder löschen,
  • Tabellenstrukturen beschreiben,
  • Zugriffsrechte unterstĂŒtzen.

In der PrĂŒfungsvorbereitung steht vor allem das Lesen, Formulieren und ErklĂ€ren von Abfragen im Vordergrund.

Übersicht zu typischen SQL-Bausteinen wie SELECT, FROM, WHERE, GROUP BY und ORDER BY.
Abb.: Zentrale Bausteine einer SQL-Anfrage.

Grundstruktur einer SQL-Abfrage ​

sql
SELECT Attributliste
FROM Tabellenliste
WHERE Bedingung
GROUP BY Gruppierung
HAVING Gruppenbedingung
ORDER BY Sortierung
LIMIT Anzahl;

Nicht alle Bestandteile mĂŒssen immer vorkommen.

SQL-TeilBedeutung
SELECTWelche Spalten oder Berechnungen sollen angezeigt werden?
FROMAus welcher Tabelle oder welchen Tabellen stammen die Daten?
WHEREWelche einzelnen DatensÀtze sollen ausgewÀhlt werden?
GROUP BYNach welchen Attributwerten sollen DatensÀtze gruppiert werden?
HAVINGWelche Gruppen sollen nach der Gruppierung behalten werden?
ORDER BYWie soll das Ergebnis sortiert werden?
LIMITWie viele DatensÀtze sollen höchstens angezeigt werden?

Merke

WHERE filtert einzelne Zeilen vor der Gruppierung. HAVING filtert Gruppen nach der Gruppierung.

Projektion und Selektion ​

Zwei Grundideen sind besonders wichtig:

BegriffBedeutungSQL-Bezug
ProjektionAuswahl bestimmter SpaltenSELECT Name, Ort
SelektionAuswahl bestimmter ZeilenWHERE Ort = 'Wien'

Beispiel:

sql
SELECT Name, Ort
FROM Person
WHERE PLZ LIKE '10%';

Diese Abfrage zeigt nur die Spalten Name und Ort. Außerdem werden nur jene DatensĂ€tze ausgewĂ€hlt, deren Ortscode mit 10 beginnt.

Bedingungen und Operatoren ​

Mit WHERE werden Bedingungen formuliert.

sql
SELECT Titel, Jahr
FROM Film
WHERE Jahr >= 2020;

Wichtige Vergleichsoperatoren:

OperatorBedeutung
=gleich
<> oder !=ungleich
<kleiner als
>grĂ¶ĂŸer als
<=kleiner oder gleich
>=grĂ¶ĂŸer oder gleich
LIKEMustervergleich
BETWEEN ... AND ...Wertebereich
IN (...)Wert kommt in einer Liste vor
IS NULLkein Wert vorhanden

Logische VerknĂŒpfungen ​

Mehrere Bedingungen lassen sich kombinieren.

sql
SELECT Titel, Jahr
FROM Film
WHERE Genre = 'Dokumentation' AND Jahr >= 2020;
OperatorBedeutung
ANDbeide Bedingungen mĂŒssen erfĂŒllt sein
ORmindestens eine Bedingung muss erfĂŒllt sein
NOTBedingung wird verneint

Wichtig

Bei gemischten Bedingungen können Klammern notwendig sein, damit klar ist, was zuerst ausgewertet wird.

Beispiel:

sql
SELECT Name, Stadt
FROM Mitglied
WHERE Stadt = 'Wien' AND (Alter < 18 OR Alter > 65);

Sortieren mit ORDER BY ​

sql
SELECT Name, Preis
FROM Produkt
ORDER BY Preis DESC;

ASC bedeutet aufsteigend, DESC bedeutet absteigend.

Doppelte Ergebnisse vermeiden ​

Mit DISTINCT werden doppelte Ergebniszeilen entfernt.

sql
SELECT DISTINCT Stadt
FROM Mitglied;

Diese Abfrage zeigt jede Stadt nur einmal.

Aggregatfunktionen ​

Aggregatfunktionen werten mehrere DatensÀtze zusammen aus.

FunktionBedeutung
COUNT()zÀhlt DatensÀtze
SUM()bildet eine Summe
AVG()berechnet einen Durchschnitt
MIN()kleinster Wert
MAX()grĂ¶ĂŸter Wert

Beispiele:

sql
SELECT COUNT(*)
FROM Buch;
sql
SELECT AVG(Preis)
FROM Produkt;
sql
SELECT MAX(Punkte)
FROM Ergebnis;

AS: Ergebnisspalten umbenennen ​

Mit AS kann eine Ergebnisspalte verstÀndlicher benannt werden.

sql
SELECT COUNT(*) AS Anzahl_Buecher
FROM Buch;

Das Ă€ndert nicht die Tabelle selbst, sondern nur die SpaltenĂŒberschrift im Ergebnis.

GROUP BY ​

Mit GROUP BY werden DatensÀtze nach gleichen Attributwerten zusammengefasst.

Beispiel:

sql
SELECT Kategorie, COUNT(*) AS Anzahl
FROM Buch
GROUP BY Kategorie;

Diese Abfrage zĂ€hlt, wie viele BĂŒcher pro Kategorie vorhanden sind.

HAVING ​

HAVING filtert Gruppen nach der Gruppierung.

sql
SELECT Kategorie, COUNT(*) AS Anzahl
FROM Buch
GROUP BY Kategorie
HAVING COUNT(*) > 5;

Diese Abfrage zeigt nur Kategorien, in denen mehr als fĂŒnf BĂŒcher vorkommen.

Merke

WHERE prĂŒft einzelne DatensĂ€tze. HAVING prĂŒft zusammengefasste Gruppen.

Tabellen verknĂŒpfen ​

Informationen liegen in relationalen Datenbanken oft auf mehrere Tabellen verteilt.

Beispiel:

Schueler(SchuelerID, Vorname, Nachname)
Kurs(KursID, Kursname)
belegt(↑ SchuelerID, ↑ KursID)

Die Tabelle belegt verbindet SchĂŒler·innen mit Kursen.

Eine Abfrage mit klassischer VerknĂŒpfung kann so aussehen:

sql
SELECT Schueler.Vorname, Schueler.Nachname, Kurs.Kursname
FROM Schueler, belegt, Kurs
WHERE Schueler.SchuelerID = belegt.SchuelerID
AND belegt.KursID = Kurs.KursID;

Eine moderne Schreibweise mit JOIN ... ON wÀre:

sql
SELECT Schueler.Vorname, Schueler.Nachname, Kurs.Kursname
FROM Schueler
JOIN belegt ON Schueler.SchuelerID = belegt.SchuelerID
JOIN Kurs ON belegt.KursID = Kurs.KursID;

Beide Varianten verbinden passende DatensĂ€tze ĂŒber SchlĂŒssel.

Wichtig

Wenn Tabellen verknĂŒpft werden, mĂŒssen die passenden SchlĂŒssel korrekt verbunden werden. Sonst entstehen falsche Kombinationen.

📝 Übung: SQL-Grundlagen ​

Gegeben ist die Tabelle:

txt
Buch(BuchID, Titel, Autor, Jahr, Kategorie, Verfuegbar)

Formuliere SQL-Abfragen:

  1. Zeige alle BĂŒcher an.
  2. Zeige nur Titel und Autor an.
  3. Zeige alle BĂŒcher der Kategorie Fantasy.
  4. Sortiere alle BĂŒcher nach Erscheinungsjahr absteigend.
  5. Zeige alle verfĂŒgbaren BĂŒcher, die nach 2020 erschienen sind.
Lösung
sql
SELECT *
FROM Buch;
sql
SELECT Titel, Autor
FROM Buch;
sql
SELECT *
FROM Buch
WHERE Kategorie = 'Fantasy';
sql
SELECT Titel, Jahr
FROM Buch
ORDER BY Jahr DESC;
sql
SELECT Titel, Jahr
FROM Buch
WHERE Verfuegbar = true AND Jahr > 2020;

📝 Übung: Aggregation und Gruppierung ​

Gegeben ist die Tabelle:

txt
Ausleihe(AusleiheID, BuchID, PersonID, Monat)

Formuliere SQL-Abfragen:

  1. ZĂ€hle alle Ausleihen.
  2. ZĂ€hle die Ausleihen pro Monat.
  3. Zeige nur jene Monate, in denen es mehr als 20 Ausleihen gab.
Lösung
sql
SELECT COUNT(*) AS Anzahl_Ausleihen
FROM Ausleihe;
sql
SELECT Monat, COUNT(*) AS Anzahl_Ausleihen
FROM Ausleihe
GROUP BY Monat;
sql
SELECT Monat, COUNT(*) AS Anzahl_Ausleihen
FROM Ausleihe
GROUP BY Monat
HAVING COUNT(*) > 20;

📝 Übung: SQL-Abfrage erklĂ€ren ​

ErklÀre in eigenen Worten, was diese Abfrage macht:

sql
SELECT Stadt, COUNT(*) AS Anzahl
FROM Mitglied
WHERE Aktiv = true
GROUP BY Stadt
HAVING COUNT(*) >= 3
ORDER BY Anzahl DESC;
Lösungshinweis

Die Abfrage betrachtet nur aktive Mitglieder. Danach gruppiert sie diese Mitglieder nach Stadt und zÀhlt pro Stadt die DatensÀtze. Angezeigt werden nur StÀdte mit mindestens drei aktiven Mitgliedern. Das Ergebnis wird nach der Anzahl absteigend sortiert.

📝 Übung: Tabellen verknĂŒpfen ​

Gegeben ist folgendes Schema:

txt
Person(PersonID, Vorname, Nachname)
AG(AGID, Bezeichnung)
nimmt_teil(PersonID, AGID)

Formuliere eine Abfrage, die Vorname, Nachname und AG-Bezeichnung aller Teilnahmen anzeigt.

Lösung
sql
SELECT Person.Vorname, Person.Nachname, AG.Bezeichnung
FROM Person, nimmt_teil, AG
WHERE Person.PersonID = nimmt_teil.PersonID
AND nimmt_teil.AGID = AG.AGID;

Oder mit JOIN:

sql
SELECT Person.Vorname, Person.Nachname, AG.Bezeichnung
FROM Person
JOIN nimmt_teil ON Person.PersonID = nimmt_teil.PersonID
JOIN AG ON nimmt_teil.AGID = AG.AGID;

Datenbankentwicklung ​

Eine gute Datenbank entsteht nicht erst beim Programmieren. Zuerst muss geklĂ€rt werden, welche Daten vorkommen, welche Beziehungen bestehen und welche Anforderungen erfĂŒllt werden mĂŒssen.

Typische Entwicklungsschritte:

  1. Anforderungsspezifikation: Was soll das System leisten?
  2. Konzeptioneller Entwurf: Welche EntitÀten, Attribute und Beziehungen gibt es?
  3. Logischer Entwurf: Wie wird daraus ein relationales Modell mit Tabellen und SchlĂŒsseln?
  4. Physischer Entwurf: Welche Datentypen, Speicherformen, Rechte und technischen Details werden festgelegt?
  5. Implementierung und Erprobung: Tabellen anlegen, testen, Grunddaten eingeben.
  6. Nutzung und Pflege: Daten eingeben, auswerten, sichern und weiterentwickeln.
Etappen fĂŒr den Entwurf eines Datenbanksystems sowie Zusammenfassung in drei Phasen.
Abb.: Typische Etappen beim Entwurf eines Datenbanksystems.

Merke

Je sauberer die Modellierung, desto weniger Probleme entstehen spĂ€ter bei Abfragen, Änderungen und Erweiterungen.

ER-Modell ​

Ein ER-Modell beschreibt Daten fachlich, bevor sie in konkrete Tabellen umgesetzt werden.

ER steht fĂŒr:

  • Entity: EntitĂ€t,
  • Relationship: Beziehung.

EntitĂ€t, EntitĂ€tstyp und EntitĂ€tsmenge ​

Eine EntitÀt ist ein eindeutig identifizierbares Objekt oder ein eindeutig beschreibbarer Vorgang.

Beispiele:

  • eine konkrete SchĂŒler·in,
  • ein bestimmtes Buch,
  • eine bestimmte Ausleihe,
  • ein konkreter Kurs,
  • eine konkrete Bestellung.

Ein EntitÀtstyp beschreibt gleichartige EntitÀten.

Beispiele:

txt
Schueler
Buch
Ausleihe
Kurs
Bestellung

Eine EntitÀtsmenge ist die Menge aller EntitÀten eines EntitÀtstyps.

Attribut und Attributwert ​

Ein Attribut ist eine Eigenschaft eines EntitÀtstyps.

Beispiel:

txt
Schueler(Vorname, Nachname, Geburtsdatum)

Ein Attributwert ist ein konkreter Wert eines Attributs.

txt
Vorname = "Mina"
Nachname = "Berger"
Geburtsdatum = "2008-04-12"

Besondere Attribute ​

AttributartBedeutungBeispiel
SchlĂŒsselattributidentifiziert EntitĂ€ten eindeutigSchuelerID
zusammengesetztes Attributbesteht aus mehreren TeilinformationenAdresse aus Straße, PLZ, Ort
mehrwertiges Attributkann mehrere Werte besitzenmehrere Telefonnummern
abgeleitetes Attributkann aus anderen Werten berechnet werdenAlter aus Geburtsdatum

Wichtig

Mehrwertige oder zusammengesetzte Informationen sollten im relationalen Modell besonders sorgfÀltig behandelt werden. HÀufig werden sie in mehrere Attribute oder eigene Tabellen zerlegt.

Grundnotation des ER-Modells mit EntitÀtstyp, Attributen und einem Beziehungstyp.
Abb.: Grundnotation des ER-Modells.

Beziehungen und KardinalitĂ€ten ​

Eine Beziehung beschreibt, wie EntitÀten miteinander zusammenhÀngen.

Beispiele:

txt
SchĂŒler·in besucht Kurs
Person leiht Buch aus
Kunde bestellt Produkt
Lehrkraft betreut Projekt

Der Name einer Beziehung sollte die inhaltliche Bedeutung möglichst klar ausdrĂŒcken. HĂ€ufig wird dafĂŒr ein Verb verwendet.

Beziehung in zwei Richtungen prĂŒfen ​

Bei Beziehungen ist es hilfreich, beide Richtungen als SĂ€tze zu formulieren.

Beispiel:

txt
SchĂŒler·in geht_in Klasse

Richtung 1:

Eine SchĂŒler·in geht in höchstens eine Klasse.

Richtung 2:

Eine Klasse besteht aus mehreren SchĂŒler·innen.

Daraus ergibt sich eine 1:n-Beziehung.

KardinalitĂ€ten ​

KardinalitÀten geben an, wie viele EntitÀten auf beiden Seiten einer Beziehung beteiligt sein können.

KardinalitÀtBedeutungBeispiel
1:1Eine EntitÀt ist höchstens einer anderen EntitÀt zugeordnet.Person - besitzt - Spind
1:nEine EntitĂ€t ist mehreren anderen zugeordnet; umgekehrt gehört jede nur zu einer.Klasse - enthĂ€lt - SchĂŒler·innen
n:mMehrere EntitĂ€ten können mit mehreren anderen verbunden sein.SchĂŒler·innen - besuchen - Kurse
KardinalitÀten 1:1, 1:n und n:m im ER-Modell.
Abb.: Typische KardinalitÀten im ER-Modell.

Merksatz

Eine n:m-Beziehung wird in relationalen Datenbanken durch eine eigene Zwischentabelle umgesetzt.

📝 Übung: KardinalitĂ€ten begrĂŒnden ​

Bestimme die KardinalitĂ€t und begrĂŒnde sie jeweils in zwei SĂ€tzen.

  1. Eine Klasse besteht aus mehreren SchĂŒler·innen. Eine SchĂŒler·in gehört genau zu einer Klasse.
  2. Eine Person kann mehrere BĂŒcher ausleihen. Eine konkrete Ausleihe gehört genau zu einer Person.
  3. Eine SchĂŒler·in kann mehrere FreifĂ€cher besuchen. Ein Freifach kann von mehreren SchĂŒler·innen besucht werden.
  4. Ein nummerierter Spind ist genau einer Person zugeordnet. Eine Person hat höchstens einen Spind.
Lösung
  1. Klasse - SchĂŒler·in: 1:n. Eine Klasse kann viele SchĂŒler·innen enthalten; jede SchĂŒler·in gehört zu genau einer Klasse.
  2. Person - Ausleihe: 1:n. Eine Person kann viele Ausleihen haben; jede Ausleihe gehört zu genau einer Person.
  3. SchĂŒler·in - Freifach: n:m. Eine SchĂŒler·in kann mehrere FreifĂ€cher besuchen; ein Freifach kann mehrere SchĂŒler·innen haben.
  4. Person - Spind: 1:1. Ein Spind gehört höchstens einer Person; eine Person hat höchstens einen Spind.

Vom ER-Modell zum relationalen Modell ​

Nach der konzeptionellen Modellierung wird das ER-Modell in Tabellen ĂŒbertragen. Dabei ist entscheidend, wo der FremdschlĂŒssel gespeichert wird.

Grundregeln:

  1. Jeder EntitÀtstyp wird zu einer eigenen Tabelle.
  2. Einfache Attribute werden zu Spalten.
  3. SchlĂŒsselattribute werden zu PrimĂ€rschlĂŒsseln.
  4. 1:n-Beziehungen werden durch einen FremdschlĂŒssel auf der n-Seite umgesetzt.
  5. n:m-Beziehungen werden durch eine eigene Zwischentabelle umgesetzt.
  6. Attribute einer Beziehung werden in der Beziehungstabelle oder auf der passenden Seite gespeichert.
  7. Bei 1:1-Beziehungen muss begrĂŒndet entschieden werden, in welcher Tabelle der FremdschlĂŒssel gespeichert wird.

Schreibweise im Relationenschema

In den folgenden Beispielen gilt:

  • PrimĂ€rschlĂŒssel sind unterstrichen.
  • FremdschlĂŒssel sind kursiv mit Pfeil markiert: ↑ FremdschlĂŒssel.

1:1-Beziehung ​

Bei einer 1:1-Beziehung gehört ein Datensatz der einen Tabelle höchstens zu einem Datensatz der anderen Tabelle und umgekehrt.

ER-Idee:

txt
Person besitzt Spind

Eine Person besitzt höchstens einen Spind. Ein Spind ist höchstens einer Person zugeordnet.

Mögliches relationales Schema:

Person(PersonID, Vorname, Nachname)
Spind(SpindID, Standort, ↑ PersonID)

Der FremdschlĂŒssel ↑ PersonID steht hier in Spind, weil man dadurch direkt speichern kann, welcher Spind welcher Person zugeordnet ist.

Eine alternative Modellierung wÀre ebenfalls möglich:

Person(PersonID, Vorname, Nachname, ↑ SpindID)
Spind(SpindID, Standort)

Welche Variante sinnvoller ist, hÀngt vom Sachverhalt ab:

  • Hat jede Person sicher einen Spind? Dann kann der FremdschlĂŒssel gut bei Person stehen.
  • Gibt es viele Personen ohne Spind, aber jeder vergebene Spind gehört genau einer Person? Dann ist der FremdschlĂŒssel oft in Spind sinnvoller.
  • Wenn die Beziehung zusĂ€tzliche Daten hat, etwa Zuteilungsdatum, kann auch eine eigene Beziehungstabelle sinnvoll sein.

Wichtig

Bei 1:1-Beziehungen gibt es nicht immer nur eine einzig richtige Lösung. Man muss begrĂŒnden, welche Tabelle den FremdschlĂŒssel sinnvoll „erbt“.

1:n-Beziehung ​

Bei einer 1:n-Beziehung kann ein Datensatz auf der 1-Seite mit mehreren DatensÀtzen auf der n-Seite verbunden sein. Jeder Datensatz auf der n-Seite gehört aber genau zu einem Datensatz auf der 1-Seite.

ER-Idee:

txt
Klasse enthĂ€lt SchĂŒler·innen

Eine Klasse enthĂ€lt viele SchĂŒler·innen. Eine SchĂŒler·in gehört genau zu einer Klasse.

Relationales Schema:

Klasse(KlasseID, Klassenname, Raum)
Schueler(SchuelerID, Vorname, Nachname, ↑ KlasseID)

Der FremdschlĂŒssel ↑ KlasseID steht in der Tabelle Schueler.

Warum?

  • Auf der n-Seite gibt es viele SchĂŒler·innen.
  • Jeder einzelne SchĂŒlerdatensatz kann mit einem FremdschlĂŒssel auf genau eine Klasse zeigen.
  • WĂŒrde man alle SchĂŒler·innen in der Tabelle Klasse speichern, mĂŒsste man mehrere Werte in einem Feld ablegen. Das wĂ€re unĂŒbersichtlich und nicht atomar.

Merke

Bei 1:n-Beziehungen wird der FremdschlĂŒssel auf der n-Seite gespeichert.

Weiteres Beispiel:

ER-Idee:

txt
Instrument wird in Kursen angeboten

Ein Instrument kann in mehreren Kursen vorkommen. Jeder Kurs gehört zu genau einem Instrument.

Instrument(InstrumentID, Bezeichnung)
Kurs(KursID, Kursname, Wochentag, ↑ InstrumentID)

Hier steht ↑ InstrumentID in Kurs, weil viele Kurse zu einem Instrument gehören können.

n:m-Beziehung ​

Bei einer n:m-Beziehung können mehrere DatensÀtze der einen Tabelle mit mehreren DatensÀtzen der anderen Tabelle verbunden sein.

ER-Idee:

txt
SchĂŒler·innen besuchen Kurse

Eine SchĂŒler·in kann mehrere Kurse besuchen. Ein Kurs kann von mehreren SchĂŒler·innen besucht werden.

Direkt in einer der beiden Tabellen wÀre das problematisch:

txt
Schueler(SchuelerID, Vorname, Nachname, Kurs1, Kurs2, Kurs3)

Diese Struktur wĂ€re unflexibel, weil eine SchĂŒler·in vielleicht einen, drei oder zehn Kurse besucht. Außerdem wĂŒrden mehrere Ă€hnliche Spalten entstehen.

Deshalb wird eine Zwischentabelle erstellt.

Relationales Schema:

Schueler(SchuelerID, Vorname, Nachname)
Kurs(KursID, Kursname)
besucht(↑ SchuelerID, ↑ KursID)

Die Tabelle besucht enthĂ€lt die FremdschlĂŒssel beider Tabellen. Gemeinsam bilden ↑ SchuelerID und ↑ KursID den zusammengesetzten PrimĂ€rschlĂŒssel der Zwischentabelle.

Merke

Bei n:m-Beziehungen entsteht eine neue Tabelle. Die FremdschlĂŒssel beider beteiligter Tabellen werden in diese Zwischentabelle ĂŒbernommen.

n:m-Beziehung mit Beziehungsattribut ​

Manchmal hat nicht nur eine EntitÀt Eigenschaften, sondern auch die Beziehung selbst.

ER-Idee:

txt
SchĂŒler·in besucht Kurs

Zusatzinformation:

txt
Anmeldedatum
Status

Das Anmeldedatum gehört nicht nur zur SchĂŒler·in und auch nicht nur zum Kurs. Es beschreibt die konkrete Teilnahme einer bestimmten SchĂŒler·in an einem bestimmten Kurs.

Relationales Schema:

Schueler(SchuelerID, Vorname, Nachname)
Kurs(KursID, Kursname)
besucht(↑ SchuelerID, ↑ KursID, Anmeldedatum, Status)

Anmeldedatum und Status stehen in der Zwischentabelle, weil sie zur Beziehung besucht gehören.

1:n-Beziehung mit Beziehungsattribut ​

Auch eine 1:n-Beziehung kann ein eigenes Attribut haben.

ER-Idee:

txt
Lehrkraft betreut Projekt

Eine Lehrkraft kann mehrere Projekte betreuen. Jedes Projekt hat genau eine hauptverantwortliche Lehrkraft. ZusÀtzlich soll gespeichert werden, seit wann die Betreuung besteht.

Relationales Schema:

Lehrkraft(LehrkraftID, Vorname, Nachname)
Projekt(ProjektID, Projekttitel, ↑ LehrkraftID, BetreutSeit)

Der FremdschlĂŒssel steht auf der n-Seite, also in Projekt. Das Beziehungsattribut BetreutSeit kann ebenfalls dort gespeichert werden, weil jede Projektzeile genau eine betreuende Lehrkraft beschreibt.

Übersicht: Wohin kommt der FremdschlĂŒssel? ​

Beziehung im ER-ModellUmsetzung im relationalen ModellWohin kommt der FremdschlĂŒssel?
1:1FremdschlĂŒssel in einer der beiden Tabellenin die fachlich passendere Tabelle; Entscheidung begrĂŒnden
1:nFremdschlĂŒssel auf der n-Seitein die Tabelle, von der viele DatensĂ€tze zu einem Datensatz gehören
n:meigene Zwischentabellebeide FremdschlĂŒssel in die Zwischentabelle
n:m mit Beziehungsattributeneigene Zwischentabelle mit Zusatzattributenbeide FremdschlĂŒssel und die Beziehungsattribute in die Zwischentabelle
1:n mit Beziehungsattributmeist Speicherung auf der n-SeiteFremdschlĂŒssel und Beziehungsattribut auf der n-Seite

Typische Denkfragen beim ÜberfĂŒhren ​

Beim Übertragen eines ER-Modells in ein Relationenschema helfen diese Fragen:

  1. Welche EntitÀtstypen werden zu Tabellen?
  2. Welche Attribute gehören eindeutig zu welcher Tabelle?
  3. Welches Attribut identifiziert jeden Datensatz eindeutig?
  4. Liegt eine 1:1-, 1:n- oder n:m-Beziehung vor?
  5. Muss eine eigene Zwischentabelle erstellt werden?
  6. Gibt es Attribute, die nicht zu einer EntitÀt, sondern zur Beziehung gehören?
  7. Wo entstehen sonst Mehrfachwerte oder Redundanzen?

📝 Übung: Beziehung in Relationenschema ĂŒbertragen ​

ÜberfĂŒhre jeweils die ER-Idee in ein Relationenschema. Markiere PrimĂ€rschlĂŒssel und FremdschlĂŒssel passend.

  1. Eine Person besitzt höchstens eine Fahrradkarte. Eine Fahrradkarte gehört höchstens einer Person.
  2. Eine Klasse enthĂ€lt viele SchĂŒler·innen. Eine SchĂŒler·in gehört genau zu einer Klasse.
  3. Viele SchĂŒler·innen besuchen viele Arbeitsgemeinschaften. Zu jeder Teilnahme soll das Eintrittsdatum gespeichert werden.
Lösungsskizze

Mögliche Lösung fĂŒr 1:1:

Person(PersonID, Vorname, Nachname)
Fahrradkarte(KartenID, GueltigBis, ↑ PersonID)

Mögliche Lösung fĂŒr 1:n:

Klasse(KlasseID, Klassenname, Raum)
Schueler(SchuelerID, Vorname, Nachname, ↑ KlasseID)

Mögliche Lösung fĂŒr n:m mit Beziehungsattribut:

Schueler(SchuelerID, Vorname, Nachname)
AG(AGID, Bezeichnung)
nimmt_teil(↑ SchuelerID, ↑ AGID, Eintrittsdatum)

Die n:m-Beziehung wird durch nimmt_teil aufgelöst. Das Eintrittsdatum gehört zur konkreten Teilnahme und steht deshalb in der Zwischentabelle.

📝 Übung: ER-Modell in Relationenschema ĂŒbertragen ​

Ein Musikschul-System verwaltet SchĂŒler·innen, Instrumente und Kurse.

Sachverhalt:

  • Eine SchĂŒler·in kann mehrere Kurse besuchen.
  • Ein Kurs kann von mehreren SchĂŒler·innen besucht werden.
  • Jeder Kurs gehört genau zu einem Instrument.
  • Ein Instrument kann in mehreren Kursen angeboten werden.
  • Zu jeder Kursteilnahme soll das Anmeldedatum gespeichert werden.

Aufgaben:

  1. Bestimme die EntitÀtstypen.
  2. Bestimme die Beziehungstypen und KardinalitÀten.
  3. ÜberfĂŒhre das Modell in ein Relationenschema.
Lösungsskizze

EntitÀtstypen:

txt
Schueler
Kurs
Instrument

Beziehungen:

txt
Schueler besucht Kurs      n:m
Kurs gehört zu Instrument  n:1

Mögliches Relationenschema:

Schueler(SchuelerID, Vorname, Nachname)
Instrument(InstrumentID, Bezeichnung)
Kurs(KursID, Kursname, ↑ InstrumentID)
besucht(↑ SchuelerID, ↑ KursID, Anmeldedatum)

↑ InstrumentID steht in Kurs, weil jeder Kurs genau einem Instrument zugeordnet ist. Die n:m-Beziehung zwischen SchĂŒler·innen und Kursen wird durch besucht umgesetzt. Das Anmeldedatum beschreibt die konkrete Teilnahme und gehört deshalb ebenfalls in die Zwischentabelle.

Normalisierung ​

Normalisierung bedeutet, Tabellen so zu strukturieren, dass Daten möglichst eindeutig, widerspruchsarm und flexibel gespeichert werden.

Dabei geht es vor allem darum:

  • Redundanzen zu vermeiden,
  • atomare Werte zu verwenden,
  • AbhĂ€ngigkeiten sauber zu ordnen,
  • EinfĂŒge-, Änderungs- und Löschprobleme zu vermeiden.
Überblick ĂŒber erste, zweite und dritte Normalform sowie typische Anomalien.
Abb.: Überblick ĂŒber drei Normalformen und typische Anomalien.

Redundanz und Inkonsistenz ​

Redundanz bedeutet, dass dieselbe Information mehrfach gespeichert ist.

Beispiel:

AusleiheIDPersonKlasseKlassenraumBuch
1Sara6A204Momo
2Lukas6A204Krabat
3Mina6A204Rico, Oskar und die Tieferschatten

Der Klassenraum 204 wird mehrfach gespeichert. Wenn sich der Raum der 6A Àndert, muss jede Zeile geÀndert werden.

Inkonsistenz entsteht, wenn redundante Informationen nicht ĂŒberall gleich geĂ€ndert werden.

AusleiheIDPersonKlasseKlassenraumBuch
1Sara6A204Momo
2Lukas6A207Krabat

Jetzt ist unklar, welcher Raum zur 6A gehört.

Merke

Redundanz ist nicht nur ein Speicherproblem. Sie kann zu widersprĂŒchlichen Daten fĂŒhren.

Anomalien ​

Anomalien sind unerwĂŒnschte Effekte, die bei schlecht strukturierten Tabellen auftreten können.

Änderungs-Anomalie ​

Eine Information ist mehrfach gespeichert und muss an mehreren Stellen geÀndert werden.

Beispiel:

In vielen Zeilen steht, dass die Klasse 6A im Raum 204 ist. Der Raum Ă€ndert sich auf 207. Wird nur ein Teil der Zeilen geĂ€ndert, entstehen widersprĂŒchliche Daten.

EinfĂŒge-Anomalie ​

Neue Informationen können nicht sinnvoll gespeichert werden, weil andere Daten noch fehlen.

Beispiel:

Eine neue Klasse 7C soll mit Raum 305 gespeichert werden. In der Tabelle können Klassen aber nur gemeinsam mit einer Ausleihe gespeichert werden. Wenn noch keine Ausleihe existiert, kann die Klasse nicht sauber eingetragen werden.

Lösch-Anomalie ​

Beim Löschen eines Datensatzes gehen unbeabsichtigt zusÀtzliche Informationen verloren.

Beispiel:

Die letzte Ausleihe einer Klasse wird gelöscht. Dadurch verschwindet auch die einzige gespeicherte Information darĂŒber, in welchem Raum diese Klasse ist.

Wichtig

Anomalien zeigen, dass in einer Tabelle Informationen vermischt wurden, die eigentlich in getrennte Tabellen gehören.

Funktionale AbhĂ€ngigkeit ​

Eine funktionale AbhÀngigkeit beschreibt, dass ein Wert einen anderen Wert eindeutig bestimmt.

Schreibweise:

txt
A -> B

Das bedeutet:

Wenn ich A kenne, kenne ich auch B.

Beispiele:

txt
KlasseID -> Klassenname
KlasseID -> Raum
BuchID -> Titel
ProduktID -> Preis

Wenn KlasseID eindeutig ist, bestimmt sie den Klassennamen und den Raum. Wenn diese Informationen in vielen anderen Tabellen wiederholt werden, entstehen Redundanzen.

Normalformen ​

Normalformen sind Regeln, mit denen Tabellen schrittweise verbessert werden.

Erste Normalform (1NF) ​

Eine Tabelle befindet sich in der ersten Normalform, wenn:

  • alle Attribute atomar sind,
  • jedes Feld nur einen einzelnen Wert enthĂ€lt,
  • ein eindeutiger PrimĂ€rschlĂŒssel vorhanden ist.

Nicht atomar:

PersonIDNameKurse
1Sara DemirInformatik, Geschichte, Biologie

Problem: In Kurse stehen mehrere Werte in einem Feld.

Besser:

txt
Person(PersonID, Vorname, Nachname)
Kurs(KursID, Kursname)
besucht(PersonID, KursID)

Merksatz

Ein Feld soll nicht mehrere unabhÀngige Informationen enthalten.

Zweite Normalform (2NF) ​

Die zweite Normalform ist vor allem bei zusammengesetzten PrimĂ€rschlĂŒsseln wichtig.

Eine Tabelle befindet sich in der zweiten Normalform, wenn:

  • sie in der ersten Normalform ist,
  • jedes Nicht-SchlĂŒsselattribut vom vollstĂ€ndigen PrimĂ€rschlĂŒssel abhĂ€ngt.

Problembeispiel:

txt
Teilnahme(PersonID, KursID, Personenname, Kursname, Anmeldedatum)

Angenommen, der PrimĂ€rschlĂŒssel ist (PersonID, KursID).

  • Personenname hĂ€ngt nur von PersonID ab.
  • Kursname hĂ€ngt nur von KursID ab.
  • Anmeldedatum hĂ€ngt von der Kombination aus PersonID und KursID ab.

Besser:

txt
Person(PersonID, Personenname)
Kurs(KursID, Kursname)
Teilnahme(PersonID, KursID, Anmeldedatum)

Dritte Normalform (3NF) ​

Eine Tabelle befindet sich in der dritten Normalform, wenn:

  • sie in der ersten und zweiten Normalform ist,
  • Nicht-SchlĂŒsselattribute nicht voneinander abhĂ€ngen.

Problembeispiel:

txt
Schueler(SchuelerID, Name, KlasseID, Klassenname, Klassenraum)

Klassenname und Klassenraum hĂ€ngen nicht direkt von der SchĂŒler·in ab, sondern von KlasseID.

Besser:

txt
Schueler(SchuelerID, Name, KlasseID)
Klasse(KlasseID, Klassenname, Klassenraum)

Merke

Normalisierung bedeutet nicht, Tabellen möglichst kompliziert zu machen. Sie bedeutet, Informationen dort zu speichern, wo sie fachlich hingehören.

📝 Übung: Anomalien erkennen ​

Gegeben ist folgende Tabelle:

BestellungIDKundinAdresseProduktKategorieKategorienleitung
1Mina BergerHauptstraße 4HeftSchreibwarenHerr Paul
2Mina BergerHauptstraße 4StiftSchreibwarenHerr Paul
3Sara DemirSchulstraße 8BallSportFrau Novak
  1. Wo gibt es Redundanzen?
  2. Welche Änderungs-Anomalie könnte auftreten?
  3. Welche Lösch-Anomalie könnte auftreten?
  4. Skizziere eine bessere Tabellenstruktur.
Lösungshinweis

Redundanzen: Kundendaten können mehrfach vorkommen; Kategorienleitung wird bei jedem Produkt der Kategorie wiederholt.

Änderungs-Anomalie: Ändert sich die Leitung der Kategorie Schreibwaren, muss sie in mehreren Zeilen geĂ€ndert werden.

Lösch-Anomalie: Wird der letzte Sportartikel gelöscht, könnte auch die Information verloren gehen, dass Frau Novak die Kategorie Sport leitet.

Mögliche Aufteilung:

txt
Kunde(KundenID, Name, Adresse)
Kategorie(KategorieID, Bezeichnung, Leitung)
Produkt(ProduktID, Produktname, KategorieID)
Bestellung(BestellungID, KundenID)
Bestellposition(BestellungID, ProduktID)

📝 Übung: Normalformen anwenden ​

Eine Tabelle fĂŒr eine Projektwoche sieht so aus:

txt
Projektwahl(SchuelerID, Name, Klasse, ProjektID, Projekttitel, Projektleitung, Raum)

Ein·e SchĂŒler·in kann genau ein Projekt wĂ€hlen. Ein Projekt hat eine Projektleitung und findet in einem Raum statt.

  1. ErklÀre, welche Informationen mehrfach vorkommen können.
  2. BegrĂŒnde, warum die Tabelle nicht gut normalisiert ist.
  3. Teile die Tabelle sinnvoll auf.
Lösungsskizze

Mehrfach vorkommen können Projekttitel, Projektleitung und Raum fĂŒr alle SchĂŒler·innen desselben Projekts. Auch Klasse könnte fĂŒr viele SchĂŒler·innen wiederholt werden.

Mögliche Aufteilung:

txt
Klasse(KlasseID, Klassenname)
Schueler(SchuelerID, Name, KlasseID, ProjektID)
Projekt(ProjektID, Projekttitel, Projektleitung, Raum)

Wenn RÀume ebenfalls unabhÀngig verwaltet werden sollen:

txt
Raum(RaumID, Raumname)
Projekt(ProjektID, Projekttitel, Projektleitung, RaumID)

Automatisierte Auswertungen kritisch betrachten ​

Datenbanken ermöglichen nicht nur Speicherung und Suche, sondern auch automatische Kategorisierung und Auswertung.

Das kann hilfreich sein, etwa fĂŒr:

  • schnellere Organisation,
  • gezielte Informationen,
  • bessere Planung,
  • automatische Zusammenfassungen,
  • Empfehlungssysteme.

Es kann aber problematisch werden, wenn:

  • Menschen auf wenige Datenpunkte reduziert werden,
  • sensible Merkmale verwendet werden,
  • Kategorien zu grob sind,
  • Vorurteile in Regeln eingebaut werden,
  • Entscheidungen nicht transparent sind,
  • Nutzer·innen keine echte Kontrolle ĂŒber ihre Daten haben.

CASE-Query als Entscheidungsstruktur ​

Mit CASE kann eine SQL-Abfrage abhÀngig von Bedingungen unterschiedliche Werte ausgeben. Man kann sich das Àhnlich wie eine Wenn-Dann-Sonst-Entscheidung vorstellen.

Unproblematisches Beispiel:

sql
SELECT
  PersonID,
  Punkte,
  CASE
    WHEN Punkte >= 100 THEN 'sehr aktiv'
    WHEN Punkte >= 50 THEN 'aktiv'
    ELSE 'neu'
  END AS Status
FROM Lernplattform;

Diese Abfrage ordnet Personen anhand eines Punktestands einer Statusgruppe zu.

Problematisch wird es, wenn sensible oder stereotype Annahmen in die Bedingungen eingebaut werden.

Beispiel fĂŒr eine CASE-Query mit Lernstatus und kritischer Einordnung.
Abb.: Eine CASE-Query kann Hinweise erzeugen, darf aber nicht unkritisch Menschen klassifizieren.

Wichtig

Eine CASE-Abfrage ist technisch nur eine Entscheidungsstruktur. Ob sie fair und verantwortungsvoll ist, hÀngt davon ab, welche Daten verwendet werden und welche Annahmen in den Bedingungen stecken.

Datenschutzbezug ​

Bei personenbezogenen Daten sind besonders wichtig:

  • Zweckbindung: Daten dĂŒrfen nur fĂŒr einen klaren Zweck verwendet werden.
  • Datenminimierung: Es sollen nur notwendige Daten verarbeitet werden.
  • Transparenz: Betroffene sollen wissen, welche Daten verarbeitet werden.
  • Erforderlichkeit: Die Datenverarbeitung muss fĂŒr den Zweck notwendig sein.
  • rechtmĂ€ĂŸige Grundlage: Verarbeitung braucht Zustimmung oder eine gesetzliche Grundlage.

Merke

Technisch mögliche Auswertungen sind nicht automatisch rechtlich oder ethisch vertretbar.

📝 Übung: CASE-Query kritisch beurteilen ​

Eine Lernplattform verwendet folgende Abfrage:

sql
SELECT
  NutzerID,
  Fehlversuche,
  Bearbeitungszeit,
  CASE
    WHEN Fehlversuche > 10 AND Bearbeitungszeit < 5 THEN 'riskiert Abbruch'
    WHEN Fehlversuche <= 3 THEN 'sicher'
    ELSE 'beobachten'
  END AS Lernstatus
FROM Uebungsdaten;
  1. Beschreibe, was die Abfrage technisch macht.
  2. ErklÀre, warum die Einteilung problematisch sein könnte.
  3. Formuliere zwei Regeln fĂŒr einen verantwortungsvolleren Einsatz.
Lösungshinweis

Die Abfrage ordnet Nutzer·innen anhand von Fehlversuchen und Bearbeitungszeit einem Lernstatus zu.

Problematisch ist, dass aus wenigen Messwerten weitreichende Aussagen ĂŒber Lernverhalten abgeleitet werden. Kurze Bearbeitungszeit kann viele GrĂŒnde haben. Viele Fehlversuche können auch auf Ausprobieren, Sprachprobleme, MĂŒdigkeit oder ein unpassendes Aufgabenformat hinweisen.

Regeln: Kriterien transparent machen, menschliche Kontrolle vorsehen, keine automatischen Nachteile ableiten, nur notwendige Daten verwenden, Ergebnisse als Hinweis und nicht als endgĂŒltiges Urteil behandeln.

Typische MissverstĂ€ndnisse ​

„Eine Datenbank ist einfach eine große Excel-Tabelle.“ ​

Nicht ganz. Datenbanken arbeiten mit SchlĂŒsseln, Beziehungen, Zugriffsrechten, Abfragen, IntegritĂ€tsregeln und oft mit vielen gleichzeitigen Nutzer·innen.

„Wenn Daten in Tabellen stehen, sind sie automatisch gut strukturiert.“ ​

Nein. Auch Tabellen können schlecht aufgebaut sein. Gute Struktur entsteht durch sinnvolle Modellierung, SchlĂŒssel und Normalisierung.

„SQL sucht einfach nur Text.“ ​

Nein. SQL kann filtern, sortieren, gruppieren, zĂ€hlen, berechnen und Tabellen verknĂŒpfen.

„Redundanz ist egal, weil Speicher billig ist.“ ​

Nein. Redundanz fĂŒhrt nicht nur zu mehr Speicherverbrauch, sondern vor allem zu Änderungsproblemen und WidersprĂŒchen.

„Automatisierte Auswertungen sind objektiv.“ ​

Nicht automatisch. Datenmodelle und Abfragen spiegeln menschliche Entscheidungen wider.

PrĂŒfungsvorbereitung ​

Die folgenden Aufgaben trainieren dieselben Kompetenzen, verwenden aber andere Kontexte, Daten und Beispiele.

📝 Übung: Datenbanksystem begrĂŒnden ​

Ein Sportverein verwaltet Mitglieder, Teams, Trainingszeiten, MitgliedsbeitrÀge und GerÀteausleihen.

  1. ErklÀre, warum eine Tabellenkalkulation am Anfang ausreichend sein könnte.
  2. BegrĂŒnde, warum bei wachsender Mitgliederzahl ein Datenbanksystem sinnvoller wird.
  3. Nenne zwei Vorteile eines zentralen DBMS.
  4. ErklÀre, wie unterschiedliche Ansichten sinnvoll sein könnten.
Lösungshinweis

Eine Tabellenkalkulation reicht bei wenigen Mitgliedern und einfachen Listen oft aus.

Ein Datenbanksystem wird sinnvoll, wenn viele Daten miteinander verknĂŒpft sind, mehrere Personen gleichzeitig arbeiten, Berechtigungen nötig sind oder wiederkehrende Abfragen durchgefĂŒhrt werden.

Vorteile: zentrale Datenhaltung, Rechteverwaltung, gemeinsame aktuelle Datenbasis, Datensicherung, weniger Versionschaos.

Ansichten: Trainer·innen sehen Teamlisten; Kassier·innen sehen BeitrÀge; Mitglieder sehen nur eigene Daten.

📝 Übung: Relationenschema lesen ​

Gegeben ist folgendes Relationenschema:

txt
Mitglied(MitgliedID, Vorname, Nachname)
Team(TeamID, Teamname)
spielt_in(MitgliedID, TeamID, Eintrittsdatum)
  1. Bestimme die EntitÀtstypen.
  2. ErklÀre die Aufgabe der Tabelle spielt_in.
  3. BegrĂŒnde, welcher Beziehungstyp zwischen Mitgliedern und Teams vorliegt.
  4. ErklÀre, warum Eintrittsdatum in der Zwischentabelle sinnvoll gespeichert ist.
Lösungshinweis

EntitÀtstypen sind Mitglied und Team.

spielt_in ist eine Zwischentabelle und verbindet Mitglieder mit Teams.

Es liegt eine n:m-Beziehung vor: Ein Mitglied kann in mehreren Teams spielen, und ein Team kann mehrere Mitglieder haben.

Das Eintrittsdatum beschreibt nicht das Mitglied allein und auch nicht das Team allein, sondern die konkrete Teilnahme eines Mitglieds in einem Team.

📝 Übung: SQL formulieren ​

Gegeben ist die Tabelle:

txt
Veranstaltung(EventID, Titel, Kategorie, Datum, Teilnehmerzahl)

Formuliere SQL-Abfragen:

  1. Zeige alle Veranstaltungen der Kategorie Workshop.
  2. Zeige Titel und Datum aller Veranstaltungen ab dem 1. Juni 2026.
  3. Sortiere alle Veranstaltungen nach Teilnehmerzahl absteigend.
  4. ZĂ€hle, wie viele Veranstaltungen es pro Kategorie gibt.
  5. Zeige nur Kategorien mit mehr als drei Veranstaltungen.
Lösung
sql
SELECT *
FROM Veranstaltung
WHERE Kategorie = 'Workshop';
sql
SELECT Titel, Datum
FROM Veranstaltung
WHERE Datum >= '2026-06-01';
sql
SELECT Titel, Teilnehmerzahl
FROM Veranstaltung
ORDER BY Teilnehmerzahl DESC;
sql
SELECT Kategorie, COUNT(*) AS Anzahl
FROM Veranstaltung
GROUP BY Kategorie;
sql
SELECT Kategorie, COUNT(*) AS Anzahl
FROM Veranstaltung
GROUP BY Kategorie
HAVING COUNT(*) > 3;

📝 Übung: Modellierung ​

Ein Schulfest soll digital verwaltet werden.

Sachverhalt:

  • Es gibt StĂ€nde, z. B. GetrĂ€nke, Kuchen, Tombola.
  • Jeder Stand hat genau eine verantwortliche Klasse.
  • Eine Klasse kann mehrere StĂ€nde betreuen.
  • SchĂŒler·innen können bei mehreren StĂ€nden mithelfen.
  • Ein Stand kann mehrere Helfer·innen haben.
  • FĂŒr jede Mithilfe soll eine Uhrzeit gespeichert werden.

Aufgaben:

  1. Bestimme EntitÀtstypen.
  2. Bestimme Beziehungen und KardinalitÀten.
  3. ÜberfĂŒhre das Modell in ein Relationenschema.
Lösungsskizze

Mögliche EntitÀtstypen:

txt
Klasse
Stand
Schueler

Beziehungen:

txt
Klasse betreut Stand      1:n
Schueler hilft_bei Stand  n:m

Mögliches Relationenschema:

txt
Klasse(KlasseID, Klassenname)
Stand(StandID, Bezeichnung, KlasseID)
Schueler(SchuelerID, Vorname, Nachname, KlasseID)
hilft_bei(SchuelerID, StandID, Uhrzeit)

hilft_bei ist die Zwischentabelle fĂŒr die n:m-Beziehung zwischen SchĂŒler·innen und StĂ€nden.

📝 Übung: Normalisierung und Anomalien ​

Eine Tabelle zur Verwaltung von SchulfeststÀnden sieht so aus:

txt
Standplan(StandID, Standname, Klasse, Klassenvorstand, Schueler1, Schueler2, Raum, Bereich)
  1. ErklÀre, warum diese Tabelle problematisch ist.
  2. Nenne mögliche EinfĂŒge-, Änderungs- und Lösch-Anomalien.
  3. Überarbeite die Struktur in mehrere Tabellen.
Lösungshinweis

Problematisch sind unter anderem Schueler1 und Schueler2, weil mehrere Werte als feste Spalten modelliert werden. Außerdem können Klasse und Klassenvorstand mehrfach gespeichert werden.

Mögliche bessere Struktur:

txt
Klasse(KlasseID, Klassenname, Klassenvorstand)
Stand(StandID, Standname, Raum, Bereich, KlasseID)
Schueler(SchuelerID, Vorname, Nachname, KlasseID)
hilft_bei(SchuelerID, StandID)

Damit werden StĂ€nde, Klassen, SchĂŒler·innen und Mithilfe sauber getrennt.

Ich kann 
 ​

Nach der Wiederholung dieses Themenbereichs solltest du Folgendes können:

  • Ich kann erklĂ€ren, wofĂŒr relationale Datenbanken eingesetzt werden.
  • Ich kann Tabellenkalkulationsprogramme und Datenbanksysteme vergleichen.
  • Ich kann begrĂŒnden, warum Datenbanken hĂ€ufig zentral verwaltet werden.
  • Ich kann die Rolle des DBMS beschreiben.
  • Ich kann erklĂ€ren, was mit unterschiedlichen Ansichten auf Daten gemeint ist.
  • Ich kann Tabelle, Datensatz, Attribut, Attributwert und Relationenschema erklĂ€ren.
  • Ich kann PrimĂ€rschlĂŒssel und FremdschlĂŒssel unterscheiden.
  • Ich kann einfache Relationenschemata lesen und interpretieren.
  • Ich kann einfache SQL-Abfragen mit SELECT, FROM, WHERE und ORDER BY lesen und formulieren.
  • Ich kann Bedingungen mit Vergleichsoperatoren, AND, OR, NOT, LIKE, BETWEEN und IN anwenden.
  • Ich kann Aggregatfunktionen wie COUNT, SUM, AVG, MIN und MAX erklĂ€ren.
  • Ich kann GROUP BY und HAVING unterscheiden.
  • Ich kann Tabellen mithilfe von SchlĂŒsseln verknĂŒpfen.
  • Ich kann den Ablauf der Datenbankentwicklung von der Anforderung bis zur Umsetzung beschreiben.
  • Ich kann EntitĂ€t, EntitĂ€tstyp, Attribut, Attributwert und Beziehung erklĂ€ren.
  • Ich kann 1:1-, 1:n- und n:m-Beziehungen erkennen und begrĂŒnden.
  • Ich kann ein einfaches ER-Modell in ein Relationenschema ĂŒbertragen.
  • Ich kann erklĂ€ren, warum n:m-Beziehungen mit Zwischentabellen umgesetzt werden.
  • Ich kann Redundanz und Inkonsistenz unterscheiden.
  • Ich kann EinfĂŒge-, Änderungs- und Lösch-Anomalien erklĂ€ren.
  • Ich kann die Grundidee der ersten, zweiten und dritten Normalform beschreiben.
  • Ich kann schlecht strukturierte Tabellen sinnvoll aufteilen.
  • Ich kann CASE-Queries als Entscheidungsstrukturen verstehen und kritisch beurteilen.
  • Ich kann technische, organisatorische und ethische Aspekte beim Umgang mit Daten reflektieren.

Mini-Check ​

Beantworte zum Abschluss kurz:

  1. Was ist der Unterschied zwischen Datenbank, DBMS und Datenbanksystem?
  2. Warum ist eine Tabellenkalkulation nicht automatisch ein Datenbanksystem?
  3. Was ist ein PrimĂ€rschlĂŒssel?
  4. Was ist ein FremdschlĂŒssel?
  5. Was ist ein Relationenschema?
  6. Was ist der Unterschied zwischen Projektion und Selektion?
  7. WofĂŒr verwendet man WHERE?
  8. WofĂŒr verwendet man GROUP BY?
  9. Worin unterscheidet sich WHERE von HAVING?
  10. Warum braucht man bei n:m-Beziehungen eine Zwischentabelle?
  11. Was ist eine funktionale AbhÀngigkeit?
  12. Was bedeutet atomar im Zusammenhang mit der ersten Normalform?
  13. Was ist eine Änderungs-Anomalie?
  14. Was ist eine Lösch-Anomalie?
  15. Warum ist Redundanz nicht nur ein Speicherproblem?
  16. Warum sind automatisierte Datenbankauswertungen nicht automatisch objektiv?
Kurzlösungen
  1. Die Datenbank enthÀlt die Daten; das DBMS verwaltet sie; das Datenbanksystem umfasst beides gemeinsam.
  2. Eine Tabellenkalkulation ist vor allem fĂŒr Berechnungen und kleinere Listen gedacht; ein Datenbanksystem verwaltet strukturierte, verknĂŒpfte und oft gemeinsam genutzte Daten.
  3. Ein PrimĂ€rschlĂŒssel identifiziert jeden Datensatz eindeutig.
  4. Ein FremdschlĂŒssel verweist auf einen PrimĂ€rschlĂŒssel einer anderen Tabelle.
  5. Ein Relationenschema beschreibt eine Tabelle mit ihren Attributen in Kurzform.
  6. Projektion wÀhlt Spalten aus; Selektion wÀhlt Zeilen aus.
  7. WHERE filtert einzelne DatensÀtze anhand einer Bedingung.
  8. GROUP BY fasst DatensÀtze mit gleichen Werten zu Gruppen zusammen.
  9. WHERE filtert vor der Gruppierung; HAVING filtert nach der Gruppierung.
  10. Weil relationale Datenbanken n:m-Beziehungen ĂŒber zwei 1:n-Beziehungen abbilden.
  11. Ein Wert bestimmt einen anderen Wert eindeutig, z. B. KlasseID -> Klassenraum.
  12. Ein Feld enthÀlt genau einen unteilbaren Wert und keine Liste oder zusammengesetzte Information.
  13. Eine Information muss mehrfach geĂ€ndert werden; wird eine Stelle vergessen, entstehen WidersprĂŒche.
  14. Beim Löschen eines Datensatzes gehen unbeabsichtigt weitere Informationen verloren.
  15. Redundanz kann zu Inkonsistenzen und Änderungsfehlern fĂŒhren.
  16. Weil Kategorien, Datenbasis und Abfragelogik von Menschen festgelegt werden und Vorannahmen enthalten können.