Mặc dù tên khóa ngoại có thể là bất cứ thứ gì, nhưng thực sự đó là một cách thực hành tốt để tuân theo quy ước đặt tên bảng lên hàng đầu.
Lý do quan trọng nhất cho điều này là các tên khóa ngoại phải là duy nhất trong cơ sở dữ liệu (trái với tên chỉ mục, chỉ phải là duy nhất trong mỗi bảng). Vì vậy, bằng cách tuân theo quy ước này, các tên khóa ngoại chỉ phải là duy nhất trong mỗi bảng.
Cá nhân, tôi sử dụng quy ước [table_name]_fk_[field_name]
.
Để đặt tên cho khóa ngoại của bạn, bạn sẽ phải đánh vần rõ ràng ràng buộc trên bảng, thay vì chỉ khóa ngoại.
Phương pháp đơn giản (đặt tên tự động, sẽ cho kết quả [table_name]_ibfk_[index]
):
ALTER TABLE `[table_name]`
ADD FOREIGN KEY (`[field_name]`)
REFERENCES `[foreign_table_name]`(`[foreign_field_name]`);
Phương pháp rõ ràng (sẽ dẫn đến [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]`);