Informatik

Datenbank verstehen: Tabellen, Schlüssel und SQL

Datenbank verstehen: Tabellen, Schlüssel und SQL
Datenbank verstehen: Tabellen, Schlüssel und SQL
Für Quiz, Lückentext, Lernkarten und Fortschritt ist JavaScript nötig. Alle Inhalte und Lösungen bleiben direkt lesbar.

Eine Datenbank speichert zusammengehörige Daten dauerhaft und geordnet. Ein Datenbankmanagementsystem, kurz DBMS, verwaltet diese Daten: Es nimmt Änderungen entgegen, führt Abfragen aus und kontrolliert Zugriffe.

Auf dieser Seite lernst du, relationale Tabellen zu lesen, passende Schlüssel auszuwählen, eine einfache Beziehung zu modellieren und Daten mit SQL zu filtern.

Deine Lernziele

Hake ab, was du schon kannst — und komm am Ende hierher zurück!

Warum genügt eine ungeordnete Liste nicht?

Stell dir vor, eine Schule verwaltet Klassen und Lehrkräfte. Werden alle Angaben in einer langen Liste wiederholt, kann derselbe Nachname unterschiedlich geschrieben werden. Außerdem ist bei zwei Lehrkräften namens Franklin nicht mehr klar, welche Person gemeint ist.

Eine Datenbank ordnet die Angaben nach einem festgelegten Schema. Das Schema beschreibt, welche Tabellen und Spalten vorhanden sind und wie sie zusammenhängen.

Definition

Datenbanksystem

Ein Datenbanksystem besteht aus der gespeicherten Datenbank und dem DBMS, das den Datenbestand verwaltet. Die Datenbank enthält die Daten; das DBMS ermöglicht unter anderem Speichern, Suchen, Ändern und Löschen.

Merke

Die Datenbank ist der geordnete Datenbestand. Das DBMS ist die Software, die mit diesem Bestand arbeitet.

Teste dich
Frage 1 von 1LeichtWelche Aussage unterscheidet Datenbank und DBMS richtig?
Lösung: Die Datenbank enthält die Daten; das DBMS verwaltet sie. — Entscheidend ist die Aufgabenverteilung: Daten werden in der Datenbank gespeichert und durch das DBMS verwaltet.
Wie ist eine relationale Tabelle aufgebaut?

Eine relationale Datenbank organisiert Daten in Tabellen. Jede Tabelle beschreibt gleichartige Objekte, zum Beispiel Lehrkräfte oder Klassen.

  • Eine Spalte heißt auch Attribut. Sie beschreibt eine Eigenschaft, etwa Nachname.
  • Eine Zeile heißt Datensatz oder Tupel. Sie beschreibt ein einzelnes Objekt, etwa eine bestimmte Lehrkraft.
  • Ein Attributwert ist der konkrete Inhalt eines Feldes, etwa Curie.
Beispiel

Die Tabelle Lehrkraefte könnte so aussehen:

LehrIDVornameNachnameFach
1DavidHilbertMathematik
2MarieCurieChemie
3RosalindFranklinBiologie
4BenjaminFranklinPhysik

Die zweite Zeile ist ein Datensatz. Fach ist ein Attribut. Chemie ist der Attributwert dieses Datensatzes in der Spalte Fach.

Teste dich
Frage 1 von 1LeichtWas ist in der Beispieltabelle ein Attribut?
Lösung: Nachname — Attribute sind die Spalten einer Tabelle. Konkrete Einträge in diesen Spalten heißen Attributwerte.
Wozu braucht eine Tabelle Schlüssel?

Zwei Menschen können denselben Namen tragen. Ein Datensatz braucht deshalb ein Merkmal, das ihn sicher von allen anderen Datensätzen unterscheidet.

Definition

Primärschlüssel

Ein Primärschlüssel ist ein Attribut oder eine minimale Kombination von Attributen, deren Werte jeden Datensatz eindeutig identifizieren. Seine Werte dürfen nicht fehlen.

Ein geeigneter Primärschlüssel muss dauerhaft eindeutig sein. Der Nachname Franklin reicht im Beispiel nicht aus. Die künstlich eingeführte LehrID bleibt dagegen eindeutig. Eine solche ID heißt auch Surrogatschlüssel.

Definition

Fremdschlüssel

Ein Fremdschlüssel ist ein Attribut, das auf den Primärschlüssel einer anderen Tabelle verweist. Dadurch entsteht eine überprüfbare Beziehung zwischen Datensätzen.

Beispiel

