Tôi sẽ đưa câu hỏi này từ quan điểm mô hình hóa.
Miễn là bạn không thêm bất kỳ mối quan hệ nào không thực sự ở đó, bạn sẽ an toàn. Nếu bạn thêm chúng, bạn sẽ nhận được ít tính toàn vẹn hơn trong dữ liệu (vì có sự dư thừa) và mã được liên kết chặt chẽ hơn.
Điều đặc biệt với các tham chiếu vòng tròn cụ thể là tôi chưa thấy trường hợp nào thực sự cần thiết ngoại trừ một tham chiếu tự. Nếu bạn mô hình cây hoặc đồ thị, bạn cần điều đó và nó hoàn toàn ổn vì tự tham chiếu là vô hại theo quan điểm chất lượng mã (không thêm phụ thuộc).
Tôi tin rằng tại thời điểm bạn bắt đầu cần một tài liệu tham khảo vô ngã, ngay lập tức bạn nên hỏi xem bạn có thể mô hình hóa nó dưới dạng biểu đồ không (thu gọn nhiều thực thể thành một nút). Có thể có một trường hợp ở giữa nơi bạn tạo một tham chiếu vòng tròn nhưng mô hình hóa nó dưới dạng biểu đồ là không phù hợp nhưng tôi rất nghi ngờ điều đó.
Có một mối nguy hiểm mà mọi người nghĩ rằng họ cần một tài liệu tham khảo vòng tròn nhưng thực tế họ không có. Trường hợp phổ biến nhất là "Vụ án có một không hai". Chẳng hạn, bạn đã có một khách hàng có nhiều địa chỉ mà từ đó một địa chỉ sẽ được đánh dấu là địa chỉ chính. Rất hấp dẫn khi mô hình hóa tình huống này là hai mối quan hệ riêng biệt has_address và is_primary_address_of nhưng điều đó không chính xác. Lý do là địa chỉ chính không phải là mối quan hệ riêng giữa người dùng và địa chỉ mà thay vào đó, nó là một thuộc tính của mối quan hệ có địa chỉ. Tại sao vậy? Bởi vì tên miền của nó bị giới hạn trong các địa chỉ của người dùng và không phải tất cả các địa chỉ đó. Bạn chọn một trong các liên kết và đánh dấu nó là mạnh nhất (chính).
(Sẽ nói về cơ sở dữ liệu ngay bây giờ) Nhiều người chọn giải pháp hai mối quan hệ vì họ hiểu "chính" là một con trỏ duy nhất và khóa ngoại là một loại con trỏ. Vì vậy, khóa ngoại nên là thứ để sử dụng, phải không? Sai lầm. Khóa ngoại đại diện cho các mối quan hệ nhưng "chính" không phải là mối quan hệ. Đây là một trường hợp suy biến của một đơn đặt hàng trong đó một yếu tố là trên hết và phần còn lại không được đặt hàng. Nếu bạn cần lập mô hình tổng thứ tự, tất nhiên bạn sẽ coi đó là thuộc tính của mối quan hệ vì về cơ bản không có lựa chọn nào khác. Nhưng tại thời điểm bạn thoái hóa nó, có một sự lựa chọn và khá kinh khủng - để mô hình hóa một thứ không phải là mối quan hệ như một mối quan hệ. Vì vậy, đây là - sự dư thừa mối quan hệ mà chắc chắn không phải là một cái gì đó để đánh giá thấp.
Vì vậy, tôi sẽ không cho phép một tham chiếu vòng tròn xảy ra trừ khi hoàn toàn rõ ràng rằng nó xuất phát từ thứ tôi đang làm người mẫu.
(lưu ý: điều này hơi thiên về thiết kế cơ sở dữ liệu nhưng tôi cá là nó cũng có thể áp dụng được cho các lĩnh vực khác)