Hallo, ich würde gerne eine Baumstruktur, z.B. wie in einem Blog mit hierarchisch angeordneten Kategorieen, in einer Datenbank speichern. Wie macht man das normalerweise? Baut man für jede Ebene und jede Unterebene eine eigene Tabelle, die dann mit dem Vater verknüpft wird? Oder ist es üblich, dass man die Baumstruktur flach in einer Tabelle ablegt und über die Fremdschlüssel eines Tabelleneintrags zum Primärschlüssel des Vaters linkt? Ideen sind da, aber wie macht man das üblicherweise? z.B. bei Wordpress? Vielen Dank für Hilfe Grüße Gast
Guck doch einfach nach, die Quelltexte und Datenbanken von Wordpress sind frei. Wenn du für jede Ebene eine eigene Tabelle baust, kriegst du ein Problem: Entweder, du baust von vornherein N Tabellen. Dann beschränkst du auch von vornherein die maximale Schachtelungstiefe. Oder du baust und löschst die Tabellen dynamisch. Das wird dann die Datenbank nicht sonderlich freuen, sofern du überhaupt die nötigen Berechtigungen hast, um zur Laufzeit die Datenbank-*Struktur* zu verändern.
Die Datensätze liegen in einer Tabelle. Die hirarchische Struktur wird durch ein Datenfeld mit einem Level-Indikator (zusätzlich zur uniqen Beitragsnummer) verwaltet und existiert praktisch nur in der Art, die Daten zu darzustellen bzw. zu interpretieren ... Frank
>Oder ist es üblich, dass man die Baumstruktur flach in einer Tabelle >ablegt und über die Fremdschlüssel eines Tabelleneintrags zum >Primärschlüssel des Vaters linkt? IdR macht man das genau so. Für Spezialanwendungen kann man aber auch mal mit Haupt / Untertabelle arbeiten.
Gast wrote: > Oder ist es üblich, dass man die Baumstruktur flach in einer Tabelle > ablegt und über die Fremdschlüssel eines Tabelleneintrags zum > Primärschlüssel des Vaters linkt? Das ist die am weitesten verbreitete Methode. Eine andere, die eine schnellere Abfrage von kompletten Zweigen des Baums erlaubt, ist das Nested Set (http://www.klempert.de/nested_sets/).
Danke für den Tip, Nested Sets kannte ich bisher noch garnicht! man lernt nie aus!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.