Khóa ngoại là cách tốt nhất để đảm bảo tính toàn vẹn tham chiếu của cơ sở dữ liệu. Tránh các tầng do phép thuật cũng giống như viết mọi thứ trong hội đồng vì bạn không tin vào phép thuật đằng sau trình biên dịch.
Điều tồi tệ là việc sử dụng sai các khóa ngoại, chẳng hạn như tạo chúng ngược, chẳng hạn.
Ví dụ của Juan Manuel là ví dụ điển hình, nếu bạn sử dụng mã, sẽ có nhiều cơ hội để lại DocumentItems giả trong cơ sở dữ liệu sẽ đến và cắn bạn.
Ví dụ, cập nhật xếp tầng rất hữu ích, khi bạn có tham chiếu đến dữ liệu bằng thứ gì đó có thể thay đổi, giả sử khóa chính của bảng người dùng là tên, tổ hợp họ. Sau đó, bạn muốn thay đổi trong sự kết hợp đó để truyền đến bất cứ nơi nào chúng được tham chiếu.
@Aidan, sự rõ ràng mà bạn đề cập đến có chi phí cao, cơ hội để lại dữ liệu giả trong cơ sở dữ liệu của bạn, không phải là nhỏ . Đối với tôi, nó thường chỉ thiếu quen thuộc với DB và không có khả năng tìm ra FK nào đang tồn tại trước khi làm việc với DB nuôi dưỡng nỗi sợ hãi đó. Hoặc là, hoặc lạm dụng liên tục thác, sử dụng nó trong trường hợp các thực thể không liên quan đến khái niệm hoặc nơi bạn phải lưu giữ lịch sử.
sql-server
thẻ.