Abhängigkeit
BestellID |
Kunde |
Artikel |
Lieferdatum |
Lieferant |
Lieferantenadresse |
|---|---|---|---|---|---|
1001 |
Max Mustermann |
Laptop, Maus, Tastatur |
2025-10-10 |
TechShop |
Berlin, Hauptstraße 1 |
1002 |
Anna Schmidt |
Monitor, Kopfhörer |
2025-10-12 |
TechShop |
Berlin, Hauptstraße 1 |
1003 |
Peter Müller |
Drucker, Tinte |
2025-10-15 |
BüroBedarf |
Hamburg, Hafenstraße 10 |
Funktionale Abhängigkeit
Eine funktionale Abhängigkeit liegt vor, wenn der Wert einer Spalte eindeutig durch den Wert einer anderen Spalte bestimmt wird.
Beispiel aus der Tabelle:
Jede BestellID ist genau einem Kunden, einem oder mehreren Artikeln, einem Lieferdatum, einem Lieferanten und einer Lieferantenadresse zugeordnet.
Das bedeutet: BestellID → Kunde, Lieferdatum, Lieferant, Lieferantenadresse (Die Artikel sind hier eine Wiederholungsgruppe und verstoßen gegen die 1NF.)
Surrogatschlüssel:
In deiner Tabelle ist BestellID ein Surrogatschlüssel: ein künstlicher, eindeutiger Schlüssel, der nur zur Identifikation einer Zeile dient und keine inhaltliche Bedeutung hat.
Warum ist das wichtig? Durch die Nutzung von BestellID als Primärschlüssel wird jede Zeile eindeutig, und wir können funktionale Abhängigkeiten sauber erkennen.
Transitive Abhängigkeit
Eine transitive Abhängigkeit liegt vor, wenn eine Spalte nicht direkt vom Primärschlüssel abhängt, sondern über eine andere Spalte bestimmt wird.
Beispiele aus deiner Tabelle:
Lieferantenadresse hängt von Lieferant ab: Lieferant → Lieferantenadresse
Da Lieferant selbst von der BestellID abhängt, ergibt sich eine transitive Abhängigkeit: BestellID → Lieferant → Lieferantenadresse
Problem:
Wenn sich die Adresse eines Lieferanten ändert, müsste man in allen Zeilen der Tabelle die Lieferantenadresse anpassen – das erzeugt Redundanzen und Anomalien.