Phpmyadminでテーブル 'photos'の外部キー制約を作成すると、制約の名前は 'photos_ibfk_1'になり、次の制約は 'photos_ibfk_2'という名前になります。これから、[tablename] _ibfk_constraintIndexがMySQLのDB制約の規約。これは正しいです? IBFKは何の略ですか?
innodb外部キー。これは、短い命名規則です。あなたはそれをasdfqwertyと呼ぶことができ、名前はまだ機能します。
外部キーの名前は何でもかまいませんが、実際にはテーブル名を最初に置くという慣例に従うことをお勧めします。
これの最も重要な理由は、外部キー名がデータベース内で一意でなければならないである必要があることです(インデックス名とは異なり、各テーブル内でのみ一意です)。したがって、この規則に従うことにより、外部キー名は各テーブル内で一意である必要があります。
個人的には、慣習[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]`);