Ich werde diese Frage vom Standpunkt der Modellierung aus betrachten.
Solange Sie keine Beziehungen hinzufügen, die nicht tatsächlich vorhanden sind, sind Sie in Sicherheit. Wenn Sie sie hinzufügen, erhalten Sie eine geringere Datenintegrität (da Redundanz besteht) und engeren Code.
Das Besondere an den Zirkelverweisen ist, dass ich keinen Fall gesehen habe, in dem sie tatsächlich benötigt würden, außer einer Selbstreferenz. Wenn Sie Bäume oder Diagramme modellieren, benötigen Sie das und es ist vollkommen in Ordnung, da die Selbstreferenz aus Sicht der Codequalität harmlos ist (keine Abhängigkeit hinzugefügt).
Ich glaube, dass Sie im Moment, in dem Sie beginnen, eine Nicht-Selbstreferenz zu benötigen, sofort fragen sollten, ob Sie sie nicht als Grafik modellieren können (reduzieren Sie die mehreren Entitäten zu einem - Knoten). Vielleicht gibt es einen Fall dazwischen, in dem Sie einen Zirkelverweis erstellen, aber es ist nicht angebracht, ihn als Diagramm zu modellieren, aber ich bezweifle dies sehr.
Es besteht die Gefahr, dass die Menschen glauben, dass sie einen Zirkelverweis benötigen, dies jedoch nicht. Der häufigste Fall ist der "Einer von Vielen". Sie haben beispielsweise einen Kunden mit mehreren Adressen, von denen eine als primäre Adresse gekennzeichnet werden soll. Es ist sehr verlockend, diese Situation als zwei getrennte Beziehungen has_address und is_primary_address_of zu modellieren, aber es ist nicht korrekt. Der Grund dafür ist, dass die primäre Adresse keine separate Beziehung zwischen Benutzern und Adressen ist, sondern ein Attribut der Beziehung Adresse hat. Warum ist das so? Weil seine Domain auf die Adressen des Benutzers beschränkt ist und nicht auf alle Adressen, die es gibt. Sie wählen einen der Links aus und markieren ihn als den stärksten (primären).
(Wir werden jetzt über Datenbanken sprechen.) Viele Menschen entscheiden sich für die Zwei-Beziehungen-Lösung, weil sie unter "primär" einen eindeutigen Zeiger verstehen und ein Fremdschlüssel eine Art Zeiger ist. Also sollte der Fremdschlüssel das richtige sein, oder? Falsch. Fremdschlüssel stellen Beziehungen dar, aber "Primär" ist keine Beziehung. Es ist ein entarteter Fall einer Ordnung, bei der vor allem ein Element und der Rest nicht geordnet ist. Wenn Sie eine Gesamtreihenfolge modellieren müssten, würden Sie sie natürlich als Attribut einer Beziehung betrachten, da es im Grunde keine andere Wahl gibt. Aber in dem Moment, in dem Sie es degenerieren, gibt es eine Wahl und eine ziemlich schreckliche - etwas zu modellieren, das keine Beziehung als Beziehung darstellt. Hier kommt es also - Beziehungsredundanz, die sicherlich nicht zu unterschätzen ist.
Daher würde ich keinen Zirkelverweis zulassen, es sei denn, es ist absolut klar, dass er von dem stammt, was ich modelliere.
(Hinweis: Dies ist ein wenig voreingenommen gegenüber dem Datenbankdesign, aber ich wette, es ist auch für andere Bereiche angemessen anwendbar.)