hallo allerseits
Ich habe mir schon viele Gedanken darüber gemacht, wie ich in meinem PHP-Framework, dass ich am basteln bin, die Text-Tabelle perfekt organisiere.
Diese Text-Tabelle wird Texte enthalten welche von verschiedenen anderen Tabellen referenziert werden können.
Ein Text soll mehrsprachig sein können und es sollten Versionen/Revisionen vom selben text gemacht werden können.
In einer alten Version habe ich es so gelöst(ohne Versionisierung):
PK:id | de | en | fr | it
--------------------------------------
2 | hallo | hello | bonjout | ciou
11 | mutter | mother | mere | mama
eine Abfrage war zum Beispiel:
Select $lang AS text
FROM texts
WHERE id = 2
-> hallo
Nun bin ich aber nicht mehr überzeugt von dieser Lösung mit den Sprachen-Spalten.
Jetzt bin ich eher für diese Variante:
PK:id | PK:lang | text
--------------------------
2 | de | hallo
2 | en | hello
11 | de | mutter
11 | en | mother
. . .
bsp.Abfrage :
------------
Select text FROM texts WHERE lang = '$lang' AND id = 2
->hallo
Beispiel für eine Abfrage mittels LEFT JOIN
--------------------------
Select
pages.*,
texts.text
FROM
pages
LEFT JOIN texts ON pages.title_text_id = texts.id AND lang = $lang
WHERE pages.id = 5
Dazu kommen jetzt noch die Versionen / Revisionen
PK:id | PK:lang | PK:revision | text
--------------------------
2 | de | 0 | hallo //// revision = 0 entspricht aktuell
2 | de | 1 | Sehr geehrter Herr
2 | de | 2 | Sehr geehrte Damen und Herren
2 | de | 3 | hallo
2 | de | 4 | Hallo
2 | en | 0 | hello //// revision = 0 entspricht aktuell
2 | en | 1 | Dear Mister
2 | en | 2 | Dear
2 | en | 3 | hi
Die Revision 0, so habe ich gedacht, benutze ich für den aktuellen Text.
Oder soll ich, um den aktuellen Wert zu bestimmen eine zusätzliche Spalte anlegen? (Platzverschwendung?)
Oder gar eine zusätzliche Tabelle die den aktuellen text bestimmt?
(zu Aufwändig? ich denke schon)
Oder ganz anders??
Ich will es wirklich perfekt haben!!!!!
Ich hoffe man kann meinen Gedankengängen noch folgen.
Besten dank für jede Bemerkung.
mfg Tobias