GitHub hoàn toàn không sử dụng Foreign Key (2016)
(github.com)FK:
-
khiến việc sharding trở nên khó khăn
-
làm giảm hiệu năng
-
và cũng gây vấn đề cho việc chuyển đổi schema online.
Vì vậy chúng tôi không dùng FK. Ở bất cứ đâu.
= Repo này nói về gh-ost, công cụ chuyển đổi schema dành cho "MySQL", nên có thể không phù hợp với các DB khác, và dù đây là issue từ 3 năm trước, trong bình luận mới có nhắc rằng PostgreSQL 11 cũng hỗ trợ sharding với FK nên tác giả đã để lại bình luận bổ sung.
= Nghĩa là giữa các bảng vẫn tham chiếu bằng ID, nhưng không sử dụng ràng buộc FOREIGN KEY.
1 bình luận
Có lẽ điểm mấu chốt là họ thực hiện kiểm tra tính toàn vẹn theo cách nào.