Wozu braucht man eine Datenbank?
In einem Dateisystem führt jede Abteilung ihre eigenen Dateien. Das macht Probleme:
- Datenredundanz: Dieselben Daten sind mehrfach gespeichert und verschwenden Platz.
- Dateninkonsistenz: Eine Kopie wird geändert, die anderen nicht, und sie widersprechen sich.
- Schwer zu durchsuchen und zu teilen: Für jede neue Frage braucht man ein neues Programm.
- Schlechte Sicherheit: Kaum zu steuern, wer was sehen darf.
- Datenisolation und Abhängigkeit: Dateien haben verschiedene Formate; ändert man den Aufbau einer Datei, laufen Programme nicht mehr.
Eine Datenbank ist eine geordnete Sammlung zusammengehöriger Daten an einem Ort. So lassen sich die Daten teilen, widerspruchsfrei halten und schützen.
Datenbankmanagementsystem (DBMS)
Ein DBMS ist eine Software, mit der man eine Datenbank anlegt, speichert, ändert, durchsucht und verwaltet und mit der man regelt, wer sie benutzen darf. Beispiele: MySQL, Oracle, PostgreSQL, SQLite, Microsoft Access.
Vorteile: weniger Redundanz, Konsistenz, gemeinsame Nutzung durch viele Nutzer, Sicherheit durch Passwörter und Rechte, Sicherung und Wiederherstellung sowie einfaches Suchen mit einer Abfragesprache (SQL).
Alltag: Banken, Zugreservierung, Schuldaten, Online-Shopping, Krankenhäuser.
Relationales Modell: Relation, Attribut, Tupel, Domäne
Im relationalen Datenmodell liegen die Daten in Tabellen.
- Relation: eine Tabelle mit Namen, z. B. STUDENT.
- Attribut: eine Spalte, z. B. Name.
- Tupel: eine Zeile, also ein ganzer Datensatz.
- Domäne: die Menge der erlaubten Werte eines Attributs, z. B. Class ∈ {9, 10, 11, 12}.
- Grad: Anzahl der Attribute (Spalten).
- Kardinalität: Anzahl der Tupel (Zeilen).
Regeln: Jede Spalte hat einen eigenen Namen; die Reihenfolge von Zeilen oder Spalten ist egal; keine zwei Zeilen sind völlig gleich; jede Zelle enthält genau einen Wert (oder NULL, also unbekannt).
Schlüssel: Kandidaten-, Primär- und Alternativschlüssel
- Kandidatenschlüssel: ein Attribut (oder mehrere zusammen), dessen Wert in jeder Zeile einmalig und nie NULL ist. Eine Tabelle kann mehrere haben.
- Primärschlüssel: der eine Kandidatenschlüssel, der zur Identifikation der Zeilen gewählt wird. Er darf nicht NULL sein und sich nicht wiederholen.
- Alternativschlüssel: jeder Kandidatenschlüssel, der nicht als Primärschlüssel gewählt wurde.
Beispiel: STUDENT(AdmNo, Name, Class, Email). Name und Class wiederholen sich, also sind sie keine Schlüssel. AdmNo und (wenn immer ausgefüllt und verschieden) Email sind Kandidatenschlüssel. Wähle AdmNo als Primärschlüssel; Email wird zum Alternativschlüssel.
Außerdem nützlich: Ein zusammengesetzter Schlüssel nutzt zwei oder mehr Spalten gemeinsam (z. B. Class + RollNo); ein Fremdschlüssel ist eine Spalte in einer Tabelle, die auf den Primärschlüssel einer anderen Tabelle verweist und so beide verbindet.
Probier es aus: Finde den Schlüssel auf deinem Ausweis
Sieh dir deinen Schülerausweis oder eine Fahrkarte an. Liste alle Felder auf (Name, Klasse, Rollennummer, Aufnahmenummer, Telefon). Stelle bei jedem zwei Fragen: Können zwei Schüler denselben Wert haben? Kann das Feld leer sein? Schreibe auf, welche Felder Kandidatenschlüssel sind und welchen du als Primärschlüssel wählen würdest. Teste dieselbe Idee dann in Schritt 6 der 3D-Ansicht.
Wichtige Formeln und Definitionen
- Relation = Tabelle; Attribut = Spalte; Tupel = Zeile
- Grad = Anzahl der Spalten; Kardinalität = Anzahl der Zeilen
- Kandidatenschlüssel: eindeutig + nicht NULL
- Primärschlüssel = gewählter Kandidatenschlüssel; Alternativschlüssel = die übrigen
Gelöste Beispiele
1. Eine Tabelle hat 5 Spalten und 30 Zeilen. Gib Grad und Kardinalität an.
Grad = 5, Kardinalität = 30.
2. Zu einer 4 × 10-Tabelle (Grad 4, Kardinalität 10) kommen 2 Zeilen und 1 Spalte dazu. Wie lauten die neuen Werte?
Grad = 5, Kardinalität = 12.
3. EMPLOYEE(EmpID, Name, Aadhaar, Dept). Bestimme Kandidaten-, Primär- und Alternativschlüssel.
EmpID und Aadhaar sind eindeutig → Kandidatenschlüssel. Wähle EmpID als Primärschlüssel; Aadhaar ist der Alternativschlüssel. Name und Dept können sich wiederholen.
4. Warum kann Name in STUDENT kein Primärschlüssel sein?
Zwei Schüler können denselben Namen haben, also erkennt er eine Zeile nicht eindeutig.
5. Gib die Domäne eines Attributs Gender an, das als ein Buchstabe gespeichert wird.
{"M", "F", "O"} (oder die Codes, die die Schule erlaubt).
Häufige Fehler
- Eine Spalte „Tupel“ nennen. Tupel = Zeile; Attribut = Spalte.
- Sagen, der Grad sei die Anzahl der Zeilen. Der Grad zählt Spalten.
- Glauben, eine Tabelle habe nur einen Kandidatenschlüssel. Sie kann viele haben, aber nur einen Primärschlüssel.
- NULL in einer Primärschlüssel-Spalte zulassen.