2016-06-02 10 views
0

Wenn ich nur einige Fremdschlüssel in meiner Tabelle habe und sie keine Einschränkungen festlegen und ich werde keine CASCADE DELETE setzen, warum sollte ich Fremdschlüssel wie FOREIGN KEY (a) REFERENCES b(c) setzen?Warum sollte ich Fremdschlüssel in Mysql setzen

Welchen Zweck hat das Setzen von Fremdschlüsseln, wenn Sie das Löschen oder Aktualisieren von Kaskaden nicht einstellen möchten? Semantik? Macht die Abfragen schneller?

Dank

+0

Wenn Sie Innodb als Speichermodul verwenden, werden Fremdschlüssel automatisch indexiert. –

+5

dies kann http://stackoverflow.com/questions/1907325/why-do-i-need-to-use-foreign-key-if-i-can-use-where – theinarasu

+0

Im Grunde, um die Datenintegrität zu erzwingen. Sie wollen keine Bestellungen für unbekannte Kunden, genauso wie Sie keine Daten wie '31. Feb' oder Nummern wie' Gelb' wollen. –

Antwort

0

Fremdschlüssel hilft tatsächlich nicht die Leistung, aber ein wenig mehr statt kosten, da es die Einschränkung zu erzwingen hat.

Es ist dort für die Datenintegrität und um destruktive Schreiben zu verhindern. Wichtiger, wenn die Datenbank wächst

+0

Edit this 'Es ist dort zu verhindern, destruktive Schreiben und Datenintegrität 'zu diesem' Es ist da für die Datenintegrität und zu verhindern destruktives Schreiben'. Wie es jetzt aussieht, ist es da, um sowohl destruktives Schreiben als auch Datenintegrität zu verhindern. Ansonsten danke für deine Antwort. – slevin

+0

dort. Vielen Dank :) – chungtinhlakho