Khoá ngoại
thực thi tính toàn vẹn của tham chiếu
. Những ràng buộc này đảm bảo rằng một hàng trong bảng order_details
với một trường order_id
tham chiếu đến một orders
bảng sẽ không bao giờ có order_id
giá trị không tồn tại trong orders
bàn.
Khóa ngoại không bắt buộc phải có cơ sở dữ liệu quan hệ đang hoạt động (thực tế là bộ nhớ mặc định của MySQL engine không hỗ trợ FK), nhưng chúng chắc chắn rất cần thiết để tránh các mối quan hệ bị hỏng và các hàng mồ côi (tức là tính toàn vẹn tham chiếu). Khả năng thực thi tính toàn vẹn tham chiếu ở cấp cơ sở dữ liệu là bắt buộc đối với C trong ACID đứng.
Đối với mối quan tâm của bạn về hiệu suất, nói chung có một chi phí hiệu suất, nhưng có thể sẽ không đáng kể. Tôi khuyên bạn nên đưa vào tất cả các ràng buộc khóa ngoại của bạn và chỉ thử nghiệm mà không có chúng nếu bạn gặp vấn đề về hiệu suất thực sự mà bạn không thể giải quyết bằng cách khác.