In Klassen(Klasse, AnzahlSchueler, KlassenleiterID) kann Klasse der Primärschlüssel sein. KlassenleiterID verweist auf Lehrkraefte.LehrID und ist deshalb ein Fremdschlüssel.

Der Wert 4 bedeutet eindeutig Benjamin Franklin. Der bloße Eintrag Franklin wäre mehrdeutig.

Teste dich
Frage 1 von 1MittelWelches Attribut eignet sich im Lehrkräftebeispiel am besten als Primärschlüssel?
Lösung: LehrID — Die LehrID identifiziert jeden Datensatz eindeutig und unabhängig von möglicherweise gleichen oder veränderlichen Fachdaten.
Wie werden Beziehungen zwischen Tabellen abgebildet?

Die Kardinalität beschreibt, wie viele Datensätze auf beiden Seiten einer Beziehung beteiligt sein können.

BeziehungBedeutungUmsetzung
1:1Auf beiden Seiten gehört höchstens ein Datensatz zum anderen.Häufig Fremdschlüssel mit Eindeutigkeitsregel
1:nEin Datensatz der ersten Tabelle kann zu vielen Datensätzen der zweiten gehören.Fremdschlüssel auf der n-Seite
n:mViele Datensätze können mit vielen Datensätzen der anderen Seite verbunden sein.Zusätzliche Beziehungstabelle

Im Schulmodell leitet eine Lehrkraft möglicherweise mehrere Klassen. Jede Klasse hat nach der gewählten Modellregel genau eine Klassenleitung. Das ist eine 1:n-Beziehung. Der Fremdschlüssel KlassenleiterID steht auf der n-Seite, also in der Tabelle Klassen.

Eine n:m-Beziehung braucht eine eigene Tabelle. Arbeiten beispielsweise viele Angestellte an vielen Projekten, kann Projektmitarbeit(AngestelltenID, ProjektID, Stunden) die Zuordnungen speichern.

Merke

Bei 1:n steht der Fremdschlüssel auf der n-Seite. Bei n:m löst eine Beziehungstabelle die Beziehung in zwei 1:n-Beziehungen auf.

Teste dich
Frage 1 von 1MittelEine Abteilung beschäftigt viele Personen, jede Person gehört aber genau einer Abteilung. Wo steht der Fremdschlüssel?
Lösung: In der Tabelle der Personen — Bei einer 1:n-Beziehung wird der Primärschlüssel der 1-Seite als Fremdschlüssel auf der n-Seite gespeichert.
Wie entsteht aus einer Situation ein Tabellenmodell?

Gehe bei einem kleinen Modell in vier Schritten vor:

  1. Bestimme die Entitäten, also die unterscheidbaren Objekte. Hier sind es Lehrkräfte und Klassen.
  2. Sammle ihre Attribute, etwa Name, Fach und Schülerzahl.
  3. Wähle für jede Tabelle einen eindeutigen Primärschlüssel.
  4. Bestimme die Beziehung und setze den passenden Fremdschlüssel.
Beispiel

Für das Schulbeispiel entstehen zwei Tabellen:

  • Lehrkraefte(LehrID PK, Vorname, Nachname, Fach)
  • Klassen(Klasse PK, AnzahlSchueler, KlassenleiterID FK)

Mögliche Klassendaten sind:

KlasseAnzahlSchuelerKlassenleiterID
7b231
8a214
10a172
5c183

Die Klasse 8a verweist mit der ID 4 eindeutig auf Benjamin Franklin. Sein Name und sein Fach müssen nicht in jeder Klassenzeile wiederholt werden.

Die Trennung reduziert Redundanz, also unnötige Mehrfachspeicherung. Ändert sich das Fach einer Lehrkraft, muss es nur in ihrem Lehrkräftedatensatz geändert werden.

Teste dich
Frage 1 von 1SchwerWarum ist die Speicherung der LehrID besser als die wiederholte Speicherung des Nachnamens?
Lösung: Die ID stellt eine eindeutige Verknüpfung her und vermeidet mehrdeutige Wiederholungen. — Ein Fremdschlüssel verweist eindeutig auf einen vorhandenen Primärschlüssel. Dadurch bleiben zusammengehörige Angaben getrennt, aber verknüpfbar.
Wie fragst du passende Datensätze mit SQL ab?

SQL steht für Structured Query Language. In relationalen Datenbanken dient SQL unter anderem zum Definieren, Abfragen und Bearbeiten von Daten.

Eine einfache Auswahlabfrage folgt diesem Muster:

SELECT Spalten FROM Tabelle WHERE Bedingung;

  • SELECT bestimmt die auszugebenden Spalten.
  • FROM nennt die Tabelle.
  • WHERE filtert die Zeilen nach einer Bedingung.
