Sven Rautenberg: DB Struktur mehrsprachig

Beitrag lesen

Moin!

Kommt eine Sprachversion hinzu, müsstest du deine Tabellenstruktur erweitern - nicht gut.

Wie wahrscheinlich ist das genau?

Außerdem müsstest du bei jeder Operation die aktuelle Sprachbezeichnung an die Spaltennamen dranhängen - umständlich.

Die passende Herstellung eines SQL-Querys ist nicht wirklich kompliziert.

Der andernfalls erforderliche JOIN drückt aber ggf. die DB-Performance.

oder für jede Sprache eine eigene Tabelle.

Wäre auch eine denkbare Alternative.

Auch nicht, bloss nicht.
Daten gleicher Struktur gehören auch in die gleiche Tabelle.

Normalisierung und Performance sind zwei gegensätzliche Pole einer Skala. Wer seine Daten super normalisiert hat, hat in der Folge viele JOINs - und bei entsprechend großen Datenbanken dann ziemlich langsame Querys, auch mit Indices.

Wer andererseits seine Daten wenig normalisiert, hat zwar hohe Performance, dafür aber Daten doppelt, oder ungünstige Datenstrukturen hinsichtlich universeller Erweiterbarkeit.

Man muß abwägen, welche Stufe man anstrebt. Keinesfalls ist hier nur eine einzige erlaubte Lösung möglich.

Normalisiere, und nutze die Sprachversion als zusätzliches Schlüsselfeld.

Das ist ja auch wieder schlecht. Wenn schon normalisieren, dann richtig. Sprache als String: Pfuibäh! Da muß eine separate Tabelle "Sprache <-> Sprach-ID" her, und die Sprach-ID kommt dann in diese Tabelle:

id | sprache | eigenschaft | xyz
1  | de      | 1           | hurra
1  | en      | 1           | hooray
1  | de      | 2           | gelb
1  | en      | 2           | yellow

Und für die Eigenschaften, die in allen Sprachen gleich sind - Bildnamen etc. - könntest du ein zusätzliches "Sprachkürzel" 'all' o.ä. benutzen.

1  | all      | 3           | produktbild4711.jpg

Viel zu kompliziert. Alleine feststellen zu müssen, dass ein Kürzel in allen Sprachen gleich ist, ist aufwendig. Aber zu berücksichtigen, dass bei der Sprachabfrage nicht nur die aktuelle Sprache, sondern auch noch alle allgemeinen Ergebnisse erlaubt sind, macht die Sache noch aufwendiger. Und am Ende kommt dann mal eine neue Sprache hinzu, für die das alles nicht gilt - und schon darf man alle "all"-Kürzel auflösen.

Keine gute Idee.

- Sven Rautenberg

--
"Love your nation - respect the others."