Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Hierarchie einer Entität in einer relationalen Datenbank

Dieses Thema im Forum "Datenmodellierung, Datenbank-Design" wurde erstellt von Krs81, 13 November 2012.

  1. Krs81

    Krs81 Neuer Benutzer

    Hallo zusammen,

    ich habe in meinem Datenbankmodell eine Entität, für die ich eine Hierarchie abbilden will.

    Es handelt sich dabei um Konten. Ein Konto 1A hat mehrere Unterkonten 2A, 2B, 2C und 2D. Das Konto 2A hat wiederum mehrere Unterkonten 3A, 3B und 3C. Gleiches gilt für 2B, 2C und 2D, die alle mehrere eigene Unterkonten haben. Das Ganze soll auch auf der nächsten und allen folgenden Ebenen möglich sein - also auch 3A soll Unterkonten 4A, 4B usw. haben können.

    Weitere Hintergrundinformation: In Auswertungen möchte ich die Kontostände auf einzelnen Knoten und Blättern, die ich explizit auswählen und auch über die Ebenen mischen können muss, ausweisen, wobei Kontostände jeweils auf Oberkonten zu saldieren sind.

    Wie gestalte ich idealer Weise meine Datenbanktabelle für die Entität "Konten", um die beschriebene mehrstufige Hierarchie sauber abzubilden?

    Danke für Eure Lösungsvorschläge und Hinweise!

    Viele Grüße
    Krs81
     
  2. Tommi

    Tommi Datenbank-Guru

    Hi,

    eine Hierarchie abzubilden ist relativ einfach. Du benötigst neben einer ID-Spalte (PKEY) eine weitere Spalte "Parent_ID".
    In dieser verweist du dann einfach auf die übergeordneten ID in der selben Tabelle.

    Eine Abfrage dieser Hierarchie muss auf die Tabelle dann rekursiv vorgenommen werden.
    (Beim SQL Server geht das z.B. mit der WITH-Methode).

    Viele Grüße,
    Tommi
     
  3. Krs81

    Krs81 Neuer Benutzer

    Hallo Tommi,

    vielen Dank für Deine Antwort.

    Wie sieht es bei dem Wurzeldatensatz aus? Trage ich dort den eigenen Schlüssel in "Parent_ID" ein oder lasse ich das leer?

    Viele Grüße
    Krs81
     
  4. Schrotty

    Schrotty Neuer Benutzer

    Hi,

    die Rootdatensätze würde ich leer lassen, denn sonst hast Du wahrscheinlich wegen der Rekursion eine Schleife.
    Oder Du musst diese mit einer WHERE-Klausel herausfiltern bevor Du die Rekursion anwendest.

    Grüße
    Schrotty

    PS: In Oracle habe ich so eine Rekursion mal mit "Connect by Prior" gemacht.
     
  5. ukulele

    ukulele Datenbank-Guru

    Tommi hat völlig Recht, die Abbildung ist einfach. Das ganze auszuwerten ist der fiese Teil :)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden