Appearance
đïž 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:
| Datenwert | mögliche Bedeutung |
|---|---|
17 | Alter, Klassennummer, StĂŒckzahl oder Preis |
2026-05-12 | Geburtsdatum, Ausleihdatum oder Termin |
wien | Stadt, Suchbegriff oder Benutzername |
true | Zustimmung, 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 + DatenbankmanagementsystemDas 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.

Tabellenkalkulation oder Datenbanksystem? â
Tabellenkalkulationsprogramme und Datenbanksysteme können beide Daten tabellarisch darstellen. Sie haben aber unterschiedliche StÀrken.
| Tabellenkalkulation | Datenbanksystem |
|---|---|
| gut fĂŒr Berechnungen, kleinere Listen, Diagramme | gut fĂŒr groĂe, strukturierte und verknĂŒpfte DatenbestĂ€nde |
| oft als einzelne Datei gespeichert | hÀufig zentral auf einem Server gespeichert |
| sehr flexibel, aber leichter fehleranfÀllig | stÀrker geregelt und kontrollierbar |
| gut fĂŒr Einzelpersonen oder kleine Gruppen | gut fĂŒr viele gleichzeitige Nutzer·innen |
| Formeln, ZellbezĂŒge und Auswertungen stehen im Vordergrund | Tabellen, 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:
| Anforderung | Bedeutung |
|---|---|
| IntegritÀtssicherung | Daten sollen korrekt, vollstÀndig und widerspruchsfrei bleiben. |
| Redundanzarmut | Dieselbe Information soll nicht unnötig mehrfach gespeichert werden. |
| Datensicherheit | Daten sollen vor Verlust, Manipulation und unberechtigtem Zugriff geschĂŒtzt werden. |
| Datenschutz | Personenbezogene Daten dĂŒrfen nur rechtmĂ€Ăig und zweckgebunden verarbeitet werden. |
| Mehrbenutzerbetrieb | Mehrere Personen oder Programme können gleichzeitig arbeiten. |
| DatenunabhÀngigkeit | Programme sollen möglichst unabhÀngig von der internen Speicherung bleiben. |
| zentrale Kontrolle | Verwaltung, 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.

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
ProduktEine relationale Datenbank besteht meist aus mehreren Tabellen, die ĂŒber SchlĂŒssel miteinander verbunden sind.
Zentrale Begriffe â
| Begriff | Bedeutung |
|---|---|
| Tabelle / Relation | Sammlung gleichartiger DatensÀtze |
| Attribut / Spalte | Eigenschaft eines Datensatzes |
| Attributwert | konkreter Wert in einer Zelle |
| Datensatz / Tupel / Zeile | ein konkreter Eintrag in einer Tabelle |
| Relationenschema | Kurzbeschreibung einer Tabelle mit ihren Attributen |
| PrimĂ€rschlĂŒssel | Attribut oder Attributkombination zur eindeutigen Identifikation |
| FremdschlĂŒssel | Attribut, das auf einen PrimĂ€rschlĂŒssel einer anderen Tabelle verweist |

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:
| Datentyp | Bedeutung | Beispiel |
|---|---|---|
INTEGER | ganze Zahl | 17 |
TEXT / VARCHAR | Text | Wien |
BOOLEAN | Wahrheitswert | true / false |
DATE | Datum | 2026-05-12 |
DATETIME | Datum und Uhrzeit | 2026-05-12 08:30 |
FLOAT / DOUBLE | Kommazahl | 19.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
MatrikelnummerProblematisch:
txt
Name
Vorname
Geburtsdatum allein
Adresse alleinDiese 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.

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-Teil | Bedeutung |
|---|---|
SELECT | Welche Spalten oder Berechnungen sollen angezeigt werden? |
FROM | Aus welcher Tabelle oder welchen Tabellen stammen die Daten? |
WHERE | Welche einzelnen DatensÀtze sollen ausgewÀhlt werden? |
GROUP BY | Nach welchen Attributwerten sollen DatensÀtze gruppiert werden? |
HAVING | Welche Gruppen sollen nach der Gruppierung behalten werden? |
ORDER BY | Wie soll das Ergebnis sortiert werden? |
LIMIT | Wie 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:
| Begriff | Bedeutung | SQL-Bezug |
|---|---|---|
| Projektion | Auswahl bestimmter Spalten | SELECT Name, Ort |
| Selektion | Auswahl bestimmter Zeilen | WHERE 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:
| Operator | Bedeutung |
|---|---|
= | gleich |
<> oder != | ungleich |
< | kleiner als |
> | gröĂer als |
<= | kleiner oder gleich |
>= | gröĂer oder gleich |
LIKE | Mustervergleich |
BETWEEN ... AND ... | Wertebereich |
IN (...) | Wert kommt in einer Liste vor |
IS NULL | kein Wert vorhanden |
Logische VerknĂŒpfungen â
Mehrere Bedingungen lassen sich kombinieren.
sql
SELECT Titel, Jahr
FROM Film
WHERE Genre = 'Dokumentation' AND Jahr >= 2020;| Operator | Bedeutung |
|---|---|
AND | beide Bedingungen mĂŒssen erfĂŒllt sein |
OR | mindestens eine Bedingung muss erfĂŒllt sein |
NOT | Bedingung 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.
| Funktion | Bedeutung |
|---|---|
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:
- Zeige alle BĂŒcher an.
- Zeige nur Titel und Autor an.
- Zeige alle BĂŒcher der Kategorie
Fantasy. - Sortiere alle BĂŒcher nach Erscheinungsjahr absteigend.
- 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:
- ZĂ€hle alle Ausleihen.
- ZĂ€hle die Ausleihen pro Monat.
- 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:
- Anforderungsspezifikation: Was soll das System leisten?
- Konzeptioneller Entwurf: Welche EntitÀten, Attribute und Beziehungen gibt es?
- Logischer Entwurf: Wie wird daraus ein relationales Modell mit Tabellen und SchlĂŒsseln?
- Physischer Entwurf: Welche Datentypen, Speicherformen, Rechte und technischen Details werden festgelegt?
- Implementierung und Erprobung: Tabellen anlegen, testen, Grunddaten eingeben.
- Nutzung und Pflege: Daten eingeben, auswerten, sichern und weiterentwickeln.

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
BestellungEine 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 â
| Attributart | Bedeutung | Beispiel |
|---|---|---|
| SchlĂŒsselattribut | identifiziert EntitĂ€ten eindeutig | SchuelerID |
| zusammengesetztes Attribut | besteht aus mehreren Teilinformationen | Adresse aus StraĂe, PLZ, Ort |
| mehrwertiges Attribut | kann mehrere Werte besitzen | mehrere Telefonnummern |
| abgeleitetes Attribut | kann aus anderen Werten berechnet werden | Alter 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.

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 ProjektDer 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 KlasseRichtung 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Àt | Bedeutung | Beispiel |
|---|---|---|
| 1:1 | Eine EntitÀt ist höchstens einer anderen EntitÀt zugeordnet. | Person - besitzt - Spind |
| 1:n | Eine EntitĂ€t ist mehreren anderen zugeordnet; umgekehrt gehört jede nur zu einer. | Klasse - enthĂ€lt - SchĂŒler·innen |
| n:m | Mehrere EntitĂ€ten können mit mehreren anderen verbunden sein. | SchĂŒler·innen - besuchen - Kurse |

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.
- Eine Klasse besteht aus mehreren SchĂŒler·innen. Eine SchĂŒler·in gehört genau zu einer Klasse.
- Eine Person kann mehrere BĂŒcher ausleihen. Eine konkrete Ausleihe gehört genau zu einer Person.
- Eine SchĂŒler·in kann mehrere FreifĂ€cher besuchen. Ein Freifach kann von mehreren SchĂŒler·innen besucht werden.
- Ein nummerierter Spind ist genau einer Person zugeordnet. Eine Person hat höchstens einen Spind.
Lösung
- Klasse - SchĂŒler·in: 1:n. Eine Klasse kann viele SchĂŒler·innen enthalten; jede SchĂŒler·in gehört zu genau einer Klasse.
- Person - Ausleihe: 1:n. Eine Person kann viele Ausleihen haben; jede Ausleihe gehört zu genau einer Person.
- SchĂŒler·in - Freifach: n:m. Eine SchĂŒler·in kann mehrere FreifĂ€cher besuchen; ein Freifach kann mehrere SchĂŒler·innen haben.
- 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:
- Jeder EntitÀtstyp wird zu einer eigenen Tabelle.
- Einfache Attribute werden zu Spalten.
- SchlĂŒsselattribute werden zu PrimĂ€rschlĂŒsseln.
- 1:n-Beziehungen werden durch einen FremdschlĂŒssel auf der n-Seite umgesetzt.
- n:m-Beziehungen werden durch eine eigene Zwischentabelle umgesetzt.
- Attribute einer Beziehung werden in der Beziehungstabelle oder auf der passenden Seite gespeichert.
- 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 SpindEine 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
Personstehen. - Gibt es viele Personen ohne Spind, aber jeder vergebene Spind gehört genau einer Person? Dann ist der FremdschlĂŒssel oft in
Spindsinnvoller. - 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·innenEine 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
Klassespeichern, 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 angebotenEin 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 KurseEine 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 KursZusatzinformation:
txt
Anmeldedatum
StatusDas 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 ProjektEine 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-Modell | Umsetzung im relationalen Modell | Wohin kommt der FremdschlĂŒssel? |
|---|---|---|
| 1:1 | FremdschlĂŒssel in einer der beiden Tabellen | in die fachlich passendere Tabelle; Entscheidung begrĂŒnden |
| 1:n | FremdschlĂŒssel auf der n-Seite | in die Tabelle, von der viele DatensĂ€tze zu einem Datensatz gehören |
| n:m | eigene Zwischentabelle | beide FremdschlĂŒssel in die Zwischentabelle |
| n:m mit Beziehungsattributen | eigene Zwischentabelle mit Zusatzattributen | beide FremdschlĂŒssel und die Beziehungsattribute in die Zwischentabelle |
| 1:n mit Beziehungsattribut | meist Speicherung auf der n-Seite | FremdschlĂŒssel und Beziehungsattribut auf der n-Seite |
Typische Denkfragen beim ĂberfĂŒhren â
Beim Ăbertragen eines ER-Modells in ein Relationenschema helfen diese Fragen:
- Welche EntitÀtstypen werden zu Tabellen?
- Welche Attribute gehören eindeutig zu welcher Tabelle?
- Welches Attribut identifiziert jeden Datensatz eindeutig?
- Liegt eine 1:1-, 1:n- oder n:m-Beziehung vor?
- Muss eine eigene Zwischentabelle erstellt werden?
- Gibt es Attribute, die nicht zu einer EntitÀt, sondern zur Beziehung gehören?
- 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.
- Eine Person besitzt höchstens eine Fahrradkarte. Eine Fahrradkarte gehört höchstens einer Person.
- Eine Klasse enthĂ€lt viele SchĂŒler·innen. Eine SchĂŒler·in gehört genau zu einer Klasse.
- 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:
- Bestimme die EntitÀtstypen.
- Bestimme die Beziehungstypen und KardinalitÀten.
- ĂberfĂŒhre das Modell in ein Relationenschema.
Lösungsskizze
EntitÀtstypen:
txt
Schueler
Kurs
InstrumentBeziehungen:
txt
Schueler besucht Kurs n:m
Kurs gehört zu Instrument n:1Mö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.

Redundanz und Inkonsistenz â
Redundanz bedeutet, dass dieselbe Information mehrfach gespeichert ist.
Beispiel:
| AusleiheID | Person | Klasse | Klassenraum | Buch |
|---|---|---|---|---|
| 1 | Sara | 6A | 204 | Momo |
| 2 | Lukas | 6A | 204 | Krabat |
| 3 | Mina | 6A | 204 | Rico, 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.
| AusleiheID | Person | Klasse | Klassenraum | Buch |
|---|---|---|---|---|
| 1 | Sara | 6A | 204 | Momo |
| 2 | Lukas | 6A | 207 | Krabat |
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 -> BDas bedeutet:
Wenn ich A kenne, kenne ich auch B.
Beispiele:
txt
KlasseID -> Klassenname
KlasseID -> Raum
BuchID -> Titel
ProduktID -> PreisWenn 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:
| PersonID | Name | Kurse |
|---|---|---|
| 1 | Sara Demir | Informatik, 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).
PersonennamehÀngt nur vonPersonIDab.KursnamehÀngt nur vonKursIDab.AnmeldedatumhÀngt von der Kombination ausPersonIDundKursIDab.
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:
| BestellungID | Kundin | Adresse | Produkt | Kategorie | Kategorienleitung |
|---|---|---|---|---|---|
| 1 | Mina Berger | HauptstraĂe 4 | Heft | Schreibwaren | Herr Paul |
| 2 | Mina Berger | HauptstraĂe 4 | Stift | Schreibwaren | Herr Paul |
| 3 | Sara Demir | SchulstraĂe 8 | Ball | Sport | Frau Novak |
- Wo gibt es Redundanzen?
- Welche Ănderungs-Anomalie könnte auftreten?
- Welche Lösch-Anomalie könnte auftreten?
- 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.
- ErklÀre, welche Informationen mehrfach vorkommen können.
- BegrĂŒnde, warum die Tabelle nicht gut normalisiert ist.
- 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.
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;- Beschreibe, was die Abfrage technisch macht.
- ErklÀre, warum die Einteilung problematisch sein könnte.
- 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.
- ErklÀre, warum eine Tabellenkalkulation am Anfang ausreichend sein könnte.
- BegrĂŒnde, warum bei wachsender Mitgliederzahl ein Datenbanksystem sinnvoller wird.
- Nenne zwei Vorteile eines zentralen DBMS.
- 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)- Bestimme die EntitÀtstypen.
- ErklÀre die Aufgabe der Tabelle
spielt_in. - BegrĂŒnde, welcher Beziehungstyp zwischen Mitgliedern und Teams vorliegt.
- ErklÀre, warum
Eintrittsdatumin 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:
- Zeige alle Veranstaltungen der Kategorie
Workshop. - Zeige Titel und Datum aller Veranstaltungen ab dem 1. Juni 2026.
- Sortiere alle Veranstaltungen nach Teilnehmerzahl absteigend.
- ZĂ€hle, wie viele Veranstaltungen es pro Kategorie gibt.
- 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:
- Bestimme EntitÀtstypen.
- Bestimme Beziehungen und KardinalitÀten.
- ĂberfĂŒhre das Modell in ein Relationenschema.
Lösungsskizze
Mögliche EntitÀtstypen:
txt
Klasse
Stand
SchuelerBeziehungen:
txt
Klasse betreut Stand 1:n
Schueler hilft_bei Stand n:mMö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)- ErklÀre, warum diese Tabelle problematisch ist.
- Nenne mögliche EinfĂŒge-, Ănderungs- und Lösch-Anomalien.
- Ă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,WHEREundORDER BYlesen und formulieren. - Ich kann Bedingungen mit Vergleichsoperatoren,
AND,OR,NOT,LIKE,BETWEENundINanwenden. - Ich kann Aggregatfunktionen wie
COUNT,SUM,AVG,MINundMAXerklÀren. - Ich kann
GROUP BYundHAVINGunterscheiden. - 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:
- Was ist der Unterschied zwischen Datenbank, DBMS und Datenbanksystem?
- Warum ist eine Tabellenkalkulation nicht automatisch ein Datenbanksystem?
- Was ist ein PrimĂ€rschlĂŒssel?
- Was ist ein FremdschlĂŒssel?
- Was ist ein Relationenschema?
- Was ist der Unterschied zwischen Projektion und Selektion?
- WofĂŒr verwendet man
WHERE? - WofĂŒr verwendet man
GROUP BY? - Worin unterscheidet sich
WHEREvonHAVING? - Warum braucht man bei n:m-Beziehungen eine Zwischentabelle?
- Was ist eine funktionale AbhÀngigkeit?
- Was bedeutet atomar im Zusammenhang mit der ersten Normalform?
- Was ist eine Ănderungs-Anomalie?
- Was ist eine Lösch-Anomalie?
- Warum ist Redundanz nicht nur ein Speicherproblem?
- Warum sind automatisierte Datenbankauswertungen nicht automatisch objektiv?
Kurzlösungen
- Die Datenbank enthÀlt die Daten; das DBMS verwaltet sie; das Datenbanksystem umfasst beides gemeinsam.
- Eine Tabellenkalkulation ist vor allem fĂŒr Berechnungen und kleinere Listen gedacht; ein Datenbanksystem verwaltet strukturierte, verknĂŒpfte und oft gemeinsam genutzte Daten.
- Ein PrimĂ€rschlĂŒssel identifiziert jeden Datensatz eindeutig.
- Ein FremdschlĂŒssel verweist auf einen PrimĂ€rschlĂŒssel einer anderen Tabelle.
- Ein Relationenschema beschreibt eine Tabelle mit ihren Attributen in Kurzform.
- Projektion wÀhlt Spalten aus; Selektion wÀhlt Zeilen aus.
WHEREfiltert einzelne DatensĂ€tze anhand einer Bedingung.GROUP BYfasst DatensĂ€tze mit gleichen Werten zu Gruppen zusammen.WHEREfiltert vor der Gruppierung;HAVINGfiltert nach der Gruppierung.- Weil relationale Datenbanken n:m-Beziehungen ĂŒber zwei 1:n-Beziehungen abbilden.
- Ein Wert bestimmt einen anderen Wert eindeutig, z. B.
KlasseID -> Klassenraum. - Ein Feld enthÀlt genau einen unteilbaren Wert und keine Liste oder zusammengesetzte Information.
- Eine Information muss mehrfach geĂ€ndert werden; wird eine Stelle vergessen, entstehen WidersprĂŒche.
- Beim Löschen eines Datensatzes gehen unbeabsichtigt weitere Informationen verloren.
- Redundanz kann zu Inkonsistenzen und Ănderungsfehlern fĂŒhren.
- Weil Kategorien, Datenbasis und Abfragelogik von Menschen festgelegt werden und Vorannahmen enthalten können.