it-swarm-eu.dev

Wofür steht 'ibfk' in MySQL?

Wenn ich in phpmyadmin eine Fremdschlüsseleinschränkung für die Tabelle 'photos' erstelle, sehe ich später, dass die Einschränkung 'photos_ibfk_1' heißt und die nächste Einschränkung 'photos_ibfk_2' usw. heißt. Daraus habe ich ergeben, dass [tablename] _ibfk_constraintIndex ist die Konvention für DB-Einschränkungen in MySQL. Ist das richtig? Wofür steht IBFK?

26
Peter Nore

innodb Fremdschlüssel. Es ist nur eine kurze Namenskonvention. Sie könnten es asdfqwerty nennen und der Name würde immer noch funktionieren.

25
atxdba

Obwohl Fremdschlüsselnamen alles sein können, ist es eine gute Praxis, die Konvention zu befolgen, den Tabellennamen an die erste Stelle zu setzen.

Der wichtigste Grund dafür ist, dass Fremdschlüsselnamen innerhalb einer Datenbank eindeutig sein müssen (im Gegensatz zu Indexnamen, die müssen nur innerhalb jeder Tabelle eindeutig sein). Nach dieser Konvention müssen Fremdschlüsselnamen nur in jeder Tabelle eindeutig sein.

Persönlich verwende ich die Konvention [table_name]_fk_[field_name].

Um Ihre Fremdschlüssel zu benennen, müssen Sie die Einschränkung in der Tabelle explizit buchstabieren, anstatt nur den Fremdschlüssel.

Einfache Methode (automatische Benennung, führt zu [table_name]_ibfk_[index]):

ALTER TABLE `[table_name]`
  ADD FOREIGN KEY (`[field_name]`)
    REFERENCES `[foreign_table_name]`(`[foreign_field_name]`);

Explizite Methode (führt zu [table_name]_fk_[field_name]):

ALTER TABLE `[table_name]`
  ADD CONSTRAINT `[table_name]_fk_[field_name]`
    FOREIGN KEY (`[field_name]`)
    REFERENCES `[foreign_table_name]`(`[foreign_field_name]`);
7
Marco Roy