Beziehung MySQL bzw. Joins

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Beziehung MySQL bzw. Joins

    Hallo Liebe Community,

    zunächst wie immer Google wurde genutzt.

    Es geht darum, dass ich gerne gewusst hätte wozu ich bei bsp. phpMyAdmin (damit MySQL) Beziehungen herstellen kann, wenn ich später über Abfragen Joins zusammenbasteln muss.

    Von Access her kenne ich das Prinzip, dass man die Verknüpfungen in Access erstellt und die Daten entsprechend ausgegeben werden können, bei PHP hingegen muss ich immer Joins benutzen, wozu benötigt man dann Beziehungen in phpMyAdmin ?

    Hoffe das ist soweit verständlich ^^

  • #2
    Hallo,

    zunächst mal legt man ja einen Index an und später auf diesem Index eine Fremdschlüsselbeziehung. Der Index ist sinnvoll, damit die Datenbank Abfragen darauf optimieren kann. Die Fremdschlüsselbeziehung (engl. foreign key constraint, also eigentlich Fremdschlüsselbeschränkung) stellt sicher, dass keine verwaisten Einträge entstehen können, also dass keine Verweise auf nichtexistente Primärschlüsselwerte existieren.

    Für spätere Abfragen ist also hinsichtlich der Performance der Index wichtig und für die Konsistenz der Daten ist der Constraint wichtig.

    Datenbankabstraktionsschichten können mitunter diese Fremdschlüsselbeziehungen erkennen und darüber die Daten selbstständig verknüpfen, aber mit den Standardbibliotheken (mysql, mysqli, PDO) für PHP ist das nicht implementiert.

    Gruß,

    Amica
    [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
    Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
    Super, danke!
    [/COLOR]

    Kommentar


    • #3
      Also wenn ich das richtig Verstehe sort MySQL (wenn ich die Beziehungen angebe) dafür das Lösch- und andere Anomalien nicht entstehen können, da er mich rechtzeitig warnt !?

      Außerdem für die Performance ( da ich Fremdschlüssel manuell bestimmt habe).

      Soweit korrekt ?

      Kommentar


      • #4
        Zitat von Fireclave Beitrag anzeigen
        Also wenn ich das richtig Verstehe sort MySQL (wenn ich die Beziehungen angebe) dafür das Lösch- und andere Anomalien nicht entstehen können, da er mich rechtzeitig warnt !
        Genau, entweder lässt er das Löschen gar nicht erst zu oder setzt die abhängigen Fremdschlüssel auf NULL oder löscht alle abhängigen Datensätze mit, je nachdem was du in der ON DELETE Klausel angegeben hast. Wenn sie nicht angegeben ist, gilt ON DELETE RESTRICT, also wird das Löschen verhindert, solange es noch abhängige Datensätze gibt (solche deren Fremdschlüssel auf den Primärschlüssel des zu löschenden verweisen).

        Zitat von Fireclave Beitrag anzeigen
        Außerdem für die Performance ( da ich Fremdschlüssel manuell bestimmt habe).
        Naja, nicht ganz. Die Performance wird schon durch den Schlüssel (= index = key) selbst verbessert. Ob da jetzt noch ein Constraint drauf liegt oder nicht, ist für die Performance irrelevant.
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar

        Lädt...
        X