мой выбор другой.
по моему мнению, таблица должна иметь поле «id», а не «user_id», потому что таблица просто называется «user», поэтому:
CREATE TABLE users(
id int,
name varchar(100)
);
CREATE TABLE messages(
id int,
user_id int
);
"user_id" в таблице "messages" - это поле fk, поэтому оно должно уточнить, какой идентификатор ("user_id").
Полностью самоочевидное соглашение об именах, на мой взгляд, могло бы быть:
fk_[referencing table name]_[referencing field name]_[referenced table name]_[referenced field name]
i.e.: fk_messages_user_id_users_id
Примечание:
- в некоторых случаях вы можете опустить второй элемент ([ссылка на имя поля])
этот fk может быть уникальным, потому что если существует таблица «messages_user», имя поля ссылки должно быть «user_id» (а не просто «id») и имя fk должно быть:
fk_messages_user_user_id_users_id
Другими словами, соглашение об именовании внешнего ключа гарантирует, что вы будете использовать уникальные имена, если вы также используете соглашение об именовании «ссылочное / ссылочное поле» (и вы можете, конечно, выбрать свое собственное).