Halihallo Niki
Ich will nun eine Homepage bauen, die wirklich bis ins kleinste Detail aus einer Datenbank besteht und bis ins kleinste Detail nach Bedürfnissen angepasst werden kann.
Dann ist evtl. XML die bessere wahl, da das Schema dort Teil des Datensatzes ist.
Eine Homepage sieht grundsätzlich so aus: Ein Inhaltsverzeichnis (wie dieses im Endeffekt auf der Seite ist, ist egal, nur in der Theorie einmal) mit beliebig vielen Untermenüs. Jedes dieser Menüs verweist letztendlich auf die Seiten. Im Idealfall geht das noch in beliebig vielen Sprachen.
Hierarchische Strukturen liessen sich mit XML auch besser abbilden, aber zurück zur DB:
- Tabelle: ts_menu: ID, parent, t_lang_menuID
- Tabelle: t_lang_menu: ID, sim, text, t_hplangID
- Tabelle: t_hplang: ID, text
Mein Vorschlag:
Tabelle Menu: menu_id, parent_menu_id, description_id (menu_id ist PRIMARY,
description_id FOREIGN KEY)
Tabelle MenuTranslation: description_id, language_id, description (wobei description_id
_und_ language_id PRIMARY KEY ist)
Tabelle Language: language_id, language_name (language_id PRIMARY KEY)
Die Sprache sollte von der hierarchischen Struktur getrennt sein, du vermischst diese.
Es sind jedoch zwei völlig andere Dinge.
Wie kann denn dieses Mega Unterfangen funktionieren?
Was macht es denn so kompliziert?
Zum Schluss der Abfrage soll die Seite in dieser Form rauskommen:
1 | 0 | Deutsch | Über mich | English | About me | Francais | C'est moi
1 | 0 | 1 | Über mich | 2 | About me | 3 | C'est moi
Das wird nicht möglich sein; ausser du hast ein Attribut für jede Sprache, du bildest
diese jedoch in verschiedene Datensätze ab, folglich wirst du auch Zeilen und nicht
Spalten bekommen. Es gibt in SQL keine Möglichkeit, Zeilen in Spalten abbzubilden.
---
Warum willst du jede Sprache einlesen? - Das Menü wird ja wohl nur in einer Sprache
ausgegeben; jede andere Sprache zu selektieren wäre aperformant und verbraucht Speicher.
Dein Vorhaben, alle Sprachen als Spalten auszugeben, ist gar nicht nötig.
Viele Grüsse
Philipp