Datenbank verstehen: Tabellen, Schlüssel und SQL
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.
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.
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.
Die Datenbank ist der geordnete Datenbestand. Das DBMS ist die Software, die mit diesem Bestand arbeitet.
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.
Die Tabelle Lehrkraefte könnte so aussehen:
| LehrID | Vorname | Nachname | Fach |
|---|---|---|---|
| 1 | David | Hilbert | Mathematik |
| 2 | Marie | Curie | Chemie |
| 3 | Rosalind | Franklin | Biologie |
| 4 | Benjamin | Franklin | Physik |
Die zweite Zeile ist ein Datensatz. Fach ist ein Attribut. Chemie ist der Attributwert dieses Datensatzes in der Spalte Fach.
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.
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.
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.
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.
Wie werden Beziehungen zwischen Tabellen abgebildet?
Die Kardinalität beschreibt, wie viele Datensätze auf beiden Seiten einer Beziehung beteiligt sein können.
| Beziehung | Bedeutung | Umsetzung |
|---|---|---|
| 1:1 | Auf beiden Seiten gehört höchstens ein Datensatz zum anderen. | Häufig Fremdschlüssel mit Eindeutigkeitsregel |
| 1:n | Ein Datensatz der ersten Tabelle kann zu vielen Datensätzen der zweiten gehören. | Fremdschlüssel auf der n-Seite |
| n:m | Viele 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.
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.
Wie entsteht aus einer Situation ein Tabellenmodell?
Gehe bei einem kleinen Modell in vier Schritten vor:
- Bestimme die Entitäten, also die unterscheidbaren Objekte. Hier sind es Lehrkräfte und Klassen.
- Sammle ihre Attribute, etwa Name, Fach und Schülerzahl.
- Wähle für jede Tabelle einen eindeutigen Primärschlüssel.
- Bestimme die Beziehung und setze den passenden Fremdschlüssel.
Für das Schulbeispiel entstehen zwei Tabellen:
Lehrkraefte(LehrID PK, Vorname, Nachname, Fach)Klassen(Klasse PK, AnzahlSchueler, KlassenleiterID FK)
Mögliche Klassendaten sind:
| Klasse | AnzahlSchueler | KlassenleiterID |
|---|---|---|
| 7b | 23 | 1 |
| 8a | 21 | 4 |
| 10a | 17 | 2 |
| 5c | 18 | 3 |
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.
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;
SELECTbestimmt die auszugebenden Spalten.FROMnennt die Tabelle.WHEREfiltert die Zeilen nach einer Bedingung.
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.
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;`
SELECT nennt die gewünschte Ausgabespalte, FROM die Tabelle und WHERE die Filterbedingung. Das Zeichen > bedeutet „größer als“.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, 10alässt sich schlechter einzeln prüfen und abfragen. - Verwaister Fremdschlüssel: Eine
KlassenleiterIDdarf nicht auf eine nicht vorhandene Lehrkraft zeigen. Diese Regel heißt referenzielle Integrität.
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.
Karteikasten
Überlege zuerst selbst und drehe die Karte anschließend zum Prüfen um.
Alles auf einen Blick
- 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
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.
Mit Google fortfahren