Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

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

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von Jonas09, 20 Juli 2015.

  1. Jonas09

    Jonas09 Benutzer

    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: 20 Juli 2015
  2. akretschmer

    akretschmer Datenbank-Guru

    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.
     
  3. Distrilec

    Distrilec Datenbank-Guru

    Dann solltest du wissen wofür man PK/FK braucht... :eek:
    Genau. Und im Grunde genommen braucht man ihn auch nur dafür... (Davon abgesehen das implizit ein Index erstellt wird...)
    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)
     
  4. Tom.S

    Tom.S Fleissiger Benutzer

    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").
     
  5. Jonas09

    Jonas09 Benutzer

    Vielen Dank für die Antworten!

    Also hat das direkt mit den Abfragen nichts zu tun?
     
  6. Distrilec

    Distrilec Datenbank-Guru

    @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
     
  7. Jonas09

    Jonas09 Benutzer

    Gut zu wissen!

    Vielen Dank & Beste Grüße
    Jonas :)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden