Ich bin Reverse Engineering der Beziehungen zwischen einer mittelgroßen Anzahl von Tabellen (50+) in einer Oracle-Datenbank, wo keine Fremdschlüssel zwischen den Tabellen definiert sind. Ich kann (etwas) darauf zählen, Spaltennamen tabellenübergreifend zuordnen zu können. Zum Beispiel ist der Spaltenname "SomeDescriptiveName" wahrscheinlich für alle Tabellen identisch.Programmatische Extraktion von Beziehungen zwischen Tabellen in einem RDBMS ohne Fremdschlüssel?
Was ich gerne tun könnte, ist eine bessere Möglichkeit zu finden, einige Beziehungen basierend auf diesen übereinstimmenden Spaltennamen zu extrahieren, als manuell nacheinander durch die Tabellen zu gehen. Ich könnte etwas mit den Java DatabaseMetaData-Methoden machen, aber es scheint, dass dies eine dieser Aufgaben ist, die jemand wahrscheinlich vorher skripten musste. Vielleicht die Spaltennamen mit Perl oder einer anderen Skriptsprache extrahieren, die Spaltennamen als Hash-Schlüssel verwenden und Tabellen zu einem Array hinzufügen, auf das der Hash-Schlüssel zeigt?
Jeder hat irgendwelche Tipps oder Vorschläge, die dies vereinfachen oder einen guten Ausgangspunkt bieten könnten? Es ist ein hässliches Bedürfnis, wenn fremde Schlüssel bereits definiert worden wären, wäre das Verstehen der Beziehungen viel einfacher gewesen.
Danke.
Natürlich würde dies funktionieren, solange alle Spalten, die logisch verknüpft sind, den gleichen Namen haben. Sonst müssten Sie eine umfangreiche Analyse der Daten machen, um zu versuchen, die Beziehungen zu bekommen ... eine schwierige Aufgabe, die ich in der Tat nicht wollen würde. –