Tabellen in einer Verküpfungsreihe

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Tabellen in einer Verküpfungsreihe

    Hallo Zusammen

    Im Zuge meiner Frage vor einiger Zeit kamen bei den überlegungen neue Fragen auf.

    Ich habe eine Reihe von Tabellen, die untereinander mittels einer 1:n Relation verknüpft sind. Nun möchte ich eine Funktion schreiben, die mir zu einem Wert aus einer beliebigen Tabelle aus der Reihe die "Vater" und die Kindelemente ausliest. Dabei soll die Funktion noch so flexibel sein, dass sie auf mehrere solcher Reihen anwendbar ist.

    Ein Beispiel zur Verdeutlichung: Die administrativen Einheiten Luxemburgs:

    Tabelle Land
    Id
    Name

    hat eine 1:n Verknüpfung mit

    Tabelle District
    Id
    Name
    LinkId

    hat eine 1:n Verknüpfung mit

    Tabelle Canton
    Id
    Name
    LinkId

    usw. ... (Diese Verkettung von Tabellen nenne ich mal Tabellenreihe)

    Habe ich nun den Namen eines Districtes, möchte ich sowohl das Land des Districtes, als auch alle Cantone, die im District liegen ausgegeben bekommen und alle (hie nicht erwähnten) dem Canton untergeordneten Einheiten..

    Problemlösungsansätze:
    Zuerst dachte ich, das dieses Problem mittels einer rekursiven Funktion zu lösen ist:

    Code:
    function hole_einheit (ebene)
       wenn linkid hole_einheit(ebene-1)
       sonst fertig
    Das funktioniert, wenn man die übergeordneten ebenen abrufen will, weil die oberste Ebene keine linkid hat.
    Das Problem, was dort auftritt ist folgendes. Irgendwo muss ich doch die Abfolge der Tabellen, bzw. der Einheiten definieren da die funktion doch wissen muss welche einheit welcher unter- bzw. übergeordnet ist.

    Bei diesen überlegungen ist folgender Denkansatz enstanden: Für jede Tabellenreihe lege ich einen Array mit den Tabellennamen in einer geordneten Reihenfolge an und stelle das Suchlevel fest, d.h. die administrative Einheit in der gesucht werden soll. Mittels des Arrays lassen sich nun die übergeordneten und die untergeordneten Einheiten feststellen und abfragen.

    Unangenehm bei dieser Lösung ist, dass ich das Array immer festlegen muss und bei änderungen im Datenbankdesign muss das Array immer verändert werden. Lieber wäre mir eine Lösung, die sich automatisch aus den Tabellen generiert. Doch wie finde ich heraus, welche Tabelle mit welcher verknüpft ist?
Lädt...
X