Beispiel

Gesucht sind alle Klassen mit mehr als 20 Schülerinnen und Schülern:

SELECT Klasse, AnzahlSchueler FROM Klassen WHERE AnzahlSchueler > 20;

Zuerst prüft die Bedingung jede Tabellenzeile. Nur 7b mit 23 und 8a mit 21 erfüllen AnzahlSchueler > 20. Anschließend gibt SELECT für diese Zeilen die beiden genannten Spalten aus.

Lückentext

Wähle in jeder Lücke die passende Form und prüfe anschließend deine Antworten.

Ergänze die Abfrage, die Klassen mit mehr als 20 Schülerinnen und Schülern auswählt:

`SELECT FROM WHERE 20;`

Lösungen: Lücke 1: Klasse; Lücke 2: Klassen; Lücke 3: AnzahlSchueler; Lücke 4: >. SELECT nennt die gewünschte Ausgabespalte, FROM die Tabelle und WHERE die Filterbedingung. Das Zeichen > bedeutet „größer als“.
Welche Modellierungsfehler solltest du erkennen?

Ein gutes Modell speichert jede Information dort, wo sie fachlich hingehört.

  • Mehrdeutiger Schlüssel: Ein Nachname identifiziert eine Person nicht sicher.
  • Wiederholte Angaben: Name und Fach der Klassenleitung in jeder Klassenzeile erhöhen die Gefahr widersprüchlicher Einträge.
  • Mehrfachwerte in einem Feld: Ein Eintrag wie 7b, 8a, 10a lässt sich schlechter einzeln prüfen und abfragen.
  • Verwaister Fremdschlüssel: Eine KlassenleiterID darf nicht auf eine nicht vorhandene Lehrkraft zeigen. Diese Regel heißt referenzielle Integrität.
Gut zu wissen

Ob eine Zuordnung verpflichtend ist, gehört zur fachlichen Modellentscheidung. Darf eine Klasse vorübergehend keine Klassenleitung haben, kann der Fremdschlüssel leer sein. Muss jede Klasse eine Leitung besitzen, wird ein leerer Wert ausgeschlossen.

Teste dich
Frage 1 von 1SchwerIn einer Klassentabelle stehen wiederholt Name und Fach der Klassenleitung. Welche Verbesserung ist am sinnvollsten?
Lösung: Lehrkräfte in einer eigenen Tabelle speichern und über eine LehrID verknüpfen — Eine eigene Lehrkräftetabelle speichert die Personendaten einmal. Die Klassentabelle enthält nur den Fremdschlüssel für die Beziehung.
Karteikasten
Karteikasten

Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.

Alles auf einen Blick
Mindmap
  • Datenbank
    • DBMS verwaltet den Datenbestand
    • Tabellen ordnen gleichartige Datensätze
    • Attribute beschreiben Eigenschaften
    • Primärschlüssel identifizieren Datensätze
    • Fremdschlüssel verbinden Tabellen
    • Kardinalitäten beschreiben Beziehungen
    • SQL fragt gespeicherte Daten ab
Abschluss-Check
Teste dich
Frage 1 von 3LeichtWelche Aufgabe hat ein Primärschlüssel?
Lösung: Er identifiziert jeden Datensatz einer Tabelle eindeutig. — Ein Primärschlüssel besteht aus einem oder mehreren Attributen und unterscheidet jeden Datensatz eindeutig.
Frage 2 von 3MittelWelche Abfrage liefert die Klassen mit weniger als 20 Schülerinnen und Schülern?
Lösung: SELECT Klasse FROM Klassen WHERE AnzahlSchueler < 20; — Benötigt werden die Tabelle Klassen, die Ausgabespalte Klasse und die Bedingung AnzahlSchueler < 20.
Frage 3 von 3SchwerEine AG kann von vielen Lernenden besucht werden, und jede lernende Person kann mehrere AGs besuchen. Wie wird diese Beziehung modelliert?
Lösung: Mit einer Beziehungstabelle, die auf Lernende und AGs verweist — Eine n:m-Beziehung wird durch eine Beziehungstabelle aufgelöst. Jede ihrer Zeilen ordnet genau eine lernende Person genau einer AG zu.

Prüfe dich zum Schluss: Kannst du in einem neuen Alltagsszenario die Objekte und Attribute benennen, eindeutige Schlüssel wählen, die Beziehung bestimmen und eine passende SELECT-Abfrage formulieren? Dann beherrschst du den grundlegenden Weg vom Realitätsausschnitt zur relationalen Datenbank.

Passend dazu