MySQLでは、外部キー制約に記号名を付ける必要はありません。名前が指定されていない場合、InnoDBは一意の名前を自動的に作成します。
いずれにせよ、これは私が使用する規則です:
fk_[referencing table name]_[referenced table name]_[referencing field name]
例:
CREATE TABLE users(
user_id int,
name varchar(100)
);
CREATE TABLE messages(
message_id int,
user_id int
);
ALTER TABLE messages ADD CONSTRAINT fk_messages_users_user_id
FOREIGN KEY (user_id) REFERENCES users(user_id);
user_id
のように、参照テーブルと参照テーブルで同じフィールド名を使用しようとしています。 上記の例では。これが実用的でない場合は、参照フィールド名を外部キー名にも追加します。
この命名規則により、テーブル定義を確認するだけでシンボリック名を「推測」でき、さらに一意の名前も保証されます。