Wofür überhaupt Primär/Fremdschlüssel?

Jonas09

Benutzer
Beiträge
8
Hallo zusammen,

ich weiß was es mit Primär/Fremdschlüsseln auf sich hat.
Ein Primärschlüssel identifiziert eine Datensatz eindeutig und ein Fremdschlüssel ist ein Primärschlüssel aus einer anderen Relation.

Nur was bringen mir Beziehungen die ich hergestellt habe nachher bei den Abfragen?
Die Abfragen kann ich ja auch so herstellen ohne das ich Beziehungen erstellt habe oder nicht?

Im MySQL Anwendungsbereich bin ich leider noch nicht so vertraut, da wir in der Schule fast ausschließlich Theorie gemacht haben.
Kann mir das einer eventuell mit den Abfragen im Bezug auf Primär- und Fremdschlüssel erklären?

Eventuell kann mir ja jemand ein Beispiel anhand einer Abfrage geben.

Vielen Dank & Gruß

Jonas
 
Zuletzt bearbeitet:
Werbung:
Wenn man es richtig macht bringt es Dir referentelle Integrität. Es kann dann z.B. keine Aufträge von Kunden geben, die nicht (mehr) existieren.

MySQL ist weder theoretisch noch praktisch pädagogisch wertvoll.
 
Im MySQL Anwendungsbereich bin ich leider noch nicht so vertraut, da wir in der Schule fast ausschließlich Theorie gemacht haben.
Dann solltest du wissen wofür man PK/FK braucht... :eek:
Ein Primärschlüssel identifiziert eine Datensatz eindeutig
Genau. Und im Grunde genommen braucht man ihn auch nur dafür... (Davon abgesehen das implizit ein Index erstellt wird...)
ein Fremdschlüssel ist ein Primärschlüssel aus einer anderen Relation
Richtig... Und diese Referenz stellt sicher, dass der Wert den ich eintragen will auch wirklich(in meiner Master-Tabelle) vorhanden ist...

Jetzt stellt dir mal eine Tabelle für Bankkonten vor, in der die Kontonummer nicht eindeutig ist ;) Oder es Transaktionen von deinem Konto gibt, die Wörtlich ins Nichts führen einfach nur weil es die andere Kontonummer nicht gibt (was ein FK nunmal verhindert hätte ;) )

(Ein ziemlich drastisches Beispiel... Und du kannst wohl davon ausgehen das Banken kein MySQL verwenden... Gedanklich aber richtig)
 
Noch ein Punkt für das Verständnis sind 1-zu-n Relationen: Beispielsweise kann ein einzelner Kunde eine aber auch zehn Bestellungen durchführen. Man könnte das wie folgt speichern:

Thomas Maier | CD
Thomas Maier | Laptop
Thomas Maier | Lampe
...
Dies würde zu zahlreichen Problemen führen, insbesondere möchte man jeden Kunden (jedes Produkt, jede Bestellung etc.) nur ein einziges Mal in der Datenbank haben. Das geht aber nur, wenn man die Tabelle in mehrere Tabellen aufteilt ("Normalisierung"). Um jetzt aber einzelne Datensätze eindeutig zu identifizieren benötigt man Primärschlüssel und um eine Verbindung zwischen Datensätzen in verschiedenen Tabellen herzustellen, die genauso fest ist als wenn man sie wie oben in eine Zeile in einer Tabelle schreibt, benötigt man Fremdschlüssel ("referentielle Integrität").
 
@Jonas09 Wie gesagt... Ein PK erzeugt implizit einen Index. Würde die Abfrage also performanter machen. Aber es ändert nichts am Ergebnis, wenn du dass damit meinst
 
Werbung:
Zurück
Oben