Dynamische naviagtion mit mysql und php

hi,
bisher habe ich meine seiten in immer in mehreren tabellen (mysql) gespeichert, die alle den namen der kategorie und den inhalt der seiten dieser kategorie enthielten (tabellenstruktur: id, datum, titel, beschreibung[für title tag bei link] und inhalt).
auserdem gab es noch eine tabelle die die kategorien (tabelenstruktur: id, beschreibung, kategorie) enthielt.

dann wurde in z.b. der kategorie extras für die navigatuon aus der tabelle extras der gewünschte inhalt der seite abgefragt. die navigation bestand aus den einträgen der tabelle kategorien, und bei der aktiven kategroie (hier: extras) kamen dann noch die titel der tabelle extras hinzu.

der code wie er bisher ist:

[code]//naviagtion------------------------------------------------------------------------------------------

//main_navi--------------------------------------------------------------------------------------


	echo '<ul id="mainnavi"> <li class="unvisible">Mainnavi</li>';
	$mn_abfrage = "SELECT beschreibung, kategorie FROM kategorien";
	$mn_ergebnis = mysql_query($mn_abfrage) or die('Es ist ein Fehler aufgetreten: '.mysql_error());
	while($mn_ds = mysql_fetch_assoc($mn_ergebnis))
	{
		$mn_beschreibung = $mn_ds["beschreibung"];
		$mn_kategorie = $mn_ds["kategorie"];
		if ($mn_kategorie == $k) echo "<li id=\"main_current\"><b title=\"$mn_beschreibung\">$mn_kategorie</b></li>\n";
		else echo "<li><a href=\"/meineseite.php?p=1&k=$mn_kategorie\" title=\"$mn_beschreibung\">$mn_kategorie</a></li>\n";
	}
	echo "</ul>\n";
//sub_navi----------------------------------------------------------------------------------------
	echo '<ul id="subnavi"> <li class="unvisible">Subnavi</li>';
	$sn_abfrage = "SELECT titel, beschreibung FROM `$kat`";
	$sn_ergebnis = mysql_query($sn_abfrage) or die('Es ist ein Fehler aufgetreten: '.mysql_error());
	while($sn_ds = mysql_fetch_assoc($sn_ergebnis))
	{
		$sn_titel = $sn_ds["titel"];
		$sn_beschreibung = $sn_ds["beschreibung"];
		if ($sn_titel == "Gästebuch eintrag" AND $mn_kategorie == "extras") echo "";
		elseif ($sn_titel == $id) echo "<li id=\"sub_current\"><b title=\"$sn_beschreibung\">$sn_titel</b></li>\n";
		else echo "<li><a href=\"/meineseite.php?p=$sn_titel&k=$k\" title=\"$sn_beschreibung\">$sn_titel</a></li>\n";
	}
	echo "</ul>\n";[/code]

alles schön und gut, aber nun habe ich gedacht, dass es doch zum einen ziemlich umständlich ist so viele tabellen zu haben, und dann auch noch eine extra tabelle nur für die namen der kategorien. vor allem beim ändern des titel der kategorie.
und da habe ich mir gedacht, da fragst du doch einfach mal im tollen forum des tollen freehosters bplaced nach, wie das denn so die ganzen cms(wordpress, typo 3, joomla etc.) machen. speichern die die inhalte alle in eine db? wenn dies so ist, wie bekommen sie dann die navigation hin?

ich hoffe ihr könnt mir helfen

Inhalte gleicher Struktur sollten in der gleichen Tabelle stehen - ob ein “Inhalt” jetzt in Kategorie A, B, oder C eingeordnet ist, ist vollkommen egal, so lange alle Inhalte die gleiche Struktur aufweisen.

Die Kategorie-Bezeichner sollten natürlich schon in eine eigene Tabelle ausgelagert werden - über die ID wird die Kategorie dann bei den Inhalten referenziert.

Das Stichwort lautet: Normalisierung (informieren!)