Warum soll ich den Fremdschlüssel in eine Tabelle hinzufügen?

jetwork

Fleissiger Benutzer
Beiträge
97
Hallo Zusammen,

Ich habe mehrere Fremdschlüssel-Verbindungen zwischen meiner Tabellen. Was ist der Vorteil von einem Fremdschlüssel in eine Tabelle hinzuzufügen?

Ich führe immer so ein Befehl aus:
ALTER TABLE tabellename
ADD FOREIGN KEY (xx_ref) REFERENCES tabellename(xxx_id);

Warum brauche ich diesen Befehl auszuführen. Was bringt das?
Ohne den Fremdschlüssel in die Tabelle hinzuzufügen kann ich auch joins machen.


Danke im Voraus
 
Werbung:
Warum brauche ich diesen Befehl auszuführen. Was bringt das?

Die DB kann referentielle Integrität sicherstellen. Du hast eine Tabelle Kunden mit Kundennummer, und eine Tabelle Aufträge, in der du die Kundennummer hast. Durch den FK kannst Du in Aufträge keine Kundennummern haben, die nicht in der Kunden-Tabelle stehen.
 
Zuletzt bearbeitet von einem Moderator:
Nein auch nicht mit CASCADE, das nimmt dir nur die Arbeit ab vorher die Aufträge zu löschen, was im übrigen auch erst durch den Constraint möglich wird. :)
 
Wie erstellt man referentielle Integrität in MySQL?

Soll ich immer die Fremdschlüsseln mit referentielle Integrität erstellen?
 
Dann ist Dein Cascade kapott ;-)

Code:
test=# create table kunden (id int primary key, name text);
CREATE TABLE
test=*# insert into kunden values (1, 'kunde 1');
INSERT 0 1
test=*# insert into kunden values (2, 'kunde 2');
INSERT 0 1
test=*# create table auftrag(k_id int references kunden on delete cascade, preis int);
CREATE TABLE
test=*# insert into auftrag values (1, 10);
INSERT 0 1
test=*# insert into auftrag values (1, 12);
INSERT 0 1
test=*# delete from kunden where id = 1;
DELETE 1
test=*# select * from auftrag ;
 k_id | preis
------+-------
(0 rows)
/code]
 
Werbung:
Zurück
Oben