Fabian Brundt: Sinnvolle Datenbankstruktur für dynamische Navigation

Hallo,

ich möchte eine datenbankgestütze Knowledgbase umsetzen, welche dynamisch erweiterbar und pflegbar sein soll.

Vorgaben: WAMP

Die Navigationspunkte sollen alle dynamisch aus der Datenbank ausgelesen werden und bis zu 4 Ebenen besitzen.

Beispiel:

  • Design
      - Screendesign
        - Website
          - dynamisch
          - statisch
        - Cd -Rom
        - Beamer
      - Printdesign
        - Zeitscrift
        - Zeitung
        - Plakat
          - normal Größe
          - größer A0
        - Hand Out
        - Werbeanzeige

zu jedem Unterpunkt soll es Inhalte geben, welche auch aus der DB ausgelesen werden.

Wie realisiere ich dieses Projekt bezüglich

a.) der Datenbankstruktur
b.) der Datenabfrage
c.) der Zuordnung der Navigationsüber und unterpunkte
d.) Zuordnung navigationspunkt -> Inhalt

Das ganze soll dann auch über eine Pflegemase pflegbar sein, d.H. neune Über und Unterpunkte anlegen und Inhalte definieren.

Vielen Dank für Euere Hilfe

Fabian

  1. lege doch eine tabelle "menuepunkte" an. dort sind alle punkte drin, jeweils mit einer hirarchiestufe (1-4).

    also:
    menuepunktID(auto Inc.)  menuepunkt    stufe
    1                        design        1
    2                        screendesign  2
    3                        website       3
    usw.

    dann verknüpfst du in einer anderen tabble die menuepunktID mit der textID.

    sorry aber die abfragen musst du selber schreiben.... :-)

    tomm

    Hallo,

    ich möchte eine datenbankgestütze Knowledgbase umsetzen, welche dynamisch erweiterbar und pflegbar sein soll.

    Vorgaben: WAMP

    Die Navigationspunkte sollen alle dynamisch aus der Datenbank ausgelesen werden und bis zu 4 Ebenen besitzen.

    Beispiel:

    • Design
        - Screendesign
          - Website
            - dynamisch
            - statisch
          - Cd -Rom
          - Beamer
        - Printdesign
          - Zeitscrift
          - Zeitung
          - Plakat
            - normal Größe
            - größer A0
          - Hand Out
          - Werbeanzeige

    zu jedem Unterpunkt soll es Inhalte geben, welche auch aus der DB ausgelesen werden.

    Wie realisiere ich dieses Projekt bezüglich

    a.) der Datenbankstruktur
    b.) der Datenabfrage
    c.) der Zuordnung der Navigationsüber und unterpunkte
    d.) Zuordnung navigationspunkt -> Inhalt

    Das ganze soll dann auch über eine Pflegemase pflegbar sein, d.H. neune Über und Unterpunkte anlegen und Inhalte definieren.

    Vielen Dank für Euere Hilfe

    Fabian

    1. lege doch eine tabelle "menuepunkte" an. dort sind alle punkte drin, jeweils mit einer hirarchiestufe (1-4).

      dann weiss ich aber nicht, welcher unterpunkt einer ebene zu welchem überpunkt der ebene darüber gehört

      Fabian

      1. Hallo,

        habe mir das theoretische Modell angeschaut. Das ist mir zu unvollkommen. Ich würde das so machen:

        ID_Element       Primärschlüssel
        ID_Own           im Prinzip der beim Anlegen erteilte Primärschlüssel beim Zuordnen als Kindelement in Sekundärschlüssel übertragen
        ID_belongsTo     ID des übergeordneten Elementes
        Level            Level der Suchtiefe

        so kann jedes Element des Baumes Kindelement eines anderen auf bestimmtem Level sein. Man muss ggf. "nur" darauf achten, dass keine Rekursion entsteht, d.h. dass ein Element sich selbst als Eltern, Großeltern oder Urgroßeltern oder so hat. Das heißt auf geraden Weg der Levels zurück zu MinLevel darf es nicht als Elternelement vorkommen.

        Level würde ich bei 0 beginnen für "ROOT" und hochzählen für jede untergeordnete Hierarchiestufe. Man könnte Level dann nachträglich auch negativ werden lassen, um "ROOTs" zu Familien zusammenzufassen.

        Jedes Element des Level 2 darf Tochterelement jeden Elementes des Level 1 sein, nur nicht von sich selbst (ID_OWN) und auch auf den übergeordnetn Leveln bis MinLevel darf es nicht vorkommen. Das gilt, solange es noch keine Kinder hat, also NEU angelegt wird.

        Im Falle von Stücklisten muss man leider auch alle Kinder und Kindeskinder auf Vorhandensein in einer höheren Hierarchiestufe untersuchen.

        Liebe Grüße aus <http//www.braunschweig.de>

        Tom

    2. Hallo,

      also ich tendiere eher zu mindestens 4 Tabellen...

      für jeden Ebene eine->keine/wenig Redundanz
      Tabelle1 z.B.

      id     punkt
      1      design
      2      Programmierung

      Tabelle2 z.B.

      id     punkt           vorgaenger
      1      Screendesign    1
      2      Printdesign     1
      3      Serverseitig    2
      u.s.w.

      in der 4. tabelle können dann die einzelnen einträge und infos, die du unterbringen willst, gespeichert sein...

      ein design für eine tabelle würde so aussehen...

      id     punkt         vorgaenger      spezielle infos(mehrere felder)...
      1      design        -top-            --
      2      Screendesign   design          --
      3      website        screendesign    --
      4      dynamisch      website         erst hier würden die hinteren felder wirklich genutzt werden -->viele leere eintraege...
      ich denke in meiner ersten variante lassen sie die abfragen auch angenehmer gestalten...

      Odium

  2. Schau mal bei PEAR in der Kategorie Structures bei PEAR::Tree vorbei.
    Bei vielen Lesevorgängen das schnellste Verfahren, um hierarchische Strukturen einfach abzubilden - man muß ja nicht alles selbst programmieren...

    Mehr über nested sets gibts außerdem hier:
    http://develnet.org/tech/tutorials/3.1.html