Was machst du denn, wenn eine Tabelle Fremdschlüsselbeziehung zu sich selbst hat?
Oder es allgemein Kreise in den Beziehungen gibt?
Davon abgesehen:
1) und 3) sind sehr ähnlich: Es sind Tabellen die zu keiner anderen Tabelle eine Fremdschlüsselbeziehung hat ("Quellen").
Wenn du die Tabellen ordnen willst, würde ich das aufsteigend nach dem maximalen Abstand zu einer Quelle tun.
Zu jeder Tabelle hat jede referenzierte Tabelle muss einen kleineren maximalen Abstand zu einer Quelle haben. Dh. wenn du die Tabellen in dieser Reihenfolge erstellst, sind immer alle Voraussetzungen erfüllt.
Mithilfe von Rekursion und Aggregatsfunktionen (max) sollte es das in
SQL möglich sein.
Das funktioniert natürlich nur, wenn es keine Kreise gibt (ansonsten geht der maximale Abstand zur Quelle in einem Kreis gegen unendlich).