353 Stimmen

Fremdschlüssel in phpMyAdmin einrichten?

Ich bin dabei, eine Datenbank mit phpMyAdmin einzurichten. Ich habe zwei Tabellen ( foo y bar ), indiziert auf ihre Primärschlüssel . Ich versuche, eine relationale Tabelle zu erstellen ( foo_bar ) zwischen ihnen, wobei ihre Primärschlüssel als Fremdschlüssel verwendet werden.

Ich habe diese Tabellen als MyISAM-Tabellen erstellt, habe aber inzwischen alle drei auf InnoDB umgestellt, weil ich gelesen habe, dass MyISAM keine Fremdschlüssel unterstützt. Alle id Felder sind INT(11) .

Wenn ich die foo_bar Tabelle, klicken Sie auf den Link "Beziehungsansicht", und versuchen Sie, die FK-Spalten so einzustellen, dass sie database.foo.id y database.bar.id heißt es "Kein Index definiert!" neben jeder Spalte.

Was übersehe ich?

Klärung/Aktualisierung

Der Einfachheit halber möchte ich weiterhin phpMyAdmin verwenden. Ich benutze derzeit XAMPP, das einfach genug ist, damit ich mich auf PHP/CSS/Javascript konzentrieren kann, und es kommt mit phpMyAdmin.

Auch wenn ich noch keine expliziten Fremdschlüssel einrichten konnte, habe ich eine relationale Tabelle und kann solche Verknüpfungen durchführen:

SELECT * 
FROM foo 
INNER JOIN foo_bar 
ON foo.id = foo_bar.foo_id 
INNER JOIN bar
ON foo_bar.bar_id = bar.id;

Es ist mir einfach unangenehm, dass die FKs nicht explizit in der Datenbank definiert sind.

3voto

Vinod Punkte 61

Schritt 1: Sie müssen die Zeile hinzufügen: default-storage-engine = InnoDB unter dem Abschnitt [mysqld] Ihrer mysql-Konfigurationsdatei (my.cnf oder my.ini, je nach Betriebssystem) hinzufügen und den mysqld-Dienst neu starten. enter image description here

Schritt 2: Wenn Sie nun die Tabelle erstellen, werden Sie sehen, dass der Typ der Tabelle InnoDB

enter image description here

Schritt 3: Erstellen Sie die Tabellen Parent und Child. Öffnen Sie nun die Child-Tabelle und wählen Sie die Spalte aus, die Sie als Fremdschlüssel haben möchten: Wählen Sie den Indexschlüssel aus Action Label wie unten gezeigt.

enter image description here

Schritt 4: Öffnen Sie nun die Beziehungsansicht in derselben untergeordneten Tabelle von unten neben der Druckansicht, wie unten gezeigt.

enter image description here Schritt 5: Wählen Sie die Spalte aus, die Sie als Fremdschlüssel haben möchten Wählen Sie die übergeordnete Spalte aus der Dropdown-Liste aus. dbName.TableName.ColumnName

Wählen Sie geeignete Werte für ON DELETE und ON UPDATE enter image description here

1voto

Sahil Ralkar Punkte 1950

Stellen Sie zunächst Storage Engine als InnoDB

First set Storage Engine as InnoDB

dann die Relationsansicht Option im Strukturmenü aktivieren

then the relation view option enable

1voto

Vincent Punkte 1473

Neuere Versionen von phpMyAdmin verfügen nicht über das " Relation Ansicht "In diesem Fall müssen Sie eine Anweisung ausführen, um das Gleiche zu erreichen. Zum Beispiel

ALTER TABLE employees
    ADD CONSTRAINT fk_companyid FOREIGN KEY (companyid)
    REFERENCES companies (id)
    ON DELETE CASCADE;

Wenn in diesem Beispiel eine Zeile aus Unternehmen gelöscht wird, werden auch alle Mitarbeiter mit dieser Unternehmensnummer gelöscht.

0voto

Jaime Montoya Punkte 5808

Aus der offiziellen MySQL-Dokumentation unter https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html :

MySQL benötigt Indizes für Fremdschlüssel und referenzierte Schlüssel, damit Fremdschlüsselprüfungen schnell sein können und keinen Tabellenscan erfordern.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X