Trong MySQL, không cần đặt tên tượng trưng cho các ràng buộc khóa ngoại. Nếu không có tên, InnoDB sẽ tự động tạo một tên duy nhất.
Trong mọi trường hợp, đây là quy ước mà tôi sử dụng:
fk_[referencing table name]_[referenced table name]_[referencing field name]
Ví dụ:
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);
Tôi cố gắng gắn các tên trường giống nhau trong các bảng tham chiếu và được tham chiếu, như trong user_id
trong ví dụ trên. Khi điều này không thực tế, tôi cũng nối tên trường được tham chiếu với tên khóa ngoại.
Quy ước đặt tên này cho phép tôi "đoán" tên tượng trưng chỉ bằng cách nhìn vào định nghĩa bảng và ngoài ra nó cũng đảm bảo các tên duy nhất.