web-dev-qa-db-ja.com

MySQLでは「ibfk」は何を表していますか?

Phpmyadminでテーブル 'photos'の外部キー制約を作成すると、制約の名前は 'photos_ibfk_1'になり、次の制約は 'photos_ibfk_2'という名前になります。これから、[tablename] _ibfk_constraintIndexがMySQLのDB制約の規約。これは正しいです? IBFKは何の略ですか?

26
Peter Nore

innodb外部キー。これは、短い命名規則です。あなたはそれをasdfqwertyと呼ぶことができ、名前はまだ機能します。

25
atxdba

外部キーの名前は何でもかまいませんが、実際にはテーブル名を最初に置くという慣例に従うことをお勧めします。

これの最も重要な理由は、外部キー名がデータベース内で一意でなければならないである必要があることです(インデックス名とは異なり、各テーブル内でのみ一意です)。したがって、この規則に従うことにより、外部キー名は各テーブル内で一意である必要があります。

個人的には、慣習[table_name]_fk_[field_name]

外部キーに名前を付けるには、外部キーだけでなく、テーブルの制約を明示的に指定する必要があります。

単純な方法(自動命名、[table_name]_ibfk_[index]):

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

明示的なメソッド([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