You are not logged in.

  • Login

1

Wednesday, March 7th 2007, 1:25pm

Sitemap normalisiert in Datenbank darstellen

Hi, ich bin dabei mein CMS neu zu strukturieren, unter anderem auch die Datenbank.

Es geht um die Sitemap, von der aus ich auch den Navigationsbaum generieren lasse.
Meine Frage ist, wie baue ich sinnvoll die Tabelle auf, dass diese auch noch normalisiert vorliegt?
In diese Tabelle muss:
Seitenname;Reihenfolge

Meine Überlegung:
Seitenname;Tiefe;Reihenfolge;Elternseite
Latest blogs Latest blogs: PuTTY 0.60 erschienen

2

Wednesday, March 7th 2007, 9:09pm

Hi,
was genau magst du in `Reihenfolge` speichern?
Ich würde vermutlich nur ID, Seitenname und Elternseite als Spalten verwenden.
Die oberste Ebene hat dann die NULL als Elternseite,

3

Wednesday, March 7th 2007, 9:29pm

Naja, irgendwie muss ja auch geordnet werden können, wie die Links in der Sitemap so runtergelistet werden denk ich mal.

Ich frag mich nur, ob es sinnvoll ist, dafür ne eigene Datenbank zu machen. Wahrscheinlich benutzt du sowas ähnliches wie Module für zum Beispiel News etc., oder?

Dann müsstest du ggf. im ACP auf zwei Datenbanken Änderungen durchführen. Ich weis nicht so recht, ob das sinnvoll ist. Warum nicht in den Modulen, sofern du welche benutzt, zusätzliche Informationen speichern, aus denen dann eine Sitemap generiert werden kann?

4

Wednesday, March 7th 2007, 10:05pm

Ich habe die Tabelle Sitemap genannt, weil danach die Navigation etc. sortiert werden soll. Die Anbindung der Module erfolgt anders...geht nur um die Reihenfolge für die Inhaltstexte bzw. die in der Navigation
Latest blogs Latest blogs: PuTTY 0.60 erschienen

5

Wednesday, March 7th 2007, 10:19pm

Und was spricht dagegen, das auch in der Moduldatenbank zu lösen? Mag sein, dass ich da jetzt etwas kurzsichtig bin, ich würde das dennoch als einfachste Methode einstufen.

6

Thursday, March 8th 2007, 7:16am

Was für einer Moduldatenbank?
Latest blogs Latest blogs: PuTTY 0.60 erschienen

7

Thursday, March 8th 2007, 1:21pm

Zur Speicherung von Bäumen in SQL empfehle ich Nested Sets. Bietet sich vor allem an, wenn der Baum meistens nur gelesen wird, wie das bei dir ja der Fall sein dürfte.

Du müsstest also nur den Seitennamen als payload (wie übersetzt man das am Besten?) nehmen. Tiefe, Reihenfolge und Elternseite ergeben sich aus der Struktur des Baumes. Wenn du es so machen willst, bastle ich dir gern ein Beispiel.

Gruß,
Paul

8

Thursday, March 8th 2007, 3:50pm

Quoted from ""eLKane""

Was für einer Moduldatenbank?


Okay, es fehlt das "ggf. gibt". Sofern dein CMS keine feste Struktur besitzt, wirst du die Module wohl in einer Datenbank speichern, jedenfalls dessen Informationen. So würde ich das jedenfalls lösen. Aber okay, je nach dem ... ;)

9

Thursday, March 8th 2007, 5:56pm

Es war nie die Rede von einer Moduldatenbank...

@paule...Das sieht schon mal nicht schlecht aus, ich werd es mir mal durchlesen...thx
Latest blogs Latest blogs: PuTTY 0.60 erschienen

10

Thursday, March 8th 2007, 6:12pm

Wie wärs mit:

site (site_id, sidename)
site_bez (site_id, unter_site_id)
site_org (site_id, reihenfolge)

11

Thursday, March 8th 2007, 6:36pm

Hey, richtig cool das Nested Sets Model! Danke paule für den Tipp!
Kennst du zufälligerweise eine Lösung die mit Triggern arbeitet? Damit man diese linken/rechten Zähler nicht immer manuell ändern muss.

Ich habe hier mal ein paar gute Stored Procedures gefunden. Wenns dergleichen nicht schon gibt, muss ich hiermit mein Glück mal selber versuchen.
* http://notabilis.org/code/?nested_sets

Bis vor einer Stunde kannte ich sie zwar noch nicht. Aber jetzt denke ich, dass sowas ein absolutes "Must Have" ist. Und seit MySQL 5.1 sind aufwendige Trigger ja auch kein Problem mehr.

BTW: hier noch ein guter Artikel:
* http://dev.mysql.com/tech-resources/articles/hierarchical-data.html

12

Thursday, March 8th 2007, 7:40pm

Quoted from ""BennyBunny""

Wie wärs mit:

site (site_id, sidename)
site_bez (site_id, unter_site_id)
site_org (site_id, reihenfolge)


Les dir bitte bei Wiki mal das durch: http://de.wikipedia.org/wiki/Normalisierung_(Datenbank)

Dein Beispiel ist "unnormal" =) Aber trotzdem danke. Ich werde die Nested Sets vom @paule verwenden
Latest blogs Latest blogs: PuTTY 0.60 erschienen

13

Thursday, March 8th 2007, 8:48pm

Quoted from ""d0nUt""

Hey, richtig cool das Nested Sets Model! Danke paule für den Tipp!
Kennst du zufälligerweise eine Lösung die mit Triggern arbeitet? Damit man diese linken/rechten Zähler nicht immer manuell ändern muss.

Ich habe hier mal ein paar gute Stored Procedures gefunden. Wenns dergleichen nicht schon gibt, muss ich hiermit mein Glück mal selber versuchen.
* http://notabilis.org/code/?nested_sets

Bis vor einer Stunde kannte ich sie zwar noch nicht. Aber jetzt denke ich, dass sowas ein absolutes "Must Have" ist. Und seit MySQL 5.1 sind aufwendige Trigger ja auch kein Problem mehr.

BTW: hier noch ein guter Artikel:
* http://dev.mysql.com/tech-resources/articles/hierarchical-data.html


wenn du eine Lösung für die Trigger hast, wäre es cool wenn du sie postest (was du wohl eh machen wirst, aber ich wills nochmal betonen).
Ich hab mir nämlich das NestedSets-Model auch schonmal angeschaut, dann aber sein gelassen weil ich dieses Verschieben von Programmiersprachenseite her nicht machen wollte.

Danke
cya

Social bookmarks